<?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>46592</bug_id>
          
          <creation_ts>2010-09-26 16:46:54 -0700</creation_ts>
          <short_desc>Convert CSSStyleSelector::applyProperty to use function pointers</short_desc>
          <delta_ts>2013-10-03 11:58:44 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>54707</dependson>
    
    <dependson>57608</dependson>
          <blocked>46590</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>285201</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-26 16:46:54 -0700</bug_when>
    <thetext>Instead of a huge switch/if statement, we should have a nice function pointer-based implementation that&apos;s more maintainable and hackable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285580</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-27 10:59:01 -0700</bug_when>
    <thetext>A processor can predict branches, but can it predict calling through a pointer? This sounds like a dangerous direction to take performance-wise, although I&apos;m not sure how hot this code is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311280</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-11-18 21:11:38 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; A processor can predict branches, but can it predict calling through a pointer? This sounds like a dangerous direction to take performance-wise, although I&apos;m not sure how hot this code is.

Most &quot;modern&quot; x86 processors (Pentium M for Intel and K10 for AMD or later) implement indirect branch predictions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311289</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-18 21:40:31 -0800</bug_when>
    <thetext>Sure - but in practice, devirtualization of calls has been a huge source of performance wins for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321419</commentid>
    <comment_count>4</comment_count>
      <attachid>76440</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2010-12-13 14:26:39 -0800</bug_when>
    <thetext>Created attachment 76440
WIP: proof of concept code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321426</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-12-13 14:29:53 -0800</bug_when>
    <thetext>Debugging through these macros will be pretty miserable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321431</commentid>
    <comment_count>6</comment_count>
      <attachid>76440</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-12-13 14:33:27 -0800</bug_when>
    <thetext>Comment on attachment 76440
WIP: proof of concept code

I like the concept.  I don&apos;t like the name &quot;applicator&quot; though.

CSSStyleApplier or CSSStyleMapper might be better, although they still feel somewhat redundant with the name CSSStyleSelector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322465</commentid>
    <comment_count>7</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2010-12-14 20:12:53 -0800</bug_when>
    <thetext>Well, I spent the last 1.5 days implementing a code generator to produce this stuff. Generating the header files is a good idea and I intend to do that, but the implementations contain so many special cases that it is exceedingly difficult to encode them all, and the code generator ends up being worse than just hand-writing the implementations and using marcos where appropriate.

@smfr: are you happy with moving forward using a generator for the interface only?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325326</commentid>
    <comment_count>8</comment_count>
      <attachid>77179</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2010-12-21 18:58:26 -0800</bug_when>
    <thetext>Created attachment 77179
Patch WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325327</commentid>
    <comment_count>9</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2010-12-21 18:59:53 -0800</bug_when>
    <thetext>Last patch is just a WIP update. No need to review, but comments welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325328</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-21 19:01:33 -0800</bug_when>
    <thetext>Attachment 77179 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;WebCore/css/CSSStyleApplicator.cpp&apos;, u&apos;WebCore/css/CSSStyleSelector.cpp&apos;, u&apos;WebCore/css/CSSStyleSelector.h&apos;]&quot; exit_code: 1
Last 3072 characters of output:
/CSSStyleApplicator.cpp:596:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/css/CSSStyleApplicator.cpp:598:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:599:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:600:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:601:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:602:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:642:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/css/CSSStyleApplicator.cpp:644:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:645:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:646:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:647:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:667:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/css/CSSStyleApplicator.cpp:669:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:670:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:670:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
WebCore/css/CSSStyleApplicator.cpp:671:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:672:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:673:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:771:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/css/CSSStyleApplicator.cpp:773:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:774:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:775:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:776:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:790:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/css/CSSStyleApplicator.cpp:792:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:793:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:794:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:795:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/css/CSSStyleApplicator.cpp:883:  More than one command on the same line  [whitespace/newline] [4]
WebCore/css/CSSStyleApplicator.cpp:898:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 153 in 5 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>325334</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-21 19:21:26 -0800</bug_when>
    <thetext>Attachment 77179 did not build on chromium:
Build output: http://queues.webkit.org/results/7242087</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325336</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-21 19:31:06 -0800</bug_when>
    <thetext>Attachment 77179 did not build on win:
Build output: http://queues.webkit.org/results/7307102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325339</commentid>
    <comment_count>13</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-21 19:32:12 -0800</bug_when>
    <thetext>Attachment 77179 did not build on qt:
Build output: http://queues.webkit.org/results/7334027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326776</commentid>
    <comment_count>14</comment_count>
      <attachid>77179</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-24 17:24:50 -0800</bug_when>
    <thetext>Comment on attachment 77179
Patch WIP

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

I mean, should we just autogenerate this?  This fails on a zillion platforms, suggesting you need to update other build systems.  I like the idea of reducing the boilerplate in CSSStyleSelector, but if we&apos;re going to go to macros, we might as well consider using a little python to autogenate the code instead (like we do with DOM bindings and WebKit2 IPC).

&gt; WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

This is going to cause the cq to fail.  You should mention what tests this fixes, or why testing is impossible (if that&apos;s the case).

&gt; WebCore/css/CSSStyleApplicator.cpp:7
&gt; + * CSSStyleSelector.cpp
&gt; + *
&gt; + *  Created on: Dec 9, 2010
&gt; + *      Author: macpherson
&gt; + */
&gt; +

You need a Google BSD copyright header here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335596</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-17 17:26:17 -0800</bug_when>
    <thetext>Seems OK to do this, but we need to measure performance rather than crossing our fingers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335600</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-17 17:36:03 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Debugging through these macros will be pretty miserable.

That&apos;s my expectation, too. I have difficulties debugging through SVG code where it uses macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335699</commentid>
    <comment_count>17</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-01-18 01:16:49 -0800</bug_when>
    <thetext>Splitting out the style application is a good idea. However, this undebuggable macro/function pointer salad is not an improvement either style or performance wise. I don&apos;t see the maintainability or hackability gains either.

Any performance testing for this kind of stuff would need to be done on ARM too as indirect branch prediction may be less effective there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336886</commentid>
    <comment_count>18</comment_count>
      <attachid>79508</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-01-19 15:51:22 -0800</bug_when>
    <thetext>Created attachment 79508
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336893</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-19 16:01:11 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Splitting out the style application is a good idea. However, this undebuggable macro/function pointer salad is not an improvement either style or performance wise. I don&apos;t see the maintainability or hackability gains either.

I agree.  I don&apos;t think using all these macros give us any coding-style improvement over the existing code.

&gt; Any performance testing for this kind of stuff would need to be done on ARM too as indirect branch prediction may be less effective there.

We should probably be testing on both x86 and ARM processors because having lots of small functions may affect L1 &amp; L2 cache hit-rate, and it&apos;s really hard to predict what happens. For example, when I implemented recursive and iterative implementations (they&apos;re identical otherwise) of merge sort a couple of years ago, recursive version was consistently faster by 10%-30% due to some caching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336897</commentid>
    <comment_count>20</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-01-19 16:03:43 -0800</bug_when>
    <thetext>1) Shouldn&apos;t this be done using a code generator?

The header file contents and switch statement can easily be autogenerated from the list of CSS properties. I intend to do that shortly.

It is not clear to me that using a code generator for the implementations would be beneficial in this case. I spent a few days implementing a generator before becoming convinced that it wasn&apos;t the right approach. The problem is the sheer amount of special case code that is contained here. The CSS property to RenderStyle mapping is not simple, and must be encoded somewhere. There are a substantial number of cases that must be hand-written individually.

2) Macros are hard to debug.

Yes and no - there is always a tradeoff between code reuse as enabled by macros and difficulty of understanding the generated output, however using a modern IDE with inline macro expansion means that this isn&apos;t as hard as it may first appear.

In any case, the existing code has at least as many macros as this code does, so it cannot be described as a net negative.

3) Are switch statements are faster on some architectures?

This isn&apos;t really an important distinction - if a switch statement is genuinely faster one can always rewrite a function pointer array access in the form of a switch statement. 
This CL as it stands is still using a switch statement, even though it would now be trivial to switch to a function pointer array.

http://software.intel.com/en-us/articles/branch-and-loop-reorganization-to-prevent-mispredicts/
&quot;Since the BTB is only 16 entries long in the Pentium 4 processor, the prediction will eventually fail for loops that are longer than 16 iterations. This limitation can be avoided by unrolling a loop until it is only 16 iterations long. When this is done, a loop conditional will always fit into the BTB, and a branch misprediction will not occur on loop exit.&quot;

Therefore I am somewhat doubtful that branch prediction will have a measurable impact on a switch statement with more than 300 cases, and that neglecting the many branches contained within.

It also seems unlikely that ARM will see any difference in performance - it is a CPU with a much shorter pipeline and most use only static branch prediction.

4) There is no readability / maintainability / hackability gains in this CL.

applyProperty() has a very complicated control flow contained in a 2500 line switch statement that is exceedingly difficult to follow. It has hundreds of fall-through cases, return statements hidden inside macros, lots of unreachable code, and lots of nested switch statements where the parent and child variables are shared.

By splitting out each of the cases into individual functions it is possible to greatly clarify the flow and separation of this code, and this improves the readability, maintainability and hackability of this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342438</commentid>
    <comment_count>21</comment_count>
      <attachid>80615</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-01-30 20:01:12 -0800</bug_when>
    <thetext>Created attachment 80615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342493</commentid>
    <comment_count>22</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-01-31 00:54:29 -0800</bug_when>
    <thetext>The patch seem to be missing the new file.

I&apos;d like to hear actual performance testing results (that is, sampling before/after cases with a profiler) instead of theoretical arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342495</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-01-31 01:20:28 -0800</bug_when>
    <thetext>+//    CSSPrimitiveValue* primitiveValue = 0;
+//    if (value-&gt;isPrimitiveValue())
+//        primitiveValue = static_cast&lt;CSSPrimitiveValue*&gt;(value);
+//
+//    Length l;

You probably didn&apos;t intend to leave this in a posted patch.

I agree with Antti that actual performance data for desktop and mobile platforms is needed to meaningfully discuss this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342851</commentid>
    <comment_count>24</comment_count>
      <attachid>80687</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-01-31 15:19:59 -0800</bug_when>
    <thetext>Created attachment 80687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343837</commentid>
    <comment_count>25</comment_count>
      <attachid>80885</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-01 21:44:10 -0800</bug_when>
    <thetext>Created attachment 80885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343839</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-01 21:45:30 -0800</bug_when>
    <thetext>Attachment 80885 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/CSSStyleApplyProperty.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:58:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:90:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:312:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:342:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:346:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleSelector.cpp:3054:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleSelector.cpp:3064:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 9 in 6 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>343850</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-01 22:01:00 -0800</bug_when>
    <thetext>Attachment 80885 did not build on chromium:
Build output: http://queues.webkit.org/results/7686708</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343866</commentid>
    <comment_count>28</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-01 22:23:29 -0800</bug_when>
    <thetext>Attachment 80885 did not build on win:
Build output: http://queues.webkit.org/results/7689069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343872</commentid>
    <comment_count>29</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-02-01 22:38:55 -0800</bug_when>
    <thetext>Attachment 80885 did not build on gtk:
Build output: http://queues.webkit.org/results/7681992</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343924</commentid>
    <comment_count>30</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-02 02:26:03 -0800</bug_when>
    <thetext>Attachment 80885 did not build on qt:
Build output: http://queues.webkit.org/results/7686774</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344521</commentid>
    <comment_count>31</comment_count>
      <attachid>81029</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-02 21:29:23 -0800</bug_when>
    <thetext>Created attachment 81029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344523</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-02 21:31:12 -0800</bug_when>
    <thetext>Attachment 81029 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/css/CSSStyleApplyProperty.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:59:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:91:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:313:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:343:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:347:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:3445:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:3446:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:3447:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/css/CSSStyleSelector.cpp:3036:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleSelector.cpp:3046:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 12 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>344537</commentid>
    <comment_count>33</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-02 22:21:40 -0800</bug_when>
    <thetext>Attachment 81029 did not build on win:
Build output: http://queues.webkit.org/results/7692199</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345058</commentid>
    <comment_count>34</comment_count>
      <attachid>81125</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-03 15:24:50 -0800</bug_when>
    <thetext>Created attachment 81125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345120</commentid>
    <comment_count>35</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-03 16:28:42 -0800</bug_when>
    <thetext>Please post some performance data before/after these patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345127</commentid>
    <comment_count>36</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-03 16:32:35 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Please post some performance data before/after these patches.

Will do. Planning to run the chrome page cyclers shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345285</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-03 20:21:14 -0800</bug_when>
    <thetext>Attachment 81125 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/css/CSSStyleApplyProperty.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:59:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:91:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:313:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:343:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleApplyProperty.cpp:347:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleSelector.cpp:3036:  Else clause should never be on same line as else (use 2 lines)  [whitespace/newline] [4]
Source/WebCore/css/CSSStyleSelector.cpp:3046:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 9 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>347082</commentid>
    <comment_count>38</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-07 21:53:04 -0800</bug_when>
    <thetext>Ran the Chromium Page cyclers and didn&apos;t find any significant difference between before and after performance. Both builds were at webkit r77686 and run on a current 12-core Mac Pro.

original (ms):
22719, 22872, 22464, 22563, 22574, 22563, 22683
avg: 22634

modified (ms):
22751, 22572, 22913, 22203, 22536, 22753, 22903
avg: 22665

This CL had no significant impact on overall page load times for the set of pages tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347084</commentid>
    <comment_count>39</comment_count>
      <attachid>81125</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-07 21:56:44 -0800</bug_when>
    <thetext>Comment on attachment 81125
Patch

I still feel like this isn&apos;t really a win. There&apos;s too much buried in macros, which will be hell to debug. Would something like AnimationBase&apos;s PropertyWrappers be more appropriate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350484</commentid>
    <comment_count>40</comment_count>
      <attachid>82281</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-13 16:47:43 -0800</bug_when>
    <thetext>Created attachment 82281
Template Demo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350485</commentid>
    <comment_count>41</comment_count>
      <attachid>82281</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-13 16:52:46 -0800</bug_when>
    <thetext>Comment on attachment 82281
Template Demo

Not for review, intended to demonstrate what using templates instead of macros would be like. Code becomes much more verbose, but I can understand why some people would consider it better style. I don&apos;t yet know the performance implications of doing it this way, and would need to convert the whole thing to find out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350992</commentid>
    <comment_count>42</comment_count>
      <attachid>82389</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-14 16:57:17 -0800</bug_when>
    <thetext>Created attachment 82389
Template Demo Clean Up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351754</commentid>
    <comment_count>43</comment_count>
      <attachid>82389</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-15 17:18:53 -0800</bug_when>
    <thetext>Comment on attachment 82389
Template Demo Clean Up

removing from r? queue since this isn&apos;t intended for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352369</commentid>
    <comment_count>44</comment_count>
      <attachid>82701</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-16 14:41:58 -0800</bug_when>
    <thetext>Created attachment 82701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352379</commentid>
    <comment_count>45</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-16 14:49:36 -0800</bug_when>
    <thetext>Did some page cycler runs with the last patch, it didn&apos;t appear to make any real difference to overall page load times.

	Modified	Unmodified
	22,331	22,832
	22,440	22,454
	22,474	22,622
	22,419	23,930
	22,661	22,578
	22,486	22,615
	22,568	22,465
	22,331	22,480
	22,268	22,585
	22,303	22,404
average:	22,428	22,697
median:	22,430	22,582
stddev:	125	450

deleting row 4 (which looked like a possibly invalid result for the unmodified case)
average:	22,429	22,559
median:	22,440	22,578
stddev:	132	129

How I&apos;d like to proceed is with a bunch of small patches that implement a handful fo related properties at a time. That should make the reviews straightforward and allow incremental testing of the changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352384</commentid>
    <comment_count>46</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-16 14:52:48 -0800</bug_when>
    <thetext>You should get buy-in from Dave Hyatt before proceeding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353183</commentid>
    <comment_count>47</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-17 14:45:43 -0800</bug_when>
    <thetext>macpherson: dhyatt: would you mind weighing in on https://bugs.webkit.org/show_bug.cgi?id=46592 ? smfr suggests your buy-in is required before proceeding.
dhyatt: i lovet he idea of converting to function pointers
dhyatt: been wanting to do that for ages
macpherson: the latest patch isn&apos;t precisely function pointers though - it is doing dispatch through looking up an implementation object.
dhyatt: anything to ditch the giant switch statement sounds good to me
dhyatt: as long as it&apos;s fast
macpherson: since the static function pointer implementation got a lot of objections on the grounds of too many macros.
dhyatt: i see
macpherson: i haven&apos;t seen any performance difference on the page cyclers (well, actually the runs doing lookups were slightly faster)
macpherson: smfr: do you have anything in particular you wanted dhyatt to comment on?
dhyatt: the approach looks fine to me, but i don&apos;t have strong feelings about it
smfr: just whether he&apos;s ok with the general approach
dhyatt: someone may care more than i do
smfr: dhyatt: it&apos;s basically like the Animation ProperyWrapper things
dhyatt: yup i saw
dhyatt: it looks fine to me
smfr: and i like the way those turned out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353478</commentid>
    <comment_count>48</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-18 01:27:27 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; Did some page cycler runs with the last patch, it didn&apos;t appear to make any real difference to overall page load times.

I don&apos;t think &quot;page cycler&quot; is the right way to test performance here. You need to use profiler to measure the samples under applyProperty() on real world scenarios (over full page load of web sites).

CSSStyleSelector::applyProperty is currently the seconds hottest single WebCore function on typical web sites and no regression here can be allowed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354402</commentid>
    <comment_count>49</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-20 21:01:06 -0800</bug_when>
    <thetext>Profiled some page loads using shark on OSX with the modifications in place. Total time spent in applyProperty for www.apple.com and mail.google.com was only 0.1%. I didn&apos;t actually see any samples hit in the new code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354545</commentid>
    <comment_count>50</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-21 05:58:38 -0800</bug_when>
    <thetext>(In reply to comment #49)
&gt; Profiled some page loads using shark on OSX with the modifications in place. Total time spent in applyProperty for www.apple.com and mail.google.com was only 0.1%. I didn&apos;t actually see any samples hit in the new code.

Please test pages that have some serious styling. Here are some:

news.bbc.co.uk
engadget.com
wsj.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354611</commentid>
    <comment_count>51</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-21 08:30:03 -0800</bug_when>
    <thetext>You may also find that it&apos;s more useful to instrument the code using currentTime().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354825</commentid>
    <comment_count>52</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-21 14:57:44 -0800</bug_when>
    <thetext>Even on those pages it doesn&apos;t seem terribly hot:
www.bbc.co.uk: 0.3%
www.engadget.com: 0.1%
www.wsj.com: 0.1%

Since applyProperty doesn&apos;t do much - just maps a property/value pair onto a RenderStyle object, perhaps then it is unsurprising that the total cost isn&apos;t very significant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355064</commentid>
    <comment_count>53</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-21 22:32:10 -0800</bug_when>
    <thetext>That is strange. On news.bbc.co.uk I see this having ~2.5% of the engine thread samples (0.3% in a single function in a non-micro benchmark would be hot too). 

Anyway, that wasn&apos;t really the question I asked. If you attach a patch that applies to the current tot I can test it too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355607</commentid>
    <comment_count>54</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-02-22 14:26:58 -0800</bug_when>
    <thetext>Hi Antti, the current patch is at https://bugs.webkit.org/show_bug.cgi?id=54707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363618</commentid>
    <comment_count>55</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-03-07 14:56:58 -0800</bug_when>
    <thetext>I followed Antti&apos;s measurement approach of counting profiler hits in applyProperty. Initially this did show some performance loss, we looked at the assembly output and found it was due to function call overheads. I have updated the hot code-paths to make them inline correctly and it now appears faster than the existing code by that metric.

I have updated bug 54707 with the measurement details and a new patch that inlines the property map accessors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935901</commentid>
    <comment_count>56</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-03 11:58:44 -0700</bug_when>
    <thetext>This is a task bug with a long obsolete patch, marking resolved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76440</attachid>
            <date>2010-12-13 14:26:39 -0800</date>
            <delta_ts>2010-12-21 18:58:18 -0800</delta_ts>
            <desc>WIP: proof of concept code</desc>
            <filename>bug-46592-20101214092636.patch</filename>
            <type>text/plain</type>
            <size>54244</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzk2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMTItMTMgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29u
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkgdG8gdXNlIGZ1
bmN0aW9uIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NjU5MgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZUFwcGxpY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBw
bGljYXRvcjo6bWFwRmlsbEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVB
cHBsaWNhdG9yOjptYXBGaWxsQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZUFwcGxp
Y2F0b3I6Om1hcEZpbGxDb21wb3NpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVBcHBs
aWNhdG9yOjptYXBGaWxsT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbGlj
YXRvcjo6bWFwRmlsbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlJbnZhbGlk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVBcHBsaWNhdG9yOjp+Q1NTU3R5bGVBcHBsaWNhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbGljYXRvcjo6Q1NTU3R5bGVBcHBsaWNhdG9yKToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVBcHBsaWNhdG9yLmg6IEFkZGVkLgorICAgICAgICAqIGNz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
bWFwRmlsbENvbXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpt
YXBGaWxsU2l6ZSk6CisKIDIwMTAtMTItMTMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzM0ODcp
CisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMTYwMiw2ICsxNjAyLDggQEAKIAkJN0FGRDRBOEIxMTMxQzI3NjAwMzVCODgzIC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FGRDRG
RjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4
MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0UzM0NEMDExMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJp
b3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdF
MzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODAyQzBGNDcxMkIxQTIwODAwMTg5
QjBDIC8qIENTU1N0eWxlQXBwbGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MDJDMEY0NTEyQjFBMjA4MDAxODlCMEMgLyogQ1NTU3R5bGVB
cHBsaWNhdG9yLmNwcCAqLzsgfTsKKwkJODAyQzBGNDgxMkIxQTIwODAwMTg5QjBDIC8qIENTU1N0
eWxlQXBwbGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODAyQzBGNDYxMkIxQTIwODAwMTg5QjBDIC8qIENTU1N0eWxlQXBwbGljYXRvci5oICov
OyB9OwogCQk4MUE3MzI1RTEyMTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUE3MzI1RDEyMTAxODlCMDBG
QzBEOUUgLyogSURCQ3Vyc29yLmggKi87IH07CiAJCTgxQTczMjYwMTIxMDE4QTQwMEZDMEQ5RSAv
KiBJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODFBNzMyNUYxMjEwMThBNDAwRkMwRDlFIC8qIElEQkN1cnNvci5jcHAgKi87IH07CiAJ
CTgxQTczMjc4MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMyNzcxMjEwMTlF
MTAwRkMwRDlFIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi87IH07CkBAIC03ODA5LDYgKzc4
MTEsOCBAQAogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UzM0NE
MDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHVyZ2VQcmlvcml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MDJDMEY0NTEyQjFBMjA4MDAxODlCMEMgLyogQ1NTU3R5bGVBcHBsaWNhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1N0eWxlQXBwbGljYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgwMkMwRjQ2MTJCMUEyMDgwMDE4OUIw
QyAvKiBDU1NTdHlsZUFwcGxpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTU3R5bGVBcHBsaWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgx
QTczMjVEMTIxMDE4OUIwMEZDMEQ5RSAvKiBJREJDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgxQTczMjVGMTIxMDE4QTQwMEZDMEQ5RSAvKiBJREJDdXJzb3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQ3Vyc29yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODFBNzMyNzcxMjEwMTlFMTAwRkMwRDlFIC8qIElEQkN1cnNvckJhY2tlbmRJ
bXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJ
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzgxNSw2ICsxNzgxOSw4IEBA
CiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTgwMkMwRjQ1MTJCMUEyMDgwMDE4OUIwQyAvKiBD
U1NTdHlsZUFwcGxpY2F0b3IuY3BwICovLAorCQkJCTgwMkMwRjQ2MTJCMUEyMDgwMDE4OUIwQyAv
KiBDU1NTdHlsZUFwcGxpY2F0b3IuaCAqLywKIAkJCQk5M0NBNEM5QzA5REY5M0ZBMDBERjg2Nzcg
LyogbWFrZXRva2VuaXplciAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4QzUgLyogQ291
bnRlci5oICovLAogCQkJCTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3VudGVyLmlkbCAq
LywKQEAgLTIxNTE1LDYgKzIxNTIxLDcgQEAKIAkJCQk0OTlCM0VDNTEyOENDQzQ3MDBFNzI2QzIg
LyogUGxhdGZvcm1DQUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VENzEyOENEMzE0
MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTlCM0VE
RDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODAyQzBGNDgxMkIxQTIwODAwMTg5QjBDIC8qIENTU1N0eWxlQXBwbGljYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yNDEwMiw2ICsyNDEwOSw3IEBACiAJCQkJNDk5QjNFRDYxMjhDRDMx
NDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTU4
NzgyMTEyQTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTQ5NTg3ODIyMTJBNTdEREYwMDcyMzhBQyAvKiBQbGF0Zm9ybUNBTGF5ZXJN
YWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk4MDJDMEY0NzEyQjFBMjA4MDAxODlCMEMgLyogQ1NT
U3R5bGVBcHBsaWNhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9jc3MvQ1NT
U3R5bGVBcHBsaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZUFw
cGxpY2F0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBsaWNh
dG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NDUgQEAKKy8qCisgKiBDU1NTdHlsZUFw
cGxpY2F0b3IuY3BwCisgKgorICogIENyZWF0ZWQgb246IERlYyA5LCAyMDEwCisgKiAgICAgIEF1
dGhvcjogbWFjcGhlcnNvbgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJDU1NTdHlsZUFwcGxpY2F0b3IuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIERFRklORV9JTkhFUklUKFByb3BlcnR5
KSB2b2lkIENTU1N0eWxlQXBwbGljYXRvcjo6aGFuZGxlSW5oZXJpdCMjUHJvcGVydHkKKworI2Rl
ZmluZSBERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgdm9pZCBDU1NTdHlsZUFwcGxpY2F0b3I6Omhh
bmRsZUluaXRpYWwjI1Byb3BlcnR5CisKKyNkZWZpbmUgREVGSU5FX1ZBTFVFKFByb3BlcnR5KSB2
b2lkIENTU1N0eWxlQXBwbGljYXRvcjo6aGFuZGxlVmFsdWUjI1Byb3BlcnR5CisKKyNkZWZpbmUg
REVGSU5FX0hBTkRMRV9JTkhFUklUKFByb3BlcnR5LCBTZXR0ZXIsIEdldHRlcikgXAorREVGSU5F
X0lOSEVSSVQoUHJvcGVydHkpKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlKSB7IFwKKyAgICBzdHlsZS0+U2V0dGVyKHBhcmVudFN0eWxlLT5HZXR0ZXIoKSk7IFwK
K30KKworI2RlZmluZSBERUZJTkVfSEFORExFX0lOSVRJQUwoUHJvcGVydHksIFNldHRlciwgR2V0
dGVyKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IFwK
KyAgICBzdHlsZS0+U2V0dGVyKFJlbmRlclN0eWxlOjpHZXR0ZXIoKSk7IFwKK30KKworI2RlZmlu
ZSBERUZJTkVfSEFORExFX1ZBTFVFKFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9WQUxVRShQ
cm9wZXJ0eSkoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSosIENTU1ZhbHVlKiB2YWx1
ZSkgeyBcCisJaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsgXAorCSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBc
CisgICAgICAgIHN0eWxlLT5TZXR0ZXIoKnApOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVG
SU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoUHJvcGVydHksIGxheWVyVHlwZSwgTGF5ZXJU
eXBlLCBwcm9wLCBQcm9wKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkoUmVuZGVyU3R5bGUg
KnN0eWxlLCBSZW5kZXJTdHlsZSAqcGFyZW50U3R5bGUpIHsgXAorICAgIEZpbGxMYXllciogY3Vy
ckNoaWxkID0gc3R5bGUtPmFjY2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAorICAgIEZpbGxM
YXllciogcHJldkNoaWxkID0gMDsgXAorICAgIGNvbnN0IEZpbGxMYXllciogY3VyclBhcmVudCA9
IHBhcmVudFN0eWxlLT5sYXllclR5cGUjI0xheWVycygpOyBcCisgICAgd2hpbGUgKGN1cnJQYXJl
bnQgJiYgY3VyclBhcmVudC0+aXMjI1Byb3AjI1NldCgpKSB7IFwKKyAgICAgICAgaWYgKCFjdXJy
Q2hpbGQpIHsgXAorICAgICAgICAgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGxheWVyLiovIFwK
KyAgICAgICAgICAgIGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoTGF5ZXJUeXBlIyNGaWxsTGF5
ZXIpOyBcCisgICAgICAgICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3VyckNoaWxkKTsgXAorICAg
ICAgICB9IFwKKyAgICAgICAgY3VyckNoaWxkLT5zZXQjI1Byb3AoY3VyclBhcmVudC0+cHJvcCgp
KTsgXAorICAgICAgICBwcmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7IFwKKyAgICAgICAgY3VyckNoaWxk
ID0gcHJldkNoaWxkLT5uZXh0KCk7IFwKKyAgICAgICAgY3VyclBhcmVudCA9IGN1cnJQYXJlbnQt
Pm5leHQoKTsgXAorICAgIH0gXAorICAgIFwKKyAgICB3aGlsZSAoY3VyckNoaWxkKSB7IFwKKyAg
ICAgICAgLyogUmVzZXQgYW55IHJlbWFpbmluZyBsYXllcnMgdG8gbm90IGhhdmUgdGhlIHByb3Bl
cnR5IHNldC4gKi8gXAorICAgICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQcm9wKCk7IFwKKyAgICAg
ICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAgICB9IFwKK30KKworI2RlZmlu
ZSBERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChQcm9wZXJ0eSwgbGF5ZXJUeXBlLCBM
YXllclR5cGUsIHByb3AsIFByb3ApIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5KShSZW5kZXJT
dHlsZSAqc3R5bGUpIHsgXAorICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gc3R5bGUtPmFjY2Vz
cyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAorICAgIGN1cnJDaGlsZC0+c2V0IyNQcm9wKEZpbGxM
YXllcjo6aW5pdGlhbEZpbGwjI1Byb3AoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpKTsgXAorICAgIGZv
ciAoY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IGN1cnJDaGlsZDsgY3VyckNoaWxkID0g
Y3VyckNoaWxkLT5uZXh0KCkpIFwKKyAgICAgICAgY3VyckNoaWxkLT5jbGVhciMjUHJvcCgpOyBc
Cit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKFByb3BlcnR5LCBs
YXllclR5cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5
KShSZW5kZXJTdHlsZSAqc3R5bGUsIFJlbmRlclN0eWxlICpyb290RWxlbWVudFN0eWxlLCBDU1NW
YWx1ZSAqdmFsdWUpIHsgXAorICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gc3R5bGUtPmFjY2Vz
cyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAorICAgIEZpbGxMYXllciogcHJldkNoaWxkID0gMDsg
XAorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCisgICAgICAgIC8qIFdhbGsgZWFj
aCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBu
ZWVkZWQuICovIFwKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsgXAorICAgICAgICAgICAgaWYgKCFj
dXJyQ2hpbGQpIHsgXAorICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBsYXll
ciB0byBob2xkIHRoaXMgdmFsdWUgKi8gXAorICAgICAgICAgICAgICAgIGN1cnJDaGlsZCA9IG5l
dyBGaWxsTGF5ZXIoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpOyBcCisgICAgICAgICAgICAgICAgcHJl
dkNoaWxkLT5zZXROZXh0KGN1cnJDaGlsZCk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAg
ICAgbWFwRmlsbCMjUHJvcChzdHlsZSwgcm9vdEVsZW1lbnRTdHlsZSwgY3VyckNoaWxkLCB2YWx1
ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOyBcCisgICAgICAgICAgICBwcmV2Q2hp
bGQgPSBjdXJyQ2hpbGQ7IFwKKyAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4
dCgpOyBcCisgICAgICAgIH0gXAorICAgIH0gZWxzZSB7IFwKKyAgICAgICAgbWFwRmlsbCMjUHJv
cChzdHlsZSwgcm9vdEVsZW1lbnRTdHlsZSwgY3VyckNoaWxkLCB2YWx1ZSk7IFwKKyAgICAgICAg
Y3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAgICB9IFwKKyAgICB3aGlsZSAoY3Vy
ckNoaWxkKSB7IFwKKyAgICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBsYXllcnMgdG8gbm90
IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorICAgICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQ
cm9wKCk7IFwKKyAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAgICB9
IFwKK30KKworI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShQcm9wZXJ0eSwgRXF1
aXZhbGVudCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpKFJlbmRlclN0eWxlICpzdHlsZSwg
UmVuZGVyU3R5bGUgKnBhcmVudFN0eWxlKSB7Q1NTU3R5bGVBcHBsaWNhdG9yOjpoYW5kbGVJbmhl
cml0IyNFcXVpdmFsZW50KHN0eWxlLCBwYXJlbnRTdHlsZSk7fSBcCitERUZJTkVfSU5JVElBTChQ
cm9wZXJ0eSkoUmVuZGVyU3R5bGUgKnN0eWxlKSB7Q1NTU3R5bGVBcHBsaWNhdG9yOjpoYW5kbGVJ
bml0aWFsIyNFcXVpdmFsZW50KHN0eWxlKTt9IFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkoUmVu
ZGVyU3R5bGUgKnN0eWxlLCBSZW5kZXJTdHlsZSAqcm9vdEVsZW1lbnRTdHlsZSwgQ1NTVmFsdWUg
KnZhbHVlKSB7Q1NTU3R5bGVBcHBsaWNhdG9yOjpoYW5kbGVWYWx1ZSMjRXF1aXZhbGVudChzdHls
ZSwgcm9vdEVsZW1lbnRTdHlsZSwgdmFsdWUpO30KKworCit2b2lkIENTU1N0eWxlQXBwbGljYXRv
cjo6bWFwRmlsbEF0dGFjaG1lbnQoUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSosIEZpbGxMYXll
ciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKwkvLyBYWFggY2hlY2sgdGhhdCB0aGlzIGlz
IHVucmVhY2hhYmxlIGFuZCB0aGVuIHJlbW92ZQorICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBl
KCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMKSB7CisgICAgICAgIGxheWVyLT5zZXRBdHRhY2ht
ZW50KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50KGxheWVyLT50eXBlKCkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVlRml4
ZWQ6CisgICAgICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRh
Y2htZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlU2Nyb2xs
OgorICAgICAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoU2Nyb2xsQmFja2dyb3VuZEF0dGFj
aG1lbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMb2NhbDoK
KyAgICAgICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50KExvY2FsQmFja2dyb3VuZEF0dGFjaG1l
bnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorCit2b2lkIENTU1N0eWxlQXBwbGljYXRvcjo6bWFwRmlsbENsaXAo
UmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSosIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKK3sKKwkvLyBYWFggY2hlY2sgdGhhdCB0aGlzIGlzIHVucmVhY2hhYmxlIGFuZCB0aGVu
IHJlbW92ZQorICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19J
TklUSUFMKSB7CisgICAgICAgIGxheWVyLT5zZXRDbGlwKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxD
bGlwKGxheWVyLT50eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisgICAgbGF5ZXItPnNldENsaXAoKnByaW1pdGl2ZVZhbHVlKTsKK30KKwor
dm9pZCBDU1NTdHlsZUFwcGxpY2F0b3I6Om1hcEZpbGxDb21wb3NpdGUoUmVuZGVyU3R5bGUqLCBS
ZW5kZXJTdHlsZSosIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKwkvLyBY
WFggY2hlY2sgdGhhdCB0aGlzIGlzIHVucmVhY2hhYmxlIGFuZCB0aGVuIHJlbW92ZQorICAgIGlm
ICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMKSB7CisgICAg
ICAgIGxheWVyLT5zZXRDb21wb3NpdGUoRmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZShs
YXllci0+dHlwZSgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgIGxheWVyLT5zZXRDb21wb3NpdGUoKnByaW1pdGl2ZVZhbHVlKTsKK30KKwor
dm9pZCBDU1NTdHlsZUFwcGxpY2F0b3I6Om1hcEZpbGxPcmlnaW4oUmVuZGVyU3R5bGUqLCBSZW5k
ZXJTdHlsZSosIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAo
dmFsdWUtPmNzc1ZhbHVlVHlwZSgpID09IENTU1ZhbHVlOjpDU1NfSU5JVElBTCkgeworICAgICAg
ICBsYXllci0+c2V0T3JpZ2luKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxPcmlnaW4obGF5ZXItPnR5
cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsK
KyAgICBsYXllci0+c2V0T3JpZ2luKCpwcmltaXRpdmVWYWx1ZSk7Cit9CisKK3ZvaWQgQ1NTU3R5
bGVBcHBsaWNhdG9yOjptYXBGaWxsU2l6ZShSZW5kZXJTdHlsZSAqc3R5bGUsIFJlbmRlclN0eWxl
ICpyb290RWxlbWVudFN0eWxlLCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7
CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5z
ZXRTaXplVHlwZShTaXplTm9uZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVDb250YWluKQorICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoQ29udGFpbik7CisgICAg
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb3ZlcikKKyAg
ICAgICAgbGF5ZXItPnNldFNpemVUeXBlKENvdmVyKTsKKyAgICBlbHNlCisgICAgICAgIGxheWVy
LT5zZXRTaXplVHlwZShTaXplTGVuZ3RoKTsKKworICAgIExlbmd0aFNpemUgYiA9IEZpbGxMYXll
cjo6aW5pdGlhbEZpbGxTaXplTGVuZ3RoKGxheWVyLT50eXBlKCkpOworCisgICAgaWYgKHZhbHVl
LT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NTX0lOSVRJQUwgfHwgcHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb250YWluCisgICAgICAgIHx8IHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ292ZXIpIHsKKyAgICAgICAgbGF5ZXItPnNldFNp
emVMZW5ndGgoYik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQYWlyKiBwYWlyID0g
cHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOworICAgIGlmICghcGFpciB8fCAhcGFpci0+
Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBmaXJzdCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFp
ci0+Zmlyc3QoKSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZCA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkpOworCisgICAgTGVuZ3RoIGZpcnN0
TGVuZ3RoLCBzZWNvbmRMZW5ndGg7CisgICAgaW50IGZpcnN0VHlwZSA9IGZpcnN0LT5wcmltaXRp
dmVUeXBlKCk7CisgICAgaW50IHNlY29uZFR5cGUgPSBzZWNvbmQtPnByaW1pdGl2ZVR5cGUoKTsK
KworICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworCisgICAg
aWYgKGZpcnN0VHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV04pCisgICAgICAg
IGZpcnN0TGVuZ3RoID0gTGVuZ3RoKEF1dG8pOworICAgIGVsc2UgaWYgKENTU1ByaW1pdGl2ZVZh
bHVlOjppc1VuaXRUeXBlTGVuZ3RoKGZpcnN0VHlwZSkpCisgICAgICAgIGZpcnN0TGVuZ3RoID0g
TGVuZ3RoKGZpcnN0LT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlLCByb290RWxlbWVu
dFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOworICAgIGVsc2UgaWYgKGZpcnN0VHlwZSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgIGZpcnN0TGVuZ3RoID0g
TGVuZ3RoKGZpcnN0LT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICBlbHNlCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChzZWNvbmRUeXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVU5LTk9XTikKKyAgICAgICAgc2Vjb25kTGVuZ3RoID0gTGVuZ3RoKEF1dG8pOworICAgIGVs
c2UgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHNlY29uZFR5cGUpKQor
ICAgICAgICBzZWNvbmRMZW5ndGggPSBMZW5ndGgoc2Vjb25kLT5jb21wdXRlTGVuZ3RoSW50Rm9y
TGVuZ3RoKHN0eWxlLCByb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOworICAg
IGVsc2UgaWYgKHNlY29uZFR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
KQorICAgICAgICBzZWNvbmRMZW5ndGggPSBMZW5ndGgoc2Vjb25kLT5nZXREb3VibGVWYWx1ZSgp
LCBQZXJjZW50KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybjsKKworICAgIGIuc2V0V2lkdGgo
Zmlyc3RMZW5ndGgpOworICAgIGIuc2V0SGVpZ2h0KHNlY29uZExlbmd0aCk7CisgICAgbGF5ZXIt
PnNldFNpemVMZW5ndGgoYik7Cit9CisKKy8vIENTU1Byb3BlcnR5SW52YWxpZAorREVGSU5FX0lO
SEVSSVQoQ1NTUHJvcGVydHlJbnZhbGlkKShSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKil7fQor
REVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlJbnZhbGlkKShSZW5kZXJTdHlsZSope30KK0RFRklO
RV9WQUxVRShDU1NQcm9wZXJ0eUludmFsaWQpKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqLCBD
U1NWYWx1ZSope30KKworLy8gQ1NTUHJvcGVydHlDb2xvcgorCisKKy8vIENTU1Byb3BlcnR5RGly
ZWN0aW9uCisvLyBDU1NQcm9wZXJ0eURpc3BsYXkKKy8vIENTU1Byb3BlcnR5Rm9udAorLy8gQ1NT
UHJvcGVydHlGb250RmFtaWx5CisvLyBDU1NQcm9wZXJ0eUZvbnRTaXplCisvLyBDU1NQcm9wZXJ0
eUZvbnRTdHlsZQorLy8gQ1NTUHJvcGVydHlGb250VmFyaWFudAorLy8gQ1NTUHJvcGVydHlGb250
V2VpZ2h0CisvLyBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcKKy8vIENTU1Byb3BlcnR5V2Via2l0
Rm9udFNtb290aGluZworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdAorLy8gQ1NT
UHJvcGVydHlXZWJraXRXcml0aW5nTW9kZQorLy8gQ1NTUHJvcGVydHlab29tCisvLyBDU1NQcm9w
ZXJ0eUxpbmVIZWlnaHQKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZAorLy8gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQXR0YWNobWVudAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgYXR0
YWNobWVudCwgQXR0YWNobWVudCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENT
U1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGF0
dGFjaG1lbnQsIEF0dGFjaG1lbnQpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgYXR0
YWNobWVudCwgQXR0YWNobWVudCkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcAorREVG
SU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwg
YmFja2dyb3VuZCwgQmFja2dyb3VuZCwgY2xpcCwgQ2xpcCkKK0RFRklORV9IQU5ETEVfRklMTF9M
QVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIGJhY2tncm91bmQsIEJhY2tn
cm91bmQsIGNsaXAsIENsaXApCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgY2xpcCwgQ2xpcCkK
KworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IKKy8vIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEltYWdlCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4KK0RFRklORV9IQU5ETEVfRklM
TF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgYmFja2dyb3VuZCwg
QmFja2dyb3VuZCwgb3JpZ2luLCBPcmlnaW4pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5J
VElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIGJhY2tncm91bmQsIEJhY2tncm91bmQs
IG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3Bl
cnR5QmFja2dyb3VuZE9yaWdpbiwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgb3JpZ2luLCBPcmln
aW4pCisKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uCisvLyBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblgKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWQorLy8g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0CisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXRYCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCisvLyBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRTaXplCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJh
Y2tncm91bmRTaXplLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBzaXplLCBTaXplKQorREVGSU5F
X0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSwgYmFj
a2dyb3VuZCwgQmFja2dyb3VuZCwgc2l6ZSwgU2l6ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlF
Ul9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCBzaXplLCBTaXplKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlcgorLy8gQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b20KKy8vIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IKKy8vIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tTGVmdFJhZGl1cworLy8gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJh
ZGl1cworLy8gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZQorLy8gQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21XaWR0aAorLy8gQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZQorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsIHNldEJvcmRlckNvbGxhcHNlLCBi
b3JkZXJDb2xsYXBzZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckNv
bGxhcHNlLCBzZXRCb3JkZXJDb2xsYXBzZSwgaW5pdGlhbEJvcmRlckNvbGxhcHNlKQorREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UpKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVu
ZGVyU3R5bGUqLCBDU1NWYWx1ZSogdmFsdWUpIHsKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkgeworICAgIAlDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVlQ29sbGFwc2U6
CisgICAgICAgICAgICBzdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2UodHJ1ZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNlcGFyYXRlOgorICAgICAgICAgICAgc3R5
bGUtPnNldEJvcmRlckNvbGxhcHNlKGZhbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yCisvLyBDU1NQcm9wZXJ0
eUJvcmRlckxlZnQKKy8vIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yCisvLyBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRTdHlsZQorLy8gQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgKKy8vIENTU1By
b3BlcnR5Qm9yZGVyUmFkaXVzCisvLyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0CisvLyBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZQorLy8g
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoCisvLyBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcK
Ky8vIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUKKy8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wCisvLyBD
U1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yCisvLyBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXMKKy8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMKKy8vIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlclRvcFN0
eWxlLCBzZXRCb3JkZXJUb3BTdHlsZSwgYm9yZGVyVG9wU3R5bGUpCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgc2V0Qm9yZGVyVG9wU3R5bGUsIGluaXRp
YWxCb3JkZXJTdHlsZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BT
dHlsZSwgc2V0Qm9yZGVyVG9wU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgK
Ky8vIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgKKy8vIENTU1Byb3BlcnR5Qm90dG9tCisvLyBDU1NQ
cm9wZXJ0eUJveFNpemluZworLy8gQ1NTUHJvcGVydHlDYXB0aW9uU2lkZQorLy8gQ1NTUHJvcGVy
dHlDbGVhcgorLy8gQ1NTUHJvcGVydHlDbGlwCisvLyBDU1NQcm9wZXJ0eUNvbnRlbnQKKy8vIENT
U1Byb3BlcnR5Q291bnRlckluY3JlbWVudAorLy8gQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQKKy8v
IENTU1Byb3BlcnR5Q3Vyc29yCisvLyBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMKKy8vIENTU1Byb3Bl
cnR5RmxvYXQKKy8vIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gKKy8vIENTU1Byb3BlcnR5SGVpZ2h0
CisvLyBDU1NQcm9wZXJ0eUxlZnQKKy8vIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZworLy8gQ1NT
UHJvcGVydHlMaXN0U3R5bGUKKy8vIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UKKy8vIENTU1By
b3BlcnR5TGlzdFN0eWxlUG9zaXRpb24KKy8vIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZQorLy8g
Q1NTUHJvcGVydHlNYXJnaW4KKy8vIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tCisvLyBDU1NQcm9w
ZXJ0eU1hcmdpbkxlZnQKKy8vIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQKKy8vIENTU1Byb3BlcnR5
TWFyZ2luVG9wCisvLyBDU1NQcm9wZXJ0eU1heEhlaWdodAorLy8gQ1NTUHJvcGVydHlNYXhXaWR0
aAorLy8gQ1NTUHJvcGVydHlNaW5IZWlnaHQKKy8vIENTU1Byb3BlcnR5TWluV2lkdGgKKy8vIENT
U1Byb3BlcnR5T3BhY2l0eQorLy8gQ1NTUHJvcGVydHlPcnBoYW5zCisvLyBDU1NQcm9wZXJ0eU91
dGxpbmUKKy8vIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yCisvLyBDU1NQcm9wZXJ0eU91dGxpbmVP
ZmZzZXQKKy8vIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlCisvLyBDU1NQcm9wZXJ0eU91dGxpbmVX
aWR0aAorLy8gQ1NTUHJvcGVydHlPdmVyZmxvdworLy8gQ1NTUHJvcGVydHlPdmVyZmxvd1gKKy8v
IENTU1Byb3BlcnR5T3ZlcmZsb3dZCisvLyBDU1NQcm9wZXJ0eVBhZGRpbmcKKy8vIENTU1Byb3Bl
cnR5UGFkZGluZ0JvdHRvbQorLy8gQ1NTUHJvcGVydHlQYWRkaW5nTGVmdAorLy8gQ1NTUHJvcGVy
dHlQYWRkaW5nUmlnaHQKKy8vIENTU1Byb3BlcnR5UGFkZGluZ1RvcAorLy8gQ1NTUHJvcGVydHlQ
YWdlCisvLyBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyCisvLyBDU1NQcm9wZXJ0eVBhZ2VCcmVh
a0JlZm9yZQorLy8gQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUKKy8vIENTU1Byb3BlcnR5UG9p
bnRlckV2ZW50cworLy8gQ1NTUHJvcGVydHlQb3NpdGlvbgorLy8gQ1NTUHJvcGVydHlRdW90ZXMK
Ky8vIENTU1Byb3BlcnR5UmVzaXplCisvLyBDU1NQcm9wZXJ0eVJpZ2h0CisvLyBDU1NQcm9wZXJ0
eVNpemUKKy8vIENTU1Byb3BlcnR5U3JjCisvLyBDU1NQcm9wZXJ0eVNwZWFrCisvLyBDU1NQcm9w
ZXJ0eVRhYmxlTGF5b3V0CisvLyBDU1NQcm9wZXJ0eVRleHRBbGlnbgorLy8gQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvbgorLy8gQ1NTUHJvcGVydHlUZXh0SW5kZW50CisvLyBDU1NQcm9wZXJ0eVRl
eHRMaW5lVGhyb3VnaAorLy8gQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcgorLy8gQ1NT
UHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlCisvLyBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3Vn
aFN0eWxlCisvLyBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoCisvLyBDU1NQcm9wZXJ0
eVRleHRPdmVyZmxvdworLy8gQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmUKKy8vIENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lQ29sb3IKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZQorLy8gQ1NT
UHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZQorLy8gQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0
aAorLy8gQ1NTUHJvcGVydHlUZXh0U2hhZG93CisvLyBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0K
Ky8vIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZQorLy8gQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5l
Q29sb3IKKy8vIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUKKy8vIENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVN0eWxlCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aAorLy8gQ1NT
UHJvcGVydHlUb3AKKy8vIENTU1Byb3BlcnR5VW5pY29kZUJpZGkKKy8vIENTU1Byb3BlcnR5VW5p
Y29kZVJhbmdlCisvLyBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24KKy8vIENTU1Byb3BlcnR5Vmlz
aWJpbGl0eQorLy8gQ1NTUHJvcGVydHlXaGl0ZVNwYWNlCisvLyBDU1NQcm9wZXJ0eVdpZG93cwor
Ly8gQ1NTUHJvcGVydHlXaWR0aAorLy8gQ1NTUHJvcGVydHlXb3JkQnJlYWsKKy8vIENTU1Byb3Bl
cnR5V29yZFNwYWNpbmcKKy8vIENTU1Byb3BlcnR5V29yZFdyYXAKKy8vIENTU1Byb3BlcnR5Wklu
ZGV4CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbgorLy8gQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EZWxheQorLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24KKy8v
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24KKy8vIENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRmlsbE1vZGUKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9u
Q291bnQKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZQorLy8gQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25QbGF5U3RhdGUKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24KKy8vIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZQorLy8gQ1NTUHJvcGVy
dHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkKKy8vIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZENsaXAKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0QmFja2dy
b3VuZENsaXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXApCisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0QmFja2dyb3VuZENvbXBvc2l0ZQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBiYWNrZ3JvdW5kLCBCYWNrZ3Jv
dW5kLCBjb21wb3NpdGUsIENvbXBvc2l0ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwgYmFja2dyb3VuZCwgQmFj
a2dyb3VuZCwgY29tcG9zaXRlLCBDb21wb3NpdGUpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBiYWNrZ3JvdW5kLCBC
YWNrZ3JvdW5kLCBjb21wb3NpdGUsIENvbXBvc2l0ZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kT3JpZ2luCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9wZXJ0eVdl
YmtpdEJhY2tncm91bmRPcmlnaW4sIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbikKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZQorREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVS
VFkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcgorLy8gQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJBZnRlckNvbG9yCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5
bGUKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aAorLy8gQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJCZWZvcmUKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IK
Ky8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlV2lkdGgKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckVuZFN0eWxlCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckZpdAorLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFs
U3BhY2luZworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZQorLy8gQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJSYWRpdXMKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQKKy8vIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcgorLy8gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydFN0eWxlCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgKKy8vIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dEJveEFsaWduCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbgorLy8gQ1NTUHJvcGVy
dHlXZWJraXRCb3hGbGV4CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cAorLy8gQ1NT
UHJvcGVydHlXZWJraXRCb3hMaW5lcworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3Jv
dXAKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJv
eFBhY2sKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdAorLy8gQ1NTUHJvcGVydHlXZWJr
aXRCb3hTaGFkb3cKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
QnJlYWtCZWZvcmUKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUKKy8vIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2Fw
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZUNvbG9yCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZQorLy8gQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
U3BhbgorLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aAorLy8gQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5zCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEKKy8vIENTU1Byb3Bl
cnR5V2Via2l0SGlnaGxpZ2h0CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3Rl
cgorLy8gQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMb2NhbGUKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0SHlwaGVucworLy8gQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWsKKy8vIENTU1Byb3BlcnR5
V2Via2l0TGluZUNsYW1wCisvLyBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aAorLy8gQ1NT
UHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFm
dGVyQ29sbGFwc2UKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UKKy8v
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luVG9wQ29sbGFwc2UKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UK
Ky8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXIKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQmVmb3JlCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZAorLy8gQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5TdGFydAorLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24KKy8vIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUlu
Y3JlbWVudAorLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbgorLy8gQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3BlZWQKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxl
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2sKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0
YWNobWVudAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQXR0YWNobWVudCwgbWFzaywgTWFzaywgYXR0YWNobWVudCwgQXR0YWNobWVudCkKK0RF
RklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFj
aG1lbnQsIG1hc2ssIE1hc2ssIGF0dGFjaG1lbnQsIEF0dGFjaG1lbnQpCitERUZJTkVfSEFORExF
X0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgbWFzaywg
TWFzaywgYXR0YWNobWVudCwgQXR0YWNobWVudCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNr
Qm94SW1hZ2UKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcAorREVGSU5FX0hBTkRMRV9G
SUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgbWFzaywgTWFzaywg
Y2xpcCwgQ2xpcCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0TWFza0NsaXAsIG1hc2ssIE1hc2ssIGNsaXAsIENsaXApCitERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgbWFzaywgTWFzaywgY2xp
cCwgQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIG1h
c2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBtYXNrLCBNYXNrLCBjb21w
b3NpdGUsIENvbXBvc2l0ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29tcG9zaXRl
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tPcmlnaW4KK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TWFza09yaWdpbiwgbWFzaywgTWFzaywgb3JpZ2luLCBPcmlnaW4pCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIG1hc2ss
IE1hc2ssIG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgbWFzaywgTWFzaywgb3JpZ2luLCBPcmlnaW4pCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblgKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWQorLy8gQ1NTUHJv
cGVydHlXZWJraXRNYXNrUmVwZWF0CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFz
a1NpemUKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
TWFza1NpemUsIG1hc2ssIE1hc2ssIHNpemUsIFNpemUpCitERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNrLCBNYXNrLCBzaXplLCBT
aXplKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFz
a1NpemUsIG1hc2ssIE1hc2ssIHNpemUsIFNpemUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWF0
Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcgorLy8gQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dp
Y2FsV2lkdGgKKy8vIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodAorLy8gQ1NTUHJv
cGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGgKKy8vIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNh
bEhlaWdodAorLy8gQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZQorLy8gQ1NTUHJvcGVydHlXZWJr
aXRQYWRkaW5nQWZ0ZXIKKy8vIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZQorLy8gQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nRW5kCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFy
dAorLy8gQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZQorLy8gQ1NTUHJvcGVydHlXZWJraXRQ
ZXJzcGVjdGl2ZU9yaWdpbgorLy8gQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgK
Ky8vIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdFJ0bE9yZGVyaW5nCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0CisvLyBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpcworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcgorLy8g
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbgorLy8gQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXNTdHlsZQorLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eQorLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0
U3Ryb2tlCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcgorLy8gQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbgorLy8gQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW5YCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkKKy8v
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWgorLy8gQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1TdHlsZQorLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheQorLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
RHVyYXRpb24KKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5CisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbgorLy8gQ1NTUHJvcGVydHlXZWJr
aXRVc2VyRHJhZworLy8gQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5CisvLyBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJTZWxlY3QKKy8vIENTU1Byb3BlcnR5Q2xpcFBhdGgKKy8vIENTU1Byb3BlcnR5
Q2xpcFJ1bGUKKy8vIENTU1Byb3BlcnR5TWFzaworLy8gQ1NTUHJvcGVydHlFbmFibGVCYWNrZ3Jv
dW5kCisvLyBDU1NQcm9wZXJ0eUZpbHRlcgorLy8gQ1NTUHJvcGVydHlGbG9vZENvbG9yCisvLyBD
U1NQcm9wZXJ0eUZsb29kT3BhY2l0eQorLy8gQ1NTUHJvcGVydHlMaWdodGluZ0NvbG9yCisvLyBD
U1NQcm9wZXJ0eVN0b3BDb2xvcgorLy8gQ1NTUHJvcGVydHlTdG9wT3BhY2l0eQorLy8gQ1NTUHJv
cGVydHlDb2xvckludGVycG9sYXRpb24KKy8vIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9u
RmlsdGVycworLy8gQ1NTUHJvcGVydHlDb2xvclByb2ZpbGUKKy8vIENTU1Byb3BlcnR5Q29sb3JS
ZW5kZXJpbmcKKy8vIENTU1Byb3BlcnR5RmlsbAorLy8gQ1NTUHJvcGVydHlGaWxsT3BhY2l0eQor
Ly8gQ1NTUHJvcGVydHlGaWxsUnVsZQorLy8gQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZworLy8g
Q1NTUHJvcGVydHlNYXJrZXIKKy8vIENTU1Byb3BlcnR5TWFya2VyRW5kCisvLyBDU1NQcm9wZXJ0
eU1hcmtlck1pZAorLy8gQ1NTUHJvcGVydHlNYXJrZXJTdGFydAorLy8gQ1NTUHJvcGVydHlTaGFw
ZVJlbmRlcmluZworLy8gQ1NTUHJvcGVydHlTdHJva2UKKy8vIENTU1Byb3BlcnR5U3Ryb2tlRGFz
aGFycmF5CisvLyBDU1NQcm9wZXJ0eVN0cm9rZURhc2hvZmZzZXQKKy8vIENTU1Byb3BlcnR5U3Ry
b2tlTGluZWNhcAorLy8gQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbgorLy8gQ1NTUHJvcGVydHlT
dHJva2VNaXRlcmxpbWl0CisvLyBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHkKKy8vIENTU1Byb3Bl
cnR5U3Ryb2tlV2lkdGgKKy8vIENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUKKy8vIENTU1By
b3BlcnR5QmFzZWxpbmVTaGlmdAorLy8gQ1NTUHJvcGVydHlEb21pbmFudEJhc2VsaW5lCisvLyBD
U1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsCisvLyBDU1NQcm9wZXJ0eUdseXBo
T3JpZW50YXRpb25WZXJ0aWNhbAorLy8gQ1NTUHJvcGVydHlLZXJuaW5nCisvLyBDU1NQcm9wZXJ0
eVRleHRBbmNob3IKKy8vIENTU1Byb3BlcnR5VmVjdG9yRWZmZWN0CisvLyBDU1NQcm9wZXJ0eVdy
aXRpbmdNb2RlCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdworLy8gQ1NTUHJvcGVydHlX
ZWJraXREYXNoYm9hcmRSZWdpb24KKworQ1NTU3R5bGVBcHBsaWNhdG9yOjp+Q1NTU3R5bGVBcHBs
aWNhdG9yKCkgeworCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgZGVzdHJ1Y3RvciBzdHViCit9CisK
K0NTU1N0eWxlQXBwbGljYXRvcjo6Q1NTU3R5bGVBcHBsaWNhdG9yKCkgeworCS8vIFRPRE8gQXV0
by1nZW5lcmF0ZWQgY29uc3RydWN0b3Igc3R1YgorfQorCit9CkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NTdHlsZUFwcGxpY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZUFw
cGxpY2F0b3IuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbGljYXRv
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2MiBAQAorLyoKKyAqIENTU1N0eWxlQXBwbGlj
YXRvci5oCisgKgorICogIENyZWF0ZWQgb246IERlYyA5LCAyMDEwCisgKiAgICAgIEF1dGhvcjog
bWFjcGhlcnNvbgorICovCisKKyNpZm5kZWYgQ1NTU3R5bGVBcHBsaWNhdG9yX2hfCisjZGVmaW5l
IENTU1N0eWxlQXBwbGljYXRvcl9oXworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENT
U1ZhbHVlOworY2xhc3MgRmlsbExheWVyOworY2xhc3MgUmVuZGVyU3R5bGU7CisKKyNkZWZpbmUg
REVGSU5FX1BST1RPVFlQRVMoUHJvcGVydHkpIFwKK3N0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXQj
I1Byb3BlcnR5KFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqKTsgXAorc3RhdGljIHZvaWQgaGFu
ZGxlSW5pdGlhbCMjUHJvcGVydHkoUmVuZGVyU3R5bGUqKTsgXAorc3RhdGljIHZvaWQgaGFuZGxl
VmFsdWUjI1Byb3BlcnR5KFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqLCBDU1NWYWx1ZSopOwor
CitjbGFzcyBDU1NTdHlsZUFwcGxpY2F0b3IgeworcHVibGljOgorICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5SW52YWxpZCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUNvbG9yKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5RGlyZWN0aW9uKQorICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5RGlzcGxheSkKKyAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUZvbnQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlG
b250RmFtaWx5KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Rm9udFNpemUpCisg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlGb250U3R5bGUpCisgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlGb250VmFyaWFudCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlU
ZXh0UmVuZGVyaW5nKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Rm9u
dFNtb290aGluZykKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
aXplQWRqdXN0KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0V3JpdGlu
Z01vZGUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlab29tKQorICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5TGluZUhlaWdodCkKKyAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eUJhY2tncm91bmQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQXR0YWNobWVudCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUJhY2tncm91bmRDbGlwKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbikK
KyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbikKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgpCisgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKQorICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCkKKyAgICBERUZJTkVf
UFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYKQorICAgIERFRklORV9QUk9U
T1RZUEVTKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkpCisgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eUJvcmRlcikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9y
KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1
cykKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUp
CisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCkKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlKQorICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpCisgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFdpZHRoKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKQor
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpCisgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yKQorICAgIERFRklORV9QUk9U
T1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSkKKyAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlCb3JkZXJTcGFjaW5nKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
Qm9yZGVyU3R5bGUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJUb3Ap
CisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikKKyAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMpCisgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cykKKyAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlKQorICAgIERFRklORV9QUk9U
T1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUJvdHRvbSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJveFNpemluZykKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNhcHRpb25TaWRlKQorICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5Q2xlYXIpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlDbGlwKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Q29udGVudCkKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQpCisgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQpCisgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlDdXJzb3IpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlFbXB0eUNlbGxzKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5RmxvYXQpCisg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlGb250U3RyZXRjaCkKKyAgICBERUZJTkVf
UFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUhlaWdodCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eUxlZnQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlMZXR0ZXJTcGFj
aW5nKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5TGlzdFN0eWxlKQorICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UpCisgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbikKKyAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlNYXJnaW4pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNYXJnaW5C
b3R0b20pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KQorICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQpCisgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlNYXJnaW5Ub3ApCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlNYXhIZWlnaHQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNYXhX
aWR0aCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU1pbkhlaWdodCkKKyAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU1pbldpZHRoKQorICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5T3BhY2l0eSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eU9ycGhhbnMpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlPdXRsaW5lKQorICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKQorICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5T3V0bGluZU9mZnNldCkKKyAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eU91dGxpbmVXaWR0aCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU92ZXJm
bG93KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5T3ZlcmZsb3dYKQorICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5T3ZlcmZsb3dZKQorICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5UGFkZGluZykKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVBhZGRpbmdCb3R0b20pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlQYWRkaW5n
TGVmdCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCkKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVBhZGRpbmdUb3ApCisgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlQYWdlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5UGFnZUJyZWFrQWZ0ZXIpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlQYWdl
QnJlYWtCZWZvcmUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlQYWdlQnJlYWtJ
bnNpZGUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzKQor
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5UG9zaXRpb24pCisgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlRdW90ZXMpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlSZXNpemUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlSaWdodCkKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVNpemUpCisgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlTcmMpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTcGVh
aykKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KQorICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dEFsaWduKQorICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlUZXh0SW5kZW50KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dExpbmVU
aHJvdWdoQ29sb3IpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0TGluZVRo
cm91Z2hNb2RlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dExpbmVUaHJv
dWdoU3R5bGUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91
Z2hXaWR0aCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdykK
KyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRPdmVybGluZSkKKyAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9yKQorICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZSkKKyAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlKQorICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlUZXh0U2hhZG93KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4
dFRyYW5zZm9ybSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRVbmRlcmxp
bmUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3Ip
CisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZSkKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSkKKyAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aCkKKyAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRvcCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVVuaWNvZGVCaWRpKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VW5p
Y29kZVJhbmdlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VmVydGljYWxBbGln
bikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVZpc2liaWxpdHkpCisgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlKQorICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5V2lkb3dzKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
V2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXb3JkQnJlYWspCisgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXb3JkU3BhY2luZykKKyAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVdvcmRXcmFwKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5WkluZGV4KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
RGVsYXkpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25E
aXJlY3Rpb24pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25EdXJhdGlvbikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkZpbGxNb2RlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uSXRlcmF0aW9uQ291bnQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25OYW1lKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uUGxheVN0YXRlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlXZWJraXRBcHBlYXJhbmNlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXApCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplKQorICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXIpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJGaXQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZykKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckltYWdlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyUmFkaXVzKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJTdGFydENvbG9yKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRTdHlsZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0V2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlXZWJraXRCb3hBbGlnbikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dEJveERpcmVjdGlvbikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJv
eEZsZXgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3Jv
dXApCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcykKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCkKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudCkKKyAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2spCisgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0KQorICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpCisgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkdhcCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5SdWxlQ29sb3IpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5SdWxlU3R5bGUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5SdWxlV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5TcGFuKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5z
KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSkK
KyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCkKKyAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcikKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZSkKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpCisgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWspCisgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXApCisgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlKQorICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UpCisgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSkKKyAgICBERUZJTkVf
UFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKQorICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXIpCisgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmUpCisgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5TdGFydCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWUpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZUluY3JlbWVudCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVSZXBldGl0aW9uKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVNwZWVkKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVN0eWxlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0
TWFzaykKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2ht
ZW50KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdl
KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApCisgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlKQorICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlKQorICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikKKyAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKKyAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpCisgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKQorICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXRYKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFkpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU2l6ZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hdGNo
TmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdE5ic3BNb2RlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
V2Via2l0UGFkZGluZ0FmdGVyKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Vi
a2l0UGFkZGluZ0JlZm9yZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dFBhZGRpbmdFbmQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRQYWRk
aW5nU3RhcnQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVj
dGl2ZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3Rp
dmVPcmlnaW5YKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0UnRs
T3JkZXJpbmcpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29t
YmluZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0
aW9uc0luRWZmZWN0KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzQ29sb3IpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNQb3NpdGlvbikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1N0eWxlKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEZpbGxDb2xvcikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTZWN1cml0eSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2UpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlQ29sb3IpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlV2lkdGgpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm0pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1Pcmln
aW4pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1Pcmln
aW5YKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9y
aWdpblopCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1T
dHlsZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24p
CisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkp
CisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRp
b24pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJv
cGVydHkpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24pCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRV
c2VyRHJhZykKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2Rp
ZnkpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0KQor
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Q2xpcFBhdGgpCisgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlDbGlwUnVsZSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eU1hc2spCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlFbmFibGVCYWNr
Z3JvdW5kKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5RmlsdGVyKQorICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Rmxvb2RDb2xvcikKKyAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eUxpZ2h0aW5nQ29sb3IpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlT
dG9wQ29sb3IpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTdG9wT3BhY2l0eSkK
KyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbikKKyAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMp
CisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlDb2xvclByb2ZpbGUpCisgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZykKKyAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eUZpbGwpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlGaWxsT3BhY2l0eSkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUZpbGxSdWxl
KQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmcpCisgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNYXJrZXIpCisgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlNYXJrZXJFbmQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlNYXJrZXJNaWQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNYXJrZXJTdGFy
dCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVNoYXBlUmVuZGVyaW5nKQorICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5U3Ryb2tlKQorICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5U3Ryb2tlRGFzaGFycmF5KQorICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNldCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVN0cm9rZUxpbmVjYXApCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTdHJv
a2VMaW5lam9pbikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVN0cm9rZU1pdGVy
bGltaXQpCisgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5KQor
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5U3Ryb2tlV2lkdGgpCisgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZSkKKyAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eUJhc2VsaW5lU2hpZnQpCisgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlEb21pbmFudEJhc2VsaW5lKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwpCisgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uVmVydGljYWwpCisgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlLZXJuaW5nKQorICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
VGV4dEFuY2hvcikKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVZlY3RvckVmZmVj
dCkKKyAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlKQorICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0U3ZnU2hhZG93KQorICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uKQorCisJdmlydHVhbCB+
Q1NTU3R5bGVBcHBsaWNhdG9yKCk7Citwcml2YXRlOgorCUNTU1N0eWxlQXBwbGljYXRvcigpOwor
CisJc3RhdGljIHZvaWQgbWFwRmlsbEF0dGFjaG1lbnQoUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHls
ZSosIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSk7CisJc3RhdGljIHZvaWQgbWFw
RmlsbENsaXAoUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSosIEZpbGxMYXllciogbGF5ZXIsIENT
U1ZhbHVlKiB2YWx1ZSk7CisJc3RhdGljIHZvaWQgbWFwRmlsbENvbXBvc2l0ZShSZW5kZXJTdHls
ZSosIFJlbmRlclN0eWxlKiwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKTsKKwlz
dGF0aWMgdm9pZCBtYXBGaWxsT3JpZ2luKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqLCBGaWxs
TGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpOworCXN0YXRpYyB2b2lkIG1hcEZpbGxTaXpl
KFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqLCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSog
dmFsdWUpOworfTsKKworfQorCisjZW5kaWYgLyogQ1NTU3R5bGVBcHBsaWNhdG9yX2hfICovCklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNzM0ODcpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNp
bmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRlICJDU1NTdHlsZUFwcGxpY2F0b3Iu
aCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0Lmgi
CiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgpAQCAtMzA4OSw2NCArMzA5MCwz
OCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIC8v
IExpbWl0IHRoZSBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gb25seSB0aGUgb25l
cyBob25vcmVkIGJ5IDp2aXNpdGVkLgogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCisj
ZGVmaW5lIEhBTkRMRV9DQVNFKFByb3BlcnR5KSBcCitjYXNlIFByb3BlcnR5OiBcCisJaWYgKGlz
SW5oZXJpdCkgXAorICAgICAgICBDU1NTdHlsZUFwcGxpY2F0b3I6OmhhbmRsZUluaGVyaXQjI1By
b3BlcnR5KG1fc3R5bGUuZ2V0KCksIG1fcGFyZW50U3R5bGUpOyBcCisJZWxzZSBpZiAoaXNJbml0
aWFsKSBcCisJCUNTU1N0eWxlQXBwbGljYXRvcjo6aGFuZGxlSW5pdGlhbCMjUHJvcGVydHkobV9z
dHlsZS5nZXQoKSk7IFwKKwllbHNlIFwKKwkJQ1NTU3R5bGVBcHBsaWNhdG9yOjpoYW5kbGVWYWx1
ZSMjUHJvcGVydHkobV9zdHlsZS5nZXQoKSwgbV9yb290RWxlbWVudFN0eWxlLCB2YWx1ZSk7IFwK
KyAgICByZXR1cm47CisKICAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBsaXN0IHRoYXQgbWFwcyB0
aGUgQ1NTIHByb3BlcnRpZXMgaW50byB0aGVpciBjb3JyZXNwb25kaW5nIGZyb250LWVuZAogICAg
IC8vIFJlbmRlclN0eWxlIHZhbHVlcy4gIFNob3J0aGFuZHMgKGUuZy4gYm9yZGVyLCBiYWNrZ3Jv
dW5kKSBvY2N1ciBpbiB0aGlzIGxpc3QgYXMgd2VsbCBhbmQKICAgICAvLyBhcmUgb25seSBoaXQg
d2hlbiBtYXBwaW5nICJpbmhlcml0IiBvciAiaW5pdGlhbCIgaW50byBmcm9udC1lbmQgdmFsdWVz
LgogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlE
PihpZCk7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogLy8gaWRlbnQgb25seSBwcm9wZXJ0aWVz
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OgotICAgICAgICBIQU5E
TEVfQkFDS0dST1VORF9WQUxVRShhdHRhY2htZW50LCBBdHRhY2htZW50LCB2YWx1ZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXA6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JP
VU5EX1ZBTFVFKGNsaXAsIENsaXAsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGU6Ci0gICAgICAgIEhBTkRMRV9CQUNL
R1JPVU5EX1ZBTFVFKGNvbXBvc2l0ZSwgQ29tcG9zaXRlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9W
QUxVRShvcmlnaW4sIE9yaWdpbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZFNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tn
cm91bmRTaXplOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShzaXplLCBTaXplLCB2
YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0
YWNobWVudDoKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoYXR0YWNobWVudCwgQXR0YWNobWVu
dCwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a0NsaXA6Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKGNsaXAsIENsaXAsIHZhbHVlKQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6Ci0g
ICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKGNvbXBvc2l0ZSwgQ29tcG9zaXRlLCB2YWx1ZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luOgotICAg
ICAgICBIQU5ETEVfTUFTS19WQUxVRShvcmlnaW4sIE9yaWdpbiwgdmFsdWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6Ci0gICAgICAgIEhBTkRM
RV9NQVNLX1ZBTFVFKHNpemUsIFNpemUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChib3JkZXJDb2xsYXBzZSwgQm9yZGVyQ29sbGFwc2UpCi0gICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb2xsYXBz
ZToKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZSh0cnVlKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXBhcmF0ZToK
LSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZShmYWxzZSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclRvcFN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRf
UFJJTUlUSVZFX1dJVEhfVkFMVUUoYm9yZGVyVG9wU3R5bGUsIEJvcmRlclRvcFN0eWxlLCBCb3Jk
ZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuOworICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFj
a2dyb3VuZEF0dGFjaG1lbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q2xpcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4pCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5QmFja2dyb3VuZFNpemUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZ3JvdW5kU2l6ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tB
dHRhY2htZW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tTaXplKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVy
Q29sbGFwc2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSkKICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKICAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKGJvcmRlclJpZ2h0U3R5bGUs
IEJvcmRlclJpZ2h0U3R5bGUsIEJvcmRlclN0eWxlKQogICAgICAgICByZXR1cm47CkBAIC01ODE4
LDcgKzU3OTMsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDb21wb3NpdGUoCiAg
ICAgICAgIGxheWVyLT5zZXRDb21wb3NpdGUoRmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0
ZShsYXllci0+dHlwZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTkx
MSw5ICs1ODg2LDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsU2l6ZShDU1NQcgog
ICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoQ292ZXIpOwogICAgIGVsc2UKICAgICAgICAgbGF5
ZXItPnNldFNpemVUeXBlKFNpemVMZW5ndGgpOwotICAgIAorCiAgICAgTGVuZ3RoU2l6ZSBiID0g
RmlsbExheWVyOjppbml0aWFsRmlsbFNpemVMZW5ndGgobGF5ZXItPnR5cGUoKSk7Ci0gICAgCisK
ICAgICBpZiAodmFsdWUtPmNzc1ZhbHVlVHlwZSgpID09IENTU1ZhbHVlOjpDU1NfSU5JVElBTCB8
fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4KICAgICAgICAg
fHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb3ZlcikgewogICAgICAg
ICBsYXllci0+c2V0U2l6ZUxlbmd0aChiKTsKQEAgLTU5MjMsMTQgKzU4OTgsMTQgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsU2l6ZShDU1NQcgogICAgIFBhaXIqIHBhaXIgPSBwcmlt
aXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJz
dCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihw
YWlyLT5maXJzdCgpKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5zZWNvbmQoKSk7Ci0gICAgCisKICAgICBMZW5n
dGggZmlyc3RMZW5ndGgsIHNlY29uZExlbmd0aDsKICAgICBpbnQgZmlyc3RUeXBlID0gZmlyc3Qt
PnByaW1pdGl2ZVR5cGUoKTsKICAgICBpbnQgc2Vjb25kVHlwZSA9IHNlY29uZC0+cHJpbWl0aXZl
VHlwZSgpOwotICAgIAorCiAgICAgZmxvYXQgem9vbUZhY3RvciA9IG1fc3R5bGUtPmVmZmVjdGl2
ZVpvb20oKTsKIAogICAgIGlmIChmaXJzdFR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
TktOT1dOKQpAQCAtNTk1MCw3ICs1OTI1LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBG
aWxsU2l6ZShDU1NQcgogICAgICAgICBzZWNvbmRMZW5ndGggPSBMZW5ndGgoc2Vjb25kLT5nZXRE
b3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKLSAgICAK
KwogICAgIGIuc2V0V2lkdGgoZmlyc3RMZW5ndGgpOwogICAgIGIuc2V0SGVpZ2h0KHNlY29uZExl
bmd0aCk7CiAgICAgbGF5ZXItPnNldFNpemVMZW5ndGgoYik7CkluZGV4OiBXZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzM5NjIpCisr
KyBXZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTEyLTEzICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5IHRvIHVzZSBmdW5jdGlvbiBwb2ludGVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTIKKworICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFpbik6CisKIDIwMTAtMTItMTMgIEJyZW50IEZ1bGdo
YW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4
IGFmdGVyIHI3MzgwNy4KSW5kZXg6IFdlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJv
Y2Vzc01haW5NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9Q
bHVnaW5Qcm9jZXNzTWFpbk1hYy5tbQkocmV2aXNpb24gNzM0ODcpCisrKyBXZWJLaXQyL1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWluTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03
NCw3ICs3NCw3IEBAIGludCBQbHVnaW5Qcm9jZXNzTWFpbihjb25zdCBDb21tYW5kTGluZSYKIAog
ICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gcHJveHkgc2V0IGN1cnNvciBjYWxs
cyBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKICAgICAvLyBhbGxvd2luZyBwbHVn
LWlucyB0byBjaGFuZ2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkgdGltZS4KLSAgICBXS0VuYWJs
ZVNldHRpbmdDdXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7CisgICAgLy9XS0VuYWJsZVNldHRpbmdD
dXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7CiAKICAgICBKU0M6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77179</attachid>
            <date>2010-12-21 18:58:26 -0800</date>
            <delta_ts>2011-01-19 15:51:11 -0800</delta_ts>
            <desc>Patch WIP</desc>
            <filename>bug-46592-20101222135822.patch</filename>
            <type>text/plain</type>
            <size>93113</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDQ0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMTItMjEgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29u
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkgdG8gdXNlIGZ1
bmN0aW9uIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NjU5MgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZUFwcGxpY2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRFRklORV9JTkhF
UklUKToKKyAgICAgICAgKFdlYkNvcmU6OkRFRklORV9JTklUSUFMKToKKyAgICAgICAgKFdlYkNv
cmU6OkRFRklORV9WQUxVRSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorCiAyMDEwLTEyLTIxICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciByNzQ0NDcu
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gNzM4ODYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTYxMSw2ICsxNjExLDggQEAKIAkJN0FGRDRBOEIxMTMxQzI3NjAw
MzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVh
a3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3
QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0UzM0NEMDExMjdGMzQwRDAwQkU4RjE3IC8q
IFB1cmdlUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdFMzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODAwOTU0M0MxMkI5
QzZGNzAwOUFCRkUxIC8qIENTU1N0eWxlQXBwbGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDA5NTQzQTEyQjlDNkY3MDA5QUJGRTEgLyog
Q1NTU3R5bGVBcHBsaWNhdG9yLmNwcCAqLzsgfTsKKwkJODAwOTU0M0QxMkI5QzZGNzAwOUFCRkUx
IC8qIENTU1N0eWxlQXBwbGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODAwOTU0M0IxMkI5QzZGNzAwOUFCRkUxIC8qIENTU1N0eWxlQXBwbGlj
YXRvci5oICovOyB9OwogCQk4MUE3MzI1RTEyMTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUE3MzI1RDEy
MTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggKi87IH07CiAJCTgxQTczMjYwMTIxMDE4QTQw
MEZDMEQ5RSAvKiBJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODFBNzMyNUYxMjEwMThBNDAwRkMwRDlFIC8qIElEQkN1cnNvci5jcHAg
Ki87IH07CiAJCTgxQTczMjc4MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1w
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMy
NzcxMjEwMTlFMTAwRkMwRDlFIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi87IH07CkBAIC03
OTkyLDYgKzc5OTQsOCBAQAogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJl
YWtwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3Bv
aW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1
Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVyZ2VQcmlvcml0eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4MDA5NTQzQTEyQjlDNkY3MDA5QUJGRTEgLyogQ1NTU3R5bGVBcHBsaWNh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1N0eWxlQXBw
bGljYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgwMDk1NDNCMTJCOUM2
RjcwMDlBQkZFMSAvKiBDU1NTdHlsZUFwcGxpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ1NTU3R5bGVBcHBsaWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgxQTczMjVEMTIxMDE4OUIwMEZDMEQ5RSAvKiBJREJDdXJzb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgxQTczMjVGMTIxMDE4QTQwMEZDMEQ5RSAvKiBJREJDdXJzb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQ3Vyc29yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFBNzMyNzcxMjEwMTlFMTAwRkMwRDlFIC8qIElEQkN1cnNv
ckJhY2tlbmRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNv
ckJhY2tlbmRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODIwNyw2ICsx
ODIxMSw4IEBACiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTgwMDk1NDNBMTJCOUM2RjcwMDlB
QkZFMSAvKiBDU1NTdHlsZUFwcGxpY2F0b3IuY3BwICovLAorCQkJCTgwMDk1NDNCMTJCOUM2Rjcw
MDlBQkZFMSAvKiBDU1NTdHlsZUFwcGxpY2F0b3IuaCAqLywKIAkJCQk5M0NBNEM5QzA5REY5M0ZB
MDBERjg2NzcgLyogbWFrZXRva2VuaXplciAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNBMDA3RkI4
QzUgLyogQ291bnRlci5oICovLAogCQkJCTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAvKiBDb3Vu
dGVyLmlkbCAqLywKQEAgLTIyMTk3LDYgKzIyMjAzLDcgQEAKIAkJCQk2RUJGMEU0OTEyQTg5MjYx
MDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RUJGMEU1
NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZFQkYwRTc3MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVGbG9hdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODAwOTU0M0QxMkI5QzZGNzAwOUFCRkUxIC8qIENTU1N0eWxlQXBwbGljYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNDg2OCw2ICsyNDg3NSw3IEBACiAJCQkJNkVCRjBFNDgx
MkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2RUJGMEU1NDEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNkVCRjBFNzYxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgwMDk1NDNDMTJCOUM2RjcwMDlBQkZFMSAvKiBDU1NT
dHlsZUFwcGxpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NT
dHlsZUFwcGxpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlQXBw
bGljYXRvci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGxpY2F0
b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMTMgQEAKKy8qCisgKiBDU1NTdHlsZVNl
bGVjdG9yLmNwcAorICoKKyAqICBDcmVhdGVkIG9uOiBEZWMgOSwgMjAxMAorICogICAgICBBdXRo
b3I6IG1hY3BoZXJzb24KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NT
U3R5bGVTZWxlY3Rvci5oIgorCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3RvciAq
aW5zdGFuY2UpCisKKyNkZWZpbmUgREVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3RvciAqaW5z
dGFuY2UpCisKKyNkZWZpbmUgREVGSU5FX1ZBTFVFKFByb3BlcnR5KSB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmhhbmRsZVZhbHVlIyNQcm9wZXJ0eShDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwg
Q1NTVmFsdWUgKnZhbHVlKQorCisjZGVmaW5lIERFRklORV9IQU5ETEVfSU5IRVJJVChQcm9wZXJ0
eSwgU2V0dGVyLCBHZXR0ZXIpIFwKK0RFRklORV9JTkhFUklUKFByb3BlcnR5KSB7IFwKKyAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5HZXR0ZXIo
KSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKFByb3BlcnR5
LCBTZXR0ZXIsIEdldHRlciwgQmFja3VwKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgeyBc
CisJaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5HZXR0ZXIoKS5pc1ZhbGlkKCkpIFwKKwkJ
aW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0dGVy
KCkpOyBcCisJZWxzZSBcCisJCWluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoaW5zdGFuY2UtPm1f
cGFyZW50U3R5bGUtPkJhY2t1cCgpKTsgXAorfQorCisjZGVmaW5lIERFRklORV9IQU5ETEVfSU5J
VElBTChQcm9wZXJ0eSwgU2V0dGVyLCBHZXR0ZXIpIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5
KSB7IFwKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKFJlbmRlclN0eWxlOjpHZXR0ZXIo
KSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoUHJvcGVydHks
IFNldHRlcikgXAorREVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIHsgXAorCUNvbG9yIGNvbDsgXAor
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoY29sKTsgXAorfQorCisjZGVmaW5lIERFRklO
RV9IQU5ETEVfVkFMVUUoUHJvcGVydHksIFNldHRlcikgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5
KSB7IFwKKwlpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeyBcCisJICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7IFwK
KyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcigqcCk7IFwKKyAgICB9IFwKK30KKwor
I2RlZmluZSBERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RF
RklORV9WQUxVRShQcm9wZXJ0eSkgeyBcCisJaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsgXAorCSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOyBcCisJICAgIENvbG9yIGNvbCA9IGluc3RhbmNlLT5nZXRDb2xvckZy
b21QcmltaXRpdmVWYWx1ZShwKTsgXAorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVy
KGNvbCk7IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX0ZJTExfTEFZRVJf
SU5IRVJJVChQcm9wZXJ0eSwgbGF5ZXJUeXBlLCBMYXllclR5cGUsIHByb3AsIFByb3ApIFwKK0RF
RklORV9JTkhFUklUKFByb3BlcnR5KSB7IFwKKyAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IGlu
c3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7IFwKKyAgICBGaWxs
TGF5ZXIqIHByZXZDaGlsZCA9IDA7IFwKKyAgICBjb25zdCBGaWxsTGF5ZXIqIGN1cnJQYXJlbnQg
PSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bGF5ZXJUeXBlIyNMYXllcnMoKTsgXAorICAgIHdo
aWxlIChjdXJyUGFyZW50ICYmIGN1cnJQYXJlbnQtPmlzIyNQcm9wIyNTZXQoKSkgeyBcCisgICAg
ICAgIGlmICghY3VyckNoaWxkKSB7IFwKKyAgICAgICAgICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5l
dyBsYXllci4qLyBcCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKExheWVy
VHlwZSMjRmlsbExheWVyKTsgXAorICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1cnJD
aGlsZCk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGN1cnJDaGlsZC0+c2V0IyNQcm9wKGN1cnJQ
YXJlbnQtPnByb3AoKSk7IFwKKyAgICAgICAgcHJldkNoaWxkID0gY3VyckNoaWxkOyBcCisgICAg
ICAgIGN1cnJDaGlsZCA9IHByZXZDaGlsZC0+bmV4dCgpOyBcCisgICAgICAgIGN1cnJQYXJlbnQg
PSBjdXJyUGFyZW50LT5uZXh0KCk7IFwKKyAgICB9IFwKKyAgICBcCisgICAgd2hpbGUgKGN1cnJD
aGlsZCkgeyBcCisgICAgICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgbGF5ZXJzIHRvIG5vdCBo
YXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKKyAgICAgICAgY3VyckNoaWxkLT5jbGVhciMjUHJv
cCgpOyBcCisgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOyBcCisgICAgfSBc
Cit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoUHJvcGVydHks
IGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCitERUZJTkVfSU5JVElBTChQcm9w
ZXJ0eSkgeyBcCisgICAgRmlsbExheWVyKiBjdXJyQ2hpbGQgPSBpbnN0YW5jZS0+bV9zdHlsZS0+
YWNjZXNzIyNMYXllclR5cGUjI0xheWVycygpOyBcCisgICAgY3VyckNoaWxkLT5zZXQjI1Byb3Ao
RmlsbExheWVyOjppbml0aWFsRmlsbCMjUHJvcChMYXllclR5cGUjI0ZpbGxMYXllcikpOyBcCisg
ICAgZm9yIChjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgY3VyckNoaWxkOyBjdXJyQ2hp
bGQgPSBjdXJyQ2hpbGQtPm5leHQoKSkgXAorICAgICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQcm9w
KCk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoUHJvcGVy
dHksIGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCitERUZJTkVfVkFMVUUoUHJv
cGVydHkpIHsgXAorICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gaW5zdGFuY2UtPm1fc3R5bGUt
PmFjY2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAorICAgIEZpbGxMYXllciogcHJldkNoaWxk
ID0gMDsgXAorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCisgICAgICAgIC8qIFdh
bGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVy
cyBhcyBuZWVkZWQuICovIFwKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0
aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsgXAorICAgICAgICAgICAg
aWYgKCFjdXJyQ2hpbGQpIHsgXAorICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5l
dyBsYXllciB0byBob2xkIHRoaXMgdmFsdWUgKi8gXAorICAgICAgICAgICAgICAgIGN1cnJDaGls
ZCA9IG5ldyBGaWxsTGF5ZXIoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpOyBcCisgICAgICAgICAgICAg
ICAgcHJldkNoaWxkLT5zZXROZXh0KGN1cnJDaGlsZCk7IFwKKyAgICAgICAgICAgIH0gXAorICAg
ICAgICAgICAgaW5zdGFuY2UtPm1hcEZpbGwjI1Byb3AoUHJvcGVydHksIGN1cnJDaGlsZCwgdmFs
dWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsgXAorICAgICAgICAgICAgcHJldkNo
aWxkID0gY3VyckNoaWxkOyBcCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5l
eHQoKTsgXAorICAgICAgICB9IFwKKyAgICB9IGVsc2UgeyBcCisgICAgICAgIGluc3RhbmNlLT5t
YXBGaWxsIyNQcm9wKFByb3BlcnR5LCBjdXJyQ2hpbGQsIHZhbHVlKTsgXAorICAgICAgICBjdXJy
Q2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAorICAgIH0gXAorICAgIHdoaWxlIChjdXJyQ2hp
bGQpIHsgXAorICAgICAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIGxheWVycyB0byBub3QgaGF2
ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAgICAgIGN1cnJDaGlsZC0+Y2xlYXIjI1Byb3Ao
KTsgXAorICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAorICAgIH0gXAor
fQorCisjZGVmaW5lIERFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKFByb3BlcnR5LCBFcXVpdmFs
ZW50KSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkge0NTU1N0eWxlU2VsZWN0b3I6OmhhbmRs
ZUluaGVyaXQjI0VxdWl2YWxlbnQoaW5zdGFuY2UpO30gXAorREVGSU5FX0lOSVRJQUwoUHJvcGVy
dHkpIHtDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbml0aWFsIyNFcXVpdmFsZW50KGluc3RhbmNl
KTt9IFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkge0NTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZh
bHVlIyNFcXVpdmFsZW50KGluc3RhbmNlLCB2YWx1ZSk7fQorCisvLyBYWFggY29tYmluZSBFWFBB
TkRJTkcgZGVmaW5pdGlvbnM/CisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9UV08o
UHJvcGVydHksIEZpcnN0LCBTZWNvbmQpIFwKK0RFRklORV9JTkhFUklUKFByb3BlcnR5KSB7IFwK
KwlDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0IyNGaXJzdChpbnN0YW5jZSk7IFwKKwlD
U1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0IyNTZWNvbmQoaW5zdGFuY2UpOyBcCit9CisK
KyNkZWZpbmUgREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhQcm9wZXJ0eSwgRmlyc3QsIFNl
Y29uZCkgXAorREVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIHsgXAorCUNTU1N0eWxlU2VsZWN0b3I6
OmhhbmRsZUluaXRpYWwjI0ZpcnN0KGluc3RhbmNlKTsgXAorCUNTU1N0eWxlU2VsZWN0b3I6Omhh
bmRsZUluaXRpYWwjI1NlY29uZChpbnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQ
QU5ESU5HX1ZBTFVFX1RXTyhQcm9wZXJ0eSwgRmlyc3QsIFNlY29uZCkgXAorREVGSU5FX1ZBTFVF
KFByb3BlcnR5KSB7IFwKKwlDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVWYWx1ZSMjRmlyc3QoaW5z
dGFuY2UsIHZhbHVlKTsgXAorCUNTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNTZWNvbmQo
aW5zdGFuY2UsIHZhbHVlKTsgXAorfQorCisvLyBDU1NQcm9wZXJ0eUludmFsaWQKK0RFRklORV9J
TkhFUklUKENTU1Byb3BlcnR5SW52YWxpZCkge1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7fQorREVG
SU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlJbnZhbGlkKSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTt9
CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlJbnZhbGlkKSB7VU5VU0VEX1BBUkFNKGluc3RhbmNl
KTsgVU5VU0VEX1BBUkFNKHZhbHVlKTt9CisKKy8vIENTU1Byb3BlcnR5Q29sb3IKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUNvbG9yLCBzZXRDb2xvciwgY29sb3IpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlDb2xvciwgc2V0Q29sb3IsIGluaXRpYWxDb2xvcikK
K0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUNvbG9yKSB7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHAtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpCisgICAgICAgIAlDU1NTdHlsZVNlbGVjdG9yOjpoYW5k
bGVJbmhlcml0Q1NTUHJvcGVydHlDb2xvcihpbnN0YW5jZSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgCWluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2xvcihpbnN0YW5jZS0+Z2V0Q29sb3JGcm9tUHJp
bWl0aXZlVmFsdWUocCkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlEaXJlY3Rpb24KK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc2V0RGlyZWN0aW9uLCBk
aXJlY3Rpb24pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHNl
dERpcmVjdGlvbiwgaW5pdGlhbERpcmVjdGlvbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eURp
cmVjdGlvbikgeworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXREaXJlY3Rpb24oKnApOworICAg
IH0KKyAgICBpZiAoaW5zdGFuY2UtPm1fZWxlbWVudCAmJiBpbnN0YW5jZS0+bV9lbGVtZW50ID09
IGluc3RhbmNlLT5tX2VsZW1lbnQtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQorICAg
ICAgICBpbnN0YW5jZS0+bV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXREaXJlY3Rpb25TZXRPbkRv
Y3VtZW50RWxlbWVudCh0cnVlKTsKK30KKworLy8gQ1NTUHJvcGVydHlEaXNwbGF5CitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlEaXNwbGF5LCBzZXREaXNwbGF5LCBkaXNwbGF5KQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5RGlzcGxheSwgc2V0RGlzcGxheSwgaW5p
dGlhbERpc3BsYXkpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlEaXNwbGF5KSB7CisgICAgaWYg
KHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyNpZiBFTkFCTEUo
V0NTUykKKyAgICAgICAgaWYgKHAtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVXYXBNYXJxdWVlKSB7
CisgICAgICAgICAgICAvLyBJbml0aWFsaXplIFdBUCBNYXJxdWVlIHN0eWxlCisgICAgICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3ZlcmZsb3dYKE9NQVJRVUVFKTsKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPdmVyZmxvd1koT01BUlFVRUUpOworICAgICAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldFdoaXRlU3BhY2UoTk9XUkFQKTsKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1MRUZUKTsKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoODUpOyAvLyBOb3JtYWwgc3BlZWQK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KDEpOwor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihNU0NST0xM
KTsKKworICAgICAgICAgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlKSB7CisgICAgICAg
ICAgICAJaW5zdGFuY2UtPm1fc3R5bGUtPnNldERpc3BsYXkoaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPmRpc3BsYXkoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldERpc3BsYXko
KnApOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlGb250CisvLyBDU1NQcm9wZXJ0eUZvbnRG
YW1pbHkKKy8vIENTU1Byb3BlcnR5Rm9udFNpemUKKworLy8gQ1NTUHJvcGVydHlGb250U3R5bGUK
K0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Rm9udFN0eWxlKSB7CisJRm9udERlc2NyaXB0aW9u
IGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsK
Kwlmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250
RGVzY3JpcHRpb24oKS5pdGFsaWMoKSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUZv
bnRTdHlsZSkgeworCUZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+
bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisJZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhm
YWxzZSk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlGb250U3R5bGUpIHsKKyAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxl
LT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBzd2l0Y2ggKHAtPmdldElkZW50KCkpIHsKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZU9ibGlxdWU6CisgICAgICAgIC8vIEZJWE1FOiBvYmxpcXVlIGlzIHRo
ZSBzYW1lIGFzIGl0YWxpYyBmb3IgdGhlIG1vbWVudC4uLgorICAgICAgICBjYXNlIENTU1ZhbHVl
SXRhbGljOgorICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyh0cnVlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhmYWxzZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAg
ICAJaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KKworLy8gQ1NTUHJvcGVydHlGb250
VmFyaWFudAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlGb250VmFyaWFudCkgeworCUZvbnRE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCk7CisJZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2FwcyhpbnN0YW5jZS0+bV9wYXJl
bnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuc21hbGxDYXBzKCkpOworfQorREVGSU5FX0lOSVRJ
QUwoQ1NTUHJvcGVydHlGb250VmFyaWFudCkgeworCUZvbnREZXNjcmlwdGlvbiBmb250RGVzY3Jp
cHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisJZm9udERlc2Ny
aXB0aW9uLnNldFNtYWxsQ2FwcyhmYWxzZSk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlG
b250VmFyaWFudCkgeworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGludCBpZCA9
IHAtPmdldElkZW50KCk7CisJaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsKQorCQlmb250RGVzY3Jp
cHRpb24uc2V0U21hbGxDYXBzKGZhbHNlKTsKKwllbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVNtYWxs
Q2FwcykKKwkJZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2Fwcyh0cnVlKTsKKwllbHNlCisJCXJl
dHVybjsKKworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbikpCisgICAgCWluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CisK
Ky8vIENTU1Byb3BlcnR5Rm9udFdlaWdodAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlGb250
V2VpZ2h0KSB7CisJRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5t
X3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKwlmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KGlu
c3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSk7Cit9CitE
RUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpIHsKKwlGb250RGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwor
CWZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7Cit9CitERUZJTkVf
VkFMVUUoQ1NTUHJvcGVydHlGb250V2VpZ2h0KSB7CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKwlDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworCUZvbnREZXNjcmlwdGlvbiBm
b250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisK
Kwlzd2l0Y2ggKHAtPmdldElkZW50KCkpIHsKKwljYXNlIDA6CisJCUFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworCWNhc2UgQ1NTVmFsdWVCb2xkZXI6CisJCWZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQo
Zm9udERlc2NyaXB0aW9uLmJvbGRlcldlaWdodCgpKTsKKwkJYnJlYWs7CisJY2FzZSBDU1NWYWx1
ZUxpZ2h0ZXI6CisJCWZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2NyaXB0aW9uLmxp
Z2h0ZXJXZWlnaHQoKSk7CisJCWJyZWFrOworCWNhc2UgQ1NTVmFsdWVCb2xkOgorCWNhc2UgQ1NT
VmFsdWU3MDA6CisJCWZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJvbGQpOwor
CQlicmVhazsKKwljYXNlIENTU1ZhbHVlTm9ybWFsOgorCWNhc2UgQ1NTVmFsdWU0MDA6CisJCWZv
bnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7CisJCWJyZWFrOworCWNh
c2UgQ1NTVmFsdWU5MDA6CisJCWZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDkw
MCk7CisJCWJyZWFrOworCWNhc2UgQ1NTVmFsdWU4MDA6CisJCWZvbnREZXNjcmlwdGlvbi5zZXRX
ZWlnaHQoRm9udFdlaWdodDgwMCk7CisJCWJyZWFrOworCWNhc2UgQ1NTVmFsdWU2MDA6CisJCWZv
bnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDYwMCk7CisJCWJyZWFrOworCWNhc2Ug
Q1NTVmFsdWU1MDA6CisJCWZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDUwMCk7
CisJCWJyZWFrOworCWNhc2UgQ1NTVmFsdWUzMDA6CisJCWZvbnREZXNjcmlwdGlvbi5zZXRXZWln
aHQoRm9udFdlaWdodDMwMCk7CisJCWJyZWFrOworCWNhc2UgQ1NTVmFsdWUyMDA6CisJCWZvbnRE
ZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDIwMCk7CisJCWJyZWFrOworCWNhc2UgQ1NT
VmFsdWUxMDA6CisJCWZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDEwMCk7CisJ
CWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsKKwl9CisKKyAgICBpZiAoaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgIAlpbnN0YW5j
ZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorCisvLyBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcK
Ky8vIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZworLy8gQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U2l6ZUFkanVzdAorLy8gQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZQorLy8gQ1NTUHJv
cGVydHlab29tCisvLyBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQKKy8vIENTU1Byb3BlcnR5QmFja2dy
b3VuZAorLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudAorREVGSU5FX0hBTkRMRV9G
SUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgYXR0YWNobWVudCwgQXR0YWNobWVudCkKK0RFRklORV9IQU5ETEVf
RklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIGJhY2tn
cm91bmQsIEJhY2tncm91bmQsIGF0dGFjaG1lbnQsIEF0dGFjaG1lbnQpCitERUZJTkVfSEFORExF
X0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgYXR0YWNobWVudCwgQXR0YWNobWVudCkKKworLy8gQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ2xpcAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgY2xpcCwgQ2xpcCkK
K0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZENs
aXAsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNsaXAsIENsaXApCitERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3VuZCwgQmFj
a2dyb3VuZCwgY2xpcCwgQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgc2V0QmFja2dy
b3VuZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1Io
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHNldEJhY2tncm91bmRDb2xvcikKK0RFRklORV9I
QU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHNldEJhY2tncm91
bmRDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UKK0RFRklORV9IQU5ETEVf
RklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBiYWNrZ3JvdW5k
LCBCYWNrZ3JvdW5kLCBpbWFnZSwgSW1hZ2UpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5J
VElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwg
aW1hZ2UsIEltYWdlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5
QmFja2dyb3VuZEltYWdlLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBpbWFnZSwgSW1hZ2UpCisK
Ky8vIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbgorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBiYWNrZ3JvdW5kLCBCYWNrZ3Jv
dW5kLCBvcmlnaW4sIE9yaWdpbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENT
U1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgb3JpZ2lu
LCBPcmlnaW4pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kT3JpZ2luLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBvcmlnaW4sIE9yaWdpbikKKwor
Ly8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24KK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJ
VF9UV08oQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKQorREVGSU5FX0VYUEFO
RElOR19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkpCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24pIHtVTlVTRURfUEFSQU0o
aW5zdGFuY2UpOyBVTlVTRURfUEFSQU0odmFsdWUpO30KKworLy8gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb25YCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblgsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHhQb3NpdGlvbiwg
WFBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb25YLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCB4UG9zaXRpb24sIFhQ
b3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblgsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHhQb3NpdGlvbiwgWFBvc2l0
aW9uKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkKK0RFRklORV9IQU5ETEVf
RklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgeVBvc2l0aW9uLCBZUG9zaXRpb24pCitERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksIGJhY2tncm91
bmQsIEJhY2tncm91bmQsIHlQb3NpdGlvbiwgWVBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgYmFja2dyb3VuZCwg
QmFja2dyb3VuZCwgeVBvc2l0aW9uLCBZUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdAorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RXTyhDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdFkpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVFdPKENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0WSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXQpIHtVTlVTRURfUEFSQU0oaW5zdGFuY2UpOyBVTlVTRURfUEFSQU0odmFsdWUpO30KKwor
Ly8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgYmFja2dyb3VuZCwgQmFja2dy
b3VuZCwgcmVwZWF0WCwgUmVwZWF0WCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFM
KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHJl
cGVhdFgsIFJlcGVhdFgpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0WCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0WCwgUmVw
ZWF0WCkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WQorREVGSU5FX0hBTkRMRV9G
SUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgYmFja2dyb3Vu
ZCwgQmFja2dyb3VuZCwgcmVwZWF0WSwgUmVwZWF0WSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlF
Ul9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIGJhY2tncm91bmQsIEJhY2tn
cm91bmQsIHJlcGVhdFksIFJlcGVhdFkpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVw
ZWF0WSwgUmVwZWF0WSkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZQorREVGSU5FX0hB
TkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSwgYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgc2l6ZSwgU2l6ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9J
TklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIGJhY2tncm91bmQsIEJhY2tncm91bmQs
IHNpemUsIFNpemUpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kU2l6ZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgc2l6ZSwgU2l6ZSkKKworLy8g
Q1NTUHJvcGVydHlCb3JkZXIKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tCisKKy8vIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgc2V0Qm9yZGVyQm90dG9tQ29sb3IsIGJvcmRlckJv
dHRvbUNvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yLCBzZXRCb3JkZXJCb3R0b21Db2xvcikKK0RFRklORV9IQU5ETEVf
VkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgc2V0Qm9yZGVyQm90dG9t
Q29sb3IpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cworLy8gQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cworLy8gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUs
IHNldEJvcmRlckJvdHRvbVN0eWxlLCBib3JkZXJCb3R0b21TdHlsZSkKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBzZXRCb3JkZXJCb3R0b21TdHls
ZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlLCBzZXRCb3JkZXJCb3R0b21TdHlsZSkKKworLy8gQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21XaWR0aAorLy8gQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZQorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsIHNldEJvcmRlckNvbGxhcHNl
LCBib3JkZXJDb2xsYXBzZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRl
ckNvbGxhcHNlLCBzZXRCb3JkZXJDb2xsYXBzZSwgaW5pdGlhbEJvcmRlckNvbGxhcHNlKQorREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UpIHsKKyAgICBpZiAodmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgIAlDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVl
Q29sbGFwc2U6CisgICAgICAgIAlpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2Uo
dHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNlcGFyYXRl
OgorICAgICAgICAJaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJvcmRlckNvbGxhcHNlKGZhbHNlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0
eUJvcmRlckNvbG9yCisvLyBDU1NQcm9wZXJ0eUJvcmRlckxlZnQKKworLy8gQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0Q29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0Q29sb3IsIHNldEJvcmRlckxlZnRDb2xvciwgYm9yZGVyTGVmdENvbG9yLCBjb2xv
cikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
ciwgc2V0Qm9yZGVyTGVmdENvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRDb2xvciwgc2V0Qm9yZGVyTGVmdENvbG9yKQorCisvLyBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFN0eWxlLCBzZXRCb3JkZXJMZWZ0U3R5bGUsIGJvcmRlckxlZnRTdHlsZSkKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgc2V0Qm9yZGVyTGVmdFN0
eWxlLCBpbml0aWFsQm9yZGVyU3R5bGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFN0eWxlLCBzZXRCb3JkZXJMZWZ0U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFdpZHRoCisvLyBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cworLy8gQ1NTUHJvcGVydHlC
b3JkZXJSaWdodAorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IKK0RFRklORV9IQU5E
TEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBzZXRCb3JkZXJS
aWdodENvbG9yLCBib3JkZXJSaWdodENvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElB
TF9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIHNldEJvcmRlclJpZ2h0Q29sb3Ip
CitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwg
c2V0Qm9yZGVyUmlnaHRDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlCitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBzZXRCb3Jk
ZXJSaWdodFN0eWxlLCBib3JkZXJSaWdodFN0eWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgc2V0Qm9yZGVyUmlnaHRTdHlsZSwgaW5pdGlhbEJv
cmRlclN0eWxlKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5
bGUsIHNldEJvcmRlclJpZ2h0U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0
aAorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJ
VF9UV08oQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhv
cml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZykK
K0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclZlcnRpY2FsU3BhY2luZykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclNw
YWNpbmcpIHtVTlVTRURfUEFSQU0oaW5zdGFuY2UpOyBVTlVTRURfUEFSQU0odmFsdWUpO30KKwor
Ly8gQ1NTUHJvcGVydHlCb3JkZXJTdHlsZQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclRvcAorCisv
LyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQ
KENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIHNldEJvcmRlclRvcENvbG9yLCBib3JkZXJUb3BD
b2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BDb2xvciwgc2V0Qm9yZGVyVG9wQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9S
KENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIHNldEJvcmRlclRvcENvbG9yKQorCisvLyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMKKy8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRS
YWRpdXMKKy8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBzZXRCb3JkZXJUb3BTdHlsZSwgYm9yZGVyVG9w
U3R5bGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwg
c2V0Qm9yZGVyVG9wU3R5bGUsIGluaXRpYWxCb3JkZXJTdHlsZSkKK0RFRklORV9IQU5ETEVfVkFM
VUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgc2V0Qm9yZGVyVG9wU3R5bGUpCisKKy8vIENT
U1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgKKy8vIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgKKy8vIENT
U1Byb3BlcnR5Qm90dG9tCisvLyBDU1NQcm9wZXJ0eUJveFNpemluZworLy8gQ1NTUHJvcGVydHlD
YXB0aW9uU2lkZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUs
IHNldENhcHRpb25TaWRlLCBjYXB0aW9uU2lkZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eUNhcHRpb25TaWRlLCBzZXRDYXB0aW9uU2lkZSwgaW5pdGlhbENhcHRpb25TaWRlKQor
REVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUNhcHRpb25TaWRlLCBzZXRDYXB0aW9uU2lk
ZSkKKworLy8gQ1NTUHJvcGVydHlDbGVhcgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5Q2xlYXIsIHNldENsZWFyLCBjbGVhcikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eUNsZWFyLCBzZXRDbGVhciwgaW5pdGlhbENsZWFyKQorREVGSU5FX0hBTkRMRV9WQUxVRShD
U1NQcm9wZXJ0eUNsZWFyLCBzZXRDbGVhcikKKworLy8gQ1NTUHJvcGVydHlDbGlwCisvLyBDU1NQ
cm9wZXJ0eUNvbnRlbnQKKy8vIENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudAorLy8gQ1NTUHJv
cGVydHlDb3VudGVyUmVzZXQKKworLy8gQ1NTUHJvcGVydHlDdXJzb3IKK0RFRklORV9JTkhFUklU
KENTU1Byb3BlcnR5Q3Vyc29yKSB7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcihp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y3Vyc29yKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRDdXJzb3JMaXN0KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jdXJzb3JzKCkpOworfQor
REVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlDdXJzb3IpIHsKKwlpbnN0YW5jZS0+bV9zdHlsZS0+
Y2xlYXJDdXJzb3JMaXN0KCk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcihSZW5k
ZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUN1
cnNvcikgeworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckN1cnNvckxpc3QoKTsKKyAgICBp
ZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0g
c3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICBpbnQgbGVuID0gbGlz
dC0+bGVuZ3RoKCk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJzb3IoQ1VSU09S
X0FVVE8pOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAg
ICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Cisg
ICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICBp
bnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICBp
ZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgeworICAgICAgICAgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVlKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxDU1NDdXJz
b3JJbWFnZVZhbHVlKj4ocHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAo
aW1hZ2UtPnVwZGF0ZUlmU1ZHQ3Vyc29ySXNVc2VkKGluc3RhbmNlLT5tX2VsZW1lbnQpKSAvLyBF
bGVtZW50cyB3aXRoIFNWRyBjdXJzb3JzIGFyZSBub3QgYWxsb3dlZCB0byBzaGFyZSBzdHlsZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRVbmlxdWUoKTsK
KyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPmFkZEN1cnNvcihpbnN0YW5j
ZS0+Y2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q3Vyc29yLCBpbWFnZSksIGlt
YWdlLT5ob3RTcG90KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgIAlDU1NQ
cmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgICAgICBpbnQgdHlwZSA9IHAtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5
cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBpbnN0YW5jZS0+bV9zdHlsZS0+
Y3Vyc29yKCkgIT0gRUN1cnNvcigqcCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0Q3Vyc29yKCpwKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5RW1wdHlDZWxscworREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5RW1wdHlDZWxscywgc2V0RW1wdHlDZWxscywg
ZW1wdHlDZWxscykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMs
IHNldEVtcHR5Q2VsbHMsIGluaXRpYWxFbXB0eUNlbGxzKQorREVGSU5FX0hBTkRMRV9WQUxVRShD
U1NQcm9wZXJ0eUVtcHR5Q2VsbHMsIHNldEVtcHR5Q2VsbHMpCisKKy8vIENTU1Byb3BlcnR5Rmxv
YXQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUZsb2F0LCBzZXRGbG9hdGluZywg
ZmxvYXRpbmcpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlGbG9hdCwgc2V0Rmxv
YXRpbmcsIGluaXRpYWxGbG9hdGluZykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlG
bG9hdCwgc2V0RmxvYXRpbmcpCisKKy8vIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gKKy8vIENTU1By
b3BlcnR5SGVpZ2h0CisvLyBDU1NQcm9wZXJ0eUxlZnQKKy8vIENTU1Byb3BlcnR5TGV0dGVyU3Bh
Y2luZworLy8gQ1NTUHJvcGVydHlMaXN0U3R5bGUKKworLy8gQ1NTUHJvcGVydHlMaXN0U3R5bGVJ
bWFnZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIHNl
dExpc3RTdHlsZUltYWdlLCBsaXN0U3R5bGVJbWFnZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCBzZXRMaXN0U3R5bGVJbWFnZSwgaW5pdGlhbExpc3RT
dHlsZUltYWdlKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UpIHsKKwlp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0TGlzdFN0eWxlSW1hZ2UoaW5zdGFuY2UtPnN0eWxlSW1hZ2Uo
Q1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgdmFsdWUpKTsKK30KKworLy8gQ1NTUHJvcGVydHlM
aXN0U3R5bGVQb3NpdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TGlzdFN0
eWxlUG9zaXRpb24sIHNldExpc3RTdHlsZVBvc2l0aW9uLCBsaXN0U3R5bGVQb3NpdGlvbikKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLCBzZXRMaXN0
U3R5bGVQb3NpdGlvbiwgaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9W
QUxVRShDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLCBzZXRMaXN0U3R5bGVQb3NpdGlvbikK
KworLy8gQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlMaXN0U3R5bGVUeXBlLCBzZXRMaXN0U3R5bGVUeXBlLCBsaXN0U3R5bGVUeXBlKQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgc2V0TGlzdFN0
eWxlVHlwZSwgaW5pdGlhbExpc3RTdHlsZVR5cGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1By
b3BlcnR5TGlzdFN0eWxlVHlwZSwgc2V0TGlzdFN0eWxlVHlwZSkKKworLy8gQ1NTUHJvcGVydHlN
YXJnaW4KKy8vIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tCisvLyBDU1NQcm9wZXJ0eU1hcmdpbkxl
ZnQKKy8vIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQKKy8vIENTU1Byb3BlcnR5TWFyZ2luVG9wCisv
LyBDU1NQcm9wZXJ0eU1heEhlaWdodAorLy8gQ1NTUHJvcGVydHlNYXhXaWR0aAorLy8gQ1NTUHJv
cGVydHlNaW5IZWlnaHQKKy8vIENTU1Byb3BlcnR5TWluV2lkdGgKKy8vIENTU1Byb3BlcnR5T3Bh
Y2l0eQorLy8gQ1NTUHJvcGVydHlPcnBoYW5zCisvLyBDU1NQcm9wZXJ0eU91dGxpbmUKKworLy8g
Q1NTUHJvcGVydHlPdXRsaW5lQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NT
UHJvcGVydHlPdXRsaW5lQ29sb3IsIHNldE91dGxpbmVDb2xvciwgb3V0bGluZUNvbG9yLCBjb2xv
cikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwg
c2V0T3V0bGluZUNvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eU91
dGxpbmVDb2xvciwgc2V0T3V0bGluZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eU91dGxpbmVPZmZz
ZXQKKy8vIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlPdXRsaW5lU3R5bGUsIHNldE91dGxpbmVTdHlsZSwgb3V0bGluZVN0eWxlKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLCBzZXRPdXRsaW5lU3R5
bGUsIGluaXRpYWxCb3JkZXJTdHlsZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eU91dGxpbmVT
dHlsZSkgeworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgCUNTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgIAlpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVBdXRvKQorICAgIAkJaW5zdGFuY2UtPm1fc3R5bGUtPnNldE91dGxpbmVTdHlsZShET1RU
RUQsIHRydWUpOworICAgIAllbHNlCisgICAgCQlpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3V0bGlu
ZVN0eWxlKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eU91dGxp
bmVXaWR0aAorLy8gQ1NTUHJvcGVydHlPdmVyZmxvdworREVGSU5FX0VYUEFORElOR19JTkhFUklU
X1RXTyhDU1NQcm9wZXJ0eU92ZXJmbG93LCBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVy
dHlPdmVyZmxvd1kpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVFdPKENTU1Byb3BlcnR5T3Zl
cmZsb3csIENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSkKK0RFRklO
RV9FWFBBTkRJTkdfVkFMVUVfVFdPKENTU1Byb3BlcnR5T3ZlcmZsb3csIENTU1Byb3BlcnR5T3Zl
cmZsb3dZLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSkKKworLy8gQ1NTUHJvcGVydHlPdmVyZmxvd1gK
K0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU92ZXJmbG93WCwgc2V0T3ZlcmZsb3dY
LCBvdmVyZmxvd1gpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlPdmVyZmxvd1gs
IHNldE92ZXJmbG93WCwgaW5pdGlhbE92ZXJmbG93WCkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NT
UHJvcGVydHlPdmVyZmxvd1gsIHNldE92ZXJmbG93WCkKKworLy8gQ1NTUHJvcGVydHlPdmVyZmxv
d1kKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU92ZXJmbG93WSwgc2V0T3ZlcmZs
b3dZLCBvdmVyZmxvd1kpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlPdmVyZmxv
d1ksIHNldE92ZXJmbG93WSwgaW5pdGlhbE92ZXJmbG93WSkKK0RFRklORV9IQU5ETEVfVkFMVUUo
Q1NTUHJvcGVydHlPdmVyZmxvd1ksIHNldE92ZXJmbG93WSkKKworLy8gQ1NTUHJvcGVydHlQYWRk
aW5nCisvLyBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20KKy8vIENTU1Byb3BlcnR5UGFkZGluZ0xl
ZnQKKy8vIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0CisvLyBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AK
Ky8vIENTU1Byb3BlcnR5UGFnZQorCisvLyBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlciwgc2V0UGFnZUJyZWFr
QWZ0ZXIsIHBhZ2VCcmVha0FmdGVyKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
UGFnZUJyZWFrQWZ0ZXIsIHNldFBhZ2VCcmVha0FmdGVyLCBpbml0aWFsUGFnZUJyZWFrKQorREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBzZXRQYWdlQnJlYWtB
ZnRlcikKKworLy8gQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSwgc2V0UGFnZUJyZWFrQmVmb3JlLCBwYWdl
QnJlYWtCZWZvcmUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWdlQnJlYWtC
ZWZvcmUsIHNldFBhZ2VCcmVha0JlZm9yZSwgaW5pdGlhbFBhZ2VCcmVhaykKK0RFRklORV9IQU5E
TEVfVkFMVUUoQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsIHNldFBhZ2VCcmVha0JlZm9yZSkK
KworLy8gQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZSwgc2V0UGFnZUJyZWFrSW5zaWRlLCBwYWdlQnJlYWtJ
bnNpZGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUs
IHNldFBhZ2VCcmVha0luc2lkZSwgaW5pdGlhbFBhZ2VCcmVhaykKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eVBhZ2VCcmVha0luc2lkZSkgeworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisgICAgCUNTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIAlFUGFnZUJyZWFrIHBhZ2VCcmVh
ayA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAJaWYgKHBhZ2VCcmVhayAhPSBQQkFMV0FZUykKKyAg
ICAJICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRQYWdlQnJlYWtJbnNpZGUocGFnZUJyZWFrKTsK
KyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cworLy8gQ1NTUHJvcGVydHlQ
b3NpdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UG9zaXRpb24sIHNldFBv
c2l0aW9uLCBwb3NpdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBvc2l0
aW9uLCBzZXRQb3NpdGlvbiwgaW5pdGlhbFBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9WQUxVRShD
U1NQcm9wZXJ0eVBvc2l0aW9uLCBzZXRQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlRdW90ZXMK
Ky8vIENTU1Byb3BlcnR5UmVzaXplCisvLyBDU1NQcm9wZXJ0eVJpZ2h0CisvLyBDU1NQcm9wZXJ0
eVNpemUKKy8vIENTU1Byb3BlcnR5U3JjCisvLyBDU1NQcm9wZXJ0eVNwZWFrCisKKy8vIENTU1By
b3BlcnR5VGFibGVMYXlvdXQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVRhYmxl
TGF5b3V0LCBzZXRUYWJsZUxheW91dCwgdGFibGVMYXlvdXQpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlUYWJsZUxheW91dCwgc2V0VGFibGVMYXlvdXQsIGluaXRpYWxUYWJsZUxh
eW91dCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KSB7CisgICAgaWYgKHZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAJQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAg
CUVUYWJsZUxheW91dCBsID0gKnByaW1pdGl2ZVZhbHVlOworICAgIAlpZiAobCA9PSBUQVVUTykK
KyAgICAJICAgIGwgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhYmxlTGF5b3V0KCk7CisgICAgCWlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRUYWJsZUxheW91dChsKTsKKyAgICB9Cit9CisKKy8vIENTU1By
b3BlcnR5VGV4dEFsaWduCisvLyBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uCisvLyBDU1NQcm9w
ZXJ0eVRleHRJbmRlbnQKKy8vIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoCisvLyBDU1NQcm9w
ZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9yCisvLyBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1v
ZGUKKy8vIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGUKKy8vIENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoV2lkdGgKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93CisvLyBDU1NQcm9w
ZXJ0eVRleHRPdmVybGluZQorLy8gQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcgorLy8gQ1NT
UHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlCisvLyBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxl
CisvLyBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoCisvLyBDU1NQcm9wZXJ0eVRleHRTaGFk
b3cKKworLy8gQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtCitERUZJTkVfSEFORExFX0lOSEVSSVQo
Q1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtLCBzZXRUZXh0VHJhbnNmb3JtLCB0ZXh0VHJhbnNmb3Jt
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgc2V0VGV4
dFRyYW5zZm9ybSwgaW5pdGlhbFRleHRUcmFuc2Zvcm0pCitERUZJTkVfSEFORExFX1ZBTFVFKENT
U1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgc2V0VGV4dFRyYW5zZm9ybSkKKworLy8gQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcgorLy8gQ1NT
UHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZQorLy8gQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5
bGUKKy8vIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoCisvLyBDU1NQcm9wZXJ0eVRvcAor
CisvLyBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlVbmljb2RlQmlkaSwgc2V0VW5pY29kZUJpZGksIHVuaWNvZGVCaWRpKQorREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHNldFVuaWNvZGVCaWRpLCBpbml0
aWFsVW5pY29kZUJpZGkpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5VW5pY29kZUJp
ZGksIHNldFVuaWNvZGVCaWRpKQorCisvLyBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZQorLy8gQ1NT
UHJvcGVydHlWZXJ0aWNhbEFsaWduCisKKy8vIENTU1Byb3BlcnR5VmlzaWJpbGl0eQorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgc2V0VmlzaWJpbGl0eSwgdmlz
aWJpbGl0eSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVZpc2liaWxpdHksIHNl
dFZpc2liaWxpdHksIGluaXRpYWxWaXNpYmlsaXR5KQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQ
cm9wZXJ0eVZpc2liaWxpdHksIHNldFZpc2liaWxpdHkpCisKKy8vIENTU1Byb3BlcnR5V2hpdGVT
cGFjZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgc2V0V2hp
dGVTcGFjZSwgd2hpdGVTcGFjZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdo
aXRlU3BhY2UsIHNldFdoaXRlU3BhY2UsIGluaXRpYWxXaGl0ZVNwYWNlKQorREVGSU5FX0hBTkRM
RV9WQUxVRShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIHNldFdoaXRlU3BhY2UpCisKKy8vIENTU1By
b3BlcnR5V2lkb3dzCisvLyBDU1NQcm9wZXJ0eVdpZHRoCisvLyBDU1NQcm9wZXJ0eVdvcmRCcmVh
aworLy8gQ1NTUHJvcGVydHlXb3JkU3BhY2luZworLy8gQ1NTUHJvcGVydHlXb3JkV3JhcAorLy8g
Q1NTUHJvcGVydHlaSW5kZXgKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvbgorLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbgorLy8gQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQorLy8gQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25JdGVyYXRpb25Db3VudAorLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZQorLy8gQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbgorLy8gQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNl
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eQorLy8gQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kQ2xpcAorREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVy
dHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCkKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlCitERUZJTkVfSEFORExFX0ZJTExf
TEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tn
cm91bmQsIEJhY2tncm91bmQsIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorREVGSU5FX0hBTkRMRV9G
SUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBi
YWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBjb21wb3NpdGUsIENvbXBvc2l0ZSkKK0RFRklORV9IQU5E
TEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUs
IGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4KK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZ
KENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
T3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplCitERUZJTkVfRVFV
SVZBTEVOVF9QUk9QRVJUWShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRTaXplKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IKKy8vIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJTdHlsZQorLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZQorLy8gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvcgorLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZQorLy8g
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aAorLy8gQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJFbmQKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IKKy8vIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lk
dGgKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0CisKKy8vIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2lu
ZywgaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywgc2V0SG9yaXpvbnRhbEJvcmRlclNw
YWNpbmcsIGluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZykKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nKSB7CisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAJQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgCWZsb2F0
IHpvb21GYWN0b3IgPSBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworICAgIAlz
aG9ydCBzcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhTaG9ydChpbnN0YW5j
ZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rv
cik7CisgICAgCWluc3RhbmNlLT5tX3N0eWxlLT5zZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhz
cGFjaW5nKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UKKy8v
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clN0YXJ0CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IKKy8vIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZQorLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dFdpZHRoCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcs
IHNldFZlcnRpY2FsQm9yZGVyU3BhY2luZywgdmVydGljYWxCb3JkZXJTcGFjaW5nKQorREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nLCBz
ZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcsIGluaXRpYWxWZXJ0aWNhbEJvcmRlclNwYWNpbmcpCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcpIHsKKyAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgIAlDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKKyAgICAJZmxvYXQgem9vbUZhY3RvciA9IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVa
b29tKCk7CisgICAgCXNob3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0
aFNob3J0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0
eWxlLCB6b29tRmFjdG9yKTsKKyAgICAJaW5zdGFuY2UtPm1fc3R5bGUtPnNldFZlcnRpY2FsQm9y
ZGVyU3BhY2luZyhzcGFjaW5nKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94
QWxpZ24KKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdEJveEZsZXgKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdEJveExpbmVzCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cAor
Ly8gQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94UGFj
aworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJv
eFNoYWRvdworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb24KKy8vIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcgorLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVh
a0JlZm9yZQorLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZQorLy8gQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5Db3VudAorLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXAKKy8v
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blJ1bGVDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGVDb2xvciwgc2V0Q29sdW1uUnVsZUNvbG9yLCBjb2x1bW5SdWxlQ29sb3IsIGNv
bG9yKQorREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
UnVsZUNvbG9yLCBzZXRDb2x1bW5SdWxlQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9S
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLCBzZXRDb2x1bW5SdWxlQ29sb3IpCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGVXaWR0aAorLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMKKy8v
IENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YQorLy8gQ1NTUHJvcGVydHlXZWJraXRIaWdo
bGlnaHQKKy8vIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZQorLy8gQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaworLy8gQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xh
bXAKKy8vIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dExvZ2ljYWxIZWlnaHQKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZQor
Ly8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZQorLy8gQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZQorLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BD
b2xsYXBzZQorLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZQorLy8gQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5BZnRlcgorLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmUKKy8v
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0
YXJ0CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZURpcmVjdGlvbgorLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50CisvLyBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTcGVlZAorLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUKKy8vIENTU1Byb3Bl
cnR5V2Via2l0TWFzaworCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50CitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2ht
ZW50LCBtYXNrLCBNYXNrLCBhdHRhY2htZW50LCBBdHRhY2htZW50KQorREVGSU5FX0hBTkRMRV9G
SUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgbWFzaywg
TWFzaywgYXR0YWNobWVudCwgQXR0YWNobWVudCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBtYXNrLCBNYXNrLCBhdHRhY2ht
ZW50LCBBdHRhY2htZW50KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBtYXNrLCBNYXNrLCBjbGlwLCBDbGlwKQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xp
cCwgbWFzaywgTWFzaywgY2xpcCwgQ2xpcCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBtYXNrLCBNYXNrLCBjbGlwLCBDbGlwKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUKK0RFRklORV9IQU5ETEVfRklMTF9MQVlF
Ul9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgbWFzaywgTWFzaywgY29t
cG9zaXRlLCBDb21wb3NpdGUpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29tcG9z
aXRlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFz
a0NvbXBvc2l0ZSwgbWFzaywgTWFzaywgY29tcG9zaXRlLCBDb21wb3NpdGUpCisKKy8vIENTU1By
b3BlcnR5V2Via2l0TWFza0ltYWdlCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgbWFzaywgTWFzaywgaW1hZ2UsIEltYWdlKQorREVG
SU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2Us
IG1hc2ssIE1hc2ssIGltYWdlLCBJbWFnZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgbWFzaywgTWFzaywgaW1hZ2UsIEltYWdlKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4KK0RFRklORV9IQU5ETEVfRklMTF9MQVlF
Ul9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgbWFzaywgTWFzaywgb3JpZ2lu
LCBPcmlnaW4pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tPcmlnaW4sIG1hc2ssIE1hc2ssIG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hBTkRM
RV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgbWFzaywgTWFz
aywgb3JpZ2luLCBPcmlnaW4pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uCitE
RUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uWSkKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25ZKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uKSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgVU5VU0VEX1BBUkFNKHZhbHVlKTt9CisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWAorREVGSU5FX0hBTkRMRV9GSUxMX0xB
WUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBtYXNrLCBNYXNrLCB4
UG9zaXRpb24sIFhQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgbWFzaywgTWFzaywgeFBvc2l0aW9uLCBYUG9z
aXRpb24pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25YLCBtYXNrLCBNYXNrLCB4UG9zaXRpb24sIFhQb3NpdGlvbikKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIG1hc2ssIE1hc2ssIHlQb3NpdGlv
biwgWVBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb25ZLCBtYXNrLCBNYXNrLCB5UG9zaXRpb24sIFlQb3NpdGlvbikK
K0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvblksIG1hc2ssIE1hc2ssIHlQb3NpdGlvbiwgWVBvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tSZXBlYXQKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXRZKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUmVwZWF0KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgVU5VU0VEX1BBUkFNKHZhbHVl
KTt9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgKK0RFRklORV9IQU5ETEVfRklM
TF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIG1hc2ssIE1hc2ss
IHJlcGVhdFgsIFJlcGVhdFgpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBtYXNrLCBNYXNrLCByZXBlYXRYLCBSZXBlYXRYKQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFgsIG1hc2ssIE1hc2ssIHJlcGVhdFgsIFJlcGVhdFgpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdFkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFksIG1hc2ssIE1hc2ssIHJlcGVhdFksIFJlcGVhdFkpCitERUZJTkVf
SEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBt
YXNrLCBNYXNrLCByZXBlYXRZLCBSZXBlYXRZKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIG1hc2ssIE1hc2ssIHJlcGVhdFksIFJl
cGVhdFkpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUKK0RFRklORV9IQU5ETEVfRklM
TF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUsIG1hc2ssIE1hc2ssIHNp
emUsIFNpemUpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tTaXplLCBtYXNrLCBNYXNrLCBzaXplLCBTaXplKQorREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUsIG1hc2ssIE1hc2ssIHNpemUs
IFNpemUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVD
b2xvcgorLy8gQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGgKKy8vIENTU1Byb3BlcnR5
V2Via2l0TWF4TG9naWNhbEhlaWdodAorLy8gQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lk
dGgKKy8vIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodAorLy8gQ1NTUHJvcGVydHlX
ZWJraXROYnNwTW9kZQorLy8gQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXIKKy8vIENTU1By
b3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZQorLy8gQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5k
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydAorLy8gQ1NTUHJvcGVydHlXZWJraXRQ
ZXJzcGVjdGl2ZQorLy8gQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbgorLy8gQ1NT
UHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgKKy8vIENTU1Byb3BlcnR5V2Via2l0UGVy
c3BlY3RpdmVPcmlnaW5ZCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0
aW9uc0luRWZmZWN0CisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcworCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFD
S1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIHNldFRleHRFbXBoYXNpc0Nv
bG9yLCB0ZXh0RW1waGFzaXNDb2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09M
T1IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgc2V0VGV4dEVtcGhhc2lzQ29s
b3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzQ29sb3IsIHNldFRleHRFbXBoYXNpc0NvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1Bvc2l0aW9uCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxl
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhF
UklUX0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IsIHNldFRleHRGaWxsQ29s
b3IsIHRleHRGaWxsQ29sb3IsIGNvbG9yKQorREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENT
U1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwgc2V0VGV4dEZpbGxDb2xvcikKK0RFRklORV9I
QU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCBzZXRUZXh0
RmlsbENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eQorLy8gQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNv
bG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yLCBzZXRUZXh0U3Ryb2tlQ29sb3IsIHRleHRTdHJva2VDb2xvciwgY29sb3IpCitE
RUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29s
b3IsIHNldFRleHRTdHJva2VDb2xvcikKK0RFRklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIHNldFRleHRTdHJva2VDb2xvcikKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbgorLy8gQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5YCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdp
blkKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWgorLy8gQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1TdHlsZQorLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheQorLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uRHVyYXRpb24KKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5Cisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbgorLy8gQ1NTUHJvcGVy
dHlXZWJraXRVc2VyRHJhZworLy8gQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5CisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QKKy8vIENTU1Byb3BlcnR5Q2xpcFBhdGgKKy8vIENTU1By
b3BlcnR5Q2xpcFJ1bGUKKy8vIENTU1Byb3BlcnR5TWFzaworLy8gQ1NTUHJvcGVydHlFbmFibGVC
YWNrZ3JvdW5kCisvLyBDU1NQcm9wZXJ0eUZpbHRlcgorLy8gQ1NTUHJvcGVydHlGbG9vZENvbG9y
CisvLyBDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eQorLy8gQ1NTUHJvcGVydHlMaWdodGluZ0NvbG9y
CisvLyBDU1NQcm9wZXJ0eVN0b3BDb2xvcgorLy8gQ1NTUHJvcGVydHlTdG9wT3BhY2l0eQorLy8g
Q1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb24KKy8vIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVycworLy8gQ1NTUHJvcGVydHlDb2xvclByb2ZpbGUKKy8vIENTU1Byb3BlcnR5
Q29sb3JSZW5kZXJpbmcKKy8vIENTU1Byb3BlcnR5RmlsbAorLy8gQ1NTUHJvcGVydHlGaWxsT3Bh
Y2l0eQorLy8gQ1NTUHJvcGVydHlGaWxsUnVsZQorLy8gQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmlu
ZworLy8gQ1NTUHJvcGVydHlNYXJrZXIKKy8vIENTU1Byb3BlcnR5TWFya2VyRW5kCisvLyBDU1NQ
cm9wZXJ0eU1hcmtlck1pZAorLy8gQ1NTUHJvcGVydHlNYXJrZXJTdGFydAorLy8gQ1NTUHJvcGVy
dHlTaGFwZVJlbmRlcmluZworLy8gQ1NTUHJvcGVydHlTdHJva2UKKy8vIENTU1Byb3BlcnR5U3Ry
b2tlRGFzaGFycmF5CisvLyBDU1NQcm9wZXJ0eVN0cm9rZURhc2hvZmZzZXQKKy8vIENTU1Byb3Bl
cnR5U3Ryb2tlTGluZWNhcAorLy8gQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbgorLy8gQ1NTUHJv
cGVydHlTdHJva2VNaXRlcmxpbWl0CisvLyBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHkKKy8vIENT
U1Byb3BlcnR5U3Ryb2tlV2lkdGgKKy8vIENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUKKy8v
IENTU1Byb3BlcnR5QmFzZWxpbmVTaGlmdAorLy8gQ1NTUHJvcGVydHlEb21pbmFudEJhc2VsaW5l
CisvLyBDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsCisvLyBDU1NQcm9wZXJ0
eUdseXBoT3JpZW50YXRpb25WZXJ0aWNhbAorLy8gQ1NTUHJvcGVydHlLZXJuaW5nCisvLyBDU1NQ
cm9wZXJ0eVRleHRBbmNob3IKKy8vIENTU1Byb3BlcnR5VmVjdG9yRWZmZWN0CisvLyBDU1NQcm9w
ZXJ0eVdyaXRpbmdNb2RlCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdworLy8gQ1NTUHJv
cGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24KKworfQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAJKHJldmlzaW9uIDczODg2KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwODksNTExICszMDg5LDk4IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgLy8gTGltaXQgdGhlIHByb3BlcnRp
ZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBvbmx5IHRoZSBvbmVzIGhvbm9yZWQgYnkgOnZpc2l0
ZWQuCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyNkZWZpbmUgSEFORExFX0NBU0Uo
UHJvcGVydHkpIFwKK2Nhc2UgUHJvcGVydHk6IHsgXAorICAgIGlmIChpc0luaGVyaXQpIFwKKyAg
ICAgICAgaGFuZGxlSW5oZXJpdCMjUHJvcGVydHkodGhpcyk7IFwKKwllbHNlIGlmIChpc0luaXRp
YWwpIFwKKwkJaGFuZGxlSW5pdGlhbCMjUHJvcGVydHkodGhpcyk7IFwKKwllbHNlIFwKKwkJaGFu
ZGxlVmFsdWUjI1Byb3BlcnR5KHRoaXMsIHZhbHVlKTsgXAorICAgIHJldHVybjsgXAorfQorCiAg
ICAgLy8gV2hhdCBmb2xsb3dzIGlzIGEgbGlzdCB0aGF0IG1hcHMgdGhlIENTUyBwcm9wZXJ0aWVz
IGludG8gdGhlaXIgY29ycmVzcG9uZGluZyBmcm9udC1lbmQKICAgICAvLyBSZW5kZXJTdHlsZSB2
YWx1ZXMuICBTaG9ydGhhbmRzIChlLmcuIGJvcmRlciwgYmFja2dyb3VuZCkgb2NjdXIgaW4gdGhp
cyBsaXN0IGFzIHdlbGwgYW5kCiAgICAgLy8gYXJlIG9ubHkgaGl0IHdoZW4gbWFwcGluZyAiaW5o
ZXJpdCIgb3IgImluaXRpYWwiIGludG8gZnJvbnQtZW5kIHZhbHVlcy4KICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5ID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwogICAgIHN3aXRj
aCAocHJvcGVydHkpIHsKIC8vIGlkZW50IG9ubHkgcHJvcGVydGllcwotICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFM
VUUoYXR0YWNobWVudCwgQXR0YWNobWVudCwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDbGlwOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShjbGlwLCBD
bGlwLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kQ29tcG9zaXRlOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShjb21w
b3NpdGUsIENvbXBvc2l0ZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dy
b3VuZE9yaWdpbjoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUob3JpZ2luLCBPcmln
aW4sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRTaXplOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKLSAgICAg
ICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoc2l6ZSwgU2l6ZSwgdmFsdWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQ6Ci0gICAgICAg
IEhBTkRMRV9NQVNLX1ZBTFVFKGF0dGFjaG1lbnQsIEF0dGFjaG1lbnQsIHZhbHVlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOgotICAgICAgICBI
QU5ETEVfTUFTS19WQUxVRShjbGlwLCBDbGlwLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlOgotICAgICAgICBIQU5ETEVfTUFT
S19WQUxVRShjb21wb3NpdGUsIENvbXBvc2l0ZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbjoKLSAgICAgICAgSEFORExFX01BU0tf
VkFMVUUob3JpZ2luLCBPcmlnaW4sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgotICAgICAgICBIQU5ETEVfTUFTS19WQUxVRShzaXpl
LCBTaXplLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJDb2xsYXBzZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm9yZGVyQ29s
bGFwc2UsIEJvcmRlckNvbGxhcHNlKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ29sbGFwc2U6Ci0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2UodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2VwYXJhdGU6Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2UoZmFsc2UpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZToK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZB
TFVFKGJvcmRlclRvcFN0eWxlLCBCb3JkZXJUb3BTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKGJvcmRl
clJpZ2h0U3R5bGUsIEJvcmRlclJpZ2h0U3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoYm9yZGVyQm90
dG9tU3R5bGUsIEJvcmRlckJvdHRvbVN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShib3JkZXJMZWZ0U3R5
bGUsIEJvcmRlckxlZnRTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTF9XSVRIX1ZBTFVFKG91dGxpbmVTdHlsZSwgT3V0bGluZVN0eWxlLCBCb3JkZXJTdHls
ZSkKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldE91dGxpbmVTdHlsZShET1RURUQsIHRydWUpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVTdHlsZSgqcHJpbWl0aXZlVmFsdWUp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Q2FwdGlv
blNpZGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUo
Y2FwdGlvblNpZGUsIENhcHRpb25TaWRlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUNsZWFyOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJ
TUlUSVZFKGNsZWFyLCBDbGVhcikKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlEaXJlY3Rpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklN
SVRJVkUoZGlyZWN0aW9uLCBEaXJlY3Rpb24pCi0gICAgICAgIGlmICghaXNJbmhlcml0ICYmICFp
c0luaXRpYWwgJiYgbV9lbGVtZW50ICYmIG1fZWxlbWVudCA9PSBtX2VsZW1lbnQtPmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpKQotICAgICAgICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgp
LT5zZXREaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudCh0cnVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGRpc3BsYXksIERpc3BsYXkpCi0jaWYgRU5BQkxFKFdD
U1MpCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgewotICAgICAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2FwTWFycXVlZSkgewotICAgICAgICAg
ICAgICAgIC8vIEluaXRpYWxpemUgV0FQIE1hcnF1ZWUgc3R5bGUKLSAgICAgICAgICAgICAgICBt
X3N0eWxlLT5zZXRPdmVyZmxvd1goT01BUlFVRUUpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUt
PnNldE92ZXJmbG93WShPTUFSUVVFRSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0V2hp
dGVTcGFjZShOT1dSQVApOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVEaXJl
Y3Rpb24oTUxFRlQpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZCg4
NSk7IC8vIE5vcm1hbCBzcGVlZAotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVM
b29wQ291bnQoMSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUJlaGF2aW9y
KE1TQ1JPTEwpOwotCi0gICAgICAgICAgICAgICAgaWYgKG1fcGFyZW50U3R5bGUpCi0gICAgICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldERpc3BsYXkobV9wYXJlbnRTdHlsZS0+ZGlzcGxheSgp
KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dERpc3BsYXkoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldERpc3BsYXkoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQot
I2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxsczoK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShlbXB0eUNl
bGxzLCBFbXB0eUNlbGxzKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZs
b2F0OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGZs
b2F0aW5nLCBGbG9hdGluZykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250U3R5bGU6Ci0gICAgewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpCi0g
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKG1fcGFyZW50U3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpLml0YWxpYygpKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhmYWxzZSk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU9ibGlxdWU6Ci0gICAgICAgICAgICAgICAgLy8g
RklYTUU6IG9ibGlxdWUgaXMgdGhlIHNhbWUgYXMgaXRhbGljIGZvciB0aGUgbW9tZW50Li4uCi0g
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUl0YWxpYzoKLSAgICAgICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgICAgICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhmYWxzZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobV9zdHlsZS0+
c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnRE
aXJ0eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQ6Ci0gICAgewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGlmIChpc0luaGVy
aXQpIAotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2FwcyhtX3BhcmVudFN0
eWxlLT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGlz
SW5pdGlhbCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoZmFsc2Up
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaW50IGlkID0gcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCk7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwpCi0gICAg
ICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2FwcyhmYWxzZSk7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVNtYWxsQ2FwcykKLSAgICAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBzKHRydWUpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9zdHlsZS0+c2V0
Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0
eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5
Rm9udFdlaWdodDoKLSAgICB7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkK
LSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQobV9wYXJlbnRTdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0g
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQm9sZGVyOgotICAgICAgICAg
ICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChmb250RGVzY3JpcHRpb24u
Ym9sZGVyV2VpZ2h0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaWdodGVyOgotICAgICAgICAgICAgICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChmb250RGVzY3JpcHRpb24ubGlnaHRlcldlaWdo
dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlQm9sZDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZTcw
MDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFdlaWdodEJvbGQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWU0MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU5MDA6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ5MDApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWU4MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0
KEZvbnRXZWlnaHQ4MDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU2MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ2MDApOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU1MDA6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWln
aHQ1MDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWUzMDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQzMDApOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWUyMDA6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQyMDApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWUxMDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
V2VpZ2h0KEZvbnRXZWlnaHQxMDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUt
PnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250
RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNl
IENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUobGlzdFN0eWxlUG9zaXRpb24sIExpc3RTdHlsZVBvc2l0
aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobGlzdFN0
eWxlVHlwZSwgTGlzdFN0eWxlVHlwZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlPdmVyZmxvdzoKLSAgICB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WChtX3BhcmVudFN0eWxlLT5vdmVyZmxvd1goKSk7Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1kobV9wYXJlbnRTdHlsZS0+b3ZlcmZsb3dZ
KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBp
ZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1goUmVuZGVy
U3R5bGU6OmluaXRpYWxPdmVyZmxvd1goKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVy
Zmxvd1koUmVuZGVyU3R5bGU6OmluaXRpYWxPdmVyZmxvd1koKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBFT3ZlcmZsb3cgbyA9ICpwcmlt
aXRpdmVWYWx1ZTsKLQotICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1gobyk7Ci0gICAgICAg
IG1fc3R5bGUtPnNldE92ZXJmbG93WShvKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMX0FORF9QUklNSVRJVkUob3ZlcmZsb3dYLCBPdmVyZmxvd1gpCi0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG92ZXJmbG93WSwgT3ZlcmZsb3dZKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKHBhZ2VC
cmVha0JlZm9yZSwgUGFnZUJyZWFrQmVmb3JlLCBQYWdlQnJlYWspCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShwYWdlQnJlYWtBZnRlciwg
UGFnZUJyZWFrQWZ0ZXIsIFBhZ2VCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUxfV0lUSF9WQUxVRShwYWdlQnJlYWtJbnNpZGUsIFBhZ2VCcmVha0luc2lkZSwgUGFnZUJy
ZWFrKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBFUGFnZUJyZWFrIHBhZ2VCcmVhayA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAg
aWYgKHBhZ2VCcmVhayAhPSBQQkFMV0FZUykKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZ2VC
cmVha0luc2lkZShwYWdlQnJlYWspOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAK
LSAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUocG9zaXRpb24sIFBvc2l0aW9uKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiB7Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKHRhYmxlTGF5b3V0LCBUYWJsZUxheW91dCkKLQotICAgICAgICBF
VGFibGVMYXlvdXQgbCA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAgaWYgKGwgPT0gVEFVVE8p
Ci0gICAgICAgICAgICBsID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJsZUxheW91dCgpOwotCi0g
ICAgICAgIG1fc3R5bGUtPnNldFRhYmxlTGF5b3V0KGwpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6IAotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHVuaWNvZGVCaWRpLCBVbmlj
b2RlQmlkaSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNm
b3JtOiAKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh0
ZXh0VHJhbnNmb3JtLCBUZXh0VHJhbnNmb3JtKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVZpc2liaWxpdHk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUodmlzaWJpbGl0eSwgVmlzaWJpbGl0eSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHdoaXRlU3BhY2UsIFdoaXRlU3BhY2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246Ci0gICAg
ICAgIEhBTkRMRV9CQUNLR1JPVU5EX0lOSEVSSVRfQU5EX0lOSVRJQUwoeFBvc2l0aW9uLCBYUG9z
aXRpb24pOwotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9JTkhFUklUX0FORF9JTklUSUFMKHlQ
b3NpdGlvbiwgWVBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YOiB7Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVF
KHhQb3NpdGlvbiwgWFBvc2l0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWTogewotICAgICAgICBIQU5ETEVf
QkFDS0dST1VORF9WQUxVRSh5UG9zaXRpb24sIFlQb3NpdGlvbiwgdmFsdWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjoKLSAg
ICAgICAgSEFORExFX01BU0tfSU5IRVJJVF9BTkRfSU5JVElBTCh4UG9zaXRpb24sIFhQb3NpdGlv
bik7Ci0gICAgICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwoeVBvc2l0aW9uLCBZ
UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblg6IHsKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoeFBvc2l0aW9uLCBYUG9z
aXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb25ZOiB7Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKHlQb3Np
dGlvbiwgWVBvc2l0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRf
SU5IRVJJVF9BTkRfSU5JVElBTChyZXBlYXRYLCBSZXBlYXRYKTsKLSAgICAgICAgSEFORExFX0JB
Q0tHUk9VTkRfSU5IRVJJVF9BTkRfSU5JVElBTChyZXBlYXRZLCBSZXBlYXRZKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDoKLSAgICAgICAg
SEFORExFX0JBQ0tHUk9VTkRfVkFMVUUocmVwZWF0WCwgUmVwZWF0WCwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6Ci0gICAgICAg
IEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKHJlcGVhdFksIFJlcGVhdFksIHZhbHVlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6Ci0gICAgICAg
IEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwocmVwZWF0WCwgUmVwZWF0WCk7Ci0gICAg
ICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwocmVwZWF0WSwgUmVwZWF0WSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFg6Ci0g
ICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKHJlcGVhdFgsIFJlcGVhdFgsIHZhbHVlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZOgotICAgICAg
ICBIQU5ETEVfTUFTS19WQUxVRShyZXBlYXRZLCBSZXBlYXRZLCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOiB7Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJTcGFj
aW5nKG1fcGFyZW50U3R5bGUtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkpOwotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKG1fcGFyZW50U3R5bGUtPnZlcnRp
Y2FsQm9yZGVyU3BhY2luZygpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRp
YWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKDAp
OwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKDApOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKGhvcml6b250YWxCb3JkZXJTcGFjaW5nLCBIb3Jpem9udGFsQm9yZGVyU3BhY2luZykK
LSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgbV9zdHlsZS0+
c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzogewot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEJvcmRlclNwYWNpbmcs
IFZlcnRpY2FsQm9yZGVyU3BhY2luZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFj
dG9yKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6Ci0g
ICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvciht
X3BhcmVudFN0eWxlLT5jdXJzb3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDdXJzb3JM
aXN0KG1fcGFyZW50U3R5bGUtPmN1cnNvcnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgbV9zdHlsZS0+Y2xlYXJDdXJzb3JMaXN0KCk7Ci0gICAgICAgIGlmIChp
c0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6
aW5pdGlhbEN1cnNvcigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCog
bGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgICAgIGlu
dCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcihD
VVJTT1JfQVVUTyk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKGkpOwotICAgICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAg
ICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAg
ICAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVl
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdl
ID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQo
bV9lbGVtZW50KSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFsbG93ZWQg
dG8gc2hhcmUgc3R5bGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5hZGRDdXJzb3IoY2Fj
aGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q3Vyc29yLCBpbWFnZSksIGltYWdlLT5o
b3RTcG90KCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBpbnQg
dHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UICYmIG1fc3R5bGUtPmN1cnNvcigp
ICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Cisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXApCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFj
a2dyb3VuZE9yaWdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91
bmRPcmlnaW4pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tDb21wb3NpdGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNr
T3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5Q2FwdGlvblNpZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlDbGVhcikKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eURpcmVjdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eURpc3BsYXkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlFbXB0eUNlbGxzKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5RmxvYXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlGb250U3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250VmFyaWFudCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eUxpc3RTdHlsZVR5cGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPdmVyZmxvdykKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU92ZXJmbG93WCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eU92ZXJmbG93WSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZ2VCcmVha0Jl
Zm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5UG9zaXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUYWJsZUxheW91
dCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVZpc2liaWxpdHkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25YKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
WSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tS
ZXBlYXRYKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlDdXJzb3IpCiAvLyBjb2xvcnMgfHwgaW5oZXJpdAotICAgIGNhc2UgQ1NT
UHJvcGVydHlDb2xvcjoKLSAgICAgICAgLy8gSWYgdGhlICdjdXJyZW50Q29sb3InIGtleXdvcmQg
aXMgc2V0IG9uIHRoZSAnY29sb3InIHByb3BlcnR5IGl0c2VsZiwKLSAgICAgICAgLy8gaXQgaXMg
dHJlYXRlZCBhcyAnY29sb3I6aW5oZXJpdCcgYXQgcGFyc2UgdGltZQotICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDdXJy
ZW50Y29sb3IpCi0gICAgICAgICAgICBpc0luaGVyaXQgPSB0cnVlOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21Db2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENv
bG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dFN0cm9rZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xv
cjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjogewotICAgICAgICBD
b2xvciBjb2w7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9J
TkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGJhY2tncm91bmRDb2xvciwg
QmFja2dyb3VuZENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JB
Q0tVUChDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBib3JkZXJUb3BDb2xvciwgY29sb3IsIEJv
cmRlclRvcENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tV
UChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBib3JkZXJCb3R0b21Db2xvciwgY29sb3Is
IEJvcmRlckJvdHRvbUNvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRI
X0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIGJvcmRlclJpZ2h0Q29sb3IsIGNv
bG9yLCBCb3JkZXJSaWdodENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9X
SVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgYm9yZGVyTGVmdENvbG9yLCBj
b2xvciwgQm9yZGVyTGVmdENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChD
U1NQcm9wZXJ0eUNvbG9yLCBjb2xvciwgQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBvdXRsaW5lQ29sb3Is
IGNvbG9yLCBPdXRsaW5lQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJ
VEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLCBjb2x1bW5SdWxlQ29s
b3IsIGNvbG9yLCBDb2x1bW5SdWxlQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9D
T05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCB0ZXh0U3Ry
b2tlQ29sb3IsIGNvbG9yLCBUZXh0U3Ryb2tlQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5I
RVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3Is
IHRleHRFbXBoYXNpc0NvbG9yLCBjb2xvciwgVGV4dEVtcGhhc2lzQ29sb3IpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEZp
bGxDb2xvciwgdGV4dEZpbGxDb2xvciwgY29sb3IsIFRleHRGaWxsQ29sb3IpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAg
ICAgLy8gVGhlIGJvcmRlci9vdXRsaW5lIGNvbG9ycyB3aWxsIGp1c3QgbWFwIHRvIHRoZSBpbnZh
bGlkIGNvbG9yIHxjb2x8IGFib3ZlLiAgVGhpcyB3aWxsIGhhdmUgdGhlCi0gICAgICAgICAgICAv
LyBlZmZlY3Qgb2YgZm9yY2luZyB0aGUgdXNlIG9mIHRoZSBjdXJyZW50Q29sb3Igd2hlbiBpdCBj
b21lcyB0aW1lIHRvIGRyYXcgdGhlIGJvcmRlcnMgKGFuZCBvZgotICAgICAgICAgICAgLy8gbm90
IHBhaW50aW5nIHRoZSBiYWNrZ3JvdW5kIHNpbmNlIHRoZSBjb2xvciB3b24ndCBiZSB2YWxpZCku
Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDb2xvcikKLSAgICAgICAgICAgICAg
ICBjb2wgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGNvbCA9IGdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1pdGl2ZVZh
bHVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJhY2tn
cm91bmRDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJUb3BDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENv
bG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodENvbG9y
KGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3Io
Y29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdENvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9yKGNvbCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Q29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0T3V0bGluZUNvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dENvbHVtblJ1bGVDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRUZXh0U3Ryb2tlQ29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRUZXh0RW1waGFzaXNDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0VGV4dEZpbGxDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
Qm9yZGVyTGVmdENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZUNvbG9y
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKQogLy8gdXJpIHx8IGluaGVyaXQKLSAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgotICAgICAgICBIQU5ETEVfQkFDS0dS
T1VORF9WQUxVRShpbWFnZSwgSW1hZ2UsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZToKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUo
aW1hZ2UsIEltYWdlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlMaXN0U3R5bGVJbWFnZToKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKGxpc3RTdHlsZUltYWdlLCBMaXN0U3R5bGVJbWFnZSkKLSAgICAgICAgbV9zdHlsZS0+c2V0
TGlzdFN0eWxlSW1hZ2Uoc3R5bGVJbWFnZShDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCB2YWx1
ZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kSW1hZ2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNr
SW1hZ2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSkKIC8vIGxl
bmd0aAogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aDoKICAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKQEAgLTU4MTgsNyArNTQwNSw3IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6bWFwRmlsbENvbXBvc2l0ZSgKICAgICAgICAgbGF5ZXItPnNldENvbXBvc2l0
ZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29tcG9zaXRlKGxheWVyLT50eXBlKCkpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01OTExLDkgKzU0OTgsOSBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKENTU1ByCiAgICAgICAgIGxheWVyLT5zZXRTaXplVHlw
ZShDb3Zlcik7CiAgICAgZWxzZQogICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZUxlbmd0
aCk7Ci0gICAgCisKICAgICBMZW5ndGhTaXplIGIgPSBGaWxsTGF5ZXI6OmluaXRpYWxGaWxsU2l6
ZUxlbmd0aChsYXllci0+dHlwZSgpKTsKLSAgICAKKwogICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVU
eXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlQ29udGFpbgogICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZUNvdmVyKSB7CiAgICAgICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIp
OwpAQCAtNTkyMywxNCArNTUxMCwxNCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxT
aXplKENTU1ByCiAgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUo
KTsKICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3QgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHBhaXItPmZpcnN0KCkpOwogICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHBh
aXItPnNlY29uZCgpKTsKLSAgICAKKwogICAgIExlbmd0aCBmaXJzdExlbmd0aCwgc2Vjb25kTGVu
Z3RoOwogICAgIGludCBmaXJzdFR5cGUgPSBmaXJzdC0+cHJpbWl0aXZlVHlwZSgpOwogICAgIGlu
dCBzZWNvbmRUeXBlID0gc2Vjb25kLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgCisKICAgICBmbG9h
dCB6b29tRmFjdG9yID0gbV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwogCiAgICAgaWYgKGZpcnN0
VHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV04pCkBAIC01OTUwLDcgKzU1Mzcs
NyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKENTU1ByCiAgICAgICAgIHNl
Y29uZExlbmd0aCA9IExlbmd0aChzZWNvbmQtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwog
ICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgYi5zZXRXaWR0aChmaXJzdExl
bmd0aCk7CiAgICAgYi5zZXRIZWlnaHQoc2Vjb25kTGVuZ3RoKTsKICAgICBsYXllci0+c2V0U2l6
ZUxlbmd0aChiKTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDczODg2KQor
KysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMs
NiArMzEzLDMzOCBAQCBwdWJsaWM6CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+
IG1fc2VsZWN0b3JBdHRyczsKICAgICAgICAgVmVjdG9yPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKj4gbV9hZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVEZWNsczsKICAgICAgICAgVmVjdG9yPE1l
ZGlhUXVlcnlSZXN1bHQqPiBtX3ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHM7CisK
KyAgICAgICAgLy8gc3RhdGljIGZ1bmN0aW9ucyBmb3IgYXBwbHlpbmcgaW5kaXZpZHVhbCBwcm9w
ZXJ0aWVzCisgICAgICAgIC8vIEZJWE1FOiB0aGlzIGxpc3QgY291bGQgYmUgZ2VuZXJhdGVkIGFu
ZCAjaW5jbHVkZWQKKyNkZWZpbmUgREVGSU5FX1BST1RPVFlQRVMoUHJvcGVydHkpIFwKK3N0YXRp
YyB2b2lkIGhhbmRsZUluaGVyaXQjI1Byb3BlcnR5KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNl
KTsgXAorc3RhdGljIHZvaWQgaGFuZGxlSW5pdGlhbCMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3Rv
ciAqaW5zdGFuY2UpOyBcCitzdGF0aWMgdm9pZCBoYW5kbGVWYWx1ZSMjUHJvcGVydHkoQ1NTU3R5
bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7CisKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlJbnZhbGlkKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eUNvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eURpcmVjdGlvbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlEaXNwbGF5
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUZvbnQpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Rm9udEZhbWlseSkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlGb250U2l6ZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlGb250U3R5bGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Rm9u
dFdlaWdodCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0UmVuZGVy
aW5nKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9v
dGhpbmcpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VGV4dFNp
emVBZGp1c3QpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0V3Jp
dGluZ01vZGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Wm9vbSkKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0KQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJhY2tncm91bmQpCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXApCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSkKKyAgICAgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbikKKyAgICAgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkpCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSkKKyAgICAgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlCb3JkZXIpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5Qm9yZGVyQ29sb3IpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0Q29sb3IpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFN0eWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJSYWRp
dXMpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpCisg
ICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlKQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgpCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZykKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSkKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJUb3ApCisgICAgICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cykKKyAgICAgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlCb3R0b20pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm94U2l6
aW5nKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNhcHRpb25TaWRlKQor
ICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNsZWFyKQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNsaXApCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5Q29udGVudCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlDb3VudGVySW5jcmVtZW50KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUNvdW50ZXJSZXNldCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlDdXJz
b3IpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5RW1wdHlDZWxscykKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlGbG9hdCkKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlGb250U3RyZXRjaCkKKyAgICAgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlIZWlnaHQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5TGVmdCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlMZXR0ZXJT
cGFjaW5nKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUxpc3RTdHlsZSkK
KyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSkKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbikKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU1hcmdpbikKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20pCisgICAgICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5TWFyZ2luTGVmdCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlNYXJnaW5SaWdodCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlNYXJnaW5Ub3ApCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5TWF4SGVp
Z2h0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU1heFdpZHRoKQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU1pbkhlaWdodCkKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNaW5XaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlPcGFjaXR5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eU9ycGhhbnMpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5T3V0
bGluZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3Ip
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5T3V0bGluZU9mZnNldCkKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoKQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU92ZXJmbG93KQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eU92ZXJmbG93WCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlPdmVyZmxvd1kpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
UGFkZGluZykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlQYWRkaW5nQm90
dG9tKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0KQor
ICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCkKKyAgICAg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlQYWRkaW5nVG9wKQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVBhZ2UpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXIpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVBhZ2VCcmVha0luc2lkZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlQb2ludGVyRXZlbnRzKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVBvc2l0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVF1b3RlcykK
KyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlSZXNpemUpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5UmlnaHQpCisgICAgICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5U2l6ZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlTcmMpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5U3BlYWspCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGFibGVMYXlvdXQpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dEFsaWduKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVRleHRJbmRlbnQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGUpCisgICAgICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGgpCisgICAgICAgIERFRklORV9QUk9U
T1RZUEVTKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eVRleHRPdmVybGluZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZVN0eWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZVdpZHRoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVRleHRTaGFkb3cpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
VGV4dFRyYW5zZm9ybSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0
VW5kZXJsaW5lKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRVbmRl
cmxpbmVDb2xvcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lTW9kZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lU3R5bGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dFVu
ZGVybGluZVdpZHRoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRvcCkK
KyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSkKKyAgICAg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VmVydGljYWxBbGlnbikKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlWaXNpYmlsaXR5KQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2lkb3dzKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdp
ZHRoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdvcmRCcmVhaykKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXb3JkU3BhY2luZykKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXb3JkV3JhcCkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlaSW5kZXgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbikKKyAgICAgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbikKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZSkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3Vu
dCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25O
YW1lKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
blBsYXlTdGF0ZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25UaW1pbmdGdW5jdGlvbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRBcHBlYXJhbmNlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKQorICAgICAgICBERUZJTkVf
UFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4pCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXIpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxl
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
V2lkdGgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZUNvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZVN0eWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzKQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0KQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRo
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRp
Y2FsU3BhY2luZykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRC
b3hBbGlnbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3hE
aXJlY3Rpb24pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm94
RmxleCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4
R3JvdXApCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm94TGlu
ZXMpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5h
bEdyb3VwKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJveE9y
aWVudCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNr
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Qp
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93KQor
ICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlv
bikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVh
a0FmdGVyKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkJyZWFrQmVmb3JlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrSW5zaWRlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkNvdW50KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkdhcCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVDb2xvcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5SdWxlU3R5bGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1ucykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRGb250U2l6ZURlbHRhKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9jYWxlKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlKQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlKQor
ICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxh
cHNlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNv
bGxhcHNlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkJlZm9yZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5FbmQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
U3RhcnQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGly
ZWN0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVJbmNyZW1lbnQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZVJlcGV0aXRpb24pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVNwZWVkKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTdHlsZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tBdHRhY2htZW50KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tCb3hJbWFnZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrQ2xpcCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQ29tcG9zaXRlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrT3JpZ2luKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tQb3NpdGlvbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25YKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblkpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrU2l6ZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0KQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKKyAgICAg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlKQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQpCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlKQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2lu
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblkpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Vi
a2l0UnRsT3JkZXJpbmcpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dENvbWJpbmUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uKQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5KQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UpCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKQor
ICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0
aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0p
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpblgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtT3JpZ2luWSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybVN0eWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zaXRpb24pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHkpCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnkpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlDbGlwUGF0aCkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlDbGlwUnVsZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlNYXNrKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUVu
YWJsZUJhY2tncm91bmQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Rmls
dGVyKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUZsb29kQ29sb3IpCisg
ICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5KQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29sb3IpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5U3RvcENvbG9yKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVN0b3BPcGFjaXR5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb25GaWx0ZXJzKQorICAgICAgICBERUZJTkVf
UFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNvbG9yUHJvZmlsZSkKKyAgICAgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlGaWxsKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUZpbGxPcGFjaXR5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUZpbGxS
dWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5n
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU1hcmtlcikKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNYXJrZXJFbmQpCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5TWFya2VyTWlkKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVNoYXBlUmVuZGVyaW5nKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVN0cm9rZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTdHJva2VE
YXNoYXJyYXkpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5U3Ryb2tlRGFz
aG9mZnNldCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTdHJva2VMaW5l
Y2FwKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVN0cm9rZUxpbmVqb2lu
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQp
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0eSkKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTdHJva2VXaWR0aCkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZSkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0KQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmUpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwpCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2Fs
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUtlcm5pbmcpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dEFuY2hvcikKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3QpCisgICAgICAgIERFRklORV9QUk9U
T1RZUEVTKENTU1Byb3BlcnR5V3JpdGluZ01vZGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5V2Via2l0U3ZnU2hhZG93KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbikKICAgICB9OwogCiAgICAgY2xhc3MgQ1NT
UnVsZURhdGEgOiBwdWJsaWMgTm9uY29weWFibGUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79508</attachid>
            <date>2011-01-19 15:51:22 -0800</date>
            <delta_ts>2011-01-30 20:01:04 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-46592-20110120105117.patch</filename>
            <type>text/plain</type>
            <size>327490</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGxpY2F0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGxpY2F0b3IuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbGljYXRvci5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzU5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA0LTIwMDUgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tzaGFua3MuY29tKQorICogQ29weXJp
Z2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlh
a292IDxhcEB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgor
CisvLyBGSVhNRTogaW5jbHVkZXMgY29waWVkIGZyb20gQ1NTU3R5bGVTZWxlY3Rvci5jcHAgLSBj
bGVhbiB1cCB1bnVzZWQgaW5jbHVkZXMKKworI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIkNvbnRlbnREYXRhLmgiCisjaW5jbHVkZSAiQ291bnRlckNvbnRlbnQuaCIKKyNpbmNsdWRl
ICJDdXJzb3JMaXN0LmgiCisjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NGb250RmFjZVJ1bGUuaCIK
KyNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCisjaW5jbHVkZSAiQ1NTTWVkaWFSdWxlLmgiCisj
aW5jbHVkZSAiQ1NTUGFnZVJ1bGUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRl
ICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1l
cy5oIgorI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1J1bGVMaXN0
LmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3Qu
aCIKKyNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlICJDU1NTdHlsZVNoZWV0Lmgi
CisjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVl
TGlzdC5oIgorI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ291bnRlci5oIgor
I2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZvbnRGYW1pbHlWYWx1ZS5o
IgorI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgorI2luY2x1ZGUgIktleWZy
YW1lTGlzdC5oIgorI2luY2x1ZGUgIkxpbmtIYXNoLmgiCisjaW5jbHVkZSAiTWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCIK
KyNpbmNsdWRlICJNZWRpYUxpc3QuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgi
CisjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBhaXIuaCIKKyNpbmNsdWRlICJQZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlY3QuaCIKKyNpbmNsdWRlICJSZW5k
ZXJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIgorI2luY2x1
ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNp
bmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJTY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNs
dWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIKKyNpbmNsdWRlICJTaGFk
b3dWYWx1ZS5oIgorI2luY2x1ZGUgIlNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRl
ICJTdHlsZUNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVQZW5kaW5nSW1hZ2UuaCIKKyNp
bmNsdWRlICJTdHlsZUdlbmVyYXRlZEltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVTaGVldExpc3Qu
aCIKKyNpbmNsdWRlICJUZXh0LmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIK
KyNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJVc2Vy
QWdlbnRTdHlsZVNoZWV0cy5oIgorI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lUnVsZS5oIgor
I2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIKKyNpbmNsdWRlICJXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZS5oIgorI2luY2x1ZGUgIlhNTE5hbWVzLmgiCisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2lmIFVTRShQTEFURk9S
TV9TVFJBVEVHSUVTKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUg
IlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKQorI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgorI2VuZGlmCisKKyNpZiBFTkFC
TEUoU1ZHKQorI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgor
I2VuZGlmCisKKyNpZiBFTkFCTEUoV01MKQorI2luY2x1ZGUgIldNTE5hbWVzLmgiCisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPHF3ZWJoaXN0b3J5aW50ZXJmYWNlLmg+Cisj
ZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisj
ZGVmaW5lIERFRklORV9JTkhFUklUKFByb3BlcnR5KSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Omhh
bmRsZUluaGVyaXQjI1Byb3BlcnR5KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKQorCisjZGVm
aW5lIERFRklORV9JTklUSUFMKFByb3BlcnR5KSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRs
ZUluaXRpYWwjI1Byb3BlcnR5KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKQorCisjZGVmaW5l
IERFRklORV9WQUxVRShQcm9wZXJ0eSkgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVWYWx1
ZSMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSkK
KworI2RlZmluZSBERUZJTkVfSEFORExFX0lOSEVSSVQoUHJvcGVydHksIFNldHRlciwgR2V0dGVy
KSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPlNldHRlcihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0dGVyKCkpOyBcCit9CisKKyNk
ZWZpbmUgREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChQcm9wZXJ0eSwgU2V0dGVyLCBHZXR0
ZXIsIEJhY2t1cCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIFwKK3sgXAorICAgIGlmIChp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0dGVyKCkuaXNWYWxpZCgpKSBcCisgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPkdldHRlcigp
KTsgXAorICAgIGVsc2UgXAorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKGluc3Rh
bmNlLT5tX3BhcmVudFN0eWxlLT5CYWNrdXAoKSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFO
RExFX0lOSVRJQUwoUHJvcGVydHksIFNldHRlciwgR2V0dGVyKSBcCitERUZJTkVfSU5JVElBTChQ
cm9wZXJ0eSkgXAoreyBcCisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihSZW5kZXJTdHls
ZTo6R2V0dGVyKCkpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9S
KFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5KSBcCit7IFwKKyAg
ICBDb2xvciBjb2w7IFwKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKGNvbCk7IFwKK30K
KworI2RlZmluZSBERUZJTkVfSEFORExFX1ZBTFVFKFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklO
RV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsgXAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0
ZXIoKnApOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xP
UihQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsgXAorICAg
ICAgICBDb2xvciBjb2wgPSBpbnN0YW5jZS0+Z2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUocCk7
IFwKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihjb2wpOyBcCisgICAgfSBcCit9
CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoUHJvcGVydHksIGxh
eWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0
eSkgXAoreyBcCisgICAgRmlsbExheWVyKiBjdXJyQ2hpbGQgPSBpbnN0YW5jZS0+bV9zdHlsZS0+
YWNjZXNzIyNMYXllclR5cGUjI0xheWVycygpOyBcCisgICAgRmlsbExheWVyKiBwcmV2Q2hpbGQg
PSAwOyBcCisgICAgY29uc3QgRmlsbExheWVyKiBjdXJyUGFyZW50ID0gaW5zdGFuY2UtPm1fcGFy
ZW50U3R5bGUtPmxheWVyVHlwZSMjTGF5ZXJzKCk7IFwKKyAgICB3aGlsZSAoY3VyclBhcmVudCAm
JiBjdXJyUGFyZW50LT5pcyMjUHJvcCMjU2V0KCkpIHsgXAorICAgICAgICBpZiAoIWN1cnJDaGls
ZCkgeyBcCisgICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIuKi8gXAorICAg
ICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihMYXllclR5cGUjI0ZpbGxMYXllcik7
IFwKKyAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOyBcCisgICAgICAg
IH0gXAorICAgICAgICBjdXJyQ2hpbGQtPnNldCMjUHJvcChjdXJyUGFyZW50LT5wcm9wKCkpOyBc
CisgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsgXAorICAgICAgICBjdXJyQ2hpbGQgPSBw
cmV2Q2hpbGQtPm5leHQoKTsgXAorICAgICAgICBjdXJyUGFyZW50ID0gY3VyclBhcmVudC0+bmV4
dCgpOyBcCisgICAgfSBcCisgICAgXAorICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsgXAorICAgICAg
ICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkg
c2V0LiAqLyBcCisgICAgICAgIGN1cnJDaGlsZC0+Y2xlYXIjI1Byb3AoKTsgXAorICAgICAgICBj
dXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAorICAgIH0gXAorfQorCisjZGVmaW5lIERF
RklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKFByb3BlcnR5LCBsYXllclR5cGUsIExheWVy
VHlwZSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIFwKK3sgXAorICAg
IEZpbGxMYXllciogY3VyckNoaWxkID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2VzcyMjTGF5ZXJU
eXBlIyNMYXllcnMoKTsgXAorICAgIGN1cnJDaGlsZC0+c2V0IyNQcm9wKEZpbGxMYXllcjo6aW5p
dGlhbEZpbGwjI1Byb3AoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpKTsgXAorICAgIGZvciAoY3VyckNo
aWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IGN1cnJDaGlsZDsgY3VyckNoaWxkID0gY3VyckNoaWxk
LT5uZXh0KCkpIFwKKyAgICAgICAgY3VyckNoaWxkLT5jbGVhciMjUHJvcCgpOyBcCit9CisKKyNk
ZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKFByb3BlcnR5LCBsYXllclR5cGUs
IExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7IFwK
KyAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3MjI0xh
eWVyVHlwZSMjTGF5ZXJzKCk7IFwKKyAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7IFwKKyAg
ICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsgXAorICAgICAgICAvKiBXYWxrIGVhY2ggdmFs
dWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVk
LiAqLyBcCisgICAgICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NT
VmFsdWVMaXN0Kj4odmFsdWUpOyBcCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7IFwKKyAgICAgICAgICAgIGlmICghY3VyckNo
aWxkKSB7IFwKKyAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIgdG8g
aG9sZCB0aGlzIHZhbHVlICovIFwKKyAgICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmls
bExheWVyKExheWVyVHlwZSMjRmlsbExheWVyKTsgXAorICAgICAgICAgICAgICAgIHByZXZDaGls
ZC0+c2V0TmV4dChjdXJyQ2hpbGQpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tYXBGaWxsIyNQcm9wKFByb3BlcnR5LCBjdXJyQ2hpbGQsIHZhbHVlTGlzdC0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKKyAgICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJD
aGlsZDsgXAorICAgICAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAg
ICAgICAgfSBcCisgICAgfSBlbHNlIHsgXAorICAgICAgICBpbnN0YW5jZS0+bWFwRmlsbCMjUHJv
cChQcm9wZXJ0eSwgY3VyckNoaWxkLCB2YWx1ZSk7IFwKKyAgICAgICAgY3VyckNoaWxkID0gY3Vy
ckNoaWxkLT5uZXh0KCk7IFwKKyAgICB9IFwKKyAgICB3aGlsZSAoY3VyckNoaWxkKSB7IFwKKyAg
ICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBsYXllcnMgdG8gbm90IGhhdmUgdGhlIHByb3Bl
cnR5IHNldC4gKi8gXAorICAgICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQcm9wKCk7IFwKKyAgICAg
ICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAgICB9IFwKK30KKworI2RlZmlu
ZSBERUZJTkVfTlVMTF9JTkhFUklUKFByb3BlcnR5KSBERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkg
e1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJTkVfTlVMTF9JTklUSUFMKFBy
b3BlcnR5KSBERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkge1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7
fQorI2RlZmluZSBERUZJTkVfTlVMTF9WQUxVRShQcm9wZXJ0eSkgREVGSU5FX1ZBTFVFKFByb3Bl
cnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgVU5VU0VEX1BBUkFNKHZhbHVlKTt9CisKKyNk
ZWZpbmUgREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoUHJvcGVydHkpIERFRklORV9JTkhFUklU
KFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
fQorI2RlZmluZSBERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChQcm9wZXJ0eSkgREVGSU5FX0lO
SVRJQUwoUHJvcGVydHkpIHtVTlVTRURfUEFSQU0oaW5zdGFuY2UpOyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTt9CisjZGVmaW5lIERFRklORV9VTlJFQUNIQUJMRV9WQUxVRShQcm9wZXJ0eSkgREVGSU5F
X1ZBTFVFKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgVU5VU0VEX1BBUkFNKHZh
bHVlKTsgQVNTRVJUX05PVF9SRUFDSEVEKCk7fQorCisjZGVmaW5lIERFRklORV9FUVVJVkFMRU5U
X0lOSEVSSVQoUHJvcGVydHksIEVxdWl2YWxlbnQpIFwKK0RFRklORV9JTkhFUklUKFByb3BlcnR5
KSB7Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRXF1aXZhbGVudChpbnN0YW5jZSk7
fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9JTklUSUFMKFByb3BlcnR5LCBFcXVpdmFsZW50
KSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkge0NTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUlu
aXRpYWwjI0VxdWl2YWxlbnQoaW5zdGFuY2UpO30KKyNkZWZpbmUgREVGSU5FX0VRVUlWQUxFTlRf
VkFMVUUoUHJvcGVydHksIEVxdWl2YWxlbnQpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkge0NT
U1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNFcXVpdmFsZW50KGluc3RhbmNlLCB2YWx1ZSk7
fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShQcm9wZXJ0eSwgRXF1aXZhbGVu
dCkgXAorREVGSU5FX0VRVUlWQUxFTlRfSU5IRVJJVChQcm9wZXJ0eSwgRXF1aXZhbGVudCkgXAor
REVGSU5FX0VRVUlWQUxFTlRfSU5JVElBTChQcm9wZXJ0eSwgRXF1aXZhbGVudCkgXAorREVGSU5F
X0VRVUlWQUxFTlRfVkFMVUUoUHJvcGVydHksIEVxdWl2YWxlbnQpCisKKy8vIFhYWCBjb21iaW5l
IEVYUEFORElORyBkZWZpbml0aW9ucz8KKyNkZWZpbmUgREVGSU5FX0VYUEFORElOR19JTkhFUklU
X1RXTyhQcm9wZXJ0eSwgRmlyc3QsIFNlY29uZCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkp
IFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI0ZpcnN0KGluc3Rh
bmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1NlY29uZChpbnN0
YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVFdPKFByb3Bl
cnR5LCBGaXJzdCwgU2Vjb25kKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisg
ICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjRmlyc3QoaW5zdGFuY2UpOyBcCisg
ICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjU2Vjb25kKGluc3RhbmNlKTsgXAor
fQorCisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdfVkFMVUVfVFdPKFByb3BlcnR5LCBGaXJzdCwg
U2Vjb25kKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2Vs
ZWN0b3I6OmhhbmRsZVZhbHVlIyNGaXJzdChpbnN0YW5jZSwgdmFsdWUpOyBcCisgICAgQ1NTU3R5
bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWUjI1NlY29uZChpbnN0YW5jZSwgdmFsdWUpOyBcCit9CisK
KyNkZWZpbmUgREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKFByb3BlcnR5LCBGaXJzdCwg
U2Vjb25kLCBUaGlyZCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIFwKK3sgXAorICAgIENT
U1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI0ZpcnN0KGluc3RhbmNlKTsgXAorICAgIENT
U1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1NlY29uZChpbnN0YW5jZSk7IFwKKyAgICBD
U1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0IyNUaGlyZChpbnN0YW5jZSk7IFwKK30KKwor
I2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVEhSRUUoUHJvcGVydHksIEZpcnN0LCBT
ZWNvbmQsIFRoaXJkKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NT
U3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjRmlyc3QoaW5zdGFuY2UpOyBcCisgICAgQ1NT
U3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjU2Vjb25kKGluc3RhbmNlKTsgXAorICAgIENT
U1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI1RoaXJkKGluc3RhbmNlKTsgXAorfQorCisj
ZGVmaW5lIERFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9GT1VSKFByb3BlcnR5LCBGaXJzdCwgU2Vj
b25kLCBUaGlyZCwgRm91cnRoKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisg
ICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRmlyc3QoaW5zdGFuY2UpOyBcCisg
ICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjU2Vjb25kKGluc3RhbmNlKTsgXAor
ICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1RoaXJkKGluc3RhbmNlKTsgXAor
ICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI0ZvdXJ0aChpbnN0YW5jZSk7IFwK
K30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfRk9VUihQcm9wZXJ0eSwgRmly
c3QsIFNlY29uZCwgVGhpcmQsIEZvdXJ0aCkgXAorREVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIFwK
K3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI0ZpcnN0KGluc3RhbmNl
KTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI1NlY29uZChpbnN0YW5j
ZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbml0aWFsIyNUaGlyZChpbnN0YW5j
ZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbml0aWFsIyNGb3VydGgoaW5zdGFu
Y2UpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX1NQQUNJTkdfVkFMVUUoUHJvcGVydHksIFNldHRl
cikgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7IFwKKyAgICBpZiAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkgeyBcCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7IFwKKyAgICAgICAgYm9vbCB1c2VTVkda
b29tUnVsZXMgPSBpbnN0YW5jZS0+bV9lbGVtZW50ICYmIGluc3RhbmNlLT5tX2VsZW1lbnQtPmlz
U1ZHRWxlbWVudCgpOyBcCisgICAgICAgIGludCB3aWR0aCA9IDA7IFwKKyAgICAgICAgaWYgKHAt
PmdldElkZW50KCkgIT0gQ1NTVmFsdWVOb3JtYWwpIFwKKyAgICAgICAgICAgIHdpZHRoID0gcC0+
Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9v
dEVsZW1lbnRTdHlsZSwgdXNlU1ZHWm9vbVJ1bGVzID8gMS4wZiA6IGluc3RhbmNlLT5tX3N0eWxl
LT5lZmZlY3RpdmVab29tKCkpOyBcCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIo
d2lkdGgpOyBcCisgICAgfSBcCit9CisjZGVmaW5lIERFRklORV9XSURUSF9WQUxVRShQcm9wZXJ0
eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsgXAorICAgICAgICBzaG9y
dCB3aWR0aCA9IDM7IFwKKyAgICAgICAgc3dpdGNoIChwLT5nZXRJZGVudCgpKSB7IFwKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZVRoaW46IFwKKyAgICAgICAgICAgIHdpZHRoID0gMTsgXAorICAgICAg
ICAgICAgYnJlYWs7IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bTogXAorICAgICAgICAg
ICAgd2lkdGggPSAzOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICBjYXNlIENTU1Zh
bHVlVGhpY2s6IFwKKyAgICAgICAgICAgIHdpZHRoID0gNTsgXAorICAgICAgICAgICAgYnJlYWs7
IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6IFwKKyAgICAgICAgICAgIHdpZHRoID0g
cC0+Y29tcHV0ZUxlbmd0aFNob3J0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+
bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsg
XAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgZGVmYXVsdDogXAorICAgICAgICAgICAg
cmV0dXJuOyBcCisgICAgICAgIH0gXAorICAgICAgICBpZiAod2lkdGggPj0gMCkgeyBcCisgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKHdpZHRoKTsgXAorICAgICAgICB9IFwK
KyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfTEVOR1RIX1ZBTFVFKFByb3BlcnR5LCBTZXR0
ZXIsIE5vbmVFbmFibGVkLCBJbnRyaW5zaWNFbmFibGVkLCBNaW5JbnRyaW5zaWNFbmFibGVkLCBB
dXRvRW5hYmxlZCwgTm9uZVVuZGVmaW5lZCkgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7
IFwKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeyBcCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOyBcCisgICAgICAgIGlmIChOb25lRW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIFwKKyAgICAgICAgICAgIGlmIChOb25lVW5k
ZWZpbmVkKSBcCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihMZW5n
dGgodW5kZWZpbmVkTGVuZ3RoLCBGaXhlZCkpOyBcCisgICAgICAgICAgICBlbHNlIFwKKyAgICAg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKExlbmd0aCgpKTsgXAorICAgICAg
ICBlbHNlIGlmIChJbnRyaW5zaWNFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlSW50cmluc2ljKSBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
U2V0dGVyKExlbmd0aChJbnRyaW5zaWMpKTsgXAorICAgICAgICBlbHNlIGlmIChNaW5JbnRyaW5z
aWNFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTWluSW50
cmluc2ljKSBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKExlbmd0aChN
aW5JbnRyaW5zaWMpKTsgXAorICAgICAgICBlbHNlIGlmIChBdXRvRW5hYmxlZCAmJiBwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pIFwKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKCkpOyBcCisgICAgICAgIGVsc2UgeyBcCisgICAg
ICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7IFwKKyAg
ICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkg
XAorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKGluc3RhbmNlLT5tX3N0eWxlLmdl
dCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZm
ZWN0aXZlWm9vbSgpKSwgRml4ZWQsIHByaW1pdGl2ZVZhbHVlLT5pc1F1aXJrVmFsdWUoKSkpOyBc
CisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSkgXAorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KSk7IFwKKyAgICAg
ICAgfSBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX1JBRElVU19WQUxVRShQcm9wZXJ0
eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7IFwK
KyAgICAgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsgXAor
ICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKSBc
CisgICAgICAgICAgICByZXR1cm47IFwKKyAgICAgICAgTGVuZ3RoIHJhZGl1c1dpZHRoOyBcCisg
ICAgICAgIExlbmd0aCByYWRpdXNIZWlnaHQ7IFwKKyAgICAgICAgaWYgKHBhaXItPmZpcnN0KCkt
PnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIFwK
KyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVuZ3RoKHBhaXItPmZpcnN0KCktPmdldERvdWJs
ZVZhbHVlKCksIFBlcmNlbnQpOyBcCisgICAgICAgIGVsc2UgXAorICAgICAgICAgICAgcmFkaXVz
V2lkdGggPSBMZW5ndGgobWF4KGludE1pbkZvckxlbmd0aCwgbWluKGludE1heEZvckxlbmd0aCwg
cGFpci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwg
aW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2
ZVpvb20oKSkpKSwgRml4ZWQpOyBcCisgICAgICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+cHJpbWl0
aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgXAorICAgICAg
ICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKHBhaXItPnNlY29uZCgpLT5nZXREb3VibGVWYWx1
ZSgpLCBQZXJjZW50KTsgXAorICAgICAgICBlbHNlIFwKKyAgICAgICAgICAgIHJhZGl1c0hlaWdo
dCA9IExlbmd0aChtYXgoaW50TWluRm9yTGVuZ3RoLCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWly
LT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5z
dGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpv
b20oKSkpKSwgRml4ZWQpOyBcCisgICAgICAgIGludCB3aWR0aCA9IHJhZGl1c1dpZHRoLnJhd1Zh
bHVlKCk7IFwKKyAgICAgICAgaW50IGhlaWdodCA9IHJhZGl1c0hlaWdodC5yYXdWYWx1ZSgpOyBc
CisgICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkgXAorICAgICAgICAgICAgcmV0
dXJuOyBcCisgICAgICAgIGlmICh3aWR0aCA9PSAwKSBcCisgICAgICAgICAgICByYWRpdXNIZWln
aHQgPSByYWRpdXNXaWR0aDsgXAorICAgICAgICBlbHNlIGlmIChoZWlnaHQgPT0gMCkgXAorICAg
ICAgICAgICAgcmFkaXVzV2lkdGggPSByYWRpdXNIZWlnaHQ7IFwKKyAgICAgICAgTGVuZ3RoU2l6
ZSBzaXplKHJhZGl1c1dpZHRoLCByYWRpdXNIZWlnaHQpOyBcCisgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5TZXR0ZXIoc2l6ZSk7IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfU0hB
RE9XX1ZBTFVFKFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAor
eyBcCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsgXAorICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+U2V0dGVyKDApOyBcCisgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1
ZUxpc3QoKSkgeyBcCisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENT
U1ZhbHVlTGlzdCo+KHZhbHVlKTsgXAorICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7
IFwKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeyBcCisgICAgICAgICAg
ICBDU1NWYWx1ZSogY3VyclZhbHVlID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsg
XAorICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzU2hhZG93VmFsdWUoKSkgXAorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOyBcCisgICAgICAgICAgICBTaGFkb3dWYWx1ZSogaXRlbSA9IHN0
YXRpY19jYXN0PFNoYWRvd1ZhbHVlKj4obGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7
IFwKKyAgICAgICAgICAgIGludCB4ID0gaXRlbS0+eC0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5j
ZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2Ut
Pm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7IFwKKyAgICAgICAgICAgIGludCB5ID0gaXRlbS0+
eS0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1f
cm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7IFwK
KyAgICAgICAgICAgIGludCBibHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVM
ZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50
U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpIDogMDsgXAorICAgICAg
ICAgICAgaW50IHNwcmVhZCA9IGl0ZW0tPnNwcmVhZCA/IGl0ZW0tPnNwcmVhZC0+Y29tcHV0ZUxl
bmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRT
dHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkgOiAwOyBcCisgICAgICAg
ICAgICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IGl0ZW0tPnN0eWxlICYmIGl0ZW0tPnN0eWxl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5zZXQgPyBJbnNldCA6IE5vcm1hbDsgXAorICAgICAg
ICAgICAgQ29sb3IgY29sb3I7IFwKKyAgICAgICAgICAgIGlmIChpdGVtLT5jb2xvcikgXAorICAg
ICAgICAgICAgICAgIGNvbG9yID0gaW5zdGFuY2UtPmdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVl
KGl0ZW0tPmNvbG9yLmdldCgpKTsgXAorICAgICAgICAgICAgU2hhZG93RGF0YSogc2hhZG93RGF0
YSA9IG5ldyBTaGFkb3dEYXRhKHgsIHksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIFByb3Bl
cnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xv
ciA6IENvbG9yOjp0cmFuc3BhcmVudCk7IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5TZXR0ZXIoc2hhZG93RGF0YSwgKGkgIT0gMCkpOyBcCisgICAgICAgIH0gXAorICAgIH0gXAor
fQorCisjZGVmaW5lIERFRklORV9BTklNQVRJT05fSU5IRVJJVChQcm9wZXJ0eSwgcHJvcCwgUHJv
cCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIFwKK3sgXAorCUFuaW1hdGlvbkxpc3QqIGxp
c3QgPSBpbnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCisgICAgY29uc3Qg
QW5pbWF0aW9uTGlzdCogcGFyZW50TGlzdCA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5hbmlt
YXRpb25zKCk7IFwKKyAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8g
cGFyZW50TGlzdC0+c2l6ZSgpIDogMDsgXAorICAgIGZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYg
cGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5pcyMjUHJvcCMjU2V0KCk7ICsraSkgeyBcCisgICAg
ICAgIGlmIChsaXN0LT5zaXplKCkgPD0gaSkgXAorICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFu
aW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+c2V0IyNQ
cm9wKHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+cHJvcCgpKTsgXAorICAgIH0gXAorICAgIFwK
KyAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhhdmUgdGhlIHBy
b3BlcnR5IHNldC4gKi8gXAorICAgIGZvciAoIDsgaSA8IGxpc3QtPnNpemUoKTsgKytpKSBcCisg
ICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+Y2xlYXIjI1Byb3AoKTsgXAorfQorCisjZGVmaW5l
IERFRklORV9BTklNQVRJT05fSU5JVElBTChQcm9wZXJ0eSwgcHJvcCwgUHJvcCkgXAorREVGSU5F
X0lOSVRJQUwoUHJvcGVydHkpIFwKK3sgXAorCUFuaW1hdGlvbkxpc3QqIGxpc3QgPSBpbnN0YW5j
ZS0+bV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCisgICAgaWYgKGxpc3QtPmlzRW1wdHko
KSkgXAorICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICBs
aXN0LT5hbmltYXRpb24oMCktPnNldCMjUHJvcChBbmltYXRpb246OmluaXRpYWxBbmltYXRpb24j
I1Byb3AoKSk7IFwKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytp
KSBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+Y2xlYXIjI1Byb3AoKTsgXAorfQorCisj
ZGVmaW5lIERFRklORV9BTklNQVRJT05fVkFMVUUoUHJvcGVydHksIHByb3AsIFByb3ApIFwKK0RF
RklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisJQW5pbWF0aW9uTGlzdCogbGlzdCA9IGluc3Rh
bmNlLT5tX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKKwlzaXplX3QgY2hpbGRJbmRleCA9
IDA7IFwKKwlpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsgXAorCSAgICAvKiBXYWxrIGVhY2gg
dmFsdWUgYW5kIHB1dCBpdCBpbnRvIGFuIGFuaW1hdGlvbiwgY3JlYXRpbmcgbmV3IGFuaW1hdGlv
bnMgYXMgbmVlZGVkLiAqLyBcCisJICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGlj
X2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOyBcCisJICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7IFwKKwkgICAgICAgIGlmIChjaGls
ZEluZGV4IDw9IGxpc3QtPnNpemUoKSkgXAorCSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmlt
YXRpb246OmNyZWF0ZSgpKTsgXAorCSAgICAgICAgaW5zdGFuY2UtPm1hcEFuaW1hdGlvbiMjUHJv
cChsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayhpKSk7IFwKKwkgICAgICAgICsrY2hpbGRJbmRleDsgXAorCSAgICB9IFwKKwl9IGVs
c2UgeyBcCisJICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKKwkgICAgICAgIGxpc3QtPmFwcGVu
ZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAorCSAgICBpbnN0YW5jZS0+bWFwQW5pbWF0aW9uIyNQ
cm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgdmFsdWUpOyBcCisJICAgIGNoaWxkSW5k
ZXggPSAxOyBcCisJfSBcCisJZm9yICggOyBjaGlsZEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2No
aWxkSW5kZXgpIHsgXAorCSAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8g
bm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorCSAgICBsaXN0LT5hbmltYXRpb24oY2hp
bGRJbmRleCktPmNsZWFyIyNQcm9wKCk7IFwKKwl9IFwKK30KKworI2RlZmluZSBERUZJTkVfVFJB
TlNJVElPTl9JTkhFUklUKFByb3BlcnR5LCBwcm9wLCBQcm9wKSBcCitERUZJTkVfSU5IRVJJVChQ
cm9wZXJ0eSkgXAoreyBcCisJQW5pbWF0aW9uTGlzdCogbGlzdCA9IGluc3RhbmNlLT5tX3N0eWxl
LT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCisgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50
TGlzdCA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50cmFuc2l0aW9ucygpOyBcCisgICAgc2l6
ZV90IGkgPSAwLCBwYXJlbnRTaXplID0gcGFyZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6
IDA7IFwKKyAgICBmb3IgKCA7IGkgPCBwYXJlbnRTaXplICYmIHBhcmVudExpc3QtPmFuaW1hdGlv
bihpKS0+aXMjI1Byb3AjI1NldCgpOyArK2kpIHsgXAorICAgICAgICBpZiAobGlzdC0+c2l6ZSgp
IDw9IGkpIFwKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsg
XAorICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPnNldCMjUHJvcChwYXJlbnRMaXN0LT5hbmlt
YXRpb24oaSktPnByb3AoKSk7IFwKKyAgICB9IFwKKyAgICBcCisgICAgLyogUmVzZXQgYW55IHJl
bWFpbmluZyB0cmFuc2l0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisg
ICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwKKyAgICAgICAgbGlzdC0+YW5pbWF0
aW9uKGkpLT5jbGVhciMjUHJvcCgpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX1RSQU5TSVRJT05f
SU5JVElBTChQcm9wZXJ0eSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX0lOSVRJQUwoUHJvcGVydHkp
IFwKK3sgXAorICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBpbnN0YW5jZS0+bV9zdHlsZS0+YWNj
ZXNzVHJhbnNpdGlvbnMoKTsgXAorICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKKyAgICAgICAg
bGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgbGlzdC0+YW5pbWF0aW9u
KDApLT5zZXQjI1Byb3AoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uIyNQcm9wKCkpOyBcCisg
ICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAorICAgICAgICBs
aXN0LT5hbmltYXRpb24oMCktPmNsZWFyIyNQcm9wKCk7IFwKK30KKworI2RlZmluZSBERUZJTkVf
VFJBTlNJVElPTl9WQUxVRShQcm9wZXJ0eSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX1ZBTFVFKFBy
b3BlcnR5KSBcCit7IFwKKwlBbmltYXRpb25MaXN0KiBsaXN0ID0gaW5zdGFuY2UtPm1fc3R5bGUt
PmFjY2Vzc1RyYW5zaXRpb25zKCk7IFwKKwlzaXplX3QgY2hpbGRJbmRleCA9IDA7IFwKKwlpZiAo
dmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsgXAorCSAgICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1
dCBpdCBpbnRvIGEgdHJhbnNpdGlvbiwgY3JlYXRpbmcgbmV3IGFuaW1hdGlvbnMgYXMgbmVlZGVk
LiAqLyBcCisJICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4odmFsdWUpOyBcCisJICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmFs
dWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7IFwKKwkgICAgICAgIGlmIChjaGlsZEluZGV4IDw9IGxp
c3QtPnNpemUoKSkgXAorCSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0
ZSgpKTsgXAorCSAgICAgICAgaW5zdGFuY2UtPm1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmlt
YXRpb24oY2hpbGRJbmRleCksIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7
IFwKKwkgICAgICAgICsrY2hpbGRJbmRleDsgXAorCSAgICB9IFwKKwl9IGVsc2UgeyBcCisJICAg
IGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKKwkgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246
OmNyZWF0ZSgpKTsgXAorCSAgICBpbnN0YW5jZS0+bWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFu
aW1hdGlvbihjaGlsZEluZGV4KSwgdmFsdWUpOyBcCisJICAgIGNoaWxkSW5kZXggPSAxOyBcCisJ
fSBcCisJZm9yICggOyBjaGlsZEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsg
XAorCSAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5vdCBoYXZlIHRo
ZSBwcm9wZXJ0eSBzZXQuICovIFwKKwkgICAgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLT5j
bGVhciMjUHJvcCgpOyBcCisJfSBcCit9CisKKy8vIENTU1Byb3BlcnR5SW52YWxpZAorREVGSU5F
X05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eUludmFsaWQpCitERUZJTkVfTlVMTF9JTklUSUFMKENT
U1Byb3BlcnR5SW52YWxpZCkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5SW52YWxpZCkK
KworLy8gQ1NTUHJvcGVydHlDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
Q29sb3IsIHNldENvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eUNvbG9yLCBzZXRDb2xvciwgaW5pdGlhbENvbG9yKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5
Q29sb3IpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgaWYgKHAtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3Ip
CisgICAgICAgICAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHlD
b2xvcihpbnN0YW5jZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRDb2xvcihpbnN0YW5jZS0+Z2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUocCkpOwor
ICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlEaXJlY3Rpb24KK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc2V0RGlyZWN0aW9uLCBkaXJlY3Rpb24pCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHNldERpcmVjdGlvbiwgaW5pdGlh
bERpcmVjdGlvbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eURpcmVjdGlvbikKK3sKKyAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0RGlyZWN0aW9uKCpwKTsKKyAgICB9CisgICAgaWYgKGluc3Rh
bmNlLT5tX2VsZW1lbnQgJiYgaW5zdGFuY2UtPm1fZWxlbWVudCA9PSBpbnN0YW5jZS0+bV9lbGVt
ZW50LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgaW5zdGFuY2UtPm1f
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0RGlyZWN0aW9uU2V0T25Eb2N1bWVudEVsZW1lbnQodHJ1
ZSk7Cit9CisKKy8vIENTU1Byb3BlcnR5RGlzcGxheQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5RGlzcGxheSwgc2V0RGlzcGxheSwgZGlzcGxheSkKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eURpc3BsYXksIHNldERpc3BsYXksIGluaXRpYWxEaXNwbGF5KQorREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5RGlzcGxheSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworI2lmIEVOQUJMRShXQ1NTKQorICAgICAgICBp
ZiAocC0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVdhcE1hcnF1ZWUpIHsKKyAgICAgICAgICAgIC8v
IEluaXRpYWxpemUgV0FQIE1hcnF1ZWUgc3R5bGUKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRPdmVyZmxvd1goT01BUlFVRUUpOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldE92ZXJmbG93WShPTUFSUVVFRSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0V2hpdGVTcGFjZShOT1dSQVApOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldE1hcnF1ZWVEaXJlY3Rpb24oTUxFRlQpOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldE1hcnF1ZWVTcGVlZCg4NSk7IC8vIE5vcm1hbCBzcGVlZAorICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoMSk7CisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZUJlaGF2aW9yKE1TQ1JPTEwpOworCisgICAgICAgICAg
ICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUpIHsKKyAgICAgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0RGlzcGxheShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+ZGlzcGxheSgp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNl
bmRpZgorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RGlzcGxheSgqcCk7CisgICAgfQor
fQorCisvLyBDU1NQcm9wZXJ0eUZvbnQKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Rm9udCkK
K3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fcGFy
ZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRM
aW5lSGVpZ2h0KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5saW5lSGVpZ2h0KCkpOworICAgIGlu
c3RhbmNlLT5tX2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2Ut
Pm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udCkK
K3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1l
bnQtPnNldHRpbmdzKCk7CisgICAgQVNTRVJUKHNldHRpbmdzKTsgLy8gSWYgd2UncmUgZG9pbmcg
c3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBkb2N1bWVudCBzaG91bGQgYWx3YXlzIGJlIGluIGEgZnJh
bWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5ncworICAgIGlmICghc2V0dGluZ3MpCisgICAgICAgIHJl
dHVybjsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U3RhbmRhcmRGYW1pbHkp
OworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5mb250UmVu
ZGVyaW5nTW9kZSgpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0VXNlUHJpbnRlckZvbnQoaW5z
dGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5wcmludGluZygpKTsKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseSA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1
bWVudC0+c2V0dGluZ3MoKS0+c3RhbmRhcmRGb250RmFtaWx5KCk7CisgICAgaWYgKCFzdGFuZGFy
ZEZvbnRGYW1pbHkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZh
bWlseSgpLnNldEZhbWlseShzdGFuZGFyZEZvbnRGYW1pbHkpOworICAgICAgICBmb250RGVzY3Jp
cHRpb24uZmlyc3RGYW1pbHkoKS5hcHBlbmRGYW1pbHkoMCk7CisgICAgfQorICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShDU1NWYWx1ZU1lZGl1bSAtIENTU1ZhbHVlWHhTbWFsbCAr
IDEpOworICAgIGluc3RhbmNlLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRTaXpl
Rm9yS2V5d29yZChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlTWVkaXVt
LCBmYWxzZSkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0
eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKKyAgICBpbnN0YW5jZS0+bV9saW5lSGVpZ2h0VmFs
dWUgPSAwOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9
CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlGb250KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworCisgICAgICAgIGJv
b2wgdXNlU1ZHWm9vbVJ1bGVzID0gaW5zdGFuY2UtPm1fZWxlbWVudCAmJiBpbnN0YW5jZS0+bV9l
bGVtZW50LT5pc1NWR0VsZW1lbnQoKTsKKworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CisgICAgICAgIGlu
c3RhbmNlLT5tX2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisKKyAgICAgICAgRm9udERlc2NyaXB0aW9u
IGZvbnREZXNjcmlwdGlvbjsKKyAgICAgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5z
eXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOwor
CisgICAgICAgIC8vIERvdWJsZS1jaGVjayBhbmQgc2VlIGlmIHRoZSB0aGVtZSBkaWQgYW55dGhp
bmcuICBJZiBub3QsIGRvbid0IGJvdGhlciB1cGRhdGluZyB0aGUgZm9udC4KKyAgICAgICAgaWYg
KGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKSB7CisgICAgICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIHJlbmRlcmluZyBtb2RlIGFuZCBwcmludGVyIGZvbnQgc2V0dGluZ3MgYXJlIHVw
ZGF0ZWQuCisgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBpbnN0YW5jZS0+bV9jaGVj
a2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgICAgICAgICBBU1NFUlQoc2V0dGluZ3Mp
OyAvLyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRvY3VtZW50IHNob3Vs
ZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdzCisgICAgICAgICAg
ICBpZiAoIXNldHRpbmdzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5mb250UmVuZGVyaW5nTW9k
ZSgpKTsKKyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChpbnN0
YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnByaW50aW5nKCkpOworCisgICAgICAgICAgICAv
LyBIYW5kbGUgdGhlIHpvb20gZmFjdG9yLgorICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShpbnN0YW5jZS0+
bV9jaGVja2VyLm1fZG9jdW1lbnQsIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBmb250RGVzY3Jp
cHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgZm9udERlc2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKSwg
dXNlU1ZHWm9vbVJ1bGVzKSk7CisgICAgICAgICAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICAgICAgICAgIGluc3Rh
bmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHZhbHVl
LT5pc0ZvbnRWYWx1ZSgpKSB7CisgICAgICAgIEZvbnRWYWx1ZSogZm9udCA9IHN0YXRpY19jYXN0
PEZvbnRWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKCFmb250LT5zdHlsZSB8fCAhZm9udC0+
dmFyaWFudCB8fCAhZm9udC0+d2VpZ2h0IHx8ICFmb250LT5zaXplIHx8ICFmb250LT5saW5lSGVp
Z2h0IHx8ICFmb250LT5mYW1pbHkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIENTU1N0
eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlQ1NTUHJvcGVydHlGb250U3R5bGUoaW5zdGFuY2UsIGZv
bnQtPnN0eWxlLmdldCgpKTsKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWVD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50KGluc3RhbmNlLCBmb250LT52YXJpYW50LmdldCgpKTsKKyAg
ICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWVDU1NQcm9wZXJ0eUZvbnRXZWlnaHQo
aW5zdGFuY2UsIGZvbnQtPndlaWdodC5nZXQoKSk7CisgICAgICAgIENTU1N0eWxlU2VsZWN0b3I6
OmhhbmRsZVZhbHVlQ1NTUHJvcGVydHlGb250U2l6ZShpbnN0YW5jZSwgZm9udC0+c2l6ZS5nZXQo
KSk7CisKKyAgICAgICAgaW5zdGFuY2UtPm1fbGluZUhlaWdodFZhbHVlID0gZm9udC0+bGluZUhl
aWdodC5nZXQoKTsKKworICAgICAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVWYWx1ZUNTU1By
b3BlcnR5Rm9udEZhbWlseShpbnN0YW5jZSwgZm9udC0+ZmFtaWx5LmdldCgpKTsKKyAgICB9Cit9
CisKKy8vIENTU1Byb3BlcnR5Rm9udEZhbWlseQorLy8gbGlzdCBvZiBzdHJpbmdzIGFuZCBpZHMK
K0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Rm9udEZhbWlseSkKK3sKKyAgICBGb250RGVzY3Jp
cHRpb24gcGFyZW50Rm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpOworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBp
bnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldEdlbmVyaWNGYW1pbHkocGFyZW50Rm9udERlc2NyaXB0aW9uLmdlbmVyaWNGYW1pbHkoKSk7
CisgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlseShwYXJlbnRGb250RGVzY3JpcHRpb24uZmly
c3RGYW1pbHkoKSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldElzU3BlY2lmaWVkRm9udChwYXJl
bnRGb250RGVzY3JpcHRpb24uaXNTcGVjaWZpZWRGb250KCkpOworICAgIGlmIChpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGlu
c3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0
eUZvbnRGYW1pbHkpCit7CisgICAgRm9udERlc2NyaXB0aW9uIGluaXRpYWxEZXNjID0gRm9udERl
c2NyaXB0aW9uKCk7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3Rh
bmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAvLyBXZSBuZWVkIHRvIGFkanVz
dCB0aGUgc2l6ZSB0byBhY2NvdW50IGZvciB0aGUgZ2VuZXJpYyBmYW1pbHkgY2hhbmdlIGZyb20g
bW9ub3NwYWNlCisgICAgLy8gdG8gbm9uLW1vbm9zcGFjZS4KKyAgICBpZiAoZm9udERlc2NyaXB0
aW9uLmtleXdvcmRTaXplKCkgJiYgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUo
KSkKKyAgICAgICAgaW5zdGFuY2UtPnNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgZm9udFNp
emVGb3JLZXl3b3JkKGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudCwgQ1NTVmFsdWVYeFNt
YWxsICsgZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXplKCkgLSAxLCBmYWxzZSkpOworICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KGluaXRpYWxEZXNjLmdlbmVyaWNGYW1pbHko
KSk7CisgICAgaWYgKCFpbml0aWFsRGVzYy5maXJzdEZhbWlseSgpLmZhbWlseUlzRW1wdHkoKSkK
KyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlseShpbml0aWFsRGVzYy5maXJzdEZhbWls
eSgpKTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQor
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Rm9udEZhbWlseSkKK3sKKyAgICBpZiAoIXZhbHVlLT5p
c1ZhbHVlTGlzdCgpKQorICAgICAgICByZXR1cm47CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBD
U1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Cisg
ICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgIEZvbnRGYW1pbHkmIGZpcnN0RmFtaWx5
ID0gZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCk7CisgICAgRm9udEZhbWlseSogY3VyckZh
bWlseSA9IDA7CisKKyAgICAvLyBCZWZvcmUgbWFwcGluZyBpbiBhIG5ldyBmb250LWZhbWlseSBw
cm9wZXJ0eSwgd2Ugc2hvdWxkIHJlc2V0IHRoZSBnZW5lcmljIGZhbWlseS4KKyAgICBib29sIG9s
ZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXplID0gZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVm
YXVsdFNpemUoKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVz
Y3JpcHRpb246Ok5vRmFtaWx5KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKysp
IHsKKyAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KGkpOworICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgQXRvbWljU3RyaW5n
IGZhY2U7CisgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIu
bV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSB7CisgICAgICAgICAg
ICBpZiAoY29udGVudFZhbHVlLT5pc0ZvbnRGYW1pbHlWYWx1ZSgpKQorICAgICAgICAgICAgICAg
IGZhY2UgPSBzdGF0aWNfY2FzdDxGb250RmFtaWx5VmFsdWUqPihjb250ZW50VmFsdWUpLT5mYW1p
bHlOYW1lKCk7CisgICAgICAgIH0gZWxzZSBpZiAoY29udGVudFZhbHVlLT5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBzZXR0aW5ncykgeworICAgICAg
ICAgICAgc3dpdGNoIChjb250ZW50VmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVXZWJraXRCb2R5OgorICAgICAgICAgICAgICAgIGZhY2UgPSBzZXR0aW5ncy0+
c3RhbmRhcmRGb250RmFtaWx5KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlU2VyaWY6CisgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LXNl
cmlmIjsKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShG
b250RGVzY3JpcHRpb246OlNlcmlmRmFtaWx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTYW5zU2VyaWY6CisgICAgICAgICAgICAgICAgZmFjZSA9
ICItd2Via2l0LXNhbnMtc2VyaWYiOworICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U2Fuc1NlcmlmRmFtaWx5KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDdXJzaXZlOgorICAg
ICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1jdXJzaXZlIjsKKyAgICAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OkN1cnNpdmVG
YW1pbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUZhbnRhc3k6CisgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LWZhbnRhc3kiOworICAg
ICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlw
dGlvbjo6RmFudGFzeUZhbWlseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlTW9ub3NwYWNlOgorICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtp
dC1tb25vc3BhY2UiOworICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmlj
RmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNlRmFtaWx5KTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghZmFjZS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlmICghY3VyckZhbWlseSkgeworICAgICAgICAgICAg
ICAgIC8vIEZpbGxpbmcgaW4gdGhlIGZpcnN0IGZhbWlseS4KKyAgICAgICAgICAgICAgICBmaXJz
dEZhbWlseS5zZXRGYW1pbHkoZmFjZSk7CisgICAgICAgICAgICAgICAgZmlyc3RGYW1pbHkuYXBw
ZW5kRmFtaWx5KDApOyAvLyBSZW1vdmUgYW55IGluaGVyaXRlZCBmYW1pbHktZmFsbGJhY2sgbGlz
dC4KKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0gJmZpcnN0RmFtaWx5OworICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc1NwZWNpZmllZEZvbnQoZm9udERlc2NyaXB0aW9u
LmdlbmVyaWNGYW1pbHkoKSA9PSBGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5KTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5l
d0ZhbWlseSA9IFNoYXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIG5l
d0ZhbWlseS0+c2V0RmFtaWx5KGZhY2UpOworICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPmFw
cGVuZEZhbWlseShuZXdGYW1pbHkpOworICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSBuZXdG
YW1pbHkuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBX
ZSBjYW4ndCBjYWxsIHVzZUZpeGVkRGVmYXVsdFNpemUoKSB1bnRpbCBhbGwgbmV3IGZvbnQgZmFt
aWxpZXMgaGF2ZSBiZWVuIGFkZGVkCisgICAgLy8gSWYgY3VyckZhbWlseSBpcyBub24temVybyB0
aGVuIHdlIHNldCBhdCBsZWFzdCBvbmUgZmFtaWx5IG9uIHRoaXMgZGVzY3JpcHRpb24uCisgICAg
aWYgKGN1cnJGYW1pbHkpIHsKKyAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6
ZSgpICYmIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkgIT0gb2xkRmFtaWx5
VXNlZEZpeGVkRGVmYXVsdFNpemUpCisgICAgICAgICAgICBpbnN0YW5jZS0+c2V0Rm9udFNpemUo
Zm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdvcmQoaW5zdGFuY2UtPm1fY2hlY2tlci5t
X2RvY3VtZW50LCBDU1NWYWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUo
KSAtIDEsICFvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkpOworCisgICAgICAgIGlmIChp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworICAgIH0KKyAgICByZXR1
cm47Cit9CisKKy8vIENTU1Byb3BlcnR5Rm9udFNpemUKK0RFRklORV9JTkhFUklUKENTU1Byb3Bl
cnR5Rm9udFNpemUpCit7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGlu
c3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24u
c2V0S2V5d29yZFNpemUoMCk7CisgICAgZmxvYXQgc2l6ZSA9IDA7CisKKyAgICBpZiAoaW5zdGFu
Y2UtPm1fcGFyZW50Tm9kZSkgeworICAgICAgICBzaXplID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsKKyAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEtleXdvcmRTaXplKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3Jp
cHRpb24oKS5rZXl3b3JkU2l6ZSgpKTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA8IDApCisgICAg
ICAgIHJldHVybjsKKworICAgIGluc3RhbmNlLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24s
IHNpemUpOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cisg
ICAgcmV0dXJuOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlGb250U2l6ZSkKK3sKKyAg
ICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsK
KyAgICBmbG9hdCBzaXplID0gMDsKKworICAgIHNpemUgPSBDU1NTdHlsZVNlbGVjdG9yOjpmb250
U2l6ZUZvcktleXdvcmQoaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZU1l
ZGl1bSwgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSk7CisgICAgZm9udERl
c2NyaXB0aW9uLnNldEtleXdvcmRTaXplKENTU1ZhbHVlTWVkaXVtIC0gQ1NTVmFsdWVYeFNtYWxs
ICsgMSk7CisKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybjsKKworICAgIGluc3Rh
bmNlLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIHNpemUpOworICAgIGlmIChpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAg
IGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7CisgICAgcmV0dXJuOworfQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5Rm9udFNpemUpCit7CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKDApOwor
ICAgIGZsb2F0IG9sZFNpemUgPSAwOworICAgIGZsb2F0IHNpemUgPSAwOworCisgICAgYm9vbCBw
YXJlbnRJc0Fic29sdXRlU2l6ZSA9IGZhbHNlOworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRO
b2RlKSB7CisgICAgICAgIG9sZFNpemUgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOworICAgICAgICBwYXJlbnRJc0Fic29sdXRlU2l6
ZSA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5pc0Fic29sdXRl
U2l6ZSgpOworICAgIH0KKworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewor
ICAgICAgICAvLyBLZXl3b3JkcyBhcmUgYmVpbmcgdXNlZC4KKyAgICAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVlWHhTbWFsbDoK
KyAgICAgICAgY2FzZSBDU1NWYWx1ZVhTbWFsbDoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxs
OgorICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgorICAgICAgICBjYXNlIENTU1ZhbHVlTGFy
Z2U6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVYTGFyZ2U6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVY
eExhcmdlOgorICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0WHh4TGFyZ2U6CisgICAgICAgICAg
ICBzaXplID0gZm9udFNpemVGb3JLZXl3b3JkKGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVu
dCwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCksIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERl
ZmF1bHRTaXplKCkpOworICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXpl
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlcjoKKyAgICAgICAgICAg
IHNpemUgPSBpbnN0YW5jZS0+bGFyZ2VyRm9udFNpemUob2xkU2l6ZSwgaW5zdGFuY2UtPm1fY2hl
Y2tlci5tX2RvY3VtZW50LT5pblF1aXJrc01vZGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsZXI6CisgICAgICAgICAgICBzaXplID0gaW5zdGFuY2Ut
PnNtYWxsZXJGb250U2l6ZShvbGRTaXplLCBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQt
PmluUXVpcmtzTW9kZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldElzQWJzb2x1dGVTaXplKHBhcmVudElzQWJzb2x1dGVTaXplICYmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUxhcmdlciB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZVNtYWxsZXIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgdHlw
ZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29sdXRlU2l6ZSB8fCAodHlwZSAhPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlwZSAhPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0VNUyAmJiB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTICYmIHR5
cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TKSk7CisgICAgICAgIGlmIChDU1NQcmlt
aXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKKyAgICAgICAgICAgIHNpemUgPSBw
cmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGluc3RhbmNlLT5tX3BhcmVudFN0eWxl
LCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB0cnVlKTsKKyAgICAgICAgZWxzZSBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgICBz
aXplID0gKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkgKiBvbGRTaXplKSAvIDEwMC4w
ZjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChz
aXplIDwgMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5zdGFuY2UtPnNldEZvbnRTaXplKGZv
bnREZXNjcmlwdGlvbiwgc2l6ZSk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250
RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERp
cnR5ID0gdHJ1ZTsKK30KKworCisvLyBDU1NQcm9wZXJ0eUZvbnRTdHlsZQorREVGSU5FX0lOSEVS
SVQoQ1NTUHJvcGVydHlGb250U3R5bGUpCit7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNj
cmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250
RGVzY3JpcHRpb24uc2V0SXRhbGljKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3Jp
cHRpb24oKS5pdGFsaWMoKSk7CisKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGly
dHkgPSB0cnVlOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlGb250U3R5bGUpCit7Cisg
ICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5m
b250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKGZhbHNlKTsK
KworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNj
cmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJ
TkVfVkFMVUUoQ1NTUHJvcGVydHlGb250U3R5bGUpCit7CisgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIEZvbnREZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCk7CisgICAgc3dpdGNoIChwLT5nZXRJZGVudCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZU9i
bGlxdWU6CisgICAgLy8gRklYTUU6IG9ibGlxdWUgaXMgdGhlIHNhbWUgYXMgaXRhbGljIGZvciB0
aGUgbW9tZW50Li4uCisgICAgY2FzZSBDU1NWYWx1ZUl0YWxpYzoKKyAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEl0YWxpYyh0cnVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1
ZU5vcm1hbDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhmYWxzZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkK
KyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KKworLy8gQ1NTUHJvcGVy
dHlGb250VmFyaWFudAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlGb250VmFyaWFudCkKK3sK
KyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoaW5z
dGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNtYWxsQ2FwcygpKTsKKwor
ICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlw
dGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJTkVf
SU5JVElBTChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KQoreworICAgIEZvbnREZXNjcmlwdGlvbiBm
b250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2FwcyhmYWxzZSk7CisKKyAgICBpZiAoaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAg
ICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQpCit7CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgaW50
IGlkID0gcC0+Z2V0SWRlbnQoKTsKKyAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoZmFsc2UpOworICAgIGVsc2UgaWYgKGlk
ID09IENTU1ZhbHVlU21hbGxDYXBzKQorICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxD
YXBzKHRydWUpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAg
aW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KKworLy8gQ1NTUHJvcGVydHlGb250V2Vp
Z2h0CitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCit7CisgICAgRm9udERl
c2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3Jp
cHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KGluc3RhbmNlLT5tX3BhcmVu
dFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSk7CisKKyAgICBpZiAoaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBp
bnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVy
dHlGb250V2VpZ2h0KQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBp
bnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldFdlaWdodChGb250V2VpZ2h0Tm9ybWFsKTsKKworICAgIGlmIChpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNl
LT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlGb250V2Vp
Z2h0KQoreworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0g
aW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworCisgICAgc3dpdGNoIChwLT5n
ZXRJZGVudCgpKSB7CisgICAgY2FzZSAwOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBjYXNlIENTU1ZhbHVlQm9sZGVyOgorICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2Vp
Z2h0KGZvbnREZXNjcmlwdGlvbi5ib2xkZXJXZWlnaHQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTVmFsdWVMaWdodGVyOgorICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0
KGZvbnREZXNjcmlwdGlvbi5saWdodGVyV2VpZ2h0KCkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1ZhbHVlQm9sZDoKKyAgICBjYXNlIENTU1ZhbHVlNzAwOgorICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHRCb2xkKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NWYWx1ZU5vcm1hbDoKKyAgICBjYXNlIENTU1ZhbHVlNDAwOgorICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1ZhbHVlOTAwOgorICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0
KEZvbnRXZWlnaHQ5MDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlODAwOgor
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ4MDApOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlNjAwOgorICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0V2VpZ2h0KEZvbnRXZWlnaHQ2MDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Zh
bHVlNTAwOgorICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ1MDAp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlMzAwOgorICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQzMDApOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1ZhbHVlMjAwOgorICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRX
ZWlnaHQyMDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlMTAwOgorICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQxMDApOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAg
ICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KKworLy8gQ1NTUHJvcGVydHlUZXh0
UmVuZGVyaW5nCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpCit7Cisg
ICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5m
b250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0VGV4dFJlbmRlcmluZ01v
ZGUoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnRleHRSZW5kZXJp
bmdNb2RlKCkpOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9u
KGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7
Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpCit7CisgICAgRm9u
dERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVz
Y3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0VGV4dFJlbmRlcmluZ01vZGUoQXV0
b1RleHRSZW5kZXJpbmcpOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2Ny
aXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9
IHRydWU7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nKQoreworICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2Ut
Pm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
VGV4dFJlbmRlcmluZ01vZGUoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgaWYgKGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7CisgICAgfQorfQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
Rm9udFNtb290aGluZykKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0g
aW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRGb250U21vb3RoaW5nKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRp
b24oKS5mb250U21vb3RoaW5nKCkpOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9u
dERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnRE
aXJ0eSA9IHRydWU7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9v
dGhpbmcpCit7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNl
LT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Rm9u
dFNtb290aGluZyhBdXRvU21vb3RoaW5nKTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9m
b250RGlydHkgPSB0cnVlOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Rm9udFNt
b290aGluZykKK3sKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKworICAgIEZvbnRTbW9v
dGhpbmdNb2RlIHNtb290aGluZzsKKyAgICBzd2l0Y2ggKHAtPmdldElkZW50KCkpIHsKKyAgICBj
YXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgc21vb3RoaW5nID0gQXV0b1Ntb290aGluZzsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgIHNtb290aGluZyA9
IE5vU21vb3RoaW5nOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlQW50aWFsaWFz
ZWQ6CisgICAgICAgIHNtb290aGluZyA9IEFudGlhbGlhc2VkOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxpYXNlZDoKKyAgICAgICAgc21vb3RoaW5nID0g
U3VicGl4ZWxBbnRpYWxpYXNlZDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHNtb290aGluZyA9IEF1dG9TbW9vdGhp
bmc7CisgICAgfQorICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKHNtb290aGlu
Zyk7CisKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0CitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwgc2V0VGV4dFNpemVBZGp1c3QsIHRl
eHRTaXplQWRqdXN0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4
dFNpemVBZGp1c3QsIHNldFRleHRTaXplQWRqdXN0LCBpbml0aWFsVGV4dFNpemVBZGp1c3QpCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCkKK3sKKyAgICBpZiAo
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsK
KyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dFNpemVBZGp1c3QocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0
eSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0V3Jp
dGluZ01vZGUKKy8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3Jp
dGluZyBzdXBwb3J0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRXcml0
aW5nTW9kZSwgc2V0V3JpdGluZ01vZGUsIHdyaXRpbmdNb2RlKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGUsIHNldFdyaXRpbmdNb2RlLCBpbml0aWFs
V3JpdGluZ01vZGUpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZSkK
K3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFdyaXRpbmdNb2RlKCpw
cmltaXRpdmVWYWx1ZSk7CisgICAgfQorICAgIGlmIChpbnN0YW5jZS0+bV9lbGVtZW50ICYmIGlu
c3RhbmNlLT5tX2VsZW1lbnQgPT0gaW5zdGFuY2UtPm1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9j
dW1lbnRFbGVtZW50KCkpCisgICAgICAgIGluc3RhbmNlLT5tX2VsZW1lbnQtPmRvY3VtZW50KCkt
PnNldFdyaXRpbmdNb2RlU2V0T25Eb2N1bWVudEVsZW1lbnQodHJ1ZSk7CisgICAgRm9udERlc2Ny
aXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRp
b24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T3JpZW50YXRpb24oaW5zdGFuY2UtPm1fc3R5
bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsIDogVmVydGljYWwpOwor
ICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlw
dGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENT
U1Byb3BlcnR5Wm9vbQorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlab29tKQoreworICAgIC8v
IFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdCBiZWZvcmUgd2UgZG8gYW55dGhpbmcuIFRoaXMgYWxs
b3dzIHRoZSBzZXRab29tIG1ldGhvZCB0byBhY2N1cmF0ZWx5IGNvbXB1dGUgYSBuZXcgem9vbSBp
biBlZmZlY3QuCisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oaW5zdGFu
Y2UtPm1fcGFyZW50U3R5bGUgPyBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+ZWZmZWN0aXZlWm9v
bSgpIDogUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRab29tKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT56b29tKCkpOworfQorREVGSU5FX0lO
SVRJQUwoQ1NTUHJvcGVydHlab29tKQoreworICAgIC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVj
dCBiZWZvcmUgd2UgZG8gYW55dGhpbmcuIFRoaXMgYWxsb3dzIHRoZSBzZXRab29tIG1ldGhvZCB0
byBhY2N1cmF0ZWx5IGNvbXB1dGUgYSBuZXcgem9vbSBpbiBlZmZlY3QuCisgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUgPyBpbnN0
YW5jZS0+bV9wYXJlbnRTdHlsZS0+ZWZmZWN0aXZlWm9vbSgpIDogUmVuZGVyU3R5bGU6OmluaXRp
YWxab29tKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRab29tKFJlbmRlclN0eWxlOjpp
bml0aWFsWm9vbSgpKTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVpvb20pCit7CisgICAg
Ly8gUmVzZXQgdGhlIHpvb20gaW4gZWZmZWN0IGJlZm9yZSB3ZSBkbyBhbnl0aGluZy4gVGhpcyBh
bGxvd3MgdGhlIHNldFpvb20gbWV0aG9kIHRvIGFjY3VyYXRlbHkgY29tcHV0ZSBhIG5ldyB6b29t
IGluIGVmZmVjdC4KKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RWZmZWN0aXZlWm9vbShpbnN0
YW5jZS0+bV9wYXJlbnRTdHlsZSA/IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5lZmZlY3RpdmVa
b29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CisKKyAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKworICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUo
KTsKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwp
CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFs
Wm9vbSgpKTsKKyAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZVJlc2V0KSB7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRFZmZlY3RpdmVab29t
KFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAgIH0gZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVEb2N1bWVudCkgeworICAgICAgICBm
bG9hdCBkb2Nab29tID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5yZW5kZXJlcigp
LT5zdHlsZSgpLT56b29tKCk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRFZmZlY3Rp
dmVab29tKGRvY1pvb20pOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShkb2Na
b29tKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJD
RU5UQUdFKSB7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFpvb20ocHJpbWl0aXZlVmFsdWUtPmdl
dEZsb2F0VmFsdWUoKSAvIDEwMC4wZik7CisgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
RmxvYXRWYWx1ZSgpKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFpvb20ocHJp
bWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSk7CisgICAgfQorCisgICAgaW5zdGFuY2UtPm1f
Zm9udERpcnR5ID0gdHJ1ZTsKK30KKworLy8gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0CitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBzZXRMaW5lSGVpZ2h0LCBsaW5l
SGVpZ2h0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TGluZUhlaWdodCwgc2V0
TGluZUhlaWdodCwgaW5pdGlhbExpbmVIZWlnaHQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlM
aW5lSGVpZ2h0KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworCisgICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0OworICAg
ICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAg
ICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgoLTEwMC4wLCBQZXJjZW50KTsKKyAgICAgICAgZWxz
ZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKKyAgICAg
ICAgICAgIGRvdWJsZSBtdWx0aXBsaWVyID0gaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpv
b20oKTsKKyAgICAgICAgICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+dGV4dFNpemVBZGp1c3Qo
KSkgeworICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbnN0YW5jZS0+bV9jaGVj
a2VyLm1fZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIg
Kj0gZnJhbWUtPnRleHRab29tRmFjdG9yKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBs
aW5lSGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVu
Z3RoKGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxl
LCAgbXVsdGlwbGllciksIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBM
ZW5ndGgoKGluc3RhbmNlLT5tX3N0eWxlLT5mb250U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUtPmdl
dEludFZhbHVlKCkpIC8gMTAwLCBGaXhlZCk7CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpICogMTAwLjAsIFBlcmNlbnQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRMaW5lSGVpZ2h0KGxpbmVIZWlnaHQpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmQpCit7Cisg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFyQmFja2dyb3VuZExheWVycygpOworICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IoKSk7Cit9CitERUZJTkVfSU5I
RVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmQpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPmlu
aGVyaXRCYWNrZ3JvdW5kTGF5ZXJzKCppbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+YmFja2dyb3Vu
ZExheWVycygpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKGlu
c3RhbmNlLT5tX3BhcmVudFN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKSk7Cit9CitERUZJTkVfTlVM
TF9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmQpCisKKy8vIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEF0dGFjaG1lbnQKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5
QmFja2dyb3VuZEF0dGFjaG1lbnQsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGF0dGFjaG1lbnQs
IEF0dGFjaG1lbnQpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0
eUJhY2tncm91bmRBdHRhY2htZW50LCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBhdHRhY2htZW50
LCBBdHRhY2htZW50KQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5
QmFja2dyb3VuZEF0dGFjaG1lbnQsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGF0dGFjaG1lbnQs
IEF0dGFjaG1lbnQpCisKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAKK0RFRklORV9IQU5E
TEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIGJhY2tncm91
bmQsIEJhY2tncm91bmQsIGNsaXAsIENsaXApCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5J
VElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBj
bGlwLCBDbGlwKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENsaXAsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNsaXAsIENsaXApCisKKy8vIENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IsIHNldEJhY2tncm91bmRDb2xvciwgYmFja2dyb3VuZENvbG9yKQor
REVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBz
ZXRCYWNrZ3JvdW5kQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBzZXRCYWNrZ3JvdW5kQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5QmFj
a2dyb3VuZEltYWdlCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0
eUJhY2tncm91bmRJbWFnZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgaW1hZ2UsIEltYWdlKQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1h
Z2UsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGltYWdlLCBJbWFnZSkKK0RFRklORV9IQU5ETEVf
RklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgYmFja2dyb3VuZCwg
QmFja2dyb3VuZCwgaW1hZ2UsIEltYWdlKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmln
aW4KK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZE9yaWdpbiwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgb3JpZ2luLCBPcmlnaW4pCitERUZJTkVf
SEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIGJh
Y2tncm91bmQsIEJhY2tncm91bmQsIG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgYmFja2dyb3VuZCwgQmFj
a2dyb3VuZCwgb3JpZ2luLCBPcmlnaW4pCisKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uWSkKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb24sIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWAor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb25YLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCB4UG9zaXRpb24sIFhQb3NpdGlvbikKK0RF
RklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgeFBvc2l0aW9uLCBYUG9zaXRpb24pCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25Y
LCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCB4UG9zaXRpb24sIFhQb3NpdGlvbikKKworLy8gQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5I
RVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksIGJhY2tncm91bmQsIEJhY2tncm91
bmQsIHlQb3NpdGlvbiwgWVBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJ
QUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCB5UG9zaXRpb24sIFlQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHlQ
b3NpdGlvbiwgWVBvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQKK0RF
RklORV9FWFBBTkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZ
KQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJl
cGVhdFkpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQpCisK
Ky8vIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgKK0RFRklORV9IQU5ETEVfRklMTF9MQVlF
Ul9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIGJhY2tncm91bmQsIEJhY2tn
cm91bmQsIHJlcGVhdFgsIFJlcGVhdFgpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElB
TChDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBy
ZXBlYXRYLCBSZXBlYXRYKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFgsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHJlcGVhdFgsIFJl
cGVhdFgpCisKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkKK0RFRklORV9IQU5ETEVf
RklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIGJhY2tncm91
bmQsIEJhY2tncm91bmQsIHJlcGVhdFksIFJlcGVhdFkpCitERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBiYWNrZ3JvdW5kLCBCYWNr
Z3JvdW5kLCByZXBlYXRZLCBSZXBlYXRZKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVF
KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFksIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHJl
cGVhdFksIFJlcGVhdFkpCisKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUKK0RFRklORV9I
QU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIGJhY2tn
cm91bmQsIEJhY2tncm91bmQsIHNpemUsIFNpemUpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJf
SU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCBzaXplLCBTaXplKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5
QmFja2dyb3VuZFNpemUsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHNpemUsIFNpemUpCisKKy8v
IENTU1Byb3BlcnR5Qm9yZGVyCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJv
cGVydHlCb3JkZXIsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyV2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVEhS
RUUoQ1NTUHJvcGVydHlCb3JkZXIsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5
Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpCitERUZJTkVfTlVMTF9WQUxVRShD
U1NQcm9wZXJ0eUJvcmRlcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20KK0RFRklORV9F
WFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21XaWR0aCkKK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldEJvcmRlckJvdHRvbSgpOwor
fQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20pCisKKy8vIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgc2V0Qm9yZGVyQm90dG9tQ29sb3IsIGJvcmRlckJv
dHRvbUNvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yLCBzZXRCb3JkZXJCb3R0b21Db2xvcikKK0RFRklORV9IQU5ETEVf
VkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgc2V0Qm9yZGVyQm90dG9t
Q29sb3IpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cworREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgc2V0Qm9yZGVy
Qm90dG9tTGVmdFJhZGl1cywgYm9yZGVyQm90dG9tTGVmdFJhZGl1cykKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIHNldEJvcmRlckJvdHRv
bUxlZnRSYWRpdXMsIGluaXRpYWxCb3JkZXJSYWRpdXMpCitERUZJTkVfUkFESVVTX1ZBTFVFKENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1
cykKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cworREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIHNldEJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzLCBib3JkZXJCb3R0b21SaWdodFJhZGl1cykKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBzZXRCb3JkZXJCb3R0
b21SaWdodFJhZGl1cywgaW5pdGlhbEJvcmRlclJhZGl1cykKK0RFRklORV9SQURJVVNfVkFMVUUo
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUKK0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBzZXRCb3JkZXJCb3R0b21TdHls
ZSwgYm9yZGVyQm90dG9tU3R5bGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21TdHlsZSwgc2V0Qm9yZGVyQm90dG9tU3R5bGUsIGluaXRpYWxCb3JkZXJTdHls
ZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgc2V0
Qm9yZGVyQm90dG9tU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBzZXRCb3Jk
ZXJCb3R0b21XaWR0aCwgYm9yZGVyQm90dG9tV2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgc2V0Qm9yZGVyQm90dG9tV2lkdGgsIGluaXRp
YWxCb3JkZXJXaWR0aCkKK0RFRklORV9XSURUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoLCBzZXRCb3JkZXJCb3R0b21XaWR0aCkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJDb2xs
YXBzZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsIHNl
dEJvcmRlckNvbGxhcHNlLCBib3JkZXJDb2xsYXBzZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlLCBzZXRCb3JkZXJDb2xsYXBzZSwgaW5pdGlhbEJvcmRl
ckNvbGxhcHNlKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UpCit7Cisg
ICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAg
ICAgICAgY2FzZSBDU1NWYWx1ZUNvbGxhcHNlOgorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldEJvcmRlckNvbGxhcHNlKHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTVmFsdWVTZXBhcmF0ZToKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRCb3JkZXJDb2xsYXBzZShmYWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlCb3JkZXJDb2xvcgorREVGSU5FX0VYUEFORElOR19J
TkhFUklUX0ZPVVIoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BD
b2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikKK0RFRklORV9FWFBBTkRJTkdfSU5J
VElBTF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29s
b3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21D
b2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQ
cm9wZXJ0eUJvcmRlckNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckxlZnQKK0RFRklORV9F
WFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eUJvcmRlckxlZnQsIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0V2lkdGgpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckxlZnQpCit7
CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0Qm9yZGVyTGVmdCgpOworfQorREVGSU5FX05V
TExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0KQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRDb2xvciwgc2V0Qm9yZGVyTGVmdENvbG9yLCBib3JkZXJMZWZ0Q29sb3IsIGNvbG9yKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBzZXRC
b3JkZXJMZWZ0Q29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yLCBzZXRCb3JkZXJMZWZ0Q29sb3IpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFN0eWxlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5
bGUsIHNldEJvcmRlckxlZnRTdHlsZSwgYm9yZGVyTGVmdFN0eWxlKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBzZXRCb3JkZXJMZWZ0U3R5bGUsIGlu
aXRpYWxCb3JkZXJTdHlsZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0U3R5bGUsIHNldEJvcmRlckxlZnRTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
V2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwg
c2V0Qm9yZGVyTGVmdFdpZHRoLCBib3JkZXJMZWZ0V2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIHNldEJvcmRlckxlZnRXaWR0aCwgaW5pdGlh
bEJvcmRlcldpZHRoKQorREVGSU5FX1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdp
ZHRoLCBzZXRCb3JkZXJMZWZ0V2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzCitE
RUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgQ1NT
UHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFk
aXVzLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclJhZGl1
cykKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRCb3JkZXJSYWRpdXMoKTsKK30KK0RF
RklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKQorCisvLyBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0CitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlC
b3JkZXJSaWdodCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCkKK0RFRklORV9JTklUSUFM
KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0
Qm9yZGVyUmlnaHQoKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyUmln
aHQpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhF
UklUX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIHNldEJvcmRlclJpZ2h0Q29s
b3IsIGJvcmRlclJpZ2h0Q29sb3IsIGNvbG9yKQorREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9S
KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgc2V0Qm9yZGVyUmlnaHRDb2xvcikKK0RFRklO
RV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBzZXRCb3Jk
ZXJSaWdodENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIHNldEJvcmRlclJpZ2h0
U3R5bGUsIGJvcmRlclJpZ2h0U3R5bGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodFN0eWxlLCBzZXRCb3JkZXJSaWdodFN0eWxlLCBpbml0aWFsQm9yZGVyU3R5
bGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgc2V0
Qm9yZGVyUmlnaHRTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBzZXRCb3JkZXJS
aWdodFdpZHRoLCBib3JkZXJSaWdodFdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgc2V0Qm9yZGVyUmlnaHRXaWR0aCwgaW5pdGlhbEJvcmRl
cldpZHRoKQorREVGSU5FX1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwg
c2V0Qm9yZGVyUmlnaHRXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nCitERUZJ
TkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJWZXJ0aWNhbFNwYWNpbmcpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVFdPKENTU1Byb3Bl
cnR5Qm9yZGVyU3BhY2luZywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2lu
ZywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcpCitERUZJTkVfTlVMTF9W
QUxVRShDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyU3R5
bGUKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUp
CitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfRk9VUihDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlKQor
REVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSkKKworLy8gQ1NTUHJvcGVy
dHlCb3JkZXJUb3AKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eUJv
cmRlclRvcCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BT
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCkKK0RFRklORV9JTklUSUFMKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldEJvcmRlclRvcCgp
OworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3ApCisKKy8vIENTU1By
b3BlcnR5Qm9yZGVyVG9wQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJv
cGVydHlCb3JkZXJUb3BDb2xvciwgc2V0Qm9yZGVyVG9wQ29sb3IsIGJvcmRlclRvcENvbG9yLCBj
b2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yLCBzZXRCb3JkZXJUb3BDb2xvcikKK0RFRklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJv
cGVydHlCb3JkZXJUb3BDb2xvciwgc2V0Qm9yZGVyVG9wQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5
Qm9yZGVyVG9wTGVmdFJhZGl1cworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wTGVmdFJhZGl1cywgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cywgYm9yZGVyVG9wTGVmdFJh
ZGl1cykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXMsIHNldEJvcmRlclRvcExlZnRSYWRpdXMsIGluaXRpYWxCb3JkZXJSYWRpdXMpCitERUZJTkVf
UkFESVVTX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgc2V0Qm9yZGVyVG9w
TGVmdFJhZGl1cykKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cworREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIHNldEJvcmRl
clRvcFJpZ2h0UmFkaXVzLCBib3JkZXJUb3BSaWdodFJhZGl1cykKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBzZXRCb3JkZXJUb3BSaWdodFJh
ZGl1cywgaW5pdGlhbEJvcmRlclJhZGl1cykKK0RFRklORV9SQURJVVNfVkFMVUUoQ1NTUHJvcGVy
dHlCb3JkZXJUb3BSaWdodFJhZGl1cywgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMpCisKKy8vIENT
U1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eUJvcmRlclRvcFN0eWxlLCBzZXRCb3JkZXJUb3BTdHlsZSwgYm9yZGVyVG9wU3R5bGUpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgc2V0Qm9yZGVyVG9w
U3R5bGUsIGluaXRpYWxCb3JkZXJTdHlsZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVy
dHlCb3JkZXJUb3BTdHlsZSwgc2V0Qm9yZGVyVG9wU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wV2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlclRvcFdp
ZHRoLCBzZXRCb3JkZXJUb3BXaWR0aCwgYm9yZGVyVG9wV2lkdGgpCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgc2V0Qm9yZGVyVG9wV2lkdGgsIGluaXRp
YWxCb3JkZXJXaWR0aCkKK0RFRklORV9XSURUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclRvcFdp
ZHRoLCBzZXRCb3JkZXJUb3BXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJXaWR0aAorREVG
SU5FX0VYUEFORElOR19JTkhFUklUX0ZPVVIoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJv
cGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCkKK0RFRklO
RV9FWFBBTkRJTkdfSU5JVElBTF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgpCitERUZJTkVf
TlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlcldpZHRoKQorCisvLyBDU1NQcm9wZXJ0eUJvdHRv
bQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm90dG9tLCBzZXRCb3R0b20sIGJv
dHRvbSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvdHRvbSwgc2V0Qm90dG9t
LCBpbml0aWFsT2Zmc2V0KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eUJvdHRvbSwg
c2V0Qm90dG9tLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJv
cGVydHlCb3hTaXppbmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJveFNpemlu
Zywgc2V0Qm94U2l6aW5nLCBib3hTaXppbmcpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlCb3hTaXppbmcsIHNldEJveFNpemluZywgaW5pdGlhbEJveFNpemluZykKK0RFRklORV9W
QUxVRShDU1NQcm9wZXJ0eUJveFNpemluZykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ29udGVudEJveCkKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hTaXppbmcoQ09OVEVOVF9CT1gpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94U2l6aW5nKEJPUkRFUl9C
T1gpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlDYXB0aW9uU2lkZQorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIHNldENhcHRpb25TaWRlLCBjYXB0aW9u
U2lkZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUNhcHRpb25TaWRlLCBzZXRD
YXB0aW9uU2lkZSwgaW5pdGlhbENhcHRpb25TaWRlKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQ
cm9wZXJ0eUNhcHRpb25TaWRlLCBzZXRDYXB0aW9uU2lkZSkKKworLy8gQ1NTUHJvcGVydHlDbGVh
cgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Q2xlYXIsIHNldENsZWFyLCBjbGVh
cikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUNsZWFyLCBzZXRDbGVhciwgaW5p
dGlhbENsZWFyKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUNsZWFyLCBzZXRDbGVh
cikKKworLy8gQ1NTUHJvcGVydHlDbGlwCisKKy8vIENTU1Byb3BlcnR5Q29udGVudAorLy8gRklY
TUU6IEluIENTUzMsIGl0IHdpbGwgYmUgcG9zc2libGUgdG8gaW5oZXJpdCBjb250ZW50LiAgSW4g
Q1NTMiBpdCBpcyBub3QuICBUaGlzCisgICAgLy8gbm90ZSBpcyBhIHJlbWluZGVyIHRoYXQgZXZl
bnR1YWxseSAiaW5oZXJpdCIgbmVlZHMgdG8gYmUgc3VwcG9ydGVkLgorREVGSU5FX05VTExfSU5I
RVJJVChDU1NQcm9wZXJ0eUNvbnRlbnQpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUNvbnRl
bnQpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFyQ29udGVudCgpOworfQorREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5Q29udGVudCkKK3sKKyAgICAvLyBsaXN0IG9mIHN0cmluZywgdXJp
LCBjb3VudGVyLCBhdHRyLCBpCisgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4odmFsdWUpOworICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKKworICAgIGJv
b2wgZGlkU2V0ID0gZmFsc2U7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewor
ICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7
CisgICAgICAgIGlmIChpdGVtLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkgeworICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbnRlbnQoc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZSo+KGl0ZW0pLT5nZW5lcmF0ZWRJbWFnZSgpLCBkaWRTZXQpOworICAgICAgICAg
ICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXRlbS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
aXRlbSk7CisgICAgICAgIHN3aXRjaCAoY29udGVudFZhbHVlLT5wcmltaXRpdmVUeXBlKCkpIHsK
KyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzoKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb250ZW50KGNvbnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFs
dWUoKS5pbXBsKCksIGRpZFNldCk7CisgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19BVFRSOiB7
CisgICAgICAgICAgICAvLyBGSVhNRTogQ2FuIGEgbmFtZXNwYWNlIGJlIHNwZWNpZmllZCBmb3Ig
YW4gYXR0cihmb28pPworICAgICAgICAgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zdHlsZVR5
cGUoKSA9PSBOT1BTRVVETykKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
VW5pcXVlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1f
cGFyZW50U3R5bGUtPnNldFVuaXF1ZSgpOworICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRy
KG51bGxBdG9tLCBjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBudWxsQXRv
bSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29udGVudChpbnN0YW5jZS0+
bV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoYXR0cikuaW1wbCgpLCBkaWRTZXQpOworICAgICAgICAg
ICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHRoZSBmYWN0IHRoYXQg
dGhlIGF0dHJpYnV0ZSB2YWx1ZSBhZmZlY3RzIHRoZSBzdHlsZQorICAgICAgICAgICAgaW5zdGFu
Y2UtPm1fc2VsZWN0b3JBdHRycy5hZGQoYXR0ci5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VSSTogeworICAgICAgICAgICAgaWYgKCFjb250ZW50VmFsdWUtPmlzSW1hZ2VWYWx1ZSgp
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldENvbnRlbnQoaW5zdGFuY2UtPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0
eUNvbnRlbnQsIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihjb250ZW50VmFsdWUpKSwgZGlk
U2V0KTsKKyAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUjogewor
ICAgICAgICAgICAgQ291bnRlciogY291bnRlclZhbHVlID0gY29udGVudFZhbHVlLT5nZXRDb3Vu
dGVyVmFsdWUoKTsKKyAgICAgICAgICAgIE93blB0cjxDb3VudGVyQ29udGVudD4gY291bnRlciA9
IGFkb3B0UHRyKG5ldyBDb3VudGVyQ29udGVudChjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwK
KyAgICAgICAgICAgICAgICAoRUxpc3RTdHlsZVR5cGUpY291bnRlclZhbHVlLT5saXN0U3R5bGVO
dW1iZXIoKSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSkpOworICAgICAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldENvbnRlbnQoY291bnRlci5yZWxlYXNlKCksIGRpZFNldCk7CisgICAg
ICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKCFkaWRTZXQpCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckNvbnRlbnQoKTsK
KyAgICByZXR1cm47Cit9CisKKy8vIENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudAorREVGSU5F
X05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQpCitERUZJTkVfTlVMTF9J
TklUSUFMKENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCkKK0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eUNvdW50ZXJJbmNyZW1lbnQpCit7CisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlDb3Vu
dGVyTGlzdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgdmFsdWUtPmlzVmFsdWVMaXN0KCkgPyBz
dGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSkgOiAwLCBmYWxzZSk7Cit9CisKKy8vIENT
U1Byb3BlcnR5Q291bnRlclJlc2V0CitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5Q291
bnRlclJlc2V0KQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldCkK
K0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldCkKK3sKKyAgICBDU1NTdHlsZVNl
bGVjdG9yOjphcHBseUNvdW50ZXJMaXN0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCB2YWx1ZS0+
aXNWYWx1ZUxpc3QoKSA/IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKSA6IDAsIHRy
dWUpOworfQorCisvLyBDU1NQcm9wZXJ0eUN1cnNvcgorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVy
dHlDdXJzb3IpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcihpbnN0YW5jZS0+
bV9wYXJlbnRTdHlsZS0+Y3Vyc29yKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJz
b3JMaXN0KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jdXJzb3JzKCkpOworfQorREVGSU5FX0lO
SVRJQUwoQ1NTUHJvcGVydHlDdXJzb3IpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFy
Q3Vyc29yTGlzdCgpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJzb3IoUmVuZGVyU3R5
bGU6OmluaXRpYWxDdXJzb3IoKSk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlDdXJzb3Ip
Cit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFyQ3Vyc29yTGlzdCgpOworICAgIGlmICh2
YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0
aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgIGludCBsZW4gPSBsaXN0LT5s
ZW5ndGgoKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQVVU
Tyk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAg
IENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKKyAgICAg
ICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAgIGludCB0
eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgICAgIGlmICh0
eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisgICAgICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5pc0N1cnNvckltYWdlVmFsdWUoKSkgeworICAgICAgICAgICAgICAg
ICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0N1cnNvcklt
YWdlVmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbWFn
ZS0+dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQoaW5zdGFuY2UtPm1fZWxlbWVudCkpIC8vIEVsZW1l
bnRzIHdpdGggU1ZHIGN1cnNvcnMgYXJlIG5vdCBhbGxvd2VkIHRvIHNoYXJlIHN0eWxlLgorICAg
ICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFVuaXF1ZSgpOworICAg
ICAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+YWRkQ3Vyc29yKGluc3RhbmNlLT5j
YWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDdXJzb3IsIGltYWdlKSwgaW1hZ2Ut
PmhvdFNwb3QoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICh0
eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgICAgIGludCB0eXBlID0gcC0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBpZiAodHlw
ZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UICYmIGluc3RhbmNlLT5tX3N0eWxlLT5j
dXJzb3IoKSAhPSBFQ3Vyc29yKCpwKSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRDdXJzb3IoKnApOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlFbXB0eUNlbGxzCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBzZXRFbXB0eUNlbGxzLCBl
bXB0eUNlbGxzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5RW1wdHlDZWxscywg
c2V0RW1wdHlDZWxscywgaW5pdGlhbEVtcHR5Q2VsbHMpCitERUZJTkVfSEFORExFX1ZBTFVFKENT
U1Byb3BlcnR5RW1wdHlDZWxscywgc2V0RW1wdHlDZWxscykKKworLy8gQ1NTUHJvcGVydHlGbG9h
dAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5RmxvYXQsIHNldEZsb2F0aW5nLCBm
bG9hdGluZykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUZsb2F0LCBzZXRGbG9h
dGluZywgaW5pdGlhbEZsb2F0aW5nKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUZs
b2F0LCBzZXRGbG9hdGluZykKKworLy8gQ1NTUHJvcGVydHlGb250U3RyZXRjaAorREVGSU5FX05V
TExfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRTdHJldGNoKQorREVGSU5FX05VTExfSU5JVElBTChD
U1NQcm9wZXJ0eUZvbnRTdHJldGNoKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlGb250
U3RyZXRjaCkKKworLy8gQ1NTUHJvcGVydHlIZWlnaHQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eUhlaWdodCwgc2V0SGVpZ2h0LCBoZWlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlIZWlnaHQsIHNldEhlaWdodCwgaW5pdGlhbFNpemUpCitERUZJTkVfTEVO
R1RIX1ZBTFVFKENTU1Byb3BlcnR5SGVpZ2h0LCBzZXRIZWlnaHQsIGZhbHNlLCB0cnVlLCB0cnVl
LCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlMZWZ0CitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlMZWZ0LCBzZXRMZWZ0LCBsZWZ0KQorREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5TGVmdCwgc2V0TGVmdCwgaW5pdGlhbE9mZnNldCkKK0RFRklORV9MRU5HVEhf
VkFMVUUoQ1NTUHJvcGVydHlMZWZ0LCBzZXRMZWZ0LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
LCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLCBzZXRMZXR0ZXJTcGFjaW5nLCBsZXR0ZXJT
cGFjaW5nKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywg
c2V0TGV0dGVyU3BhY2luZywgaW5pdGlhbExldHRlcldvcmRTcGFjaW5nKQorREVGSU5FX1NQQUNJ
TkdfVkFMVUUoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLCBzZXRMZXR0ZXJTcGFjaW5nKQorCisv
LyBDU1NQcm9wZXJ0eUxpc3RTdHlsZQorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENT
U1Byb3BlcnR5TGlzdFN0eWxlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1Byb3BlcnR5
TGlzdFN0eWxlSW1hZ2UsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24pCitERUZJTkVfRVhQ
QU5ESU5HX0lOSVRJQUxfVEhSRUUoQ1NTUHJvcGVydHlMaXN0U3R5bGUsIENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgQ1NTUHJvcGVydHlMaXN0U3R5
bGVQb3NpdGlvbikKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5TGlzdFN0eWxlKQorCisv
LyBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlMaXN0U3R5bGVJbWFnZSwgc2V0TGlzdFN0eWxlSW1hZ2UsIGxpc3RTdHlsZUltYWdlKQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIHNldExpc3RT
dHlsZUltYWdlLCBpbml0aWFsTGlzdFN0eWxlSW1hZ2UpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlMaXN0U3R5bGVJbWFnZSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGlzdFN0eWxl
SW1hZ2UoaW5zdGFuY2UtPnN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgdmFs
dWUpKTsKK30KKworLy8gQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbgorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIHNldExpc3RTdHlsZVBvc2l0
aW9uLCBsaXN0U3R5bGVQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eUxpc3RTdHlsZVBvc2l0aW9uLCBzZXRMaXN0U3R5bGVQb3NpdGlvbiwgaW5pdGlhbExpc3RTdHls
ZVBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0
aW9uLCBzZXRMaXN0U3R5bGVQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBzZXRMaXN0
U3R5bGVUeXBlLCBsaXN0U3R5bGVUeXBlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5TGlzdFN0eWxlVHlwZSwgc2V0TGlzdFN0eWxlVHlwZSwgaW5pdGlhbExpc3RTdHlsZVR5cGUp
CitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgc2V0TGlzdFN0
eWxlVHlwZSkKKworLy8gQ1NTUHJvcGVydHlNYXJnaW4KK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJ
VF9GT1VSKENTU1Byb3BlcnR5TWFyZ2luLCBDU1NQcm9wZXJ0eU1hcmdpblRvcCwgQ1NTUHJvcGVy
dHlNYXJnaW5SaWdodCwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCkKK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5TWFyZ2luKQoreworICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5yZXNldE1hcmdpbigpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlNYXJnaW4pCisKKy8vIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIHNldE1hcmdpbkJvdHRvbSwgbWFyZ2luQm90
dG9tKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBzZXRN
YXJnaW5Cb3R0b20sIGluaXRpYWxNYXJnaW4pCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3Bl
cnR5TWFyZ2luQm90dG9tLCBzZXRNYXJnaW5Cb3R0b20sIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRy
dWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIHNldE1hcmdpbkxlZnQsIG1hcmdpbkxlZnQpCitE
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBzZXRNYXJnaW5MZWZ0
LCBpbml0aWFsTWFyZ2luKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpbkxl
ZnQsIHNldE1hcmdpbkxlZnQsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisv
LyBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlNYXJnaW5SaWdodCwgc2V0TWFyZ2luUmlnaHQsIG1hcmdpblJpZ2h0KQorREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIHNldE1hcmdpblJpZ2h0LCBpbml0aWFs
TWFyZ2luKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBzZXRN
YXJnaW5SaWdodCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1By
b3BlcnR5TWFyZ2luVG9wCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlNYXJnaW5U
b3AsIHNldE1hcmdpblRvcCwgbWFyZ2luVG9wKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1By
b3BlcnR5TWFyZ2luVG9wLCBzZXRNYXJnaW5Ub3AsIGluaXRpYWxNYXJnaW4pCitERUZJTkVfTEVO
R1RIX1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBzZXRNYXJnaW5Ub3AsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eU1heEhlaWdodAorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBzZXRNYXhIZWlnaHQsIG1heEhl
aWdodCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1heEhlaWdodCwgc2V0TWF4
SGVpZ2h0LCBpbml0aWFsTWF4U2l6ZSkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlN
YXhIZWlnaHQsIHNldE1heEhlaWdodCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpCisK
Ky8vIENTU1Byb3BlcnR5TWF4V2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eU1heFdpZHRoLCBzZXRNYXhXaWR0aCwgbWF4V2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlNYXhXaWR0aCwgc2V0TWF4V2lkdGgsIGluaXRpYWxNYXhTaXplKQorREVGSU5F
X0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1heFdpZHRoLCBzZXRNYXhXaWR0aCwgdHJ1ZSwgdHJ1
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eU1pbkhlaWdodAorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWluSGVpZ2h0LCBzZXRNaW5IZWlnaHQsIG1pbkhl
aWdodCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1pbkhlaWdodCwgc2V0TWlu
SGVpZ2h0LCBpbml0aWFsTWluU2l6ZSkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlN
aW5IZWlnaHQsIHNldE1pbkhlaWdodCwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlKQor
CisvLyBDU1NQcm9wZXJ0eU1pbldpZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlNaW5XaWR0aCwgc2V0TWluV2lkdGgsIG1pbldpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5TWluV2lkdGgsIHNldE1pbldpZHRoLCBpbml0aWFsTWluU2l6ZSkKK0RFRklO
RV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNaW5XaWR0aCwgc2V0TWluV2lkdGgsIGZhbHNlLCB0
cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlPcGFjaXR5CitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPcGFjaXR5LCBzZXRPcGFjaXR5LCBvcGFjaXR5KQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3BhY2l0eSwgc2V0T3BhY2l0eSwgaW5p
dGlhbE9wYWNpdHkpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlPcGFjaXR5KQoreworICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKKyAgICAgICAgICAgIC8vIENsYW1wIG9wYWNpdHkgdG8g
dGhlIHJhbmdlIDAtMQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE9wYWNpdHko
bWluKDEuMGYsIG1heCgwLjBmLCBwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKSkpOwor
ICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlPcnBoYW5zCitERUZJTkVfSEFORExFX0lOSEVSSVQo
Q1NTUHJvcGVydHlPcnBoYW5zLCBzZXRPcnBoYW5zLCBvcnBoYW5zKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5T3JwaGFucywgc2V0T3JwaGFucywgaW5pdGlhbE9ycGhhbnMpCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlPcnBoYW5zKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPcnBoYW5zKHByaW1p
dGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5T3V0
bGluZQorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5T3V0bGluZSwg
Q1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBDU1NQcm9w
ZXJ0eU91dGxpbmVTdHlsZSkKK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5T3V0bGluZSkKK3sK
KyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRPdXRsaW5lKCk7Cit9CitERUZJTkVfTlVMTF9W
QUxVRShDU1NQcm9wZXJ0eU91dGxpbmUpCisKKy8vIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yCitE
RUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBzZXRP
dXRsaW5lQ29sb3IsIG91dGxpbmVDb2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxf
Q09MT1IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsIHNldE91dGxpbmVDb2xvcikKK0RFRklORV9I
QU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsIHNldE91dGxpbmVDb2xv
cikKKworLy8gQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0CitERUZJTkVfSEFORExFX0lOSEVSSVQo
Q1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0LCBzZXRPdXRsaW5lT2Zmc2V0LCBvdXRsaW5lT2Zmc2V0
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3V0bGluZU9mZnNldCwgc2V0T3V0
bGluZU9mZnNldCwgaW5pdGlhbE91dGxpbmVPZmZzZXQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlPdXRsaW5lT2Zmc2V0KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7
CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0T3V0bGluZU9mZnNldChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5j
ZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2Ut
Pm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlP
dXRsaW5lU3R5bGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU91dGxpbmVTdHls
ZSwgc2V0T3V0bGluZVN0eWxlLCBvdXRsaW5lU3R5bGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsIHNldE91dGxpbmVTdHlsZSwgaW5pdGlhbEJvcmRlclN0
eWxlKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlKQoreworICAgIGlmICh2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE91dGxpbmVTdHlsZShET1RURUQsIHRy
dWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3V0
bGluZVN0eWxlKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eU91
dGxpbmVXaWR0aAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5T3V0bGluZVdpZHRo
LCBzZXRPdXRsaW5lV2lkdGgsIG91dGxpbmVXaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgc2V0T3V0bGluZVdpZHRoLCBpbml0aWFsQm9yZGVyV2lk
dGgpCitERUZJTkVfV0lEVEhfVkFMVUUoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIHNldE91dGxp
bmVXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlPdmVyZmxvdworREVGSU5FX0VYUEFORElOR19JTkhF
UklUX1RXTyhDU1NQcm9wZXJ0eU92ZXJmbG93LCBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJv
cGVydHlPdmVyZmxvd1kpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVFdPKENTU1Byb3BlcnR5
T3ZlcmZsb3csIENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSkKK0RF
RklORV9FWFBBTkRJTkdfVkFMVUVfVFdPKENTU1Byb3BlcnR5T3ZlcmZsb3csIENTU1Byb3BlcnR5
T3ZlcmZsb3dZLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSkKKworLy8gQ1NTUHJvcGVydHlPdmVyZmxv
d1gKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU92ZXJmbG93WCwgc2V0T3ZlcmZs
b3dYLCBvdmVyZmxvd1gpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlPdmVyZmxv
d1gsIHNldE92ZXJmbG93WCwgaW5pdGlhbE92ZXJmbG93WCkKK0RFRklORV9IQU5ETEVfVkFMVUUo
Q1NTUHJvcGVydHlPdmVyZmxvd1gsIHNldE92ZXJmbG93WCkKKworLy8gQ1NTUHJvcGVydHlPdmVy
Zmxvd1kKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU92ZXJmbG93WSwgc2V0T3Zl
cmZsb3dZLCBvdmVyZmxvd1kpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlPdmVy
Zmxvd1ksIHNldE92ZXJmbG93WSwgaW5pdGlhbE92ZXJmbG93WSkKK0RFRklORV9IQU5ETEVfVkFM
VUUoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHNldE92ZXJmbG93WSkKKworLy8gQ1NTUHJvcGVydHlQ
YWRkaW5nCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQcm9wZXJ0eVBhZGRpbmcs
IENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIENTU1Byb3Bl
cnR5UGFkZGluZ0JvdHRvbSwgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCkKK0RFRklORV9JTklUSUFM
KENTU1Byb3BlcnR5UGFkZGluZykKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRQYWRk
aW5nKCk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmcpCisKKy8vIENT
U1Byb3BlcnR5UGFkZGluZ0JvdHRvbQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
UGFkZGluZ0JvdHRvbSwgc2V0UGFkZGluZ0JvdHRvbSwgcGFkZGluZ0JvdHRvbSkKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sIHNldFBhZGRpbmdCb3R0b20s
IGluaXRpYWxQYWRkaW5nKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdC
b3R0b20sIHNldFBhZGRpbmdCb3R0b20sIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkKKworLy8gQ1NTUHJvcGVydHlQYWRkaW5nTGVmdAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5UGFkZGluZ0xlZnQsIHNldFBhZGRpbmdMZWZ0LCBwYWRkaW5nTGVmdCkKK0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBzZXRQYWRkaW5nTGVmdCwg
aW5pdGlhbFBhZGRpbmcpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ0xl
ZnQsIHNldFBhZGRpbmdMZWZ0LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisK
Ky8vIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlQYWRkaW5nUmlnaHQsIHNldFBhZGRpbmdSaWdodCwgcGFkZGluZ1JpZ2h0KQorREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBzZXRQYWRkaW5nUmlnaHQs
IGluaXRpYWxQYWRkaW5nKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdS
aWdodCwgc2V0UGFkZGluZ1JpZ2h0LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
CisKKy8vIENTU1Byb3BlcnR5UGFkZGluZ1RvcAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5UGFkZGluZ1RvcCwgc2V0UGFkZGluZ1RvcCwgcGFkZGluZ1RvcCkKK0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIHNldFBhZGRpbmdUb3AsIGluaXRpYWxQ
YWRkaW5nKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIHNldFBh
ZGRpbmdUb3AsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJv
cGVydHlQYWdlCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5UGFnZSkKK0RFRklORV9O
VUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWdlKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlQYWdlKQorCisvLyBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlciwgc2V0UGFnZUJyZWFrQWZ0ZXIsIHBhZ2VC
cmVha0FmdGVyKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0
ZXIsIHNldFBhZ2VCcmVha0FmdGVyLCBpbml0aWFsUGFnZUJyZWFrKQorREVGSU5FX0hBTkRMRV9W
QUxVRShDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBzZXRQYWdlQnJlYWtBZnRlcikKKworLy8g
Q1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVBhZ2VCcmVha0JlZm9yZSwgc2V0UGFnZUJyZWFrQmVmb3JlLCBwYWdlQnJlYWtCZWZvcmUp
CitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsIHNldFBh
Z2VCcmVha0JlZm9yZSwgaW5pdGlhbFBhZ2VCcmVhaykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NT
UHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsIHNldFBhZ2VCcmVha0JlZm9yZSkKKworLy8gQ1NTUHJv
cGVydHlQYWdlQnJlYWtJbnNpZGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBh
Z2VCcmVha0luc2lkZSwgc2V0UGFnZUJyZWFrSW5zaWRlLCBwYWdlQnJlYWtJbnNpZGUpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsIHNldFBhZ2VCcmVh
a0luc2lkZSwgaW5pdGlhbFBhZ2VCcmVhaykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVBhZ2VC
cmVha0luc2lkZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgRVBhZ2VCcmVhayBwYWdlQnJlYWsgPSAq
cHJpbWl0aXZlVmFsdWU7CisgICAgICAgIGlmIChwYWdlQnJlYWsgIT0gUEJBTFdBWVMpCisgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0UGFnZUJyZWFrSW5zaWRlKHBhZ2VCcmVhayk7
CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMKKyNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpCisvLyA8cmRhcjovL3Byb2JsZW0vNjU2MTA3Nz4gV29yayBhcm91bmQg
dGhlIFN0b2NrcyB3aWRnZXQncyBtaXN1c2Ugb2YgdGhlCisvLyBwb2ludGVyLWV2ZW50cyBwcm9w
ZXJ0eSBieSBub3QgYXBwbHlpbmcgaXQgaW4gRGFzaGJvYXJkLgorREVGSU5FX0lOSEVSSVQoQ1NT
UHJvcGVydHlQb2ludGVyRXZlbnRzKQoreworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGluc3Rh
bmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGluZ3Mg
JiYgc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+cG9pbnRlckV2ZW50cygpKTsKK30KK0RFRklORV9JTklU
SUFMKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cykKK3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgaWYgKHNl
dHRpbmdzICYmIHNldHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9k
ZSgpKQorICAgICAgICByZXR1cm47CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFBvaW50ZXJF
dmVudHMoUmVuZGVyU3R5bGU6OmluaXRpYWxQb2ludGVyRXZlbnRzKCkpOworfQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cykKK3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgaWYgKHNl
dHRpbmdzICYmIHNldHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9k
ZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRQb2ludGVyRXZlbnRzKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgfQorfQorI2Vsc2UKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMsIHNldFBvaW50ZXJF
dmVudHMsIHBvaW50ZXJFdmVudHMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQ
b2ludGVyRXZlbnRzLCBzZXRQb2ludGVyRXZlbnRzLCBpbml0aWFsUG9pbnRlckV2ZW50cykKK0RF
RklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBzZXRQb2ludGVyRXZl
bnRzKQorI2VuZGlmCisKKy8vIENTU1Byb3BlcnR5UG9zaXRpb24KK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVBvc2l0aW9uLCBzZXRQb3NpdGlvbiwgcG9zaXRpb24pCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQb3NpdGlvbiwgc2V0UG9zaXRpb24sIGluaXRpYWxQ
b3NpdGlvbikKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlQb3NpdGlvbiwgc2V0UG9z
aXRpb24pCisKKy8vIENTU1Byb3BlcnR5UXVvdGVzCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1By
b3BlcnR5UXVvdGVzKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVF1b3RlcykKK0RF
RklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5UXVvdGVzKQorCisvLyBDU1NQcm9wZXJ0eVJlc2l6
ZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UmVzaXplLCBzZXRSZXNpemUsIHJl
c2l6ZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVJlc2l6ZSwgc2V0UmVzaXpl
LCBpbml0aWFsUmVzaXplKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5UmVzaXplKQoreworICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAg
ICAgIEVSZXNpemUgcmVzdWx0ID0gUkVTSVpFX05PTkU7CisgICAgICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKSB7CisgICAgICAgICAgICAgICAg
aWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+
c2V0dGluZ3MoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0dGluZ3MtPnRleHRB
cmVhc0FyZVJlc2l6YWJsZSgpID8gUkVTSVpFX0JPVEggOiBSRVNJWkVfTk9ORTsKKyAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9ICpwcmltaXRpdmVWYWx1ZTsKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRSZXNpemUocmVzdWx0KTsKKyAgICAgICAg
fQorICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlSaWdodAorREVGSU5FX0hBTkRMRV9JTkhFUklU
KENTU1Byb3BlcnR5UmlnaHQsIHNldFJpZ2h0LCByaWdodCkKK0RFRklORV9IQU5ETEVfSU5JVElB
TChDU1NQcm9wZXJ0eVJpZ2h0LCBzZXRSaWdodCwgaW5pdGlhbE9mZnNldCkKK0RFRklORV9MRU5H
VEhfVkFMVUUoQ1NTUHJvcGVydHlSaWdodCwgc2V0UmlnaHQsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVNpemUKK0RFRklORV9OVUxMX0lOSEVSSVQo
Q1NTUHJvcGVydHlTaXplKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVNpemUpCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlTaXplKQoreworICAgIGluc3RhbmNlLT5hcHBseVBhZ2VT
aXplUHJvcGVydHkodmFsdWUpOworfQorCisvLyBDU1NQcm9wZXJ0eVNyYworLy8gT25seSB1c2Vk
IGluIEBmb250LWZhY2UgcnVsZXMuCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5U3Jj
KQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVNyYykKK0RFRklORV9OVUxMX1ZBTFVF
KENTU1Byb3BlcnR5U3JjKQorCisvLyBDU1NQcm9wZXJ0eVNwZWFrCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlTcGVhaywgc2V0U3BlYWssIHNwZWFrKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5U3BlYWssIHNldFNwZWFrLCBpbml0aWFsU3BlYWspCitERUZJTkVf
SEFORExFX1ZBTFVFKENTU1Byb3BlcnR5U3BlYWssIHNldFNwZWFrKQorCisvLyBDU1NQcm9wZXJ0
eVRhYmxlTGF5b3V0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUYWJsZUxheW91
dCwgc2V0VGFibGVMYXlvdXQsIHRhYmxlTGF5b3V0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5VGFibGVMYXlvdXQsIHNldFRhYmxlTGF5b3V0LCBpbml0aWFsVGFibGVMYXlvdXQp
CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlUYWJsZUxheW91dCkKK3sKKyAgICBpZiAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgRVRhYmxlTGF5b3V0IGxheW91dCA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAgICAgaWYgKGxh
eW91dCA9PSBUQVVUTykKKyAgICAgICAgICAgIGxheW91dCA9IFJlbmRlclN0eWxlOjppbml0aWFs
VGFibGVMYXlvdXQoKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRhYmxlTGF5b3V0
KGxheW91dCk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVRleHRBbGlnbgorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGV4dEFsaWduLCBzZXRUZXh0QWxpZ24sIHRleHRBbGln
bikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRBbGlnbiwgc2V0VGV4dEFs
aWduLCBpbml0aWFsVGV4dEFsaWduKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5VGV4dEFsaWdu
KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgICAgICBpbnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KTsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU3RhcnQpCisgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0VGV4dEFsaWduKGluc3RhbmNlLT5tX3N0eWxlLT5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQpOworICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NW
YWx1ZUVuZCkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0QWxpZ24oaW5z
dGFuY2UtPm1fc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFJJR0hUIDogTEVGVCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0QWxp
Z24oKnByaW1pdGl2ZVZhbHVlKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5VGV4dERlY29y
YXRpb24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCBz
ZXRUZXh0RGVjb3JhdGlvbiwgdGV4dERlY29yYXRpb24pCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgc2V0VGV4dERlY29yYXRpb24sIGluaXRpYWxUZXh0
RGVjb3JhdGlvbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKQorewor
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVOb25lKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodmFsdWUtPmlzVmFs
dWVMaXN0KCkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NT
VmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICBpbnQgdCA9IFJlbmRlclN0eWxlOjppbml0aWFs
VGV4dERlY29yYXRpb24oKTsKKyAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICBDU1NWYWx1
ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CisgICAgICAgICAgICBp
ZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9uZToK
KyAgICAgICAgICAgICAgICB0ID0gVEROT05FOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVVuZGVybGluZToKKyAgICAgICAgICAgICAgICB0IHw9IFVO
REVSTElORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVPdmVybGluZToKKyAgICAgICAgICAgICAgICB0IHw9IE9WRVJMSU5FOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmVUaHJvdWdoOgorICAgICAg
ICAgICAgICAgIHQgfD0gTElORV9USFJPVUdIOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUJsaW5rOgorICAgICAgICAgICAgICAgIHQgfD0gQkxJTks7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0VGV4dERlY29yYXRpb24odCk7CisgICAgfQorfQorCisvLyBDU1NQcm9w
ZXJ0eVRleHRJbmRlbnQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRJbmRl
bnQsIHNldFRleHRJbmRlbnQsIHRleHRJbmRlbnQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlUZXh0SW5kZW50LCBzZXRUZXh0SW5kZW50LCBpbml0aWFsVGV4dEluZGVudCkKK0RF
RklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlUZXh0SW5kZW50LCBzZXRUZXh0SW5kZW50LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdo
KQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaCkKK0RFRklO
RV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoKQorCisvLyBDU1NQcm9wZXJ0
eVRleHRMaW5lVGhyb3VnaENvbG9yCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoQ29sb3IpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoQ29sb3IpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhy
b3VnaENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUKK0RFRklORV9O
VUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlKQorREVGSU5FX05VTExf
SU5JVElBTChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUpCitERUZJTkVfTlVMTF9WQUxV
RShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUpCisKKy8vIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoU3R5bGUKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0TGluZVRo
cm91Z2hTdHlsZSkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91
Z2hTdHlsZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5
bGUpCisKKy8vIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGgKK0RFRklORV9OVUxMX0lO
SEVSSVQoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aCkKK0RFRklORV9OVUxMX0lOSVRJ
QUwoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aCkKK0RFRklORV9OVUxMX1ZBTFVFKENT
U1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJm
bG93CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3csIHNldFRl
eHRPdmVyZmxvdywgdGV4dE92ZXJmbG93KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5VGV4dE92ZXJmbG93LCBzZXRUZXh0T3ZlcmZsb3csIGluaXRpYWxUZXh0T3ZlcmZsb3cpCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3cpCit7CisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRUZXh0T3ZlcmZsb3cocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVFbGxpcHNpcyk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVRleHRPdmVybGluZQor
REVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRPdmVybGluZSkKK0RFRklORV9OVUxM
X0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmUpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcgor
REVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9yKQorREVGSU5F
X05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9yKQorREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcikKKworLy8gQ1NTUHJvcGVydHlUZXh0
T3ZlcmxpbmVNb2RlCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5l
TW9kZSkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlKQor
REVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlKQorCisvLyBDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZVN0eWxlCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lU3R5bGUpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dE92
ZXJsaW5lU3R5bGUpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0
eWxlKQorCisvLyBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoCitERUZJTkVfTlVMTF9JTkhF
UklUKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpCitERUZJTkVfTlVMTF9JTklUSUFMKENT
U1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0
eVRleHRPdmVybGluZVdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVRleHRTaGFkb3cKK0RFRklORV9J
TkhFUklUKENTU1Byb3BlcnR5VGV4dFNoYWRvdykKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0VGV4dFNoYWRvdyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+dGV4dFNoYWRvdygpID8gbmV3
IFNoYWRvd0RhdGEoKmluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50ZXh0U2hhZG93KCkpIDogMCk7
Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCit7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldFRleHRTaGFkb3coMCk7Cit9CitERUZJTkVfU0hBRE9XX1ZBTFVFKENT
U1Byb3BlcnR5VGV4dFNoYWRvdywgc2V0VGV4dFNoYWRvdykKKworLy8gQ1NTUHJvcGVydHlUZXh0
VHJhbnNmb3JtCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3Jt
LCBzZXRUZXh0VHJhbnNmb3JtLCB0ZXh0VHJhbnNmb3JtKQorREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgc2V0VGV4dFRyYW5zZm9ybSwgaW5pdGlhbFRleHRU
cmFuc2Zvcm0pCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwg
c2V0VGV4dFRyYW5zZm9ybSkKKworLy8gQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lCitERUZJTkVf
TlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZSkKK0RFRklORV9OVUxMX0lOSVRJ
QUwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lKQorCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcgorREVG
SU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcikKK0RFRklORV9O
VUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3IpCitERUZJTkVfTlVMTF9W
QUxVRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcikKKworLy8gQ1NTUHJvcGVydHlUZXh0
VW5kZXJsaW5lTW9kZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRVbmRlcmxp
bmVNb2RlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2Rl
KQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZSkKKworLy8g
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGUKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lU3R5bGUpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5
VGV4dFVuZGVybGluZVN0eWxlKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoCitERUZJTkVf
TlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoKQorREVGSU5FX05VTExf
SU5JVElBTChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aCkKK0RFRklORV9OVUxMX1ZBTFVF
KENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVRvcAorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VG9wLCBzZXRUb3AsIHRvcCkKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRvcCwgc2V0VG9wLCBpbml0aWFsT2Zmc2V0KQorREVG
SU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVRvcCwgc2V0VG9wLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlVbmljb2RlQmlkaQorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHNldFVuaWNvZGVCaWRpLCB1bmlj
b2RlQmlkaSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBz
ZXRVbmljb2RlQmlkaSwgaW5pdGlhbFVuaWNvZGVCaWRpKQorREVGSU5FX0hBTkRMRV9WQUxVRShD
U1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzZXRVbmljb2RlQmlkaSkKKworLy8gQ1NTUHJvcGVydHlV
bmljb2RlUmFuZ2UKKy8vIE9ubHkgdXNlZCBpbiBAZm9udC1mYWNlIHJ1bGVzLgorREVGSU5FX05V
TExfSU5IRVJJVChDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZSkKK0RFRklORV9OVUxMX0lOSVRJQUwo
Q1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVVu
aWNvZGVSYW5nZSkKKworLy8gQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduCitERUZJTkVfSEFORExF
X0lOSEVSSVQoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBzZXRWZXJ0aWNhbEFsaWduLCB2ZXJ0
aWNhbEFsaWduKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VmVydGljYWxBbGln
biwgc2V0VmVydGljYWxBbGlnbiwgaW5pdGlhbFZlcnRpY2FsQWxpZ24pCitERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIEVWZXJ0aWNhbEFsaWduIGFsaWdu
OworICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVRvcDoKKyAgICAgICAgICAgICAgICBhbGlnbiA9IFRPUDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVCb3R0b206
CisgICAgICAgICAgICAgICAgYWxpZ24gPSBCT1RUT007CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTWlkZGxlOgorICAgICAgICAgICAgICAgIGFsaWdu
ID0gTUlERExFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZUJhc2VsaW5lOgorICAgICAgICAgICAgICAgIGFsaWduID0gQkFTRUxJTkU7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVGV4dEJvdHRvbToKKyAg
ICAgICAgICAgICAgICBhbGlnbiA9IFRFWFRfQk9UVE9NOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRleHRUb3A6CisgICAgICAgICAgICAgICAgYWxp
Z24gPSBURVhUX1RPUDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVTdWI6CisgICAgICAgICAgICAgICAgYWxpZ24gPSBTVUI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3VwZXI6CisgICAgICAgICAgICAg
ICAgYWxpZ24gPSBTVVBFUjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVXZWJraXRCYXNlbGluZU1pZGRsZToKKyAgICAgICAgICAgICAgICBhbGlnbiA9
IEJBU0VMSU5FX01JRERMRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFZlcnRpY2FsQWxpZ24oYWxpZ24pOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpOworICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aDsKKyAgICAgICAgICAgIGlmIChDU1NQ
cmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKKyAgICAgICAgICAgICAgICBs
ZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgo
aW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGlu
c3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpLCBGaXhlZCk7CisgICAgICAgICAgICBl
bHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAg
ICAgICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVl
KCksIFBlcmNlbnQpOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFZlcnRpY2Fs
QWxpZ24oTEVOR1RIKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRWZXJ0aWNh
bEFsaWduTGVuZ3RoKGxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIENTU1Byb3Bl
cnR5VmlzaWJpbGl0eQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VmlzaWJpbGl0
eSwgc2V0VmlzaWJpbGl0eSwgdmlzaWJpbGl0eSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVZpc2liaWxpdHksIHNldFZpc2liaWxpdHksIGluaXRpYWxWaXNpYmlsaXR5KQorREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVZpc2liaWxpdHksIHNldFZpc2liaWxpdHkpCisK
Ky8vIENTU1Byb3BlcnR5V2hpdGVTcGFjZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5V2hpdGVTcGFjZSwgc2V0V2hpdGVTcGFjZSwgd2hpdGVTcGFjZSkKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIHNldFdoaXRlU3BhY2UsIGluaXRpYWxXaGl0
ZVNwYWNlKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIHNldFdo
aXRlU3BhY2UpCisKKy8vIENTU1Byb3BlcnR5V2lkb3dzCitERUZJTkVfSEFORExFX0lOSEVSSVQo
Q1NTUHJvcGVydHlXaWRvd3MsIHNldFdpZG93cywgd2lkb3dzKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2lkb3dzLCBzZXRXaWRvd3MsIGluaXRpYWxXaWRvd3MpCitERUZJTkVf
VkFMVUUoQ1NTUHJvcGVydHlXaWRvd3MpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFdpZG93cyhwcmltaXRpdmVWYWx1
ZS0+Z2V0SW50VmFsdWUoKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdpZHRoCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXaWR0aCwgc2V0V2lkdGgsIHdpZHRoKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2lkdGgsIHNldFdpZHRoLCBpbml0aWFsU2l6
ZSkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlXaWR0aCwgc2V0V2lkdGgsIGZhbHNl
LCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlXb3JkQnJlYWsKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdvcmRCcmVhaywgc2V0V29yZEJyZWFrLCB3
b3JkQnJlYWspCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXb3JkQnJlYWssIHNl
dFdvcmRCcmVhaywgaW5pdGlhbFdvcmRCcmVhaykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJv
cGVydHlXb3JkQnJlYWssIHNldFdvcmRCcmVhaykKKworLy8gQ1NTUHJvcGVydHlXb3JkU3BhY2lu
ZworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIHNldFdvcmRT
cGFjaW5nLCB3b3JkU3BhY2luZykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdv
cmRTcGFjaW5nLCBzZXRXb3JkU3BhY2luZywgaW5pdGlhbExldHRlcldvcmRTcGFjaW5nKQorREVG
SU5FX1NQQUNJTkdfVkFMVUUoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgc2V0V29yZFNwYWNpbmcp
CisKKy8vIENTU1Byb3BlcnR5V29yZFdyYXAKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdvcmRXcmFwLCBzZXRXb3JkV3JhcCwgd29yZFdyYXApCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgc2V0V29yZFdyYXAsIGluaXRpYWxXb3JkV3JhcCkKK0RF
RklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXb3JkV3JhcCwgc2V0V29yZFdyYXApCisKKy8v
IENTU1Byb3BlcnR5WkluZGV4CitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVpJbmRleCkKK3sK
KyAgICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmhhc0F1dG9aSW5kZXgoKSkKKyAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9aSW5kZXgoKTsKKyAgICBlbHNlCisgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRaSW5kZXgoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUt
PnpJbmRleCgpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5WkluZGV4KQoreworICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvWkluZGV4KCk7Cit9CitERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlaSW5kZXgpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0SGFzQXV0b1pJbmRleCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBTaG91bGQgY2xhbXAgYWxsIHNvcnRzIG9mIG90aGVyIGludGVnZXIgcHJvcGVydGll
cyB0b28uCisgICAgICAgICAgICBjb25zdCBkb3VibGUgbWluSW50QXNEb3VibGUgPSBJTlRfTUlO
OworICAgICAgICAgICAgY29uc3QgZG91YmxlIG1heEludEFzRG91YmxlID0gSU5UX01BWDsKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRaSW5kZXgoc3RhdGljX2Nhc3Q8aW50Piht
YXgobWluSW50QXNEb3VibGUsIG1pbihwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwg
bWF4SW50QXNEb3VibGUpKSkpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbgorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b24pCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFyQW5pbWF0aW9ucygpOworfQorREVG
SU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24pCit7CisgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPmluaGVyaXRBbmltYXRpb25zKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5hbmlt
YXRpb25zKCkpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXkKK0RFRklORV9BTklNQVRJ
T05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LCBkZWxheSwgRGVsYXkp
CitERUZJTkVfQU5JTUFUSU9OX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxh
eSwgZGVsYXksIERlbGF5KQorREVGSU5FX0FOSU1BVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbkRlbGF5LCBkZWxheSwgRGVsYXkpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uCitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25EaXJlY3Rpb24sIGRpcmVjdGlvbiwgRGlyZWN0aW9uKQorREVGSU5FX0FOSU1B
VElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCBkaXJlY3Rp
b24sIERpcmVjdGlvbikKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EaXJlY3Rpb24sIGRpcmVjdGlvbiwgRGlyZWN0aW9uKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uCitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwgZHVyYXRpb24sIER1cmF0aW9uKQorREVGSU5F
X0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24sIGR1
cmF0aW9uLCBEdXJhdGlvbikKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25EdXJhdGlvbiwgZHVyYXRpb24sIER1cmF0aW9uKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlCitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZSwgZmlsbE1vZGUsIEZpbGxNb2RlKQorREVGSU5F
X0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUsIGZp
bGxNb2RlLCBGaWxsTW9kZSkKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25GaWxsTW9kZSwgZmlsbE1vZGUsIEZpbGxNb2RlKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50CitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwgaXRlcmF0aW9uQ291bnQs
IEl0ZXJhdGlvbkNvdW50KQorREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIGl0ZXJhdGlvbkNvdW50LCBJdGVyYXRpb25Db3Vu
dCkKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVy
YXRpb25Db3VudCwgaXRlcmF0aW9uQ291bnQsIEl0ZXJhdGlvbkNvdW50KQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUKK0RFRklORV9BTklNQVRJT05fSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsIG5hbWUsIE5hbWUpCitERUZJTkVfQU5JTUFUSU9OX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLCBuYW1lLCBOYW1lKQorREVGSU5F
X0FOSU1BVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsIG5hbWUsIE5h
bWUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlCitERUZJTkVfQU5J
TUFUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIHBsYXlT
dGF0ZSwgUGxheVN0YXRlKQorREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uUGxheVN0YXRlLCBwbGF5U3RhdGUsIFBsYXlTdGF0ZSkKK0RFRklORV9BTklN
QVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIHBsYXlTdGF0
ZSwgUGxheVN0YXRlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uCitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uKQorREVGSU5FX0FO
SU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24s
IHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbikKK0RFRklORV9BTklNQVRJT05fVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24s
IFRpbWluZ0Z1bmN0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UsIHNldEFwcGVhcmFu
Y2UsIGFwcGVhcmFuY2UpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRB
cHBlYXJhbmNlLCBzZXRBcHBlYXJhbmNlLCBpbml0aWFsQXBwZWFyYW5jZSkKK0RFRklORV9IQU5E
TEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBzZXRBcHBlYXJhbmNlKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eQorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5LCBzZXRCYWNrZmFjZVZpc2li
aWxpdHksIGJhY2tmYWNlVmlzaWJpbGl0eSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwgc2V0QmFja2ZhY2VWaXNpYmlsaXR5LCBpbml0
aWFsQmFja2ZhY2VWaXNpYmlsaXR5KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QmFj
a2ZhY2VWaXNpYmlsaXR5KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7
CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0QmFja2ZhY2VWaXNpYmlsaXR5KChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZVZpc2libGUpID8gQmFja2ZhY2VWaXNpYmlsaXR5VmlzaWJsZSA6IEJhY2tmYWNlVmlzaWJp
bGl0eUhpZGRlbik7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRD
bGlwCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91
bmRDbGlwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDb21wb3NpdGUKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwgYmFja2dyb3VuZCwgQmFja2dyb3Vu
ZCwgY29tcG9zaXRlLCBDb21wb3NpdGUpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tncm91bmQsIEJhY2tn
cm91bmQsIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwgYmFja2dyb3VuZCwgQmFj
a2dyb3VuZCwgY29tcG9zaXRlLCBDb21wb3NpdGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0QmFj
a2dyb3VuZE9yaWdpbgorREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZ3JvdW5kT3JpZ2luLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4pCisKKy8vIENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZ
KENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFNp
emUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXIKK0RFRklORV9VTlJFQUNIQUJM
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXIpCitERUZJTkVfVU5SRUFDSEFC
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQorREVGSU5FX1VOUkVBQ0hB
QkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcgorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJBZnRlclN0eWxlCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckFmdGVyV2lkdGgKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZSkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNv
bG9yCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZUNvbG9yKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmVDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZVN0eWxlCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZVN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmVTdHlsZSkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZVdpZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJCZWZvcmVXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckVuZAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmQpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVu
ZCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCkK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcgorREVGSU5FX1VOUkVBQ0hBQkxF
X0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcikKK0RFRklORV9VTlJFQUNI
QUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IpCitERUZJTkVfVU5S
RUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcikKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJFbmRXaWR0aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJFbmRXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJGaXQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdCwg
c2V0Qm9yZGVyRml0LCBib3JkZXJGaXQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJGaXQsIHNldEJvcmRlckZpdCwgaW5pdGlhbEJvcmRlckZpdCkKK0RFRklO
RV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdCkKK3sKKyAgICBpZiAodmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQm9yZGVyKQorICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJvcmRlckZpdChCb3JkZXJGaXRCb3JkZXIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm9yZGVyRml0
KEJvcmRlckZpdExpbmVzKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
SG9yaXpvbnRhbFNwYWNpbmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBzZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZywgaG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywgc2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcs
IGluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBmbG9h
dCB6b29tRmFjdG9yID0gaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKKyAgICAg
ICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoaW5z
dGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21G
YWN0b3IpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNw
YWNpbmcoc3BhY2luZyk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlcklt
YWdlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSwg
c2V0Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIHNldEJvcmRlckltYWdlLCBpbml0aWFsTmluZVBpZWNl
SW1hZ2UpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSkKK3sKKyAg
ICBOaW5lUGllY2VJbWFnZSBpbWFnZTsKKyAgICBpbnN0YW5jZS0+bWFwTmluZVBpZWNlSW1hZ2Uo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSwgdmFsdWUsIGltYWdlKTsKKyAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0Qm9yZGVySW1hZ2UoaW1hZ2UpOworfQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclJhZGl1cworREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlclN0YXJ0CitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlclN0YXJ0KQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlclN0YXJ0KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
Q29sb3IKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
U3RhcnRDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0Q29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRT
dHlsZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJT
dGFydFN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJTdGFydFN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdp
ZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0V2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclN0YXJ0V2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJTdGFydFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVy
dGljYWxTcGFjaW5nLCBzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcsIHZlcnRpY2FsQm9yZGVyU3Bh
Y2luZykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRp
Y2FsU3BhY2luZywgc2V0VmVydGljYWxCb3JkZXJTcGFjaW5nLCBpbml0aWFsVmVydGljYWxCb3Jk
ZXJTcGFjaW5nKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxT
cGFjaW5nKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBmbG9hdCB6b29tRmFjdG9yID0gaW5zdGFuY2Ut
Pm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGlu
c3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcpOworICAgIH0KK30K
KworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5V2Via2l0Qm94QWxpZ24sIHNldEJveEFsaWduLCBib3hBbGlnbikKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduLCBzZXRCb3hBbGlnbiwgaW5p
dGlhbEJveEFsaWduKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24pCit7
CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgIEVCb3hBbGlnbm1lbnQgYm94QWxpZ25tZW50ID0gKnByaW1pdGl2
ZVZhbHVlOworICAgICAgICBpZiAoYm94QWxpZ25tZW50ICE9IEJKVVNUSUZZKQorICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveEFsaWduKGJveEFsaWdubWVudCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uCitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb24sIHNldEJv
eERpcmVjdGlvbiwgYm94RGlyZWN0aW9uKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0Qm94RGlyZWN0aW9uLCBzZXRCb3hEaXJlY3Rpb24sIGluaXRpYWxCb3hEaXJlY3Rp
b24pCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBz
ZXRCb3hEaXJlY3Rpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleAorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCwgc2V0Qm94RmxleCwgYm94Rmxl
eCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgsIHNldEJv
eEZsZXgsIGluaXRpYWxCb3hGbGV4KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm94
RmxleCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVU
eXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Qm94RmxleChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgp
KTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXAsIHNldEJveEZsZXhH
cm91cCwgYm94RmxleEdyb3VwKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0Qm94RmxleEdyb3VwLCBzZXRCb3hGbGV4R3JvdXAsIGluaXRpYWxCb3hGbGV4R3JvdXApCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXApCit7CisgICAgaWYgKHZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJv
eEZsZXhHcm91cCgodW5zaWduZWQgaW50KShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KSkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcworREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMsIHNldEJveExpbmVzLCBib3hM
aW5lcykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzLCBz
ZXRCb3hMaW5lcywgaW5pdGlhbEJveExpbmVzKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdEJveExpbmVzLCBzZXRCb3hMaW5lcykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRC
b3hPcmRpbmFsR3JvdXAKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJv
eE9yZGluYWxHcm91cCwgc2V0Qm94T3JkaW5hbEdyb3VwLCBib3hPcmRpbmFsR3JvdXApCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXAsIHNldEJv
eE9yZGluYWxHcm91cCwgaW5pdGlhbEJveE9yZGluYWxHcm91cCkKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94T3JkaW5hbEdyb3Vw
KCh1bnNpZ25lZCBpbnQpKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7CisgICAg
fQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudAorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50LCBzZXRCb3hPcmllbnQsIGJveE9yaWVudCkK
K0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudCwgc2V0Qm94
T3JpZW50LCBpbml0aWFsQm94T3JpZW50KQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdEJveE9yaWVudCwgc2V0Qm94T3JpZW50KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJv
eFBhY2sKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2ssIHNl
dEJveFBhY2ssIGJveFBhY2spCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRCb3hQYWNrLCBzZXRCb3hQYWNrLCBpbml0aWFsQm94UGFjaykKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdEJveFBhY2spCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIEVCb3hBbGlnbm1lbnQg
Ym94UGFjayA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAgICAgaWYgKGJveFBhY2sgIT0gQlNUUkVU
Q0ggJiYgYm94UGFjayAhPSBCQkFTRUxJTkUpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0Qm94UGFjayhib3hQYWNrKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0
Qm94UmVmbGVjdAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94UmVm
bGVjdCwgc2V0Qm94UmVmbGVjdCwgYm94UmVmbGVjdCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QsIHNldEJveFJlZmxlY3QsIGluaXRpYWxCb3hSZWZs
ZWN0KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCkKK3sKKyAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0Qm94UmVmbGVjdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveFJlZmxlY3QoKSk7CisgICAg
fSBlbHNlIGlmICh2YWx1ZS0+aXNSZWZsZWN0VmFsdWUoKSkgeworICAgICAgICBDU1NSZWZsZWN0
VmFsdWUqIHJlZmxlY3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZhbHVl
KTsKKyAgICAgICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gcmVmbGVjdGlvbiA9IFN0eWxlUmVm
bGVjdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgIHJlZmxlY3Rpb24tPnNldERpcmVjdGlvbihyZWZs
ZWN0VmFsdWUtPmRpcmVjdGlvbigpKTsKKyAgICAgICAgaWYgKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0
KCkpIHsKKyAgICAgICAgICAgIGludCB0eXBlID0gcmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+cHJp
bWl0aXZlVHlwZSgpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE9mZnNldChM
ZW5ndGgocmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE9mZnNl
dChMZW5ndGgocmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0
aChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwg
aW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSksIEZpeGVkKSk7CisgICAgICAgIH0K
KyAgICAgICAgTmluZVBpZWNlSW1hZ2UgbWFzazsKKyAgICAgICAgaW5zdGFuY2UtPm1hcE5pbmVQ
aWVjZUltYWdlKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgcmVmbGVjdFZhbHVlLT5tYXNr
KCksIG1hc2spOworICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKG1hc2spOworICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94UmVmbGVjdChyZWZsZWN0aW9uLnJlbGVhc2UoKSk7Cisg
ICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eUJveFNoYWRvdworREVGSU5FX0lOSEVSSVQoQ1NTUHJv
cGVydHlCb3hTaGFkb3cpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFNoYWRvdyhp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Ym94U2hhZG93KCkgPyBuZXcgU2hhZG93RGF0YSgqaW5z
dGFuY2UtPm1fcGFyZW50U3R5bGUtPmJveFNoYWRvdygpKSA6IDApOworfQorREVGSU5FX0lOSVRJ
QUwoQ1NTUHJvcGVydHlCb3hTaGFkb3cpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJv
eFNoYWRvdygwKTsKK30KK0RFRklORV9TSEFET1dfVkFMVUUoQ1NTUHJvcGVydHlCb3hTaGFkb3cs
IHNldEJveFNoYWRvdykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3cKK0RFRklORV9F
UVVJVkFMRU5UX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIENTU1Byb3BlcnR5
Qm94U2hhZG93KQorREVGSU5FX0VRVUlWQUxFTlRfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJv
eFNoYWRvdywgQ1NTUHJvcGVydHlCb3hTaGFkb3cpCitERUZJTkVfU0hBRE9XX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0Qm94U2hhZG93LCBzZXRCb3hTaGFkb3cpCisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0Q29sb3JDb3JyZWN0aW9uCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRDb2xvckNvcnJlY3Rpb24sIHNldENvbG9yU3BhY2UsIGNvbG9yU3BhY2UpCitERUZJTkVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbikKK3sKKyAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKTsKK30KK0RFRklORV9I
QU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb24sIHNldENvbG9yU3Bh
Y2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcgorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlciwgc2V0Q29sdW1uQnJl
YWtBZnRlciwgY29sdW1uQnJlYWtBZnRlcikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIHNldENvbHVtbkJyZWFrQWZ0ZXIsIGluaXRpYWxQ
YWdlQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJl
YWtBZnRlciwgc2V0Q29sdW1uQnJlYWtBZnRlcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5CcmVha0JlZm9yZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtCZWZvcmUsIHNldENvbHVtbkJyZWFrQmVmb3JlLCBjb2x1bW5CcmVha0JlZm9yZSkK
K0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3Jl
LCBzZXRDb2x1bW5CcmVha0JlZm9yZSwgaW5pdGlhbFBhZ2VCcmVhaykKK0RFRklORV9IQU5ETEVf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgc2V0Q29sdW1uQnJlYWtC
ZWZvcmUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlLCBzZXRDb2x1
bW5CcmVha0luc2lkZSwgY29sdW1uQnJlYWtJbnNpZGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSwgc2V0Q29sdW1uQnJlYWtJbnNpZGUs
IGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5C
cmVha0luc2lkZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgRVBhZ2VCcmVhayBwYiA9ICpwcmltaXRp
dmVWYWx1ZTsKKyAgICAgICAgaWYgKHBiICE9IFBCQUxXQVlTKQorICAgICAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldENvbHVtbkJyZWFrSW5zaWRlKHBiKTsKKyAgICB9Cit9CisKKy8vIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uQ291bnQpCit7CisgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5oYXNB
dXRvQ29sdW1uQ291bnQoKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9D
b2x1bW5Db3VudCgpOworICAgIGVsc2UKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENv
bHVtbkNvdW50KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jb2x1bW5Db3VudCgpKTsKK30KK0RF
RklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQpCit7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5Db3VudCgpOworfQorREVGSU5FX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbkNvdW50KCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5Db3VudChzdGF0aWNfY2FzdDx1
bnNpZ25lZCBzaG9ydD4ocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpKTsKKyAgICB9
Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2FwCitERUZJTkVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkdhcCkKK3sKKyAgICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPmhhc05vcm1hbENvbHVtbkdhcCgpKQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
SGFzTm9ybWFsQ29sdW1uR2FwKCk7CisgICAgZWxzZQorICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0Q29sdW1uR2FwKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jb2x1bW5HYXAoKSk7Cit9
CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcCkKK3sKKyAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCk7Cit9CitERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXApCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNOb3JtYWxDb2x1bW5HYXAoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbkdhcChwcmltaXRpdmVWYWx1
ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+
bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSk7
CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUKK0RFRklORV9FWFBB
TkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUsIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHls
ZSwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgpCitERUZJTkVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0
Q29sdW1uUnVsZSgpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcgorREVGSU5FX0hB
TkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgc2V0
Q29sdW1uUnVsZUNvbG9yLCBjb2x1bW5SdWxlQ29sb3IsIGNvbG9yKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLCBzZXRDb2x1bW5S
dWxlQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZUNvbG9yLCBzZXRDb2x1bW5SdWxlQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZVN0eWxlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5SdWxlU3R5bGUsIHNldENvbHVtblJ1bGVTdHlsZSwgY29sdW1uUnVsZVN0eWxlKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLCBzZXRD
b2x1bW5SdWxlU3R5bGUsIGluaXRpYWxCb3JkZXJTdHlsZSkKK0RFRklORV9IQU5ETEVfVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsIHNldENvbHVtblJ1bGVTdHlsZSkKKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgc2V0Q29sdW1uUnVsZVdpZHRoLCBj
b2x1bW5SdWxlV2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5SdWxlV2lkdGgsIHNldENvbHVtblJ1bGVXaWR0aCwgaW5pdGlhbEJvcmRlcldpZHRoKQor
REVGSU5FX1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBzZXRD
b2x1bW5SdWxlV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uU3BhbgorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uU3Bhbiwgc2V0Q29sdW1uU3Bh
biwgY29sdW1uU3BhbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtblNwYW4sIHNldENvbHVtblNwYW4sIGluaXRpYWxDb2x1bW5TcGFuKQorREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uU3BhbikKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldENvbHVtblNwYW4ocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVBbGwpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0
aAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCkKK3sKKyAgICBp
ZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmhhc0F1dG9Db2x1bW5XaWR0aCgpKQorICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7CisgICAgZWxzZQor
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgoaW5zdGFuY2UtPm1fcGFy
ZW50U3R5bGUtPmNvbHVtbldpZHRoKCkpOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5XaWR0aCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0Nv
bHVtbldpZHRoKCk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0
aCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRv
Q29sdW1uV2lkdGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldENvbHVtbldpZHRoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQoaW5z
dGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3Rh
bmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1ucworREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5z
KQoreworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+aGFzQXV0b0NvbHVtbldpZHRo
KCkpCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsK
KyAgICBlbHNlCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5XaWR0aChpbnN0
YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uV2lkdGgoKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldENvbHVtbkNvdW50KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jb2x1bW5Db3VudCgp
KTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucykKK3sKKyAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7CisgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldENvbHVtbkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQ291bnQo
KSk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMpCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0Rm9udFNpemVEZWx0YSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0Rm9udFNpemVEZWx0YSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCwgc2V0SGlnaGxpZ2h0
LCBoaWdobGlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRIaWdo
bGlnaHQsIHNldEhpZ2hsaWdodCwgaW5pdGlhbEhpZ2hsaWdodCkKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRIaWdobGlnaHQobnVsbEF0b20pOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGlnaGxpZ2h0KHByaW1pdGl2ZVZhbHVlLT5nZXRT
dHJpbmdWYWx1ZSgpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRl
Q2hhcmFjdGVyCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5h
dGVDaGFyYWN0ZXIsIHNldEh5cGhlbmF0aW9uU3RyaW5nLCBoeXBoZW5hdGlvblN0cmluZykKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3Rlciwg
c2V0SHlwaGVuYXRpb25TdHJpbmcsIGluaXRpYWxIeXBoZW5hdGlvblN0cmluZykKK0RFRklORV9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcikKK3sKKyAgICBpZiAodmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIeXBoZW5hdGlvblN0cmluZyhudWxsQXRv
bSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIeXBo
ZW5hdGlvblN0cmluZyhwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7CisgICAgfQor
fQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZQorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9jYWxlLCBzZXRIeXBoZW5hdGlvbkxv
Y2FsZSwgaHlwaGVuYXRpb25Mb2NhbGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRIeXBoZW5hdGVMb2NhbGUsIHNldEh5cGhlbmF0aW9uTG9jYWxlLCBpbml0aWFsSHlw
aGVuYXRpb25Mb2NhbGUpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVM
b2NhbGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SHlw
aGVuYXRpb25Mb2NhbGUobnVsbEF0b20pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25Mb2NhbGUocHJpbWl0aXZlVmFsdWUtPmdldFN0
cmluZ1ZhbHVlKCkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zCitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zLCBzZXRIeXBoZW5z
LCBoeXBoZW5zKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0SHlwaGVu
cywgc2V0SHlwaGVucywgaW5pdGlhbEh5cGhlbnMpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0SHlwaGVucywgc2V0SHlwaGVucykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRM
aW5lQnJlYWsKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVh
aywgc2V0S0hUTUxMaW5lQnJlYWssIGtodG1sTGluZUJyZWFrKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBzZXRLSFRNTExpbmVCcmVhaywgaW5pdGlh
bEtIVE1MTGluZUJyZWFrKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdExp
bmVCcmVhaywgc2V0S0hUTUxMaW5lQnJlYWspCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TGluZUNs
YW1wCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXAsIHNl
dExpbmVDbGFtcCwgbGluZUNsYW1wKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0TGluZUNsYW1wLCBzZXRMaW5lQ2xhbXAsIGluaXRpYWxMaW5lQ2xhbXApCitERUZJTkVf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXApCit7CisgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlu
dCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5
cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIExpbmVDbGFtcExpbmVD
b3VudCkpOworICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRMaW5lQ2xhbXAo
TGluZUNsYW1wVmFsdWUocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSksIExpbmVDbGFtcFBlcmNlbnRhZ2UpKTsKKyAgICB9Cit9CisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxF
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdExvZ2ljYWxIZWlnaHQKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TG9naWNhbEhlaWdodCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0TG9naWNhbEhlaWdodCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0
ZXJDb2xsYXBzZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QWZ0ZXJDb2xsYXBzZSwgc2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgbWFyZ2luQWZ0ZXJDb2xsYXBz
ZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29s
bGFwc2UsIHNldE1hcmdpbkFmdGVyQ29sbGFwc2UsIGluaXRpYWxNYXJnaW5BZnRlckNvbGxhcHNl
KQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFw
c2UsIHNldE1hcmdpbkFmdGVyQ29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlQ29sbGFwc2UKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkJlZm9yZUNvbGxhcHNlLCBzZXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgbWFyZ2luQmVmb3Jl
Q29sbGFwc2UpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
ZWZvcmVDb2xsYXBzZSwgc2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIGluaXRpYWxNYXJnaW5CZWZv
cmVDb2xsYXBzZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
ZWZvcmVDb2xsYXBzZSwgc2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQWZ0ZXJDb2xsYXBzZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBz
ZQorREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BD
b2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSkKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZQorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5Db2xsYXBzZSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2lu
QmVmb3JlQ29sbGFwc2UoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPm1hcmdpbkJlZm9yZUNvbGxh
cHNlKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJnaW5BZnRlckNvbGxhcHNlKGlu
c3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJnaW5BZnRlckNvbGxhcHNlKCkpOworfQorREVGSU5F
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSkKK3sKKyAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UoTUNPTExBUFNFKTsKKyAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShNQ09MTEFQU0UpOworfQorREVG
SU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSkKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcgorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcikKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXIpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
ZWZvcmUKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5CZWZvcmUpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5CZWZvcmUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kCitERUZJTkVfVU5SRUFD
SEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCkKK0RFRklORV9VTlJFQUNI
QUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kKQorREVGSU5FX1VOUkVBQ0hB
QkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kKQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpblN0YXJ0CitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpblN0YXJ0KQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5TdGFydCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpblN0YXJ0KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUKK0RFRklORV9O
VUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlKQorREVGSU5FX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJx
dWVlRGlyZWN0aW9uKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJxdWVlRGlyZWN0aW9uKCkp
OworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KGluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT5tYXJxdWVlSW5jcmVtZW50KCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRNYXJxdWVlU3BlZWQoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPm1hcnF1ZWVTcGVlZCgp
KTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudChpbnN0YW5jZS0+
bV9wYXJlbnRTdHlsZS0+bWFycXVlZUxvb3BDb3VudCgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0TWFycXVlZUJlaGF2aW9yKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJxdWVlQmVo
YXZpb3IoKSk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUp
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbgorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgc2V0TWFycXVlZURpcmVj
dGlvbiwgbWFycXVlZURpcmVjdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIHNldE1hcnF1ZWVEaXJlY3Rpb24sIGluaXRpYWxNYXJx
dWVlRGlyZWN0aW9uKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVEaXJlY3Rpb24sIHNldE1hcnF1ZWVEaXJlY3Rpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZUluY3JlbWVudAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZUluY3JlbWVudCwgc2V0TWFycXVlZUluY3JlbWVudCwgbWFycXVlZUluY3JlbWVudCkK
K0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQs
IHNldE1hcnF1ZWVJbmNyZW1lbnQsIGluaXRpYWxNYXJxdWVlSW5jcmVtZW50KQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCkKK3sKKyAgICBpZiAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgIHN3aXRjaCAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3Ro
KDEsIEZpeGVkKSk7IC8vIDFweC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENT
U1ZhbHVlTm9ybWFsOgorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVJ
bmNyZW1lbnQoTGVuZ3RoKDYsIEZpeGVkKSk7IC8vIDZweC4gVGhlIFdpbklFIGRlZmF1bHQuCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlOgorICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoKDM2LCBGaXhl
ZCkpOyAvLyAzNnB4LgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAgICAgICAgTGVuZ3RoIGxl
bmd0aCA9IGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgaW5zdGFuY2UtPm1fc3R5bGUu
Z2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIDEsICZvayk7CisgICAgICAgICAg
ICBpZiAob2spCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVJ
bmNyZW1lbnQobGVuZ3RoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlUmVwZXRpdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVJlcGV0aXRpb24sIHNldE1hcnF1ZWVMb29wQ291bnQsIG1hcnF1ZWVMb29w
Q291bnQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVw
ZXRpdGlvbiwgc2V0TWFycXVlZUxvb3BDb3VudCwgaW5pdGlhbE1hcnF1ZWVMb29wQ291bnQpCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbikKK3sKKyAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5m
aW5pdGUpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3Vu
dCgtMSk7IC8vIC0xIG1lYW5zIHJlcGVhdCBmb3JldmVyLgorICAgICAgICBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQo
cHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOworICAgIH0KK30KKworCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVNwZWVkLCBzZXRNYXJxdWVlU3BlZWQsIG1hcnF1ZWVTcGVlZCkKK0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCwgc2V0TWFycXVl
ZVNwZWVkLCBpbml0aWFsTWFycXVlZVNwZWVkKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVNwZWVkKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7
CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbG93OgorICAgICAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoNTAwKTsgLy8gNTAwIG1zZWMuCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgor
ICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoODUpOyAv
LyA4NW1zZWMuIFRoZSBXaW5JRSBkZWZhdWx0LgorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUZhc3Q6CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldE1hcnF1ZWVTcGVlZCgxMCk7IC8vIDEwbXNlYy4gU3VwZXIgZmFzdC4KKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoMTAwMCAqIHBy
aW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01TKQorICAg
ICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZChwcmltaXRpdmVWYWx1
ZS0+Z2V0SW50VmFsdWUoKSk7CisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIC8vIEZvciBzY3Jv
bGxhbW91bnQgc3VwcG9ydC4KKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJx
dWVlU3BlZWQocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOworICAgIH0KK30KKy8vIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIHNldE1hcnF1ZWVCZWhhdmlvciwgbWFycXVlZUJlaGF2
aW9yKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxl
LCBzZXRNYXJxdWVlQmVoYXZpb3IsIGluaXRpYWxNYXJxdWVlQmVoYXZpb3IpCitERUZJTkVfSEFO
RExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBzZXRNYXJxdWVlQmVoYXZp
b3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFzaworREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhck1hc2tMYXllcnMo
KTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFzaykKK3sKKyAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+aW5oZXJpdE1hc2tMYXllcnMoKmluc3RhbmNlLT5tX3BhcmVudFN0eWxl
LT5tYXNrTGF5ZXJzKCkpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRN
YXNrKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50CitERUZJTkVfSEFORExF
X0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBtYXNr
LCBNYXNrLCBhdHRhY2htZW50LCBBdHRhY2htZW50KQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgbWFzaywgTWFzaywgYXR0
YWNobWVudCwgQXR0YWNobWVudCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBtYXNrLCBNYXNrLCBhdHRhY2htZW50LCBBdHRh
Y2htZW50KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZQorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBzZXRNYXNrQm94SW1hZ2Us
IG1hc2tCb3hJbWFnZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZSwgc2V0TWFza0JveEltYWdlLCBpbml0aWFsTmluZVBpZWNlSW1hZ2UpCitERUZJ
TkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UpCit7CisgICAgTmluZVBpZWNl
SW1hZ2UgaW1hZ2U7CisgICAgaW5zdGFuY2UtPm1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5
V2Via2l0TWFza0JveEltYWdlLCB2YWx1ZSwgaW1hZ2UpOworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRNYXNrQm94SW1hZ2UoaW1hZ2UpOworfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
bGlwCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tDbGlwLCBtYXNrLCBNYXNrLCBjbGlwLCBDbGlwKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgbWFzaywgTWFzaywgY2xpcCwgQ2xp
cCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
bGlwLCBtYXNrLCBNYXNrLCBjbGlwLCBDbGlwKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
b21wb3NpdGUKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0TWFza0NvbXBvc2l0ZSwgbWFzaywgTWFzaywgY29tcG9zaXRlLCBDb21wb3NpdGUpCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3Np
dGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgbWFzaywgTWFzaywg
Y29tcG9zaXRlLCBDb21wb3NpdGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlCitE
RUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFn
ZSwgbWFzaywgTWFzaywgaW1hZ2UsIEltYWdlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIG1hc2ssIE1hc2ssIGltYWdlLCBJbWFn
ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJ
bWFnZSwgbWFzaywgTWFzaywgaW1hZ2UsIEltYWdlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tPcmlnaW4KK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0TWFza09yaWdpbiwgbWFzaywgTWFzaywgb3JpZ2luLCBPcmlnaW4pCitERUZJTkVfSEFORExF
X0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIG1hc2ssIE1h
c2ssIG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0TWFza09yaWdpbiwgbWFzaywgTWFzaywgb3JpZ2luLCBPcmlnaW4pCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRf
VFdPKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSkKK0RFRklORV9FWFBBTkRJ
TkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24sIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKQorREVG
SU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pCisKKy8vIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBtYXNrLCBNYXNrLCB4UG9zaXRpb24s
IFhQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWCwgbWFzaywgTWFzaywgeFBvc2l0aW9uLCBYUG9zaXRpb24pCitE
RUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b25YLCBtYXNrLCBNYXNrLCB4UG9zaXRpb24sIFhQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25ZCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIG1hc2ssIE1hc2ssIHlQb3NpdGlvbiwgWVBvc2l0
aW9uKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25ZLCBtYXNrLCBNYXNrLCB5UG9zaXRpb24sIFlQb3NpdGlvbikKK0RFRklORV9I
QU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIG1h
c2ssIE1hc2ssIHlQb3NpdGlvbiwgWVBvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tSZXBlYXRZKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFkpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgKK0RFRklORV9IQU5E
TEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIG1hc2ss
IE1hc2ssIHJlcGVhdFgsIFJlcGVhdFgpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBtYXNrLCBNYXNrLCByZXBlYXRYLCBSZXBl
YXRYKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFgsIG1hc2ssIE1hc2ssIHJlcGVhdFgsIFJlcGVhdFgpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0TWFza1JlcGVhdFksIG1hc2ssIE1hc2ssIHJlcGVhdFksIFJlcGVhdFkpCitE
RUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRZLCBtYXNrLCBNYXNrLCByZXBlYXRZLCBSZXBlYXRZKQorREVGSU5FX0hBTkRMRV9GSUxMX0xB
WUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIG1hc2ssIE1hc2ssIHJlcGVh
dFksIFJlcGVhdFkpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUKK0RFRklORV9IQU5E
TEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUsIG1hc2ssIE1h
c2ssIHNpemUsIFNpemUpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNrLCBNYXNrLCBzaXplLCBTaXplKQorREVGSU5FX0hBTkRM
RV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUsIG1hc2ssIE1hc2ss
IHNpemUsIFNpemUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2Nr
cXVvdGVDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWF0Y2hO
ZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgc2V0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVD
b2xvciwgbWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcikKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIHNl
dE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIGluaXRpYWxNYXRjaE5lYXJlc3RNYWls
QmxvY2txdW90ZUNvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1h
dGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIHNldE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1
b3RlQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoCitERUZJTkVf
VU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCkKK0RF
RklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRo
KQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdp
ZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQKK0RFRklORV9VTlJF
QUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodCkKK0RFRklO
RV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodCkK
K0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWln
aHQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoCitERUZJTkVfVU5SRUFD
SEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKK0RFRklORV9V
TlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoKQorREVG
SU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQKK0RFRklORV9VTlJFQUNIQUJM
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodCkKK0RFRklORV9VTlJF
QUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodCkKK0RFRklO
RV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBzZXROQlNQTW9kZSwgbmJzcE1vZGUpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgc2V0TkJTUE1vZGUsIGluaXRp
YWxOQlNQTW9kZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9k
ZSwgc2V0TkJTUE1vZGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyCitERUZJ
TkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKK0RF
RklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyKQor
REVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUKK0RFRklORV9VTlJFQUNIQUJMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZSkKK0RFRklORV9VTlJFQUNIQUJM
RV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZSkKK0RFRklORV9VTlJFQUNI
QUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUpCisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0UGFkZGluZ0VuZAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRQYWRkaW5nRW5kKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRQYWRkaW5nRW5kKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0UGFkZGluZ0VuZCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQKK0RF
RklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQor
REVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQp
CitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQp
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlLCBzZXRQZXJzcGVjdGl2ZSwgcGVyc3BlY3Rp
dmUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSwg
c2V0UGVyc3BlY3RpdmUsIGluaXRpYWxQZXJzcGVjdGl2ZSkKK0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworCisgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRQZXJzcGVjdGl2ZSgwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFsdWU7CisgICAgICAgIGludCB0
eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKENTU1By
aW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQorICAgICAgICAgICAgcGVyc3Bl
Y3RpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9v
dEVsZW1lbnRTdHlsZSwgIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpKTsKKyAg
ICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgewor
ICAgICAgICAgICAgLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRyZWF0IHZhbHVlbGVz
cyBudW1iZXJzIGFzIHB4LgorICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5jb21wdXRlTGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fc3R5
bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsICBpbnN0YW5jZS0+bV9zdHls
ZS0+ZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKHBlcnNwZWN0aXZlVmFsdWUgPj0gMC4wZikKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRQZXJzcGVjdGl2ZShwZXJzcGVjdGl2ZVZhbHVlKTsKKyAgICB9
Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4KK0RFRklORV9FWFBB
TkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwgQ1NT
UHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlT3JpZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2lu
WCwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblkpCitERUZJTkVfTlVMTF9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlT3JpZ2luWAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YLCBzZXRQZXJzcGVjdGl2ZU9yaWdpblgsIHBlcnNwZWN0
aXZlT3JpZ2luWCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNw
ZWN0aXZlT3JpZ2luWCwgc2V0UGVyc3BlY3RpdmVPcmlnaW5YLCBpbml0aWFsUGVyc3BlY3RpdmVP
cmlnaW5YKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWCwgc2V0UGVyc3BlY3RpdmVPcmlnaW5YLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblksIHNl
dFBlcnNwZWN0aXZlT3JpZ2luWSwgcGVyc3BlY3RpdmVPcmlnaW5ZKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZLCBzZXRQZXJzcGVjdGl2
ZU9yaWdpblksIGluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblkpCitERUZJTkVfTEVOR1RIX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZLCBzZXRQZXJzcGVjdGl2ZU9yaWdp
blksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRSdGxPcmRlcmluZworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
UnRsT3JkZXJpbmcsIHNldFZpc3VhbGx5T3JkZXJlZCwgdmlzdWFsbHlPcmRlcmVkKQorREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcsIHNldFZpc3VhbGx5
T3JkZXJlZCwgaW5pdGlhbFZpc3VhbGx5T3JkZXJlZCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdFJ0bE9yZGVyaW5nKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VmlzdWFs
bHlPcmRlcmVkKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVmlzdWFsKTsK
KyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lLCBzZXRUZXh0Q29tYmluZSwg
dGV4dENvbWJpbmUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
Q29tYmluZSwgc2V0VGV4dENvbWJpbmUsIGluaXRpYWxUZXh0Q29tYmluZSkKK0RFRklORV9IQU5E
TEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSwgc2V0VGV4dENvbWJpbmUpCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QKK0RFRklORV9OVUxM
X0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKK0RFRklO
RV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkK
K0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZl
Y3QpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzCitERUZJTkVfTlVMTF9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzKQorREVGSU5FX05VTExfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcykKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c0NvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzQ29sb3IsIHNldFRleHRFbXBoYXNpc0NvbG9yLCB0ZXh0RW1waGFzaXNDb2xvciwg
Y29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvciwgc2V0VGV4dEVtcGhhc2lzQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVF
X0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIHNldFRleHRFbXBoYXNp
c0NvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwg
c2V0VGV4dEVtcGhhc2lzUG9zaXRpb24sIHRleHRFbXBoYXNpc1Bvc2l0aW9uKQorREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24sIHNldFRl
eHRFbXBoYXNpc1Bvc2l0aW9uLCBpbml0aWFsVGV4dEVtcGhhc2lzUG9zaXRpb24pCitERUZJTkVf
SEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24sIHNldFRl
eHRFbXBoYXNpc1Bvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0
eWxlCisvLyBOT1RFOiB0aGUgb3JpZ2luYWwgY29kZSB3YXMgYnJva2VuIHNvIEkgaGF2ZSBjb252
ZXJ0ZWQgdGhpcyB0byBtYXRjaCB0aGUgaW50ZW50IG9mIHRoZSBvcmlnaW5hbCBjb2RlCitERUZJ
TkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKQoreworICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKGluc3RhbmNlLT5tX3BhcmVudFN0
eWxlLT50ZXh0RW1waGFzaXNGaWxsKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0
RW1waGFzaXNNYXJrKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkp
OworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKGluc3Rh
bmNlLT5tX3BhcmVudFN0eWxlLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkpOworfQorREVGSU5F
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSkKK3sKKyAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbChSZW5kZXJTdHlsZTo6aW5pdGlhbFRl
eHRFbXBoYXNpc0ZpbGwoKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNp
c01hcmsoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNNYXJrKCkpOworICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklO
RykgeworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0ZpbGwo
VGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQ3VzdG9tKTsKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKHByaW1pdGl2ZVZh
bHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZU9wZW4pIHsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRUZXh0RW1waGFzaXNGaWxsKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQXV0byk7Cisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhu
dWxsQXRvbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKCpwcmltaXRpdmVWYWx1
ZSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9t
TWFyayhudWxsQXRvbSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVl
TGlzdCgpKSB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1Zh
bHVlTGlzdCo+KHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpID09IDIpOwor
ICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkgIT0gMikKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgeworICAgICAgICAgICAgQVNT
RVJUKGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSktPmlzUHJpbWl0aXZlVmFsdWUoKSk7
CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOworICAgICAg
ICAgICAgaWYgKHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqdmFsdWUpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKCp2YWx1
ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNp
c0N1c3RvbU1hcmsobnVsbEF0b20pOworICAgIH0KK30KKworCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRGaWxsQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RmlsbENvbG9yLCBzZXRUZXh0RmlsbENvbG9yLCB0ZXh0RmlsbENvbG9yLCBjb2xv
cikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxs
Q29sb3IsIHNldFRleHRGaWxsQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1By
b3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwgc2V0VGV4dEZpbGxDb2xvcikKKworLy8gQ1NTUHJv
cGVydHlXZWJraXRUZXh0U2VjdXJpdHkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTZWN1cml0eSwgc2V0VGV4dFNlY3VyaXR5LCB0ZXh0U2VjdXJpdHkpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksIHNldFRleHRT
ZWN1cml0eSwgaW5pdGlhbFRleHRTZWN1cml0eSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRUZXh0U2VjdXJpdHksIHNldFRleHRTZWN1cml0eSkKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U3Ryb2tlCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZSkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklU
X0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgc2V0VGV4dFN0cm9rZUNv
bG9yLCB0ZXh0U3Ryb2tlQ29sb3IsIGNvbG9yKQorREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9S
KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBzZXRUZXh0U3Ryb2tlQ29sb3IpCitE
RUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9y
LCBzZXRUZXh0U3Ryb2tlQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdp
ZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lk
dGgsIHNldFRleHRTdHJva2VXaWR0aCwgdGV4dFN0cm9rZVdpZHRoKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBzZXRUZXh0U3Ryb2tlV2lk
dGgsIGluaXRpYWxUZXh0U3Ryb2tlV2lkdGgpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlV2lkdGgpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGZsb2F0IHdpZHRoID0gMDsK
KyAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBj
YXNlIENTU1ZhbHVlVGhpbjoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZVRoaWNrOiB7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gMS4wIC8g
NDg7CisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVNZWRpdW0pCisgICAgICAgICAgICAgICAgcmVzdWx0ICo9IDM7CisgICAgICAgICAgICBlbHNl
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVRoaWNrKQorICAgICAg
ICAgICAgICAgIHJlc3VsdCAqPSA1OworICAgICAgICAgICAgd2lkdGggPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHJlc3VsdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMpLT5jb21wdXRl
TGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVt
ZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHdpZHRo
ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChpbnN0YW5jZS0+bV9zdHlsZS5n
ZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVm
ZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dFN0cm9rZVdpZHRoKHdpZHRoKTsKKyAgICB9Cit9CisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIHNldFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBzZXRUcmFuc2Zvcm0s
IGluaXRpYWxUcmFuc2Zvcm0pCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm0pCit7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgIGNyZWF0ZVRy
YW5zZm9ybU9wZXJhdGlvbnModmFsdWUsIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5j
ZS0+bV9yb290RWxlbWVudFN0eWxlLCBvcGVyYXRpb25zKTsKKyAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0VHJhbnNmb3JtKG9wZXJhdGlvbnMpOworfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpbgorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtT3JpZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgs
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5aKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RIUkVFKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtT3JpZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgs
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5aKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1PcmlnaW4pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWAorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwgc2V0VHJh
bnNmb3JtT3JpZ2luWCwgdHJhbnNmb3JtT3JpZ2luWCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIHNldFRyYW5zZm9ybU9yaWdpblgsIGlu
aXRpYWxUcmFuc2Zvcm1PcmlnaW5YKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblgsIHNldFRyYW5zZm9ybU9yaWdpblgsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1Pcmln
aW5ZCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1Pcmln
aW5ZLCBzZXRUcmFuc2Zvcm1PcmlnaW5ZLCB0cmFuc2Zvcm1PcmlnaW5ZKQorREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgc2V0VHJhbnNmb3Jt
T3JpZ2luWSwgaW5pdGlhbFRyYW5zZm9ybU9yaWdpblkpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgc2V0VHJhbnNmb3JtT3JpZ2luWSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpbloKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpblosIHNldFRyYW5zZm9ybU9yaWdpblosIHRyYW5zZm9ybU9yaWdpblopCitE
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aLCBz
ZXRUcmFuc2Zvcm1PcmlnaW5aLCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWikKK0RFRklORV9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblopCit7CisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAg
IGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aChwcmltaXRpdmVWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpKSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUcmFu
c2Zvcm1PcmlnaW5aKHN0YXRpY19jYXN0PGZsb2F0PihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9v
dEVsZW1lbnRTdHlsZSkpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtU3R5bGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bVN0eWxlLCBzZXRUcmFuc2Zvcm1TdHlsZTNELCB0cmFuc2Zvcm1TdHlsZTNEKQorREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUsIHNldFRyYW5zZm9y
bVN0eWxlM0QsIGluaXRpYWxUcmFuc2Zvcm1TdHlsZTNEKQorREVGSU5FX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtU3R5bGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRUcmFuc2Zvcm1TdHlsZTNEKChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZVByZXNlcnZlM2QpID8gVHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0QgOiBUcmFu
c2Zvcm1TdHlsZTNERmxhdCk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
aXRpb24KK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbikKK3sKKyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+aW5oZXJpdFRyYW5zaXRpb25zKGluc3RhbmNlLT5tX3BhcmVu
dFN0eWxlLT50cmFuc2l0aW9ucygpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvbikKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xlYXJUcmFuc2l0aW9u
cygpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheQorREVGSU5FX1RSQU5TSVRJT05f
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSwgZGVsYXksIERlbGF5KQor
REVGSU5FX1RSQU5TSVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxh
eSwgZGVsYXksIERlbGF5KQorREVGSU5FX1RSQU5TSVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2l0aW9uRGVsYXksIGRlbGF5LCBEZWxheSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24KK0RFRklORV9UUkFOU0lUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKK0RFRklORV9UUkFO
U0lUSU9OX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0
aW9uLCBEdXJhdGlvbikKK0RFRklORV9UUkFOU0lUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgRHVyYXRpb24pCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5CitERUZJTkVfVFJBTlNJVElPTl9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBwcm9wZXJ0eSwgUHJvcGVydHkpCitERUZJ
TkVfVFJBTlNJVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5
LCBwcm9wZXJ0eSwgUHJvcGVydHkpCitERUZJTkVfVFJBTlNJVElPTl9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgcHJvcGVydHksIFByb3BlcnR5KQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbgorREVGSU5FX1RSQU5TSVRJT05f
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgdGltaW5n
RnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uKQorREVGSU5FX1RSQU5TSVRJT05fSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24sIFRp
bWluZ0Z1bmN0aW9uKQorREVGSU5FX1RSQU5TSVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbikK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZworREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIHNldFVzZXJEcmFnLCB1c2VyRHJhZykKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBzZXRVc2VyRHJhZywgaW5p
dGlhbFVzZXJEcmFnKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJE
cmFnLCBzZXRVc2VyRHJhZykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5CitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBzZXRVc2VyTW9k
aWZ5LCB1c2VyTW9kaWZ5KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
VXNlck1vZGlmeSwgc2V0VXNlck1vZGlmeSwgaW5pdGlhbFVzZXJNb2RpZnkpCitERUZJTkVfSEFO
RExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgc2V0VXNlck1vZGlmeSkKKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBzZXRVc2VyU2VsZWN0LCB1c2VyU2VsZWN0KQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgc2V0VXNlclNl
bGVjdCwgaW5pdGlhbFVzZXJTZWxlY3QpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0VXNlclNlbGVjdCwgc2V0VXNlclNlbGVjdCkKKworLy8gQ1NTUHJvcGVydHlDbGlwUGF0
aAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlDbGlwKQoreworICAgIExlbmd0aCB0b3A7Cisg
ICAgTGVuZ3RoIHJpZ2h0OworICAgIExlbmd0aCBib3R0b207CisgICAgTGVuZ3RoIGxlZnQ7Cisg
ICAgYm9vbCBoYXNDbGlwID0gdHJ1ZTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUt
Pmhhc0NsaXAoKSkgeworICAgICAgICB0b3AgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y2xp
cFRvcCgpOworICAgICAgICByaWdodCA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jbGlwUmln
aHQoKTsKKyAgICAgICAgYm90dG9tID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmNsaXBCb3R0
b20oKTsKKyAgICAgICAgbGVmdCA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jbGlwTGVmdCgp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGhhc0NsaXAgPSBmYWxzZTsKKyAgICAgICAgdG9wID0g
cmlnaHQgPSBib3R0b20gPSBsZWZ0ID0gTGVuZ3RoKCk7CisgICAgfQorICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRDbGlwKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CisgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldEhhc0NsaXAoaGFzQ2xpcCk7Cit9CisKK0RFRklORV9JTklUSUFMKENTU1By
b3BlcnR5Q2xpcCkKK3sKKyAgICBMZW5ndGggbGVuZ3RoID0gTGVuZ3RoKCk7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldENsaXAobGVuZ3RoLCBsZW5ndGgsIGxlbmd0aCwgbGVuZ3RoKTsKKyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQ2xpcChmYWxzZSk7Cit9CisKK0RFRklORV9WQUxV
RShDU1NQcm9wZXJ0eUNsaXApCit7CisgICAgTGVuZ3RoIHRvcDsKKyAgICBMZW5ndGggcmlnaHQ7
CisgICAgTGVuZ3RoIGJvdHRvbTsKKyAgICBMZW5ndGggbGVmdDsKKyAgICBib29sIGhhc0NsaXAg
PSB0cnVlOworICAgIGZsb2F0IHpvb21GYWN0b3IgPSBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0
aXZlWm9vbSgpOworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JFQ1QpIHsKKyAgICAgICAgICAgIFJl
Y3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UmVjdFZhbHVlKCk7CisgICAgICAgICAgICBp
ZiAoIXJlY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdG9wID0gQ1NT
U3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKHJlY3QtPnRvcCgpLCBpbnN0YW5jZS0+bV9z
dHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Cisg
ICAgICAgICAgICByaWdodCA9IENTU1N0eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0xlbmd0aChyZWN0
LT5yaWdodCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1l
bnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBib3R0b20gPSBDU1NTdHlsZVNlbGVj
dG9yOjpjb252ZXJ0VG9MZW5ndGgocmVjdC0+Ym90dG9tKCksIGluc3RhbmNlLT5tX3N0eWxlLmdl
dCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAg
ICAgIGxlZnQgPSBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9MZW5ndGgocmVjdC0+bGVmdCgp
LCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwg
em9vbUZhY3Rvcik7CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgIT0gQ1NTVmFsdWVBdXRvKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENsaXAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0
KTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0NsaXAoaGFzQ2xpcCk7CisgICAg
fQorfQorCisvLyBDU1NQcm9wZXJ0eUNsaXBSdWxlCisvLyBDU1NQcm9wZXJ0eU1hc2sKKy8vIENT
U1Byb3BlcnR5RW5hYmxlQmFja2dyb3VuZAorLy8gQ1NTUHJvcGVydHlGaWx0ZXIKKy8vIENTU1By
b3BlcnR5Rmxvb2RDb2xvcgorLy8gQ1NTUHJvcGVydHlGbG9vZE9wYWNpdHkKKy8vIENTU1Byb3Bl
cnR5TGlnaHRpbmdDb2xvcgorLy8gQ1NTUHJvcGVydHlTdG9wQ29sb3IKKy8vIENTU1Byb3BlcnR5
U3RvcE9wYWNpdHkKKy8vIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uCisvLyBDU1NQcm9w
ZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMKKy8vIENTU1Byb3BlcnR5Q29sb3JQcm9maWxl
CisvLyBDU1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nCisvLyBDU1NQcm9wZXJ0eUZpbGwKKy8vIENT
U1Byb3BlcnR5RmlsbE9wYWNpdHkKKy8vIENTU1Byb3BlcnR5RmlsbFJ1bGUKKy8vIENTU1Byb3Bl
cnR5SW1hZ2VSZW5kZXJpbmcKKy8vIENTU1Byb3BlcnR5TWFya2VyCisvLyBDU1NQcm9wZXJ0eU1h
cmtlckVuZAorLy8gQ1NTUHJvcGVydHlNYXJrZXJNaWQKKy8vIENTU1Byb3BlcnR5TWFya2VyU3Rh
cnQKKy8vIENTU1Byb3BlcnR5U2hhcGVSZW5kZXJpbmcKKy8vIENTU1Byb3BlcnR5U3Ryb2tlCisv
LyBDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheQorLy8gQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zm
c2V0CisvLyBDU1NQcm9wZXJ0eVN0cm9rZUxpbmVjYXAKKy8vIENTU1Byb3BlcnR5U3Ryb2tlTGlu
ZWpvaW4KKy8vIENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1pdAorLy8gQ1NTUHJvcGVydHlTdHJv
a2VPcGFjaXR5CisvLyBDU1NQcm9wZXJ0eVN0cm9rZVdpZHRoCisvLyBDU1NQcm9wZXJ0eUFsaWdu
bWVudEJhc2VsaW5lCisvLyBDU1NQcm9wZXJ0eUJhc2VsaW5lU2hpZnQKKy8vIENTU1Byb3BlcnR5
RG9taW5hbnRCYXNlbGluZQorLy8gQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bAorLy8gQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uVmVydGljYWwKKy8vIENTU1Byb3BlcnR5
S2VybmluZworLy8gQ1NTUHJvcGVydHlUZXh0QW5jaG9yCisvLyBDU1NQcm9wZXJ0eVZlY3RvckVm
ZmVjdAorLy8gQ1NTUHJvcGVydHlXcml0aW5nTW9kZQorLy8gQ1NTUHJvcGVydHlXZWJraXRTdmdT
aGFkb3cKKworLy8gQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24KKyNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXREYXNoYm9hcmRSZWdpb24sIHNldERhc2hib2FyZFJlZ2lvbnMsIGRhc2hib2FyZFJlZ2lvbnMp
CitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24s
IHNldERhc2hib2FyZFJlZ2lvbnMsIGluaXRpYWxEYXNoYm9hcmRSZWdpb25zKQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uKQoreworICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RGFzaGJvYXJkUmVnaW9ucyhSZW5kZXJTdHls
ZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IHByaW1pdGl2ZVZhbHVlLT5n
ZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOworICAgICAgICBpZiAoIXJlZ2lvbikKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBEYXNoYm9hcmRSZWdpb24qIGZpcnN0ID0gcmVnaW9uOwor
ICAgICAgICB3aGlsZSAocmVnaW9uKSB7CisgICAgICAgICAgICBMZW5ndGggdG9wID0gY29udmVy
dFRvTGVuZ3RoKHJlZ2lvbi0+dG9wKCksIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5j
ZS0+bV9yb290RWxlbWVudFN0eWxlKTsKKyAgICAgICAgICAgIExlbmd0aCByaWdodCA9IGNvbnZl
cnRUb0xlbmd0aChyZWdpb24tPnJpZ2h0KCksIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0
YW5jZS0+bV9yb290RWxlbWVudFN0eWxlKTsKKyAgICAgICAgICAgIExlbmd0aCBib3R0b20gPSBj
b252ZXJ0VG9MZW5ndGgocmVnaW9uLT5ib3R0b20oKSwgaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCks
IGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVuZ3RoIGxlZnQg
PSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5sZWZ0KCksIGluc3RhbmNlLT5tX3N0eWxlLmdldCgp
LCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlKTsKKyAgICAgICAgICAgIGlmIChyZWdpb24t
Pm1faXNDaXJjbGUpCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldERhc2hi
b2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWws
IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVl
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKKyAgICAgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJv
YXJkUmVnaW9uOjpSZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9t
LCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworICAgICAgICAgICAgcmVn
aW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgaW5zdGFuY2Ut
Pm1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0SGFzRGFzaGJvYXJkUmVnaW9ucyh0cnVlKTsKKyAg
ICB9Cit9CisjZWxzZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdERhc2hi
b2FyZFJlZ2lvbikKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9h
cmRSZWdpb24pCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJl
Z2lvbikKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdDU1MpCisvLyBDU1NQcm9wZXJ0eVdhcE1hcnF1
ZWVMb29wCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVM
b29wLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uKQorCisvLyBDU1NQcm9wZXJ0
eVdhcE1hcnF1ZWVTcGVlZAorREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlX
YXBNYXJxdWVlU3BlZWQsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkKQorCisvLyBDU1NQ
cm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZQorREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJv
cGVydHlXYXBNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlKQorCisv
LyBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdhcE1hcnF1ZWVEaXIsIHNldE1hcnF1ZWVEaXJlY3Rpb24sIG1hcnF1ZWVEaXJlY3Rpb24p
CitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyLCBzZXRNYXJx
dWVlRGlyZWN0aW9uLCBpbml0aWFsTWFycXVlZURpcmVjdGlvbikKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eVdhcE1hcnF1ZWVEaXIpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUx0cjoKKyAgICAgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNUklHSFQpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVJ0bDoKKyAgICAg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNTEVGVCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKCpwcmltaXRpdmVW
YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQKK0RFRklORV9OVUxMX0lO
SEVSSVQoQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NT
UHJvcGVydHlXYXBJbnB1dEZvcm1hdCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdhcElucHV0
Rm9ybWF0KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAoaW5zdGFuY2UtPm1fZWxlbWVudC0+aGFz
VGFnTmFtZShXZWJDb3JlOjppbnB1dFRhZykpIHsKKyAgICAgICAgICAgIFN0cmluZyBtYXNrID0g
cHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oaW5zdGFuY2UtPm1fZWxlbWVudCktPnNldFdhcElucHV0Rm9y
bWF0KG1hc2spOworICAgICAgICB9CisgICAgfQorfQorLy8gQ1NTUHJvcGVydHlXYXBJbnB1dFJl
cXVpcmVkCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZCkK
K0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVpcmVkKQorREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZCkKK3sKKyAgICBpZiAodmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAg
aWYgKGluc3RhbmNlLT5tX2VsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpIHsKKyAgICAg
ICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50Kj4oaW5zdGFuY2UtPm1fZWxlbWVudCk7CisgICAgICAgICAgICBi
b29sIHJlcXVpcmVkID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkgPT0gInRydWUi
OworICAgICAgICAgICAgZWxlbWVudC0+c2V0UmVxdWlyZWQocmVxdWlyZWQpOworICAgICAgICB9
CisgICAgfQorfQorI2Vsc2UKKy8vIENTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3AKK0RFRklORV9O
VUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcCkKK0RFRklORV9OVUxMX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcCkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3Bl
cnR5V2FwTWFycXVlZUxvb3ApCisKKy8vIENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkCitERUZJ
TkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkKQorREVGSU5FX05VTExf
SU5JVElBTChDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZCkKK0RFRklORV9OVUxMX1ZBTFVFKENT
U1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkKQorCisvLyBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHls
ZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZSkKK0RFRklO
RV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3R5bGUpCitERUZJTkVfTlVMTF9W
QUxVRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXYXBNYXJx
dWVlRGlyCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2FwTWFycXVlZURpcikKK0RF
RklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyKQorREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyKQorCisvLyBDU1NQcm9wZXJ0eVdhcElucHV0
Rm9ybWF0CitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQpCitE
RUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQpCitERUZJTkVfTlVM
TF9WQUxVRShDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0KQorCisvLyBDU1NQcm9wZXJ0eVdhcElu
cHV0UmVxdWlyZWQKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVp
cmVkKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQpCitE
RUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQpCisjZW5kaWYKKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24g
NzU4OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNSwyMzMgKzEyNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotI2RlZmluZSBIQU5ETEVfSU5IRVJJVChwcm9wLCBQ
cm9wKSBcCi1pZiAoaXNJbmhlcml0KSB7IFwKLSAgICBtX3N0eWxlLT5zZXQjI1Byb3AobV9wYXJl
bnRTdHlsZS0+cHJvcCgpKTsgXAotICAgIHJldHVybjsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLUhBTkRMRV9JTkhFUklUKHByb3AsIFBy
b3ApIFwKLWlmIChpc0luaXRpYWwpIHsgXAotICAgIG1fc3R5bGUtPnNldCMjUHJvcChSZW5kZXJT
dHlsZTo6aW5pdGlhbCMjUHJvcCgpKTsgXAotICAgIHJldHVybjsgXAotfQotCi0jZGVmaW5lIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUocHJvcCwgUHJvcCwgVmFsdWUpIFwK
LUhBTkRMRV9JTkhFUklUKHByb3AsIFByb3ApIFwKLWlmIChpc0luaXRpYWwpIHsgXAotICAgIG1f
c3R5bGUtPnNldCMjUHJvcChSZW5kZXJTdHlsZTo6aW5pdGlhbCMjVmFsdWUoKSk7XAotICAgIHJl
dHVybjtcCi19Ci0KLSNkZWZpbmUgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1J
VElWRShwcm9wLCBQcm9wKSBcCi1IQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9w
KSBcCi1pZiAocHJpbWl0aXZlVmFsdWUpIFwKLSAgICBtX3N0eWxlLT5zZXQjI1Byb3AoKnByaW1p
dGl2ZVZhbHVlKTsKLQotI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJ
TUlUSVZFX1dJVEhfVkFMVUUocHJvcCwgUHJvcCwgVmFsdWUpIFwKLUhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX1dJVEhfVkFMVUUocHJvcCwgUHJvcCwgVmFsdWUpIFwKLWlmIChwcmltaXRpdmVW
YWx1ZSkgXAotICAgIG1fc3R5bGUtPnNldCMjUHJvcCgqcHJpbWl0aXZlVmFsdWUpOwotCi0jZGVm
aW5lIEhBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVRfQU5EX0lOSVRJQUwobGF5ZXJUeXBlLCBMYXll
clR5cGUsIHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQpIHsgXAotICAgIEZpbGxMYXllciog
Y3VyckNoaWxkID0gbV9zdHlsZS0+YWNjZXNzIyNMYXllclR5cGUjI0xheWVycygpOyBcCi0gICAg
RmlsbExheWVyKiBwcmV2Q2hpbGQgPSAwOyBcCi0gICAgY29uc3QgRmlsbExheWVyKiBjdXJyUGFy
ZW50ID0gbV9wYXJlbnRTdHlsZS0+bGF5ZXJUeXBlIyNMYXllcnMoKTsgXAotICAgIHdoaWxlIChj
dXJyUGFyZW50ICYmIGN1cnJQYXJlbnQtPmlzIyNQcm9wIyNTZXQoKSkgeyBcCi0gICAgICAgIGlm
ICghY3VyckNoaWxkKSB7IFwKLSAgICAgICAgICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBsYXll
ci4qLyBcCi0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKExheWVyVHlwZSMj
RmlsbExheWVyKTsgXAotICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1cnJDaGlsZCk7
IFwKLSAgICAgICAgfSBcCi0gICAgICAgIGN1cnJDaGlsZC0+c2V0IyNQcm9wKGN1cnJQYXJlbnQt
PnByb3AoKSk7IFwKLSAgICAgICAgcHJldkNoaWxkID0gY3VyckNoaWxkOyBcCi0gICAgICAgIGN1
cnJDaGlsZCA9IHByZXZDaGlsZC0+bmV4dCgpOyBcCi0gICAgICAgIGN1cnJQYXJlbnQgPSBjdXJy
UGFyZW50LT5uZXh0KCk7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgd2hpbGUgKGN1cnJDaGlsZCkg
eyBcCi0gICAgICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgbGF5ZXJzIHRvIG5vdCBoYXZlIHRo
ZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICAgICAgY3VyckNoaWxkLT5jbGVhciMjUHJvcCgpOyBc
Ci0gICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOyBcCi0gICAgfSBcCi19IGVs
c2UgaWYgKGlzSW5pdGlhbCkgeyBcCi0gICAgRmlsbExheWVyKiBjdXJyQ2hpbGQgPSBtX3N0eWxl
LT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7IFwKLSAgICBjdXJyQ2hpbGQtPnNldCMjUHJv
cChGaWxsTGF5ZXI6OmluaXRpYWxGaWxsIyNQcm9wKExheWVyVHlwZSMjRmlsbExheWVyKSk7IFwK
LSAgICBmb3IgKGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOyBjdXJyQ2hpbGQ7IGN1cnJD
aGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpKSBcCi0gICAgICAgIGN1cnJDaGlsZC0+Y2xlYXIjI1By
b3AoKTsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKGxheWVyVHlwZSwg
TGF5ZXJUeXBlLCBwcm9wLCBQcm9wLCB2YWx1ZSkgeyBcCi1IQU5ETEVfRklMTF9MQVlFUl9JTkhF
UklUX0FORF9JTklUSUFMKGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCi1pZiAo
aXNJbmhlcml0IHx8IGlzSW5pdGlhbCkgXAotICAgIHJldHVybjsgXAotRmlsbExheWVyKiBjdXJy
Q2hpbGQgPSBtX3N0eWxlLT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7IFwKLUZpbGxMYXll
ciogcHJldkNoaWxkID0gMDsgXAotaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7IFwKLSAgICAv
KiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBs
YXllcnMgYXMgbmVlZGVkLiAqLyBcCi0gICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0
aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKLSAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHZhbHVlTGlzdC0+bGVuZ3RoKCk7IGkrKykgeyBcCi0gICAgICAgIGlmICghY3Vy
ckNoaWxkKSB7IFwKLSAgICAgICAgICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBsYXllciB0byBo
b2xkIHRoaXMgdmFsdWUgKi8gXAotICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXll
cihMYXllclR5cGUjI0ZpbGxMYXllcik7IFwKLSAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4
dChjdXJyQ2hpbGQpOyBcCi0gICAgICAgIH0gXAotICAgICAgICBtYXBGaWxsIyNQcm9wKHByb3Bl
cnR5LCBjdXJyQ2hpbGQsIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwK
LSAgICAgICAgcHJldkNoaWxkID0gY3VyckNoaWxkOyBcCi0gICAgICAgIGN1cnJDaGlsZCA9IGN1
cnJDaGlsZC0+bmV4dCgpOyBcCi0gICAgfSBcCi19IGVsc2UgeyBcCi0gICAgbWFwRmlsbCMjUHJv
cChwcm9wZXJ0eSwgY3VyckNoaWxkLCB2YWx1ZSk7IFwKLSAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hp
bGQtPm5leHQoKTsgXAotfSBcCi13aGlsZSAoY3VyckNoaWxkKSB7IFwKLSAgICAvKiBSZXNldCBh
bGwgcmVtYWluaW5nIGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCi0g
ICAgY3VyckNoaWxkLT5jbGVhciMjUHJvcCgpOyBcCi0gICAgY3VyckNoaWxkID0gY3VyckNoaWxk
LT5uZXh0KCk7IFwKLX0gfQotCi0jZGVmaW5lIEhBTkRMRV9CQUNLR1JPVU5EX0lOSEVSSVRfQU5E
X0lOSVRJQUwocHJvcCwgUHJvcCkgXAotSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVF9BTkRfSU5J
VElBTChiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBwcm9wLCBQcm9wKQotCi0jZGVmaW5lIEhBTkRM
RV9CQUNLR1JPVU5EX1ZBTFVFKHByb3AsIFByb3AsIHZhbHVlKSBcCi1IQU5ETEVfRklMTF9MQVlF
Ul9WQUxVRShiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBwcm9wLCBQcm9wLCB2YWx1ZSkKLQotI2Rl
ZmluZSBIQU5ETEVfTUFTS19JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLUhBTkRM
RV9GSUxMX0xBWUVSX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFzaywgTWFzaywgcHJvcCwgUHJvcCkK
LQotI2RlZmluZSBIQU5ETEVfTUFTS19WQUxVRShwcm9wLCBQcm9wLCB2YWx1ZSkgXAotSEFORExF
X0ZJTExfTEFZRVJfVkFMVUUobWFzaywgTWFzaywgcHJvcCwgUHJvcCwgdmFsdWUpCi0KLSNkZWZp
bmUgSEFORExFX0FOSU1BVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlm
IChpc0luaGVyaXQpIHsgXAotICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nl
c3NBbmltYXRpb25zKCk7IFwKLSAgICBjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0g
bV9wYXJlbnRTdHlsZS0+YW5pbWF0aW9ucygpOyBcCi0gICAgc2l6ZV90IGkgPSAwLCBwYXJlbnRT
aXplID0gcGFyZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6IDA7IFwKLSAgICBmb3IgKCA7
IGkgPCBwYXJlbnRTaXplICYmIHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+aXMjI1Byb3AjI1Nl
dCgpOyArK2kpIHsgXAotICAgICAgICBpZiAobGlzdC0+c2l6ZSgpIDw9IGkpIFwKLSAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgICAgICBsaXN0LT5h
bmltYXRpb24oaSktPnNldCMjUHJvcChwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPnByb3AoKSk7
IFwKLSAgICB9IFwKLSAgICBcCi0gICAgLyogUmVzZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25z
IHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBmb3IgKCA7IGkgPCBsaXN0
LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9w
KCk7IFwKLX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0
ID0gbV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCi0gICAgaWYgKGxpc3QtPmlzRW1wdHko
KSkgXAotICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICBs
aXN0LT5hbmltYXRpb24oMCktPnNldCMjUHJvcChBbmltYXRpb246OmluaXRpYWxBbmltYXRpb24j
I1Byb3AoKSk7IFwKLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytp
KSBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+Y2xlYXIjI1Byb3AoKTsgXAotfQotCi0j
ZGVmaW5lIEhBTkRMRV9BTklNQVRJT05fVkFMVUUocHJvcCwgUHJvcCwgdmFsdWUpIHsgXAotSEFO
RExFX0FOSU1BVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0lu
aGVyaXQgfHwgaXNJbml0aWFsKSBcCi0gICAgcmV0dXJuOyBcCi1BbmltYXRpb25MaXN0KiBsaXN0
ID0gbV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCi1zaXplX3QgY2hpbGRJbmRleCA9IDA7
IFwKLWlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCi0gICAgLyogV2FsayBlYWNoIHZhbHVl
IGFuZCBwdXQgaXQgaW50byBhbiBhbmltYXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFz
IG5lZWRlZC4gKi8gXAotICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8
Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOyBcCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsgXAotICAgICAgICBpZiAoY2hpbGRJbmRleCA8
PSBsaXN0LT5zaXplKCkpIFwKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNy
ZWF0ZSgpKTsgXAotICAgICAgICBtYXBBbmltYXRpb24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNo
aWxkSW5kZXgpLCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOyBcCi0gICAg
ICAgICsrY2hpbGRJbmRleDsgXAotICAgIH0gXAotfSBlbHNlIHsgXAotICAgIGlmIChsaXN0LT5p
c0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBc
Ci0gICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgdmFs
dWUpOyBcCi0gICAgY2hpbGRJbmRleCA9IDE7IFwKLX0gXAotZm9yICggOyBjaGlsZEluZGV4IDwg
bGlzdC0+c2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsgXAotICAgIC8qIFJlc2V0IGFsbCByZW1haW5p
bmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCi0gICAgbGlz
dC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLT5jbGVhciMjUHJvcCgpOyBcCi19IFwKLX0KLQotI2Rl
ZmluZSBIQU5ETEVfVFJBTlNJVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwK
LWlmIChpc0luaGVyaXQpIHsgXAotICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5h
Y2Nlc3NUcmFuc2l0aW9ucygpOyBcCi0gICAgY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50TGlz
dCA9IG1fcGFyZW50U3R5bGUtPnRyYW5zaXRpb25zKCk7IFwKLSAgICBzaXplX3QgaSA9IDAsIHBh
cmVudFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDsgXAotICAgIGZv
ciAoIDsgaSA8IHBhcmVudFNpemUgJiYgcGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5pcyMjUHJv
cCMjU2V0KCk7ICsraSkgeyBcCi0gICAgICAgIGlmIChsaXN0LT5zaXplKCkgPD0gaSkgXAotICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgICAgIGxp
c3QtPmFuaW1hdGlvbihpKS0+c2V0IyNQcm9wKHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+cHJv
cCgpKTsgXAotICAgIH0gXAotICAgIFwKLSAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIHRyYW5z
aXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBmb3IgKCA7IGkg
PCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFy
IyNQcm9wKCk7IFwKLX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7IFwKLSAgICBBbmltYXRpb25MaXN0
KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMoKTsgXAotICAgIGlmIChsaXN0LT5p
c0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBc
Ci0gICAgbGlzdC0+YW5pbWF0aW9uKDApLT5zZXQjI1Byb3AoQW5pbWF0aW9uOjppbml0aWFsQW5p
bWF0aW9uIyNQcm9wKCkpOyBcCi0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBsaXN0LT5zaXpl
KCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oMCktPmNsZWFyIyNQcm9wKCk7IFwK
LX0KLQotI2RlZmluZSBIQU5ETEVfVFJBTlNJVElPTl9WQUxVRShwcm9wLCBQcm9wLCB2YWx1ZSkg
eyBcCi1IQU5ETEVfVFJBTlNJVElPTl9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwK
LWlmIChpc0luaGVyaXQgfHwgaXNJbml0aWFsKSBcCi0gICAgcmV0dXJuOyBcCi1BbmltYXRpb25M
aXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMoKTsgXAotc2l6ZV90IGNoaWxk
SW5kZXggPSAwOyBcCi1pZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsgXAotICAgIC8qIFdhbGsg
ZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSB0cmFuc2l0aW9uLCBjcmVhdGluZyBuZXcgYW5p
bWF0aW9ucyBhcyBuZWVkZWQuICovIFwKLSAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0
YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsgXAotICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7IFwKLSAgICAgICAgaWYgKGNo
aWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKSBcCi0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5p
bWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICAgICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFu
aW1hdGlvbihjaGlsZEluZGV4KSwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkp
KTsgXAotICAgICAgICArK2NoaWxkSW5kZXg7IFwKLSAgICB9IFwKLX0gZWxzZSB7IFwKLSAgICBp
ZiAobGlzdC0+aXNFbXB0eSgpKSBcCi0gICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNy
ZWF0ZSgpKTsgXAotICAgIG1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJ
bmRleCksIHZhbHVlKTsgXAotICAgIGNoaWxkSW5kZXggPSAxOyBcCi19IFwKLWZvciAoIDsgY2hp
bGRJbmRleCA8IGxpc3QtPnNpemUoKTsgKytjaGlsZEluZGV4KSB7IFwKLSAgICAvKiBSZXNldCBh
bGwgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICov
IFwKLSAgICBsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCktPmNsZWFyIyNQcm9wKCk7IFwKLX0g
XAotfQotCi0jZGVmaW5lIEhBTkRMRV9JTkhFUklUX0NPTkQocHJvcElELCBwcm9wLCBQcm9wKSBc
Ci1pZiAoaWQgPT0gcHJvcElEKSB7IFwKLSAgICBtX3N0eWxlLT5zZXQjI1Byb3AobV9wYXJlbnRT
dHlsZS0+cHJvcCgpKTsgXAotICAgIHJldHVybjsgXAotfQotICAgIAotI2RlZmluZSBIQU5ETEVf
SU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKHByb3BJRCwgcHJvcCwgcHJvcEFsdCwgUHJvcCkgXAot
aWYgKGlkID09IHByb3BJRCkgeyBcCi0gICAgaWYgKG1fcGFyZW50U3R5bGUtPnByb3AoKS5pc1Zh
bGlkKCkpIFwKLSAgICAgICAgbV9zdHlsZS0+c2V0IyNQcm9wKG1fcGFyZW50U3R5bGUtPnByb3Ao
KSk7IFwKLSAgICBlbHNlIFwKLSAgICAgICAgbV9zdHlsZS0+c2V0IyNQcm9wKG1fcGFyZW50U3R5
bGUtPnByb3BBbHQoKSk7IFwKLSAgICByZXR1cm47IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5J
VElBTF9DT05EKHByb3BJRCwgUHJvcCkgXAotaWYgKGlkID09IHByb3BJRCkgeyBcCi0gICAgbV9z
dHlsZS0+c2V0IyNQcm9wKFJlbmRlclN0eWxlOjppbml0aWFsIyNQcm9wKCkpOyBcCi0gICAgcmV0
dXJuOyBcCi19Ci0KLSNkZWZpbmUgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKHByb3BJ
RCwgUHJvcCwgVmFsdWUpIFwKLWlmIChpZCA9PSBwcm9wSUQpIHsgXAotICAgIG1fc3R5bGUtPnNl
dCMjUHJvcChSZW5kZXJTdHlsZTo6aW5pdGlhbCMjVmFsdWUoKSk7IFwKLSAgICByZXR1cm47IFwK
LX0KLQogY2xhc3MgQ1NTUnVsZURhdGEgOiBwdWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgog
ICAgIENTU1J1bGVEYXRhKHVuc2lnbmVkIHBvcywgQ1NTU3R5bGVSdWxlKiByLCBDU1NTZWxlY3Rv
ciogc2VsLCBDU1NSdWxlRGF0YSogcHJldiA9IDApCkBAIC0yOTMwLDcgKzI3MDMsNyBAQCB2b2lk
IENTU1J1bGVTZXQ6OmFkZFN0eWxlUnVsZShDU1NTdHlsZVJ1CiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyB0aGlzIGlzIG1vc3RseSBib3Jpbmcgc3R1ZmYgb24gaG93IHRvIGFw
cGx5IGEgY2VydGFpbiBydWxlIHRvIHRoZSByZW5kZXJzdHlsZS4uLgogCi1zdGF0aWMgTGVuZ3Ro
IGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIg
PSAxLCBib29sICpvayA9IDApCitMZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVu
Z3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciwgYm9vbCAqb2spCiB7
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0b2xlcmFudCBvZiBhIG51bGwgc3R5bGUgdmFsdWUu
IFRoZSBvbmx5IHBsYWNlIHN0eWxlIGlzIHVzZWQgaXMgaW4KICAgICAvLyBsZW5ndGggbWVhc3Vy
ZW1lbnRzLCBsaWtlICdlbXMnIGFuZCAncHgnLiBBbmQgaW4gdGhvc2UgY2FzZXMgc3R5bGUgaXMg
b25seSB1c2VkCkBAIC0zMDYxLDcgKzI4MzQsNyBAQCBTdHJpbmcgQ1NTU3R5bGVTZWxlY3Rvcjo6
cGFnZU5hbWUoaW50IC8qCiAgICAgcmV0dXJuICIiOwogfQogCi1zdGF0aWMgdm9pZCBhcHBseUNv
dW50ZXJMaXN0KFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTVmFsdWVMaXN0KiBsaXN0LCBib29sIGlz
UmVzZXQpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxpc3QoUmVuZGVyU3R5
bGUqIHN0eWxlLCBDU1NWYWx1ZUxpc3QqIGxpc3QsIGJvb2wgaXNSZXNldCkKIHsKICAgICBDb3Vu
dGVyRGlyZWN0aXZlTWFwJiBtYXAgPSBzdHlsZS0+YWNjZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsK
ICAgICB0eXBlZGVmIENvdW50ZXJEaXJlY3RpdmVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9yOwpAQCAt
MzE1MCwyMCArMjkyMyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShp
bnQKICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKIAotICAgIGZs
b2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICAvLyBTVkcg
aGFuZGxlcyB6b29taW5nIGluIGEgZGlmZmVyZW50IHdheSBjb21wYXJlZCB0byBDU1MuIFRoZSB3
aG9sZSBkb2N1bWVudCBpcyBzY2FsZWQgaW5zdGVhZAotICAgIC8vIG9mIGVhY2ggaW5kaXZpZHVh
bCBsZW5ndGggdmFsdWUgaW4gdGhlIHJlbmRlciBzdHlsZSAvIHRyZWUuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjb21wdXRlTGVuZ3RoKigpCi0gICAgLy8gbXVsdGlwbGllcyBlYWNoIHJlc29sdmVkIGxl
bmd0aCB3aXRoIHRoZSB6b29tIG11bHRpcGxpZXIgLSBzbyBmb3IgU1ZHIHdlIG5lZWQgdG8gZGlz
YWJsZSB0aGF0LgotICAgIC8vIFRob3VnaCBhbGwgQ1NTIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBs
aWVkIHRvIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50cyAod2lkdGgvaGVpZ2h0L2JvcmRlci9wYWRk
aW5nLi4uKQotICAgIC8vIG5lZWQgdG8gcmVzcGVjdCB0aGUgc2NhbGluZy4gUmVuZGVyQm94ICh0
aGUgcGFyZW50IGNsYXNzIG9mIFJlbmRlclNWR1Jvb3QpIGdyYWJzIHZhbHVlcyBsaWtlCi0gICAg
Ly8gd2lkdGgvaGVpZ2h0L2JvcmRlci9wYWRkaW5nLy4uLiBmcm9tIHRoZSBSZW5kZXJTdHlsZSAt
PiBmb3IgU1ZHIHRoZXNlIHZhbHVlcyB3b3VsZCBuZXZlciBzY2FsZSwKLSAgICAvLyBpZiB3ZSdk
IHBhc3MgYSAxLjAgem9vbSBmYWN0b3IgZXZlcnlod2VyZS4gU28gd2Ugb25seSBwYXNzIGEgem9v
bSBmYWN0b3Igb2YgMS4wIGZvciBzcGVjaWZpYwotICAgIC8vIHByb3BlcnRpZXMgdGhhdCBhcmUg
Tk9UIGFsbG93ZWQgdG8gc2NhbGUgd2l0aGluIGEgem9vbWVkIFNWRyBkb2N1bWVudCAobGV0dGVy
L3dvcmQtc3BhY2luZy9mb250LXNpemUpLgotICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzID0gbV9l
bGVtZW50ICYmIG1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7Ci0KICAgICBMZW5ndGggbDsKLSAg
ICBib29sIGFwcGx5ID0gZmFsc2U7CiAKICAgICB1bnNpZ25lZCBzaG9ydCB2YWx1ZVR5cGUgPSB2
YWx1ZS0+Y3NzVmFsdWVUeXBlKCk7CiAKQEAgLTMxNzYsMjY2MSArMjkzNiw0NjggQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAvLyBMaW1pdCB0aGUg
cHJvcGVydGllcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIG9ubHkgdGhlIG9uZXMgaG9ub3JlZCBi
eSA6dmlzaXRlZC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworI2RlZmluZSBIQU5E
TEVfQ0FTRShQcm9wZXJ0eSkgXAorY2FzZSBQcm9wZXJ0eTogeyBcCisgICAgaWYgKGlzSW5oZXJp
dCkgXAorICAgICAgICBoYW5kbGVJbmhlcml0IyNQcm9wZXJ0eSh0aGlzKTsgXAorCWVsc2UgaWYg
KGlzSW5pdGlhbCkgXAorCQloYW5kbGVJbml0aWFsIyNQcm9wZXJ0eSh0aGlzKTsgXAorCWVsc2Ug
XAorCQloYW5kbGVWYWx1ZSMjUHJvcGVydHkodGhpcywgdmFsdWUpOyBcCisgICAgcmV0dXJuOyBc
Cit9CisKICAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBsaXN0IHRoYXQgbWFwcyB0aGUgQ1NTIHBy
b3BlcnRpZXMgaW50byB0aGVpciBjb3JyZXNwb25kaW5nIGZyb250LWVuZAogICAgIC8vIFJlbmRl
clN0eWxlIHZhbHVlcy4gIFNob3J0aGFuZHMgKGUuZy4gYm9yZGVyLCBiYWNrZ3JvdW5kKSBvY2N1
ciBpbiB0aGlzIGxpc3QgYXMgd2VsbCBhbmQKICAgICAvLyBhcmUgb25seSBoaXQgd2hlbiBtYXBw
aW5nICJpbmhlcml0IiBvciAiaW5pdGlhbCIgaW50byBmcm9udC1lbmQgdmFsdWVzLgogICAgIENT
U1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCk7CiAg
ICAgc3dpdGNoIChwcm9wZXJ0eSkgewogLy8gaWRlbnQgb25seSBwcm9wZXJ0aWVzCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OgotICAgICAgICBIQU5ETEVfQkFDS0dS
T1VORF9WQUxVRShhdHRhY2htZW50LCBBdHRhY2htZW50LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QmFja2dyb3VuZENsaXA6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVF
KGNsaXAsIENsaXAsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGU6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZB
TFVFKGNvbXBvc2l0ZSwgQ29tcG9zaXRlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZ3JvdW5kT3JpZ2luOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShvcmln
aW4sIE9yaWdpbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXpl
OgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShzaXplLCBTaXplLCB2YWx1ZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudDoK
LSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoYXR0YWNobWVudCwgQXR0YWNobWVudCwgdmFsdWUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6Ci0g
ICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKGNsaXAsIENsaXAsIHZhbHVlKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6Ci0gICAgICAgIEhB
TkRMRV9NQVNLX1ZBTFVFKGNvbXBvc2l0ZSwgQ29tcG9zaXRlLCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luOgotICAgICAgICBIQU5E
TEVfTUFTS19WQUxVRShvcmlnaW4sIE9yaWdpbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZB
TFVFKHNpemUsIFNpemUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckNvbGxhcHNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChi
b3JkZXJDb2xsYXBzZSwgQm9yZGVyQ29sbGFwc2UpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb2xsYXBzZToKLSAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZSh0cnVlKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXBhcmF0ZToKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZShmYWxzZSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZF
X1dJVEhfVkFMVUUoYm9yZGVyVG9wU3R5bGUsIEJvcmRlclRvcFN0eWxlLCBCb3JkZXJTdHlsZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFM
VUUoYm9yZGVyUmlnaHRTdHlsZSwgQm9yZGVyUmlnaHRTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShi
b3JkZXJCb3R0b21TdHlsZSwgQm9yZGVyQm90dG9tU3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKGJvcmRl
ckxlZnRTdHlsZSwgQm9yZGVyTGVmdFN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUob3V0bGluZVN0eWxlLCBPdXRsaW5lU3R5bGUsIEJv
cmRlclN0eWxlKQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVN0eWxlKERPVFRFRCwgdHJ1ZSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVN0eWxlKCpwcmltaXRp
dmVWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlDYXB0aW9uU2lkZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRShjYXB0aW9uU2lkZSwgQ2FwdGlvblNpZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENTU1Byb3BlcnR5Q2xlYXI6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUoY2xlYXIsIENsZWFyKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eURpcmVjdGlvbjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxf
QU5EX1BSSU1JVElWRShkaXJlY3Rpb24sIERpcmVjdGlvbikKLSAgICAgICAgaWYgKCFpc0luaGVy
aXQgJiYgIWlzSW5pdGlhbCAmJiBtX2VsZW1lbnQgJiYgbV9lbGVtZW50ID09IG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCi0gICAgICAgICAgICBtX2VsZW1lbnQtPmRv
Y3VtZW50KCktPnNldERpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoZGlzcGxheSwgRGlzcGxheSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50KQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXApCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDb21wb3NpdGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9y
aWdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tDbGlwKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
TWFza0NvbXBvc2l0ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmln
aW4pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJS
aWdodFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlDYXB0aW9uU2lkZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUNsZWFyKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5RGlyZWN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5RGlzcGxheSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlGbG9hdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eUZvbnRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Rm9udFdlaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU92ZXJmbG93KQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5T3ZlcmZsb3dYKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5T3ZlcmZsb3dZKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3Jl
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXIpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlQb3NpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VW5pY29kZUJpZGkpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Vmlz
aWJpbGl0eSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24pCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uWSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tQb3NpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvblgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUmVwZWF0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZykKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZykKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUN1cnNvcikKKy8vIGNvbG9ycyB8fCBpbmhlcml0CisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
Qm9yZGVyTGVmdENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZUNvbG9y
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKQorLy8gdXJpIHx8IGluaGVyaXQKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eUxpc3RTdHlsZUltYWdlKQorLy8gbGVuZ3RoCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlC
b3JkZXJUb3BXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lk
dGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eU91dGxpbmVXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGVXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRT
bW9vdGhpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V29yZFNwYWNpbmcpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXb3JkQnJlYWspCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXb3JkV3JhcCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcikKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVJlc2l6ZSkKKworICAgIC8vIGxlbmd0aCwgcGVyY2VudAorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5TWF4V2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlN
aW5XaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdpZHRoKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5VG9wKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TGVmdCkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVJpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5Qm90dG9tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWFyZ2luVG9wKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlNYXJnaW5Cb3R0b20pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFkZGluZ1RvcCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBh
ZGRpbmdCb3R0b20pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRJbmRlbnQpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlNYXhIZWlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlIZWlnaHQpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlNaW5IZWlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlWZXJ0aWNhbEFsaWduKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Rm9udFNp
emUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlaSW5kZXgpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXaWRvd3MpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPcnBoYW5zKQor
Ly8gbGVuZ3RoLCBwZXJjZW50LCBudW1iZXIKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxp
bmVIZWlnaHQpCisvLyBzdHJpbmcKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRBbGln
bikKKy8vIHJlY3QKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUNsaXApCisvLyBsaXN0cwor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Q29udGVudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlDb3Vu
dGVyUmVzZXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250RmFtaWx5KQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlab29tKQorLy8gc2hvcnRoYW5kIHByb3BlcnRpZXMKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUJhY2tncm91bmQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRN
YXNrKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3Jk
ZXJXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyVG9wKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20p
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5TWFyZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFkZGluZykK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlMaXN0U3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPdXRsaW5lKQorICAg
IC8vIENTUzMgUHJvcGVydGllcworICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QXBw
ZWFyYW5jZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyUmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVy
VG9wTGVmdFJhZGl1cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0
UmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1
cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZU9mZnNldCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlU
ZXh0U2hhZG93KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm94U2hhZG93KQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93KQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU9w
YWNpdHkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbikKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVNyYykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVVu
aWNvZGVSYW5nZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlz
aWJpbGl0eSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbikK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0Qm94UGFjaykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveEZs
ZXgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXApCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXApCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlCb3hTaXppbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5Db3VudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkdhcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4pCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkJyZWFrSW5zaWRlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlKQogI2lmIEVOQUJMRShXQ1NT
KQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVdhcE1hcnF1ZWUpIHsKLSAgICAgICAgICAg
ICAgICAvLyBJbml0aWFsaXplIFdBUCBNYXJxdWVlIHN0eWxlCi0gICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0T3ZlcmZsb3dYKE9NQVJRVUVFKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRPdmVyZmxvd1koT01BUlFVRUUpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFdoaXRl
U3BhY2UoTk9XUkFQKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0
aW9uKE1MRUZUKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoODUp
OyAvLyBOb3JtYWwgc3BlZWQKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9v
cENvdW50KDEpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihN
U0NST0xMKTsKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2FwTWFycXVlZURpcikKKyNlbmRpZgorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZVJlcGV0aXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlU3BlZWQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVt
ZW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbikKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0VXNlck1vZGlmeSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJTZWxlY3QpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3cpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXApCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRIaWdobGlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5z
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9jYWxlKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0KQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U2VjdXJpdHkpCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uKQorI2VuZGlmICAg
ICAgICAKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtT3JpZ2luWCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybU9yaWdpblkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5aKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
U3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRGVsYXkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25EaXJlY3Rpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EdXJhdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkZpbGxNb2RlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
SXRlcmF0aW9uQ291bnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25OYW1lKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0
YXRlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVu
Y3Rpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5KQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdENvbG9yQ29ycmVjdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVNpemUp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlTcGVhaykKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUludmFsaWQpCiAKLSAgICAgICAgICAgICAgICBpZiAobV9wYXJlbnRTdHlsZSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlzcGxheShtX3BhcmVudFN0eWxlLT5kaXNw
bGF5KCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0RGlzcGxheSgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlzcGxheSgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAg
ICB9CisgICAgLy8gRGlyZWN0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVzb2x2ZWQgYnkgcmVzb2x2
ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoKSBiZWZvcmUgdGhlIHN3aXRjaC4KKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcikKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRl
ckNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHls
ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkFmdGVyKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0Vu
ZCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRMb2dpY2FsV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRMb2dpY2FsSGVpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWluTG9n
aWNhbFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhl
aWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQpCisgICAg
Ly8gZW5kIGRpcmVjdGlvbmFsIHByb3BlcnRpZXMKKworICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5Rm9udFN0cmV0Y2gpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlQYWdlKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5UXVvdGVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
VGV4dExpbmVUaHJvdWdoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJv
dWdoQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2Rl
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGUpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVRleHRPdmVybGluZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVRleHRPdmVybGluZUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dE92ZXJs
aW5lTW9kZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5VGV4dFVuZGVybGluZUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dFVu
ZGVybGluZU1vZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5
bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzKQorI2lmIEVOQUJMRShXQ1NTKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXYXBJbnB1dFJlcXVpcmVkKQorI2VuZGlmIAorCisgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1v
ZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0VGV4dENvbWJpbmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNQb3NpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1N0eWxlKQorCisjaWYgRU5BQkxFKFNWRykKKyAgICBkZWZhdWx0OgorICAgICAgICAv
LyBUcnkgdGhlIFNWRyBwcm9wZXJ0aWVzCisgICAgICAgIGFwcGx5U1ZHUHJvcGVydHkoaWQsIHZh
bHVlKTsKICNlbmRpZgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5
Q2VsbHM6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUo
ZW1wdHlDZWxscywgRW1wdHlDZWxscykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlGbG9hdDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1J
VElWRShmbG9hdGluZywgRmxvYXRpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5Rm9udFN0eWxlOgotICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNj
cmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAoaXNJbmhl
cml0KQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhtX3BhcmVudFN0eWxl
LT5mb250RGVzY3JpcHRpb24oKS5pdGFsaWMoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlh
bCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVPYmxpcXVlOgotICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBvYmxpcXVlIGlzIHRoZSBzYW1lIGFzIGl0YWxpYyBmb3IgdGhlIG1vbWVu
dC4uLgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVJdGFsaWM6Ci0gICAgICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWModHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAg
ICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1f
c3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAg
bV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1cm47CiAgICAgfQorfQogCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgotICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9u
IGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBp
ZiAoaXNJbmhlcml0KSAKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMo
bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuc21hbGxDYXBzKCkpOwotICAgICAgICBl
bHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxD
YXBzKGZhbHNlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZh
bHVlKQordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkoQ1NTVmFs
dWUqIHZhbHVlKQoreworICAgIG1fc3R5bGUtPnJlc2V0UGFnZVNpemVUeXBlKCk7CisgICAgaWYg
KCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIENTU1ZhbHVlTGlz
dCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgIExl
bmd0aCB3aWR0aDsKKyAgICBMZW5ndGggaGVpZ2h0OworICAgIFBhZ2VTaXplVHlwZSBwYWdlU2l6
ZVR5cGUgPSBQQUdFX1NJWkVfQVVUTzsKKyAgICBzd2l0Y2ggKHZhbHVlTGlzdC0+bGVuZ3RoKCkp
IHsKKyAgICBjYXNlIDI6IHsKKyAgICAgICAgLy8gPGxlbmd0aD57Mn0gfCA8cGFnZS1zaXplPiA8
b3JpZW50YXRpb24+CisgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsK
KyAgICAgICAgaWYgKCF2YWx1ZUxpc3QtPml0ZW0oMCktPmlzUHJpbWl0aXZlVmFsdWUoKSB8fCAh
dmFsdWVMaXN0LT5pdGVtKDEpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTAgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgwKSk7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTEgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgxKSk7CisgICAgICAgIGludCB0eXBlMCA9IHByaW1p
dGl2ZVZhbHVlMC0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBpbnQgdHlwZTEgPSBwcmltaXRp
dmVWYWx1ZTEtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVl
Ojppc1VuaXRUeXBlTGVuZ3RoKHR5cGUwKSkgeworICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0K
KyAgICAgICAgICAgIGlmICghQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlw
ZTEpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGludCBpZCA9IHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpOwotICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9y
bWFsKQotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoZmFsc2Up
OwotICAgICAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbENhcHMpCi0gICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2Fwcyh0cnVlKTsKLSAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHdpZHRoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlMC0+Y29tcHV0
ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7
CisgICAgICAgICAgICBoZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUxLT5jb21wdXRlTGVu
Z3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4K
KyAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvcmRlciBpcyBndWFyYW50ZWVkLiBTZWUgQ1NTUGFy
c2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIuCisgICAgICAgICAgICBpZiAoIXBhZ2VTaXplRnJvbU5h
bWUocHJpbWl0aXZlVmFsdWUwLCBwcmltaXRpdmVWYWx1ZTEsIHdpZHRoLCBoZWlnaHQpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAobV9zdHlsZS0+c2V0
Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0
eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6Ci0gICAgewotICAgICAgICBGb250RGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAg
IGlmIChpc0luaGVyaXQpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KG1f
cGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpKTsKLSAgICAgICAgZWxzZSBp
ZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250
V2VpZ2h0Tm9ybWFsKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKQorICAgIGNhc2UgMTogeworICAgICAgICAvLyA8bGVuZ3RoPiB8IGF1dG8gfCA8cGFn
ZS1zaXplPiB8IFsgcG9ydHJhaXQgfCBsYW5kc2NhcGVdCisgICAgICAgIGlmICghdmFsdWVMaXN0
LT5pdGVtKDApLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWVMaXN0LT5pdGVtKDApKTsKKyAgICAgICAgaW50IHR5cGUgPSBw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBpZiAoQ1NTUHJpbWl0aXZl
VmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKKyAgICAgICAgICAgIC8vIDxsZW5ndGg+
CisgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7CisgICAgICAg
ICAgICB3aWR0aCA9IGhlaWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0
aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAodHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0lERU5UKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUJvbGRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWln
aHQoZm9udERlc2NyaXB0aW9uLmJvbGRlcldlaWdodCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGlnaHRlcjoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2Ny
aXB0aW9uLmxpZ2h0ZXJXZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWU3MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHRCb2xkKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgotICAgICAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlNDAwOgotICAgICAgICAgICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0Tm9ybWFsKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlOTAw
OgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250
V2VpZ2h0OTAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlODAwOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0ODAwKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlNjAwOgotICAgICAg
ICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0NjAw
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlNTAwOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldFdlaWdodChGb250V2VpZ2h0NTAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlMzAwOgotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0MzAwKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlMjAwOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdo
dChGb250V2VpZ2h0MjAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlMTAwOgotICAgICAgICAgICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0MTAwKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
c3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZUF1dG86CisgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FV
VE87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUG9y
dHJhaXQ6CisgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9fUE9S
VFJBSVQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
TGFuZHNjYXBlOgorICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRP
X0xBTkRTQ0FQRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4KKyAgICAgICAgICAgICAgICBwYWdlU2l6
ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7CisgICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6
ZUZyb21OYW1lKHByaW1pdGl2ZVZhbHVlLCAwLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmICht
X3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAg
IG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBicmVhazsKICAg
ICB9Ci0gICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShsaXN0U3R5bGVQ
b3NpdGlvbiwgTGlzdFN0eWxlUG9zaXRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENT
U1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUxfQU5EX1BSSU1JVElWRShsaXN0U3R5bGVUeXBlLCBMaXN0U3R5bGVUeXBlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgotICAgIHsKLSAgICAgICAgaWYg
KGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3ZlcmZsb3dYKG1fcGFyZW50
U3R5bGUtPm92ZXJmbG93WCgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WSht
X3BhcmVudFN0eWxlLT5vdmVyZmxvd1koKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldE92ZXJmbG93WChSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJmbG93WCgpKTsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WShSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJmbG93
WSgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAg
ICAgIEVPdmVyZmxvdyBvID0gKnByaW1pdGl2ZVZhbHVlOwotCi0gICAgICAgIG1fc3R5bGUtPnNl
dE92ZXJmbG93WChvKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0T3ZlcmZsb3dZKG8pOworICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgbV9zdHlsZS0+c2V0UGFnZVNpemVU
eXBlKHBhZ2VTaXplVHlwZSk7CisgICAgbV9zdHlsZS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJuOworfQogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU92
ZXJmbG93WDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElW
RShvdmVyZmxvd1gsIE92ZXJmbG93WCkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlPdmVyZmxvd1k6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9Q
UklNSVRJVkUob3ZlcmZsb3dZLCBPdmVyZmxvd1kpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUocGFnZUJyZWFrQmVmb3JlLCBQYWdlQnJl
YWtCZWZvcmUsIFBhZ2VCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWdlQnJlYWtBZnRlcjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5E
X1BSSU1JVElWRV9XSVRIX1ZBTFVFKHBhZ2VCcmVha0FmdGVyLCBQYWdlQnJlYWtBZnRlciwgUGFn
ZUJyZWFrKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0lu
c2lkZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZBTFVFKHBh
Z2VCcmVha0luc2lkZSwgUGFnZUJyZWFrSW5zaWRlLCBQYWdlQnJlYWspCi0gICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEVQYWdlQnJlYWsg
cGFnZUJyZWFrID0gKnByaW1pdGl2ZVZhbHVlOwotICAgICAgICBpZiAocGFnZUJyZWFrICE9IFBC
QUxXQVlTKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFnZUJyZWFrSW5zaWRlKHBhZ2VCcmVh
ayk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlQb3NpdGlvbjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1J
VElWRShwb3NpdGlvbiwgUG9zaXRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5VGFibGVMYXlvdXQ6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
dGFibGVMYXlvdXQsIFRhYmxlTGF5b3V0KQorYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpwYWdlU2l6
ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZh
bHVlKiBwYWdlT3JpZW50YXRpb24sIExlbmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KQorewor
ICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTVXaWR0aCA9IG1tTGVuZ3RoKDE0OCksIGE1SGVpZ2h0
ID0gbW1MZW5ndGgoMjEwKTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE0V2lkdGggPSBtbUxl
bmd0aCgyMTApLCBhNEhlaWdodCA9IG1tTGVuZ3RoKDI5Nyk7CisgICAgc3RhdGljIGNvbnN0IExl
bmd0aCBhM1dpZHRoID0gbW1MZW5ndGgoMjk3KSwgYTNIZWlnaHQgPSBtbUxlbmd0aCg0MjApOwor
ICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYjVXaWR0aCA9IG1tTGVuZ3RoKDE3NiksIGI1SGVpZ2h0
ID0gbW1MZW5ndGgoMjUwKTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI0V2lkdGggPSBtbUxl
bmd0aCgyNTApLCBiNEhlaWdodCA9IG1tTGVuZ3RoKDM1Myk7CisgICAgc3RhdGljIGNvbnN0IExl
bmd0aCBsZXR0ZXJXaWR0aCA9IGluY2hMZW5ndGgoOC41KSwgbGV0dGVySGVpZ2h0ID0gaW5jaExl
bmd0aCgxMSk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZWdhbFdpZHRoID0gaW5jaExlbmd0
aCg4LjUpLCBsZWdhbEhlaWdodCA9IGluY2hMZW5ndGgoMTQpOworICAgIHN0YXRpYyBjb25zdCBM
ZW5ndGggbGVkZ2VyV2lkdGggPSBpbmNoTGVuZ3RoKDExKSwgbGVkZ2VySGVpZ2h0ID0gaW5jaExl
bmd0aCgxNyk7CiAKLSAgICAgICAgRVRhYmxlTGF5b3V0IGwgPSAqcHJpbWl0aXZlVmFsdWU7Ci0g
ICAgICAgIGlmIChsID09IFRBVVRPKQotICAgICAgICAgICAgbCA9IFJlbmRlclN0eWxlOjppbml0
aWFsVGFibGVMYXlvdXQoKTsKKyAgICBpZiAoIXBhZ2VTaXplTmFtZSB8fCBwYWdlU2l6ZU5hbWUt
PnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbV9zdHlsZS0+c2V0VGFibGVMYXlvdXQobCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlVbmlj
b2RlQmlkaTogCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJ
VkUodW5pY29kZUJpZGksIFVuaWNvZGVCaWRpKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06IAotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9BTkRfUFJJTUlUSVZFKHRleHRUcmFuc2Zvcm0sIFRleHRUcmFuc2Zvcm0pCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eToKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh2aXNpYmlsaXR5LCBWaXNpYmlsaXR5
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUod2hpdGVTcGFjZSwg
V2hpdGVTcGFjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvbjoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfSU5IRVJJVF9BTkRfSU5J
VElBTCh4UG9zaXRpb24sIFhQb3NpdGlvbik7Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX0lO
SEVSSVRfQU5EX0lOSVRJQUwoeVBvc2l0aW9uLCBZUG9zaXRpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblg6IHsKLSAgICAgICAgSEFO
RExFX0JBQ0tHUk9VTkRfVkFMVUUoeFBvc2l0aW9uLCBYUG9zaXRpb24sIHZhbHVlKQotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25Z
OiB7Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKHlQb3NpdGlvbiwgWVBvc2l0aW9u
LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uOgotICAgICAgICBIQU5ETEVfTUFTS19JTkhFUklUX0FORF9JTklUSUFM
KHhQb3NpdGlvbiwgWFBvc2l0aW9uKTsKLSAgICAgICAgSEFORExFX01BU0tfSU5IRVJJVF9BTkRf
SU5JVElBTCh5UG9zaXRpb24sIFlQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWDogewotICAgICAgICBIQU5ETEVfTUFTS19W
QUxVRSh4UG9zaXRpb24sIFhQb3NpdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk6IHsKLSAgICAgICAgSEFO
RExFX01BU0tfVkFMVUUoeVBvc2l0aW9uLCBZUG9zaXRpb24sIHZhbHVlKQotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgotICAgICAg
ICBIQU5ETEVfQkFDS0dST1VORF9JTkhFUklUX0FORF9JTklUSUFMKHJlcGVhdFgsIFJlcGVhdFgp
OwotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9JTkhFUklUX0FORF9JTklUSUFMKHJlcGVhdFks
IFJlcGVhdFkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRYOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShyZXBlYXRYLCBSZXBl
YXRYLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0WToKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUocmVwZWF0WSwgUmVw
ZWF0WSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdDoKLSAgICAgICAgSEFORExFX01BU0tfSU5IRVJJVF9BTkRfSU5JVElBTChyZXBl
YXRYLCBSZXBlYXRYKTsKLSAgICAgICAgSEFORExFX01BU0tfSU5IRVJJVF9BTkRfSU5JVElBTChy
ZXBlYXRZLCBSZXBlYXRZKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WDoKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUocmVwZWF0WCwgUmVw
ZWF0WCwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdFk6Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKHJlcGVhdFksIFJlcGVhdFks
IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNp
bmc6IHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcobV9wYXJlbnRTdHlsZS0+aG9yaXpvbnRhbEJvcmRlclNw
YWNpbmcoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmco
bV9wYXJlbnRTdHlsZS0+dmVydGljYWxCb3JkZXJTcGFjaW5nKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SG9yaXpv
bnRhbEJvcmRlclNwYWNpbmcoMCk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJv
cmRlclNwYWNpbmcoMCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6IHsKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsIEhvcml6
b250YWxCb3JkZXJTcGFjaW5nKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBzaG9ydCBzcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUtPmNv
bXB1dGVMZW5ndGhTaG9ydChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3Ip
OwotICAgICAgICBtX3N0eWxlLT5zZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhzcGFjaW5nKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
VmVydGljYWxTcGFjaW5nOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHZl
cnRpY2FsQm9yZGVyU3BhY2luZywgVmVydGljYWxCb3JkZXJTcGFjaW5nKQotICAgICAgICBpZiAo
IXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzaG9ydCBzcGFj
aW5nID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhTaG9ydChzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJv
cmRlclNwYWNpbmcoc3BhY2luZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUN1cnNvcjoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Q3Vyc29yKG1fcGFyZW50U3R5bGUtPmN1cnNvcigpKTsKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldEN1cnNvckxpc3QobV9wYXJlbnRTdHlsZS0+Y3Vyc29ycygpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX3N0eWxlLT5jbGVhckN1cnNvckxp
c3QoKTsKLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
Q3Vyc29yKFJlbmRlclN0eWxlOjppbml0aWFsQ3Vyc29yKCkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAg
ICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFs
dWUpOwotICAgICAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxp
c3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVt
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihpdGVtKTsKLSAgICAgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5w
cmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5pc0N1cnNvckltYWdlVmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4o
cHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT51cGRh
dGVJZlNWR0N1cnNvcklzVXNlZChtX2VsZW1lbnQpKSAvLyBFbGVtZW50cyB3aXRoIFNWRyBjdXJz
b3JzIGFyZSBub3QgYWxsb3dlZCB0byBzaGFyZSBzdHlsZS4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
c3R5bGUtPmFkZEN1cnNvcihjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDdXJz
b3IsIGltYWdlKSwgaW1hZ2UtPmhvdFNwb3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19J
REVOVCkKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q3Vyc29yKCpwcmltaXRpdmVW
YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUp
IHsKLSAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUo
KTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQg
JiYgbV9zdHlsZS0+Y3Vyc29yKCkgIT0gRUN1cnNvcigqcHJpbWl0aXZlVmFsdWUpKQotICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybjsKLS8vIGNvbG9ycyB8fCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvbG9yOgotICAgICAgICAvLyBJZiB0aGUgJ2N1cnJlbnRDb2xvcicga2V5d29yZCBpcyBz
ZXQgb24gdGhlICdjb2xvcicgcHJvcGVydHkgaXRzZWxmLAotICAgICAgICAvLyBpdCBpcyB0cmVh
dGVkIGFzICdjb2xvcjppbmhlcml0JyBhdCBwYXJzZSB0aW1lCi0gICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRj
b2xvcikKLSAgICAgICAgICAgIGlzSW5oZXJpdCA9IHRydWU7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOiB7Ci0gICAgICAgIENvbG9y
IGNvbDsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgSEFORExFX0lOSEVS
SVRfQ09ORChDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYmFja2dyb3VuZENvbG9yLCBCYWNr
Z3JvdW5kQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQ
KENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIGJvcmRlclRvcENvbG9yLCBjb2xvciwgQm9yZGVy
VG9wQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIGJvcmRlckJvdHRvbUNvbG9yLCBjb2xvciwgQm9y
ZGVyQm90dG9tQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFD
S1VQKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgYm9yZGVyUmlnaHRDb2xvciwgY29sb3Is
IEJvcmRlclJpZ2h0Q29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhf
QkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBib3JkZXJMZWZ0Q29sb3IsIGNvbG9y
LCBCb3JkZXJMZWZ0Q29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1By
b3BlcnR5Q29sb3IsIGNvbG9yLCBDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NP
TkRfV0lUSF9CQUNLVVAoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsIG91dGxpbmVDb2xvciwgY29s
b3IsIE91dGxpbmVDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9C
QUNLVVAoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsIGNvbHVtblJ1bGVDb2xvciwg
Y29sb3IsIENvbHVtblJ1bGVDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRf
V0lUSF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIHRleHRTdHJva2VD
b2xvciwgY29sb3IsIFRleHRTdHJva2VDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklU
X0NPTkRfV0lUSF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgdGV4
dEVtcGhhc2lzQ29sb3IsIGNvbG9yLCBUZXh0RW1waGFzaXNDb2xvcikKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkRfV0lUSF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENv
bG9yLCB0ZXh0RmlsbENvbG9yLCBjb2xvciwgVGV4dEZpbGxDb2xvcikKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICAv
LyBUaGUgYm9yZGVyL291dGxpbmUgY29sb3JzIHdpbGwganVzdCBtYXAgdG8gdGhlIGludmFsaWQg
Y29sb3IgfGNvbHwgYWJvdmUuICBUaGlzIHdpbGwgaGF2ZSB0aGUKLSAgICAgICAgICAgIC8vIGVm
ZmVjdCBvZiBmb3JjaW5nIHRoZSB1c2Ugb2YgdGhlIGN1cnJlbnRDb2xvciB3aGVuIGl0IGNvbWVz
IHRpbWUgdG8gZHJhdyB0aGUgYm9yZGVycyAoYW5kIG9mCi0gICAgICAgICAgICAvLyBub3QgcGFp
bnRpbmcgdGhlIGJhY2tncm91bmQgc2luY2UgdGhlIGNvbG9yIHdvbid0IGJlIHZhbGlkKS4KLSAg
ICAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUNvbG9yKQotICAgICAgICAgICAgICAgIGNv
bCA9IFJlbmRlclN0eWxlOjppbml0aWFsQ29sb3IoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgY29sID0gZ2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclRvcENvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wQ29sb3Io
Y29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0Q29sb3IoY29s
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21Db2xvcihjb2wp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
Q29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0Q29sb3IoY29sKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRP
dXRsaW5lQ29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29s
dW1uUnVsZUNvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRl
eHRTdHJva2VDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dFRleHRFbXBoYXNpc0NvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRUZXh0RmlsbENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLS8vIHVyaSB8fCBpbmhlcml0Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZToKLSAgICAgICAgSEFORExFX0JBQ0tH
Uk9VTkRfVkFMVUUoaW1hZ2UsIEltYWdlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2U6Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVF
KGltYWdlLCBJbWFnZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5TGlzdFN0eWxlSW1hZ2U6Ci0gICAgewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTChsaXN0U3R5bGVJbWFnZSwgTGlzdFN0eWxlSW1hZ2UpCi0gICAgICAgIG1fc3R5bGUtPnNl
dExpc3RTdHlsZUltYWdlKHN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgdmFs
dWUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotLy8gbGVuZ3RoCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdp
ZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lV2lk
dGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aDoKLSAgICB7Ci0g
ICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQo
Q1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgYm9yZGVyVG9wV2lkdGgsIEJvcmRlclRvcFdpZHRo
KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
V2lkdGgsIGJvcmRlclJpZ2h0V2lkdGgsIEJvcmRlclJpZ2h0V2lkdGgpCi0gICAgICAgICAgICBI
QU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIGJvcmRlckJv
dHRvbVdpZHRoLCBCb3JkZXJCb3R0b21XaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklU
X0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIGJvcmRlckxlZnRXaWR0aCwgQm9yZGVy
TGVmdFdpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU91
dGxpbmVXaWR0aCwgb3V0bGluZVdpZHRoLCBPdXRsaW5lV2lkdGgpCi0gICAgICAgICAgICBIQU5E
TEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBjb2x1bW5S
dWxlV2lkdGgsIENvbHVtblJ1bGVXaWR0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTklU
SUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBCb3JkZXJUb3BX
aWR0aCwgQm9yZGVyV2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhf
VkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBCb3JkZXJSaWdodFdpZHRoLCBCb3Jk
ZXJXaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBCb3JkZXJCb3R0b21XaWR0aCwgQm9yZGVyV2lkdGgp
Ci0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0V2lkdGgsIEJvcmRlckxlZnRXaWR0aCwgQm9yZGVyV2lkdGgpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgs
IE91dGxpbmVXaWR0aCwgQm9yZGVyV2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9D
T05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIENvbHVtblJ1
bGVXaWR0aCwgQm9yZGVyV2lkdGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBzaG9ydCB3aWR0aCA9IDM7Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaW46Ci0gICAgICAgICAgICB3aWR0aCA9
IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKLSAg
ICAgICAgICAgIHdpZHRoID0gMzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENT
U1ZhbHVlVGhpY2s6Ci0gICAgICAgICAgICB3aWR0aCA9IDU7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6Ci0gICAgICAgICAgICB3aWR0aCA9IHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
LCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHdpZHRoIDwgMCkgcmV0
dXJuOwotICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BXaWR0aDoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKHdpZHRo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRXaWR0aDoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgod2lkdGgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21XaWR0aDoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVdpZHRoKHdpZHRo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFdpZHRoOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdFdpZHRoKHdpZHRoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRo
OgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVdpZHRoKHdpZHRoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRo
OgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uUnVsZVdpZHRoKHdpZHRoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Rm9udFNtb290aGluZzogewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGlmIChpc0luaGVyaXQp
IAotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcobV9wYXJlbnRT
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKLSAgICAgICAgZWxzZSBp
ZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhp
bmcoQXV0b1Ntb290aGluZyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpbnQgaWQg
PSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKLSAgICAgICAgICAgIEZvbnRTbW9vdGhpbmdN
b2RlIHNtb290aGluZzsKLSAgICAgICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAgICAgICAgICAgICAgc21vb3RoaW5nID0gQXV0
b1Ntb290aGluZzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNtb290aGluZyA9IE5vU21v
b3RoaW5nOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlQW50aWFsaWFzZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNtb290aGluZyA9IEFu
dGlhbGlhc2VkOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxpYXNlZDoKLSAgICAgICAgICAgICAgICAgICAgc21v
b3RoaW5nID0gU3VicGl4ZWxBbnRpYWxpYXNlZDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgICAgIHNtb290aGluZyA9IEF1dG9TbW9vdGhp
bmc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Rm9udFNt
b290aGluZyhzbW9vdGhpbmcpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3N0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgIG1fZm9udERpcnR5
ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlM
ZXR0ZXJTcGFjaW5nOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKLSAgICB7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5I
RVJJVF9DT05EKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgbGV0dGVyU3BhY2luZywgTGV0dGVy
U3BhY2luZykKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXb3Jk
U3BhY2luZywgd29yZFNwYWNpbmcsIFdvcmRTcGFjaW5nKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFO
RExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgTGV0
dGVyU3BhY2luZywgTGV0dGVyV29yZFNwYWNpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElB
TF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgV29yZFNwYWNpbmcsIExl
dHRlcldvcmRTcGFjaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpbnQgd2lkdGggPSAwOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYg
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKLSAgICAgICAg
ICAgIHdpZHRoID0gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2lkdGggPSBw
cmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5
bGUsIHVzZVNWR1pvb21SdWxlcyA/IDEuMGYgOiB6b29tRmFjdG9yKTsKLSAgICAgICAgfQotICAg
ICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5n
OgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGV0dGVyU3BhY2luZyh3aWR0aCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0V29yZFNwYWNpbmcod2lkdGgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAvLyAjIyMgbmVlZHMgdGhlIGRlZmluaXRpb25zIGluIHJlbmRlcnN0eWxl
Ci0gICAgICAgIGRlZmF1bHQ6IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZEJyZWFrOgotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHdvcmRCcmVhaywgV29yZEJyZWFrKQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHdvcmRXcmFwLCBXb3JkV3JhcCkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZToKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShuYnNwTW9kZSwg
TkJTUE1vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGlu
ZUJyZWFrOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZF
KGtodG1sTGluZUJyZWFrLCBLSFRNTExpbmVCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yOgotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG1hdGNoTmVhcmVz
dE1haWxCbG9ja3F1b3RlQ29sb3IsIE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6Ci0gICAgewotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChyZXNpemUsIFJlc2l6ZSkKLQotICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIEVSZXNpemUgciA9IFJFU0laRV9OT05FOwotICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKSB7Ci0gICAgICAgICAgICBpZiAoU2V0
dGluZ3MqIHNldHRpbmdzID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCkpCi0gICAg
ICAgICAgICAgICAgciA9IHNldHRpbmdzLT50ZXh0QXJlYXNBcmVSZXNpemFibGUoKSA/IFJFU0la
RV9CT1RIIDogUkVTSVpFX05PTkU7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgciA9ICpw
cmltaXRpdmVWYWx1ZTsKLSAgICAgICAgICAgIAotICAgICAgICBtX3N0eWxlLT5zZXRSZXNpemUo
cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gbGVuZ3RoLCBwZXJjZW50
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgotICAgICAgICAvLyArbm9uZSAraW5oZXJp
dAotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlUb3A6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVJpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5TWFyZ2luVG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0OgotICAgICAgICAvLyAraW5oZXJpdCArYXV0bwotICAgICAgICBpZiAoaWQgPT0gQ1NT
UHJvcGVydHlXaWR0aCB8fCBpZCA9PSBDU1NQcm9wZXJ0eU1pbldpZHRoIHx8IGlkID09IENTU1By
b3BlcnR5TWF4V2lkdGgpIHsKLSAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludHJpbnNpYykgewotICAgICAgICAg
ICAgICAgIGwgPSBMZW5ndGgoSW50cmluc2ljKTsKLSAgICAgICAgICAgICAgICBhcHBseSA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZSAm
JiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU1pbkludHJpbnNpYykgewot
ICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgoTWluSW50cmluc2ljKTsKLSAgICAgICAgICAgICAg
ICBhcHBseSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlk
ICE9IENTU1Byb3BlcnR5TWF4V2lkdGggJiYgcHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgYXBwbHkgPSB0cnVl
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQ
YWRkaW5nUmlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50
OgotICAgICAgICAvLyAraW5oZXJpdAotICAgIHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewot
ICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhX
aWR0aCwgTWF4V2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3Bl
cnR5Qm90dG9tLCBib3R0b20sIEJvdHRvbSkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NP
TkQoQ1NTUHJvcGVydHlUb3AsIHRvcCwgVG9wKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRf
Q09ORChDU1NQcm9wZXJ0eUxlZnQsIGxlZnQsIExlZnQpCi0gICAgICAgICAgICBIQU5ETEVfSU5I
RVJJVF9DT05EKENTU1Byb3BlcnR5UmlnaHQsIHJpZ2h0LCBSaWdodCkKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXaWR0aCwgd2lkdGgsIFdpZHRoKQotICAgICAg
ICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU1pbldpZHRoLCBtaW5XaWR0aCwg
TWluV2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5UGFk
ZGluZ1RvcCwgcGFkZGluZ1RvcCwgUGFkZGluZ1RvcCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhF
UklUX0NPTkQoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIHBhZGRpbmdSaWdodCwgUGFkZGluZ1Jp
Z2h0KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVBhZGRpbmdC
b3R0b20sIHBhZGRpbmdCb3R0b20sIFBhZGRpbmdCb3R0b20pCi0gICAgICAgICAgICBIQU5ETEVf
SU5IRVJJVF9DT05EKENTU1Byb3BlcnR5UGFkZGluZ0xlZnQsIHBhZGRpbmdMZWZ0LCBQYWRkaW5n
TGVmdCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXJnaW5U
b3AsIG1hcmdpblRvcCwgTWFyZ2luVG9wKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09O
RChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBtYXJnaW5SaWdodCwgTWFyZ2luUmlnaHQpCi0gICAg
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBtYXJn
aW5Cb3R0b20sIE1hcmdpbkJvdHRvbSkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQo
Q1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBtYXJnaW5MZWZ0LCBNYXJnaW5MZWZ0KQotICAgICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVRleHRJbmRlbnQsIHRleHRJbmRlbnQs
IFRleHRJbmRlbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhf
VkFMVUUoQ1NTUHJvcGVydHlNYXhXaWR0aCwgTWF4V2lkdGgsIE1heFNpemUpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3R0b20sIEJvdHRv
bSwgT2Zmc2V0KQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENT
U1Byb3BlcnR5VG9wLCBUb3AsIE9mZnNldCkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NP
TkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUxlZnQsIExlZnQsIE9mZnNldCkKLSAgICAgICAgICAg
IEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVJpZ2h0LCBSaWdodCwg
T2Zmc2V0KQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1By
b3BlcnR5V2lkdGgsIFdpZHRoLCBTaXplKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09O
RF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWluV2lkdGgsIE1pbldpZHRoLCBNaW5TaXplKQotICAg
ICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5UGFkZGlu
Z1RvcCwgUGFkZGluZ1RvcCwgUGFkZGluZykKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NP
TkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgUGFkZGluZ1JpZ2h0LCBQYWRk
aW5nKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3Bl
cnR5UGFkZGluZ0JvdHRvbSwgUGFkZGluZ0JvdHRvbSwgUGFkZGluZykKLSAgICAgICAgICAgIEhB
TkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBQYWRk
aW5nTGVmdCwgUGFkZGluZykKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9W
QUxVRShDU1NQcm9wZXJ0eU1hcmdpblRvcCwgTWFyZ2luVG9wLCBNYXJnaW4pCi0gICAgICAgICAg
ICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwg
TWFyZ2luUmlnaHQsIE1hcmdpbikKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lU
SF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgTWFyZ2luQm90dG9tLCBNYXJnaW4pCi0g
ICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0LCBNYXJnaW5MZWZ0LCBNYXJnaW4pCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9D
T05EKENTU1Byb3BlcnR5VGV4dEluZGVudCwgVGV4dEluZGVudCkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfSAKLQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgIWFwcGx5KSB7
Ci0gICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7
Ci0gICAgICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlw
ZSkpCi0gICAgICAgICAgICAgICAgLy8gSGFuZGxlIG91ciBxdWlya3kgbWFyZ2luIHVuaXRzIGlm
IHdlIGhhdmUgdGhlbS4KLSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwg
em9vbUZhY3RvciksIEZpeGVkLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2
ZVZhbHVlLT5pc1F1aXJrVmFsdWUoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgICAgICBsID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBhcHBseSA9IHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFhcHBseSkgcmV0dXJuOwotICAgICAgICBzd2l0
Y2ggKGlkKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6Ci0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWF4V2lkdGgobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOgotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldEJvdHRvbShsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlUb3A6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VG9wKGwp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxl
ZnQ6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGVmdChsKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlSaWdodDoKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRSaWdodChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRXaWR0aChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlNaW5XaWR0aDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNaW5XaWR0aChs
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQ
YWRkaW5nVG9wOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdUb3AobCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGlu
Z1JpZ2h0OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdSaWdodChsKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdCb3R0b20obCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGlu
Z0xlZnQ6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ0xlZnQobCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9w
OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpblRvcChsKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5SaWdodChsKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206Ci0gICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luQm90dG9tKGwpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6Ci0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luTGVmdChsKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50OgotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldFRleHRJbmRlbnQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdo
dDoKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgbCA9IExlbmd0aCh1bmRlZmluZWRM
ZW5ndGgsIEZpeGVkKTsKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICAgICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlSW50cmluc2ljKSB7Ci0gICAgICAgICAgICBsID0gTGVuZ3RoKEludHJpbnNp
Yyk7Ci0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0
aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNaW5JbnRy
aW5zaWMpIHsKLSAgICAgICAgICAgIGwgPSBMZW5ndGgoTWluSW50cmluc2ljKTsKLSAgICAgICAg
ICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChpZCAhPSBDU1NQcm9wZXJ0eU1h
eEhlaWdodCAmJiBwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlN
YXhIZWlnaHQsIG1heEhlaWdodCwgTWF4SGVpZ2h0KQotICAgICAgICAgICAgSEFORExFX0lOSEVS
SVRfQ09ORChDU1NQcm9wZXJ0eUhlaWdodCwgaGVpZ2h0LCBIZWlnaHQpCi0gICAgICAgICAgICBI
QU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TWluSGVpZ2h0LCBtaW5IZWlnaHQsIE1pbkhl
aWdodCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNJbml0
aWFsKSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJv
cGVydHlNYXhIZWlnaHQsIE1heEhlaWdodCwgTWF4U2l6ZSkKLSAgICAgICAgICAgIEhBTkRMRV9J
TklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUhlaWdodCwgSGVpZ2h0LCBTaXplKQot
ICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWlu
SGVpZ2h0LCBNaW5IZWlnaHQsIE1pblNpemUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgIWFwcGx5KSB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBzaG9ydCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsK
LSAgICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBl
KSkKLSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVu
Z3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvciks
IEZpeGVkKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFs
dWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoYXBwbHkpCi0gICAgICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKLSAgICAgICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0TWF4SGVpZ2h0KGwpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgotICAgICAgICAgICAgICAgICAgICBt
X3N0eWxlLT5zZXRIZWlnaHQobCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6Ci0gICAgICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldE1pbkhlaWdodChsKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlWZXJ0
aWNhbEFsaWduOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEFs
aWduLCBWZXJ0aWNhbEFsaWduKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsK
LSAgICAgICAgICBFVmVydGljYWxBbGlnbiBhbGlnbjsKLQotICAgICAgICAgIHN3aXRjaCAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
VG9wOgotICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFRPUDsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUJvdHRvbToKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBC
T1RUT007IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNaWRkbGU6Ci0gICAg
ICAgICAgICAgICAgICAgIGFsaWduID0gTUlERExFOyBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlQmFzZWxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gQkFTRUxJ
TkU7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUZXh0Qm90dG9tOgotICAg
ICAgICAgICAgICAgICAgICBhbGlnbiA9IFRFWFRfQk9UVE9NOyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlVGV4dFRvcDoKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBU
RVhUX1RPUDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1YjoKLSAgICAg
ICAgICAgICAgICAgICAgYWxpZ24gPSBTVUI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVTdXBlcjoKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBTVVBFUjsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJhc2VsaW5lTWlkZGxlOgotICAg
ICAgICAgICAgICAgICAgICBhbGlnbiA9IEJBU0VMSU5FX01JRERMRTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQWxpZ24oYWxpZ24pOwotICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBpbnQgdHlwZSA9IHByaW1p
dGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAg
ICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAg
ICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0
aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0gICAg
ICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
Ci0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgp
LCBQZXJjZW50KTsKLQotICAgICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQWxpZ24oTEVOR1RI
KTsKLSAgICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKGwpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKLSAg
ICB7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5m
b250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXpl
KDApOwotICAgICAgICBmbG9hdCBvbGRTaXplID0gMDsKLSAgICAgICAgZmxvYXQgc2l6ZSA9IDA7
Ci0gICAgICAgIAotICAgICAgICBib29sIHBhcmVudElzQWJzb2x1dGVTaXplID0gZmFsc2U7Ci0g
ICAgICAgIGlmIChtX3BhcmVudE5vZGUpIHsKLSAgICAgICAgICAgIG9sZFNpemUgPSBtX3BhcmVu
dFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7Ci0gICAgICAgICAgICBw
YXJlbnRJc0Fic29sdXRlU2l6ZSA9IG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmlz
QWJzb2x1dGVTaXplKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0g
ICAgICAgICAgICBzaXplID0gb2xkU2l6ZTsKLSAgICAgICAgICAgIGlmIChtX3BhcmVudE5vZGUp
Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKG1fcGFyZW50
U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmtleXdvcmRTaXplKCkpOwotICAgICAgICB9IGVsc2Ug
aWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgc2l6ZSA9IGZvbnRTaXplRm9yS2V5d29yZCht
X2NoZWNrZXIubV9kb2N1bWVudCwgQ1NTVmFsdWVNZWRpdW0sIGZvbnREZXNjcmlwdGlvbi51c2VG
aXhlZERlZmF1bHRTaXplKCkpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdv
cmRTaXplKENTU1ZhbHVlTWVkaXVtIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIC8vIEtl
eXdvcmRzIGFyZSBiZWluZyB1c2VkLgotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVYeFNtYWxsOgot
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVYU21hbGw6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVNtYWxsOgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlOgotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVYTGFyZ2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVh4TGFyZ2U6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFh4eExhcmdlOgotICAgICAgICAgICAg
ICAgICAgICBzaXplID0gZm9udFNpemVGb3JLZXl3b3JkKG1fY2hlY2tlci5tX2RvY3VtZW50LCBw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVs
dFNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3Jk
U2l6ZShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
TGFyZ2VyOgotICAgICAgICAgICAgICAgICAgICBzaXplID0gbGFyZ2VyRm9udFNpemUob2xkU2l6
ZSwgbV9jaGVja2VyLm1fZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsZXI6Ci0gICAg
ICAgICAgICAgICAgICAgIHNpemUgPSBzbWFsbGVyRm9udFNpemUob2xkU2l6ZSwgbV9jaGVja2Vy
Lm1fZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0
ZVNpemUocGFyZW50SXNBYnNvbHV0ZVNpemUgJiYgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlTGFyZ2VyIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlU21hbGxlcikpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJp
bWl0aXZlVHlwZSgpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVT
aXplKHBhcmVudElzQWJzb2x1dGVTaXplIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMgJiYgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19FWFMgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JFTVMpKTsKLSAgICAgICAgICAgIGlmIChD
U1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgICAg
ICBzaXplID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChtX3BhcmVudFN0eWxl
LCBtX3Jvb3RFbGVtZW50U3R5bGUsIHRydWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICAgICAgc2l6
ZSA9IChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpICogb2xkU2l6ZSkgLyAxMDAuMGY7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHNpemUgPCAwKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHNl
dEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgc2l6ZSk7Ci0gICAgICAgIGlmIChtX3N0eWxlLT5z
ZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgIG1fZm9udERp
cnR5ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlaSW5kZXg6IHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgaWYgKG1f
cGFyZW50U3R5bGUtPmhhc0F1dG9aSW5kZXgoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRIYXNBdXRvWkluZGV4KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0WkluZGV4KG1fcGFyZW50U3R5bGUtPnpJbmRleCgpKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNB
dXRvWkluZGV4KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgY2xhbXAgYWxsIHNvcnRzIG9mIG90aGVyIGludGVnZXIg
cHJvcGVydGllcyB0b28uCi0gICAgICAgIGNvbnN0IGRvdWJsZSBtaW5JbnRBc0RvdWJsZSA9IElO
VF9NSU47Ci0gICAgICAgIGNvbnN0IGRvdWJsZSBtYXhJbnRBc0RvdWJsZSA9IElOVF9NQVg7Ci0g
ICAgICAgIG1fc3R5bGUtPnNldFpJbmRleChzdGF0aWNfY2FzdDxpbnQ+KG1heChtaW5JbnRBc0Rv
dWJsZSwgbWluKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBtYXhJbnRBc0RvdWJs
ZSkpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdpZG93
czoKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHdpZG93cywgV2lk
b3dzKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8IHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFdpZG93cyhwcmltaXRpdmVWYWx1ZS0+Z2V0
SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2Ug
Q1NTUHJvcGVydHlPcnBoYW5zOgotICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwob3JwaGFucywgT3JwaGFucykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCBw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRPcnBoYW5z
KHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0g
ICAgICAgIAotCi0vLyBsZW5ndGgsIHBlcmNlbnQsIG51bWJlcgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlMaW5lSGVpZ2h0OgotICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
bGluZUhlaWdodCwgTGluZUhlaWdodCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgTGVuZ3RoIGxpbmVIZWlnaHQ7Ci0gICAgICAgIGlu
dCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICAgICAg
bGluZUhlaWdodCA9IExlbmd0aCgtMTAwLjAsIFBlcmNlbnQpOwotICAgICAgICBlbHNlIGlmIChD
U1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgewotICAgICAgICAgICAg
ZG91YmxlIG11bHRpcGxpZXIgPSB6b29tRmFjdG9yOwotICAgICAgICAgICAgaWYgKG1fc3R5bGUt
PnRleHRTaXplQWRqdXN0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
bV9jaGVja2VyLm1fZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIG11bHRp
cGxpZXIgKj0gZnJhbWUtPnRleHRab29tRmFjdG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50
Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgIG11bHRpcGxpZXIpLCBGaXhl
ZCk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpCi0gICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKChtX3N0eWxlLT5mb250
U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpIC8gMTAwLCBGaXhlZCk7Ci0g
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0g
ICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpICogMTAwLjAsIFBlcmNlbnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldExpbmVIZWlnaHQobGluZUhlaWdodCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLS8vIHN0cmluZwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxp
Z246Ci0gICAgewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0QWxpZ24s
IFRleHRBbGlnbikKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgaW50IGlkID0gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCk7Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0YXJ0KQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4
dEFsaWduKG1fc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IExFRlQgOiBSSUdIVCk7
Ci0gICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlRW5kKQotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0VGV4dEFsaWduKG1fc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFJJR0hU
IDogTEVGVCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRBbGln
bigqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0vLyByZWN0Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6Ci0gICAgewotICAgICAgICBMZW5ndGggdG9wOwotICAg
ICAgICBMZW5ndGggcmlnaHQ7Ci0gICAgICAgIExlbmd0aCBib3R0b207Ci0gICAgICAgIExlbmd0
aCBsZWZ0OwotICAgICAgICBib29sIGhhc0NsaXAgPSB0cnVlOwotICAgICAgICBpZiAoaXNJbmhl
cml0KSB7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRTdHlsZS0+aGFzQ2xpcCgpKSB7Ci0gICAg
ICAgICAgICAgICAgdG9wID0gbV9wYXJlbnRTdHlsZS0+Y2xpcFRvcCgpOwotICAgICAgICAgICAg
ICAgIHJpZ2h0ID0gbV9wYXJlbnRTdHlsZS0+Y2xpcFJpZ2h0KCk7Ci0gICAgICAgICAgICAgICAg
Ym90dG9tID0gbV9wYXJlbnRTdHlsZS0+Y2xpcEJvdHRvbSgpOwotICAgICAgICAgICAgICAgIGxl
ZnQgPSBtX3BhcmVudFN0eWxlLT5jbGlwTGVmdCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBoYXNDbGlwID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdG9wID0gcmln
aHQgPSBib3R0b20gPSBsZWZ0ID0gTGVuZ3RoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBoYXNDbGlwID0gZmFsc2U7Ci0gICAg
ICAgICAgICB0b3AgPSByaWdodCA9IGJvdHRvbSA9IGxlZnQgPSBMZW5ndGgoKTsKLSAgICAgICAg
fSBlbHNlIGlmICghcHJpbWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUkVDVCkgewotICAgICAgICAgICAgUmVjdCogcmVjdCA9IHByaW1pdGl2
ZVZhbHVlLT5nZXRSZWN0VmFsdWUoKTsKLSAgICAgICAgICAgIGlmICghcmVjdCkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0b3AgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+
dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAg
ICAgICByaWdodCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgYm90dG9tID0gY29udmVy
dFRvTGVuZ3RoKHJlY3QtPmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpv
b21GYWN0b3IpOwotICAgICAgICAgICAgbGVmdCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT5sZWZ0
KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgIH0g
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKSB7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHlsZS0+c2V0Q2xpcCh0
b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOwotICAgICAgICBtX3N0eWxlLT5zZXRIYXNDbGlwKGhh
c0NsaXApOwotICAgIAotICAgICAgICAvLyByZWN0LCBpZGVudAotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0vLyBsaXN0cwotICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OgotICAgICAgICAv
LyBsaXN0IG9mIHN0cmluZywgdXJpLCBjb3VudGVyLCBhdHRyLCBpCi0gICAgewotICAgICAgICAv
LyBGSVhNRTogSW4gQ1NTMywgaXQgd2lsbCBiZSBwb3NzaWJsZSB0byBpbmhlcml0IGNvbnRlbnQu
ICBJbiBDU1MyIGl0IGlzIG5vdC4gIFRoaXMKLSAgICAgICAgLy8gbm90ZSBpcyBhIHJlbWluZGVy
IHRoYXQgZXZlbnR1YWxseSAiaW5oZXJpdCIgbmVlZHMgdG8gYmUgc3VwcG9ydGVkLgotCi0gICAg
ICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPmNsZWFyQ29udGVudCgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAo
IXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIENT
U1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAg
ICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotCi0gICAgICAgIGJvb2wgZGlkU2V0ID0g
ZmFsc2U7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAg
ICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKLSAg
ICAgICAgICAgIGlmIChpdGVtLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkgewotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldENvbnRlbnQoc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZSo+KGl0ZW0pLT5nZW5lcmF0ZWRJbWFnZSgpLCBkaWRTZXQpOwotICAgICAgICAgICAgICAg
IGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKLSAgICAgICAgICAg
IHN3aXRjaCAoY29udGVudFZhbHVlLT5wcmltaXRpdmVUeXBlKCkpIHsKLSAgICAgICAgICAgICAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOgotICAgICAgICAgICAgICAgICAg
ICBtX3N0eWxlLT5zZXRDb250ZW50KGNvbnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5pbXBs
KCksIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19BVFRSOiB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDYW4gYSBuYW1l
c3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRyKGZvbyk/Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChtX3N0eWxlLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldFVuaXF1ZSgpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3BhcmVudFN0eWxlLT5zZXRVbmlxdWUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tLCBjb250ZW50VmFsdWUt
PmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBudWxsQXRvbSk7Ci0gICAgICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldENvbnRlbnQobV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoYXR0cikuaW1wbCgp
LCBkaWRTZXQpOwotICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAvLyByZWdpc3RlciB0aGUgZmFjdCB0aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWUg
YWZmZWN0cyB0aGUgc3R5bGUKLSAgICAgICAgICAgICAgICAgICAgbV9zZWxlY3RvckF0dHJzLmFk
ZChhdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVVJJOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY29udGVudFZhbHVlLT5pc0lt
YWdlVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRDb250ZW50KGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQ
cm9wZXJ0eUNvbnRlbnQsIHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUqPihjb250ZW50VmFsdWUp
KSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSOiB7Ci0gICAgICAgICAgICAgICAgICAg
IENvdW50ZXIqIGNvdW50ZXJWYWx1ZSA9IGNvbnRlbnRWYWx1ZS0+Z2V0Q291bnRlclZhbHVlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIE93blB0cjxDb3VudGVyQ29udGVudD4gY291bnRlciA9IGFk
b3B0UHRyKG5ldyBDb3VudGVyQ29udGVudChjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIChFTGlzdFN0eWxlVHlwZSljb3VudGVyVmFsdWUtPmxpc3RT
dHlsZU51bWJlcigpLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldENvbnRlbnQoY291bnRlci5yZWxlYXNlKCksIGRpZFNldCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghZGlkU2V0KQotICAgICAgICAgICAg
bV9zdHlsZS0+Y2xlYXJDb250ZW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
YXNlIENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudDoKLSAgICAgICAgYXBwbHlDb3VudGVyTGlz
dChzdHlsZSgpLCB2YWx1ZS0+aXNWYWx1ZUxpc3QoKSA/IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlz
dCo+KHZhbHVlKSA6IDAsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlDb3VudGVyUmVzZXQ6Ci0gICAgICAgIGFwcGx5Q291bnRlckxpc3Qoc3R5bGUoKSwgdmFs
dWUtPmlzVmFsdWVMaXN0KCkgPyBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSkgOiAw
LCB0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGYW1p
bHk6IHsKLSAgICAgICAgLy8gbGlzdCBvZiBzdHJpbmdzIGFuZCBpZHMKLSAgICAgICAgaWYgKGlz
SW5oZXJpdCkgewotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIHBhcmVudEZvbnREZXNjcmlw
dGlvbiA9IG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICAgICAgRm9u
dERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
OwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkocGFyZW50Rm9u
dERlc2NyaXB0aW9uLmdlbmVyaWNGYW1pbHkoKSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0RmFtaWx5KHBhcmVudEZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpKTsKLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc1NwZWNpZmllZEZvbnQocGFyZW50Rm9udERlc2Ny
aXB0aW9uLmlzU3BlY2lmaWVkRm9udCgpKTsKLSAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgICAgICBtX2ZvbnRE
aXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJ
bml0aWFsKSB7Ci0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gaW5pdGlhbERlc2MgPSBGb250
RGVzY3JpcHRpb24oKTsKLSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgICAgIC8vIFdlIG5lZWQg
dG8gYWRqdXN0IHRoZSBzaXplIHRvIGFjY291bnQgZm9yIHRoZSBnZW5lcmljIGZhbWlseSBjaGFu
Z2UgZnJvbSBtb25vc3BhY2UKLSAgICAgICAgICAgIC8vIHRvIG5vbi1tb25vc3BhY2UuCi0gICAg
ICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXplKCkgJiYgZm9udERlc2NyaXB0
aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSkKLSAgICAgICAgICAgICAgICBzZXRGb250U2l6ZShm
b250RGVzY3JpcHRpb24sIGZvbnRTaXplRm9yS2V5d29yZChtX2NoZWNrZXIubV9kb2N1bWVudCwg
Q1NTVmFsdWVYeFNtYWxsICsgZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXplKCkgLSAxLCBmYWxz
ZSkpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoaW5pdGlh
bERlc2MuZ2VuZXJpY0ZhbWlseSgpKTsKLSAgICAgICAgICAgIGlmICghaW5pdGlhbERlc2MuZmly
c3RGYW1pbHkoKS5mYW1pbHlJc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldEZhbWlseShpbml0aWFsRGVzYy5maXJzdEZhbWlseSgpKTsKLSAgICAgICAgICAgIGlm
IChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAg
ICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBt
X3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0g
c3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAgICAgICBpbnQgbGVuID0gbGlz
dC0+bGVuZ3RoKCk7Ci0gICAgICAgIEZvbnRGYW1pbHkmIGZpcnN0RmFtaWx5ID0gZm9udERlc2Ny
aXB0aW9uLmZpcnN0RmFtaWx5KCk7Ci0gICAgICAgIEZvbnRGYW1pbHkqIGN1cnJGYW1pbHkgPSAw
OwotICAgICAgICAKLSAgICAgICAgLy8gQmVmb3JlIG1hcHBpbmcgaW4gYSBuZXcgZm9udC1mYW1p
bHkgcHJvcGVydHksIHdlIHNob3VsZCByZXNldCB0aGUgZ2VuZXJpYyBmYW1pbHkuCi0gICAgICAg
IGJvb2wgb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUgPSBmb250RGVzY3JpcHRpb24udXNl
Rml4ZWREZWZhdWx0U2l6ZSgpOwotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0Zh
bWlseShGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5KTsKLQotICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0gICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0
aXZlVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGl0ZW0pOwotICAgICAgICAgICAgQXRvbWljU3RyaW5nIGZhY2U7Ci0gICAgICAgICAgICBT
ZXR0aW5ncyogc2V0dGluZ3MgPSBtX2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKLSAg
ICAgICAgICAgIGlmIChjb250ZW50VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykgewotICAgICAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUt
PmlzRm9udEZhbWlseVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGZhY2UgPSBzdGF0aWNf
Y2FzdDxGb250RmFtaWx5VmFsdWUqPihjb250ZW50VmFsdWUpLT5mYW1pbHlOYW1lKCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQgJiYgc2V0dGluZ3MpIHsKLSAgICAgICAgICAgICAgICBz
d2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlV2Via2l0Qm9keToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBz
ZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNlcmlmOgotICAgICAgICAg
ICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LXNlcmlmIjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6
U2VyaWZGYW1pbHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTYW5zU2VyaWY6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBmYWNlID0gIi13ZWJraXQtc2Fucy1zZXJpZiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlNhbnNTZXJp
ZkZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUN1cnNpdmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNl
ID0gIi13ZWJraXQtY3Vyc2l2ZSI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OkN1cnNpdmVGYW1pbHkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVGYW50YXN5OgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0
LWZhbnRhc3kiOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdl
bmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpGYW50YXN5RmFtaWx5KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTW9u
b3NwYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LW1vbm9zcGFj
ZSI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0Zh
bWlseShGb250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZhbWlseSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmICghZmFjZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWN1cnJG
YW1pbHkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRmlsbGluZyBpbiB0aGUgZmlyc3QgZmFt
aWx5LgotICAgICAgICAgICAgICAgICAgICBmaXJzdEZhbWlseS5zZXRGYW1pbHkoZmFjZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZpcnN0RmFtaWx5LmFwcGVuZEZhbWlseSgwKTsgLy8gUmVtb3Zl
IGFueSBpbmhlcml0ZWQgZmFtaWx5LWZhbGxiYWNrIGxpc3QuCi0gICAgICAgICAgICAgICAgICAg
IGN1cnJGYW1pbHkgPSAmZmlyc3RGYW1pbHk7Ci0gICAgICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRJc1NwZWNpZmllZEZvbnQoZm9udERlc2NyaXB0aW9uLmdlbmVyaWNGYW1pbHko
KSA9PSBGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5KTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkRm9udEZhbWlseT4gbmV3RmFtaWx5
ID0gU2hhcmVkRm9udEZhbWlseTo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0Zh
bWlseS0+c2V0RmFtaWx5KGZhY2UpOwotICAgICAgICAgICAgICAgICAgICBjdXJyRmFtaWx5LT5h
cHBlbmRGYW1pbHkobmV3RmFtaWx5KTsKLSAgICAgICAgICAgICAgICAgICAgY3VyckZhbWlseSA9
IG5ld0ZhbWlseS5nZXQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBXZSBjYW4ndCBjYWxsIHVzZUZpeGVkRGVmYXVsdFNpemUoKSB1
bnRpbCBhbGwgbmV3IGZvbnQgZmFtaWxpZXMgaGF2ZSBiZWVuIGFkZGVkCi0gICAgICAgIC8vIElm
IGN1cnJGYW1pbHkgaXMgbm9uLXplcm8gdGhlbiB3ZSBzZXQgYXQgbGVhc3Qgb25lIGZhbWlseSBv
biB0aGlzIGRlc2NyaXB0aW9uLgotICAgICAgICBpZiAoY3VyckZhbWlseSkgewotICAgICAgICAg
ICAgaWYgKGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpICYmIGZvbnREZXNjcmlwdGlvbi51
c2VGaXhlZERlZmF1bHRTaXplKCkgIT0gb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUpCi0g
ICAgICAgICAgICAgICAgc2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktl
eXdvcmQobV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlWHhTbWFsbCArIGZvbnREZXNjcmlw
dGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwgIW9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXplKSk7
Ci0KLSAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKSkKLSAgICAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRp
b246IHsKLSAgICAgICAgLy8gbGlzdCBvZiBpZGVudAotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTCh0ZXh0RGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb24pCi0gICAgICAgIGludCB0
ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbigpOwotICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25l
KSB7Ci0gICAgICAgICAgICAvLyBkbyBub3RoaW5nCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCAqbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlz
dCo+KHZhbHVlKTsKLSAgICAgICAgICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgQ1NTVmFsdWUgKml0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KGkpOwotICAgICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAgICAg
ICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBURE5P
TkU7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVW5kZXJsaW5lOgot
ICAgICAgICAgICAgICAgICAgICAgICAgdCB8PSBVTkRFUkxJTkU7IGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlT3ZlcmxpbmU6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB0IHw9IE9WRVJMSU5FOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUxpbmVUaHJvdWdoOgotICAgICAgICAgICAgICAgICAgICAgICAgdCB8PSBMSU5FX1RIUk9VR0g7
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQmxpbms6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0IHw9IEJMSU5LOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0eWxlLT5zZXRUZXh0
RGVjb3JhdGlvbih0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJv
cGVydHlab29tOgotICAgIHsKLSAgICAgICAgLy8gUmVzZXQgdGhlIHpvb20gaW4gZWZmZWN0IGJl
Zm9yZSB3ZSBkbyBhbnl0aGluZy4gIFRoaXMgYWxsb3dzIHRoZSBzZXRab29tIG1ldGhvZCB0byBh
Y2N1cmF0ZWx5IGNvbXB1dGUgYSBuZXcKLSAgICAgICAgLy8gem9vbSBpbiBlZmZlY3QuCi0gICAg
ICAgIG1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20obV9wYXJlbnRTdHlsZSA/IG1fcGFyZW50U3R5
bGUtPmVmZmVjdGl2ZVpvb20oKSA6IFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIE5vdyB3ZSBjYW4gaGFuZGxlIGluaGVyaXQgYW5kIGluaXRpYWwuCi0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHpvb20sIFpvb20pCi0gICAgICAgIAot
ICAgICAgICAvLyBIYW5kbGUgbm9ybWFsL3Jlc2V0LCBudW1iZXJzIGFuZCBwZXJjZW50YWdlcy4K
LSAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCi0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsK
LSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVS
ZXNldCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0RWZmZWN0aXZlWm9vbShSZW5kZXJTdHls
ZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRab29tKFJlbmRlclN0
eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZURvY3VtZW50KSB7Ci0gICAgICAgICAgICBmbG9hdCBkb2Na
b29tID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnpvb20oKTsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oZG9jWm9vbSk7Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRab29tKGRvY1pvb20pOwotICAgICAgICB9IGVsc2UgaWYgKHR5cGUg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSB7Ci0gICAgICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRab29tKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkgLyAxMDAuMGYpOwotICAg
ICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsK
LSAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKQotICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldFpvb20ocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUo
KSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLS8vIHNob3J0aGFuZCBwcm9wZXJ0aWVzCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmQ6Ci0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPmNsZWFyQmFja2dyb3VuZExheWVycygpOwotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+aW5oZXJpdEJhY2tncm91bmRM
YXllcnMoKm1fcGFyZW50U3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSk7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRCYWNrZ3JvdW5kQ29sb3IobV9wYXJlbnRTdHlsZS0+YmFja2dyb3VuZENvbG9y
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFzazoKLSAgICAgICAgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmNs
ZWFyTWFza0xheWVycygpOwotICAgICAgICBlbHNlIGlmIChpc0luaGVyaXQpCi0gICAgICAgICAg
ICBtX3N0eWxlLT5pbmhlcml0TWFza0xheWVycygqbV9wYXJlbnRTdHlsZS0+bWFza0xheWVycygp
KTsKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldp
ZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKLSAgICAgICAgaWYgKGlkID09
IENTU1Byb3BlcnR5Qm9yZGVyIHx8IGlkID09IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJUb3BDb2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BDb2xvcigpLmlz
VmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcENvbG9yKCkgOiBtX3BhcmVudFN0eWxl
LT5jb2xvcigpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21Db2xv
cihtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21Db2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50
U3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0Q29sb3IobV9wYXJlbnRTdHlsZS0+
Ym9yZGVyTGVmdENvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdENv
bG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRCb3JkZXJSaWdodENvbG9yKG1fcGFyZW50U3R5bGUtPmJvcmRlclJpZ2h0Q29sb3IoKS5p
c1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodENvbG9yKCk6IG1fcGFyZW50U3R5
bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoaXNJbml0
aWFsKSB7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wQ29sb3IoQ29sb3Io
KSk7IC8vIFJlc2V0IHRvIGludmFsaWQgY29sb3Igc28gY3VycmVudENvbG9yIGlzIHVzZWQgaW5z
dGVhZC4KLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21Db2xvcihDb2xv
cigpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0Q29sb3IoQ29sb3Io
KSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRDb2xvcihDb2xvcigp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVy
dHlCb3JkZXIgfHwgaWQgPT0gQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJv
cmRlclRvcFN0eWxlKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcFN0eWxlKCkpOwotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVN0eWxlKG1fcGFyZW50U3R5bGUtPmJvcmRl
ckJvdHRvbVN0eWxlKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRT
dHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0U3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRTdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodFN0
eWxlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7
Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wU3R5bGUoUmVuZGVyU3R5bGU6
OmluaXRpYWxCb3JkZXJTdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3Jk
ZXJCb3R0b21TdHlsZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlKCkpOwotICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRTdHlsZShSZW5kZXJTdHlsZTo6aW5pdGlh
bEJvcmRlclN0eWxlKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0
U3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSgpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlCb3JkZXIgfHwgaWQgPT0g
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGlzSW5o
ZXJpdCkgewotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKG1fcGFy
ZW50U3R5bGUtPmJvcmRlclRvcFdpZHRoKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEJvcmRlckJvdHRvbVdpZHRoKG1fcGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwot
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRXaWR0aChtX3BhcmVudFN0eWxl
LT5ib3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVy
UmlnaHRXaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0
aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aChSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUt
PnNldEJvcmRlckxlZnRXaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoKCkpOwot
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgoUmVuZGVyU3R5bGU6
OmluaXRpYWxCb3JkZXJXaWR0aCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKLSAgICAgICAgaWYgKGlz
SW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wQ29sb3IobV9wYXJl
bnRTdHlsZS0+Ym9yZGVyVG9wQ29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3Jk
ZXJUb3BDb2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJUb3BTdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKG1fcGFyZW50U3R5bGUtPmJv
cmRlclRvcFdpZHRoKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkK
LSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0Qm9yZGVyVG9wKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6Ci0gICAgICAgIGlmIChpc0luaGVyaXQp
IHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0Q29sb3IobV9wYXJlbnRTdHls
ZS0+Ym9yZGVyUmlnaHRDb2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJvcmRlclJp
Z2h0Q29sb3IoKSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Qm9yZGVyUmlnaHRTdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCkp
OwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRXaWR0aChtX3BhcmVudFN0eWxl
LT5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5p
dGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0Qm9yZGVyUmlnaHQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbUNvbG9yKG1f
cGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHls
ZS0+Ym9yZGVyQm90dG9tQ29sb3IoKSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tU3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVy
Qm90dG9tU3R5bGUoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0
aChtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5yZXNldEJvcmRlckJv
dHRvbSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6
Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRl
ckxlZnRDb2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKS5pc1ZhbGlkKCkgPyBt
X3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkp
OwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdFN0eWxlKG1fcGFyZW50U3R5bGUt
PmJvcmRlckxlZnRTdHlsZSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRX
aWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+cmVzZXRCb3JkZXJM
ZWZ0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgotICAg
ICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5Ub3Ao
bV9wYXJlbnRTdHlsZS0+bWFyZ2luVG9wKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFy
Z2luQm90dG9tKG1fcGFyZW50U3R5bGUtPm1hcmdpbkJvdHRvbSgpKTsKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldE1hcmdpbkxlZnQobV9wYXJlbnRTdHlsZS0+bWFyZ2luTGVmdCgpKTsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldE1hcmdpblJpZ2h0KG1fcGFyZW50U3R5bGUtPm1hcmdpblJpZ2h0
KCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAg
IG1fc3R5bGUtPnJlc2V0TWFyZ2luKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5UGFkZGluZzoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0UGFkZGluZ1RvcChtX3BhcmVudFN0eWxlLT5wYWRkaW5nVG9wKCkpOwotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ0JvdHRvbShtX3BhcmVudFN0eWxlLT5wYWRkaW5nQm90
dG9tKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ0xlZnQobV9wYXJlbnRTdHls
ZS0+cGFkZGluZ0xlZnQoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nUmlnaHQo
bV9wYXJlbnRTdHlsZS0+cGFkZGluZ1JpZ2h0KCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0UGFkZGluZygpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6Ci0gICAgICAgIGlmIChpc0lu
aGVyaXQpIHsKLSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBt
X3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dExpbmVIZWlnaHQobV9wYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIG1f
bGluZUhlaWdodFZhbHVlID0gMDsKLSAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVz
Y3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9
IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBtX2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKLSAgICAg
ICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRp
b24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhh
dmUgc2V0dGluZ3MKLSAgICAgICAgICAgIGlmICghc2V0dGluZ3MpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlv
bjo6U3RhbmRhcmRGYW1pbHkpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRl
cmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOwotICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFVzZVByaW50ZXJGb250KG1fY2hlY2tlci5tX2RvY3VtZW50LT5wcmlu
dGluZygpKTsKLSAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhcmRGb250RmFt
aWx5ID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCktPnN0YW5kYXJkRm9udEZhbWls
eSgpOwotICAgICAgICAgICAgaWYgKCFzdGFuZGFyZEZvbnRGYW1pbHkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuc2V0RmFtaWx5KHN0
YW5kYXJkRm9udEZhbWlseSk7Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0
RmFtaWx5KCkuYXBwZW5kRmFtaWx5KDApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKENTU1ZhbHVlTWVkaXVtIC0gQ1NTVmFsdWVYeFNt
YWxsICsgMSk7Ci0gICAgICAgICAgICBzZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRT
aXplRm9yS2V5d29yZChtX2NoZWNrZXIubV9kb2N1bWVudCwgQ1NTVmFsdWVNZWRpdW0sIGZhbHNl
KSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0
aWFsTGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIG1fbGluZUhlaWdodFZhbHVlID0gMDsKLSAg
ICAgICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9u
KSkKLSAgICAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpbmVIZWlnaHQo
UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwotICAgICAgICAgICAgbV9saW5lSGVp
Z2h0VmFsdWUgPSAwOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uOwotICAgICAgICAgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgp
LT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24p
OwotCi0gICAgICAgICAgICAvLyBEb3VibGUtY2hlY2sgYW5kIHNlZSBpZiB0aGUgdGhlbWUgZGlk
IGFueXRoaW5nLiAgSWYgbm90LCBkb24ndCBib3RoZXIgdXBkYXRpbmcgdGhlIGZvbnQuCi0gICAg
ICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCkpIHsKLSAgICAgICAg
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHJlbmRlcmluZyBtb2RlIGFuZCBwcmludGVyIGZvbnQg
c2V0dGluZ3MgYXJlIHVwZGF0ZWQuCi0gICAgICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdz
ID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKHNldHRpbmdzKTsgLy8gSWYgd2UncmUgZG9pbmcgc3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBk
b2N1bWVudCBzaG91bGQgYWx3YXlzIGJlIGluIGEgZnJhbWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5n
cwotICAgICAgICAgICAgICAgIGlmICghc2V0dGluZ3MpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShz
ZXR0aW5ncy0+Zm9udFJlbmRlcmluZ01vZGUoKSk7Ci0gICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldFVzZVByaW50ZXJGb250KG1fY2hlY2tlci5tX2RvY3VtZW50LT5wcmludGluZygp
KTsKLSAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSB6b29tIGZhY3Rv
ci4KLSAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGdldENv
bXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKG1fY2hlY2tlci5tX2RvY3VtZW50LCBtX3N0eWxl
LmdldCgpLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgZm9udERlc2NyaXB0aW9u
LnNwZWNpZmllZFNpemUoKSwgdXNlU1ZHWm9vbVJ1bGVzKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAg
ICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSBpZiAodmFsdWUtPmlzRm9udFZhbHVlKCkpIHsKLSAgICAgICAgICAgIEZvbnRWYWx1ZSAq
Zm9udCA9IHN0YXRpY19jYXN0PEZvbnRWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgICAgIGlmICgh
Zm9udC0+c3R5bGUgfHwgIWZvbnQtPnZhcmlhbnQgfHwgIWZvbnQtPndlaWdodCB8fAotICAgICAg
ICAgICAgICAgICAhZm9udC0+c2l6ZSB8fCAhZm9udC0+bGluZUhlaWdodCB8fCAhZm9udC0+ZmFt
aWx5KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHko
Q1NTUHJvcGVydHlGb250U3R5bGUsIGZvbnQtPnN0eWxlLmdldCgpKTsKLSAgICAgICAgICAgIGFw
cGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudCwgZm9udC0+dmFyaWFudC5nZXQoKSk7
Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgZm9udC0+
d2VpZ2h0LmdldCgpKTsKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250
U2l6ZSwgZm9udC0+c2l6ZS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIG1fbGluZUhlaWdodFZhbHVl
ID0gZm9udC0+bGluZUhlaWdodC5nZXQoKTsKLQotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRGYW1pbHksIGZvbnQtPmZhbWlseS5nZXQoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgot
ICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5
bGVUeXBlKG1fcGFyZW50U3R5bGUtPmxpc3RTdHlsZVR5cGUoKSk7Ci0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRMaXN0U3R5bGVJbWFnZShtX3BhcmVudFN0eWxlLT5saXN0U3R5bGVJbWFnZSgpKTsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHlsZVBvc2l0aW9uKG1fcGFyZW50U3R5bGUt
Pmxpc3RTdHlsZVBvc2l0aW9uKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5p
dGlhbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlVHlwZShSZW5kZXJTdHls
ZTo6aW5pdGlhbExpc3RTdHlsZVR5cGUoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaXN0
U3R5bGVJbWFnZShSZW5kZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZUltYWdlKCkpOwotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlUG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxM
aXN0U3R5bGVQb3NpdGlvbigpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eU91dGxpbmU6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldE91dGxpbmVXaWR0aChtX3BhcmVudFN0eWxlLT5vdXRsaW5lV2lkdGgo
KSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lQ29sb3IobV9wYXJlbnRTdHlsZS0+
b3V0bGluZUNvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+b3V0bGluZUNvbG9yKCkg
OiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxp
bmVTdHlsZShtX3BhcmVudFN0eWxlLT5vdXRsaW5lU3R5bGUoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+cmVzZXRPdXRsaW5l
KCk7Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIENTUzMgUHJvcGVydGllcwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKGFwcGVhcmFuY2UsIEFwcGVhcmFuY2UpCi0gICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldEFwcGVhcmFu
Y2UoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza0JveEltYWdlOiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSwgYm9yZGVySW1h
Z2UsIEJvcmRlckltYWdlKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgbWFza0JveEltYWdlLCBNYXNrQm94SW1hZ2UpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAg
ICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJJbWFnZSwgQm9yZGVySW1hZ2UsIE5pbmVQaWVjZUltYWdlKQotICAgICAgICAgICAgSEFORExF
X0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBN
YXNrQm94SW1hZ2UsIE5pbmVQaWVjZUltYWdlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2U7Ci0gICAgICAgIG1hcE5pbmVQaWVj
ZUltYWdlKHByb3BlcnR5LCB2YWx1ZSwgaW1hZ2UpOwotICAgICAgICAKLSAgICAgICAgaWYgKGlk
ID09IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UpCi0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRCb3JkZXJJbWFnZShpbWFnZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldE1hc2tCb3hJbWFnZShpbWFnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJSYWRpdXM6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldEJvcmRlclRvcExlZnRSYWRpdXMobV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wTGVmdFJh
ZGl1cygpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKG1f
cGFyZW50U3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkpOwotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21M
ZWZ0UmFkaXVzKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMobV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAg
ICAgICAgbV9zdHlsZS0+cmVzZXRCb3JkZXJSYWRpdXMoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICAvLyBGYWxsIHRocm91Z2gKLSAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyVG9wTGVmdFJhZGl1czoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRS
YWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiB7Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlC
b3JkZXJUb3BMZWZ0UmFkaXVzLCBib3JkZXJUb3BMZWZ0UmFkaXVzLCBCb3JkZXJUb3BMZWZ0UmFk
aXVzKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlclRv
cFJpZ2h0UmFkaXVzLCBib3JkZXJUb3BSaWdodFJhZGl1cywgQm9yZGVyVG9wUmlnaHRSYWRpdXMp
Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
TGVmdFJhZGl1cywgYm9yZGVyQm90dG9tTGVmdFJhZGl1cywgQm9yZGVyQm90dG9tTGVmdFJhZGl1
cykKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21SaWdodFJhZGl1cywgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIEJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhf
VkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBCb3JkZXJUb3BMZWZ0UmFkaXVz
LCBCb3JkZXJSYWRpdXMpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFM
VUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgQm9yZGVyVG9wUmlnaHRSYWRpdXMs
IEJvcmRlclJhZGl1cykKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxV
RShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIEJvcmRlckJvdHRvbUxlZnRSYWRp
dXMsIEJvcmRlclJhZGl1cykKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9W
QUxVRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBCb3JkZXJCb3R0b21SaWdo
dFJhZGl1cywgQm9yZGVyUmFkaXVzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOwotICAgICAg
ICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIExlbmd0aCByYWRpdXNXaWR0aDsKLSAgICAgICAgTGVu
Z3RoIHJhZGl1c0hlaWdodDsKLSAgICAgICAgaWYgKHBhaXItPmZpcnN0KCktPnByaW1pdGl2ZVR5
cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBy
YWRpdXNXaWR0aCA9IExlbmd0aChwYWlyLT5maXJzdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJj
ZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgobWF4
KGludE1pbkZvckxlbmd0aCwgbWluKGludE1heEZvckxlbmd0aCwgcGFpci0+Zmlyc3QoKS0+Y29t
cHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKSks
IEZpeGVkKTsKLSAgICAgICAgaWYgKHBhaXItPnNlY29uZCgpLT5wcmltaXRpdmVUeXBlKCkgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgcmFkaXVzSGVp
Z2h0ID0gTGVuZ3RoKHBhaXItPnNlY29uZCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKG1heChpbnRN
aW5Gb3JMZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPnNlY29uZCgpLT5jb21wdXRl
TGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpKSwgRml4
ZWQpOwotICAgICAgICBpbnQgd2lkdGggPSByYWRpdXNXaWR0aC5yYXdWYWx1ZSgpOwotICAgICAg
ICBpbnQgaGVpZ2h0ID0gcmFkaXVzSGVpZ2h0LnJhd1ZhbHVlKCk7Ci0gICAgICAgIGlmICh3aWR0
aCA8IDAgfHwgaGVpZ2h0IDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHdp
ZHRoID09IDApCi0gICAgICAgICAgICByYWRpdXNIZWlnaHQgPSByYWRpdXNXaWR0aDsgLy8gTnVs
bCBvdXQgdGhlIG90aGVyIHZhbHVlLgotICAgICAgICBlbHNlIGlmIChoZWlnaHQgPT0gMCkKLSAg
ICAgICAgICAgIHJhZGl1c1dpZHRoID0gcmFkaXVzSGVpZ2h0OyAvLyBOdWxsIG91dCB0aGUgb3Ro
ZXIgdmFsdWUuCi0KLSAgICAgICAgTGVuZ3RoU2l6ZSBzaXplKHJhZGl1c1dpZHRoLCByYWRpdXNI
ZWlnaHQpOwotICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3Jk
ZXJUb3BMZWZ0UmFkaXVzKHNpemUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKHNpemUpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRp
dXM6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhz
aXplKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRC
b3JkZXJCb3R0b21SaWdodFJhZGl1cyhzaXplKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmFk
aXVzKHNpemUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZU9mZnNldDoKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwob3V0bGluZU9mZnNldCwgT3V0bGluZU9mZnNl
dCkKLSAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZU9mZnNldChwcmltaXRpdmVWYWx1ZS0+Y29t
cHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiB7Ci0g
ICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVz
Y3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgCi0gICAgICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0VGV4dFJlbmRlcmluZ01vZGUobV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCkudGV4dFJlbmRlcmluZ01vZGUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkK
LSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRUZXh0UmVuZGVyaW5nTW9kZShBdXRvVGV4
dFJlbmRlcmluZyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0VGV4dFJlbmRlcmluZ01vZGUoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0g
ICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRTaGFkb3c6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNo
YWRvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93OiB7Ci0gICAgICAgIGlm
IChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFk
b3cpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fc3R5bGUtPnNldFRleHRTaGFkb3cobV9wYXJl
bnRTdHlsZS0+dGV4dFNoYWRvdygpID8gbmV3IFNoYWRvd0RhdGEoKm1fcGFyZW50U3R5bGUtPnRl
eHRTaGFkb3coKSkgOiAwKTsKLSAgICAgICAgICAgIHJldHVybiBtX3N0eWxlLT5zZXRCb3hTaGFk
b3cobV9wYXJlbnRTdHlsZS0+Ym94U2hhZG93KCkgPyBuZXcgU2hhZG93RGF0YSgqbV9wYXJlbnRT
dHlsZS0+Ym94U2hhZG93KCkpIDogMCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW5pdGlh
bCB8fCBwcmltaXRpdmVWYWx1ZSkgLy8gaW5pdGlhbCB8IG5vbmUKLSAgICAgICAgICAgIHJldHVy
biBpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cgPyBtX3N0eWxlLT5zZXRUZXh0U2hhZG93KDAp
IDogbV9zdHlsZS0+c2V0Qm94U2hhZG93KDApOwotCi0gICAgICAgIGlmICghdmFsdWUtPmlzVmFs
dWVMaXN0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQ1NTVmFsdWVMaXN0ICps
aXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAgICAgICBpbnQgbGVu
ID0gbGlzdC0+bGVuZ3RoKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKysp
IHsKLSAgICAgICAgICAgIENTU1ZhbHVlKiBjdXJyVmFsdWUgPSBsaXN0LT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzU2hhZG93VmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIFNoYWRvd1ZhbHVlKiBp
dGVtID0gc3RhdGljX2Nhc3Q8U2hhZG93VmFsdWUqPihsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKGkpKTsKLSAgICAgICAgICAgIGludCB4ID0gaXRlbS0+eC0+Y29tcHV0ZUxlbmd0aEludChz
dHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgaW50
IHkgPSBpdGVtLT55LT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBpbnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVt
LT5ibHVyLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9v
bUZhY3RvcikgOiAwOwotICAgICAgICAgICAgaW50IHNwcmVhZCA9IGl0ZW0tPnNwcmVhZCA/IGl0
ZW0tPnNwcmVhZC0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUs
IHpvb21GYWN0b3IpIDogMDsKLSAgICAgICAgICAgIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlID0g
aXRlbS0+c3R5bGUgJiYgaXRlbS0+c3R5bGUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnNldCA/
IEluc2V0IDogTm9ybWFsOwotICAgICAgICAgICAgQ29sb3IgY29sb3I7Ci0gICAgICAgICAgICBp
ZiAoaXRlbS0+Y29sb3IpCi0gICAgICAgICAgICAgICAgY29sb3IgPSBnZXRDb2xvckZyb21Qcmlt
aXRpdmVWYWx1ZShpdGVtLT5jb2xvci5nZXQoKSk7Ci0gICAgICAgICAgICBTaGFkb3dEYXRhKiBz
aGFkb3dEYXRhID0gbmV3IFNoYWRvd0RhdGEoeCwgeSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHls
ZSwgaWQgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNv
bG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9w
ZXJ0eVRleHRTaGFkb3cpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dFNoYWRvdyhz
aGFkb3dEYXRhLCBpICE9IDApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldEJveFNoYWRvdyhzaGFkb3dEYXRhLCBpICE9IDApOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6
IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94UmVmbGVjdCwgQm94UmVm
bGVjdCkKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRCb3hSZWZsZWN0KFJlbmRlclN0eWxlOjppbml0aWFsQm94UmVmbGVjdCgpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKCF2YWx1ZS0+
aXNSZWZsZWN0VmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBDU1NSZWZs
ZWN0VmFsdWUqIHJlZmxlY3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZh
bHVlKTsKLSAgICAgICAgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gcmVmbGVjdGlvbiA9IFN0eWxl
UmVmbGVjdGlvbjo6Y3JlYXRlKCk7Ci0gICAgICAgIHJlZmxlY3Rpb24tPnNldERpcmVjdGlvbihy
ZWZsZWN0VmFsdWUtPmRpcmVjdGlvbigpKTsKLSAgICAgICAgaWYgKHJlZmxlY3RWYWx1ZS0+b2Zm
c2V0KCkpIHsKLSAgICAgICAgICAgIGludCB0eXBlID0gcmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+
cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE9mZnNl
dChMZW5ndGgocmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE9m
ZnNldChMZW5ndGgocmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+Y29tcHV0ZUxlbmd0aEludEZvckxl
bmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCkpOwot
ICAgICAgICB9Ci0gICAgICAgIE5pbmVQaWVjZUltYWdlIG1hc2s7Ci0gICAgICAgIG1hcE5pbmVQ
aWVjZUltYWdlKHByb3BlcnR5LCByZWZsZWN0VmFsdWUtPm1hc2soKSwgbWFzayk7Ci0gICAgICAg
IHJlZmxlY3Rpb24tPnNldE1hc2sobWFzayk7Ci0gICAgICAgIAotICAgICAgICBtX3N0eWxlLT5z
ZXRCb3hSZWZsZWN0KHJlZmxlY3Rpb24ucmVsZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0eToKLSAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUwob3BhY2l0eSwgT3BhY2l0eSkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSB8fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgcmV0dXJuOyAvLyBFcnJvciBjYXNlLgotICAgICAg
ICAvLyBDbGFtcCBvcGFjaXR5IHRvIHRoZSByYW5nZSAwLTEKLSAgICAgICAgbV9zdHlsZS0+c2V0
T3BhY2l0eShtaW4oMS4wZiwgbWF4KDAuMGYsIHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVl
KCkpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxp
Z246Ci0gICAgewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hBbGlnbiwg
Qm94QWxpZ24pCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIEVCb3hBbGlnbm1lbnQgYm94QWxpZ25tZW50ID0gKnByaW1pdGl2ZVZhbHVl
OwotICAgICAgICBpZiAoYm94QWxpZ25tZW50ICE9IEJKVVNUSUZZKQotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Qm94QWxpZ24oYm94QWxpZ25tZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAvLyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxl
cy4KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6IC8v
IE9ubHkgdXNlZCBpbiBAZm9udC1mYWNlIHJ1bGVzLgotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKLSAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwoYmFja2ZhY2VWaXNpYmlsaXR5LCBCYWNrZmFjZVZpc2liaWxpdHkp
Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJh
Y2tmYWNlVmlzaWJpbGl0eSgocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVW
aXNpYmxlKSA/IEJhY2tmYWNlVmlzaWJpbGl0eVZpc2libGUgOiBCYWNrZmFjZVZpc2liaWxpdHlI
aWRkZW4pOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERp
cmVjdGlvbjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElW
RShib3hEaXJlY3Rpb24sIEJveERpcmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUxfQU5EX1BSSU1JVElWRShib3hMaW5lcywgQm94TGluZXMpCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGJveE9yaWVudCwgQm94T3JpZW50KQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6Ci0gICAgewot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hQYWNrLCBCb3hQYWNrKQotICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBF
Qm94QWxpZ25tZW50IGJveFBhY2sgPSAqcHJpbWl0aXZlVmFsdWU7Ci0gICAgICAgIGlmIChib3hQ
YWNrICE9IEJTVFJFVENIICYmIGJveFBhY2sgIT0gQkJBU0VMSU5FKQotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Qm94UGFjayhib3hQYWNrKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwoYm94RmxleCwgQm94RmxleCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8
fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKQotICAgICAgICAgICAgcmV0dXJuOyAvLyBFcnJvciBjYXNlLgotICAgICAgICBt
X3N0eWxlLT5zZXRCb3hGbGV4KHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cDoKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94RmxleEdyb3VwLCBCb3hGbGV4R3Jv
dXApCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1p
dGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAg
IHJldHVybjsgLy8gRXJyb3IgY2FzZS4KLSAgICAgICAgbV9zdHlsZS0+c2V0Qm94RmxleEdyb3Vw
KCh1bnNpZ25lZCBpbnQpKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hPcmRpbmFsR3JvdXAsIEJveE9y
ZGluYWxHcm91cCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVWYWx1
ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAg
ICAgICAgICAgcmV0dXJuOyAvLyBFcnJvciBjYXNlLgotICAgICAgICBtX3N0eWxlLT5zZXRCb3hP
cmRpbmFsR3JvdXAoKHVuc2lnbmVkIGludCkocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVl
KCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJveFNpemluZywgQm94U2l6aW5nKQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb250ZW50Qm94KQot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm94U2l6aW5nKENPTlRFTlRfQk9YKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm94U2l6aW5nKEJPUkRFUl9CT1gpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50OiB7Ci0g
ICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChtX3BhcmVudFN0eWxlLT5o
YXNBdXRvQ29sdW1uQ291bnQoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNBdXRv
Q29sdW1uQ291bnQoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRDb2x1bW5Db3VudChtX3BhcmVudFN0eWxlLT5jb2x1bW5Db3VudCgpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRIYXNBdXRvQ29sdW1uQ291bnQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5Db3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9y
dD4ocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2FwOiB7Ci0gICAgICAgIGlm
IChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChtX3BhcmVudFN0eWxlLT5oYXNOb3JtYWxD
b2x1bW5HYXAoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNOb3JtYWxDb2x1bW5H
YXAoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1
bW5HYXAobV9wYXJlbnRTdHlsZS0+Y29sdW1uR2FwKCkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZU5vcm1hbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzTm9ybWFs
Q29sdW1uR2FwKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9z
dHlsZS0+c2V0Q29sdW1uR2FwKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW46IHsKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoY29sdW1uU3BhbiwgQ29sdW1uU3BhbikKLSAgICAg
ICAgbV9zdHlsZS0+c2V0Q29sdW1uU3BhbihwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZUFsbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbldpZHRoOiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIGlmIChtX3BhcmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uV2lkdGgoKSkKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5XaWR0aChtX3BhcmVudFN0eWxlLT5j
b2x1bW5XaWR0aCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChp
c0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKSB7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5XaWR0aChw
cmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRT
dHlsZSwgem9vbUZhY3RvcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShjb2x1bW5SdWxlU3R5bGUsIENvbHVt
blJ1bGVTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShjb2x1bW5CcmVha0JlZm9yZSwgQ29s
dW1uQnJlYWtCZWZvcmUsIFBhZ2VCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoY29sdW1uQnJlYWtBZnRlciwgQ29s
dW1uQnJlYWtBZnRlciwgUGFnZUJyZWFrKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMX1dJVEhfVkFMVUUoY29sdW1uQnJlYWtJbnNpZGUsIENvbHVtbkJyZWFrSW5z
aWRlLCBQYWdlQnJlYWspCi0gICAgICAgIEVQYWdlQnJlYWsgcGIgPSAqcHJpbWl0aXZlVmFsdWU7
Ci0gICAgICAgIGlmIChwYiAhPSBQQkFMV0FZUykKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENv
bHVtbkJyZWFrSW5zaWRlKHBiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVDb2xvcihtX3BhcmVudFN0eWxlLT5jb2x1
bW5SdWxlQ29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5jb2x1bW5SdWxlQ29sb3Io
KSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29s
dW1uUnVsZVN0eWxlKG1fcGFyZW50U3R5bGUtPmNvbHVtblJ1bGVTdHlsZSgpKTsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVXaWR0aChtX3BhcmVudFN0eWxlLT5jb2x1bW5SdWxl
V2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAg
ICAgICAgbV9zdHlsZS0+cmVzZXRDb2x1bW5SdWxlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uczoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewot
ICAgICAgICAgICAgaWYgKG1fcGFyZW50U3R5bGUtPmhhc0F1dG9Db2x1bW5XaWR0aCgpKQotICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtbldpZHRoKG1fcGFyZW50
U3R5bGUtPmNvbHVtbldpZHRoKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uQ291
bnQobV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291bnQoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJ
bml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtbkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFs
Q29sdW1uQ291bnQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlOgotICAgICAgICBpZiAodmFsdWVUeXBlICE9IENTU1ZhbHVl
OjpDU1NfSU5IRVJJVCB8fCAhbV9wYXJlbnROb2RlKSByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUt
PnNldE1hcnF1ZWVEaXJlY3Rpb24obV9wYXJlbnRTdHlsZS0+bWFycXVlZURpcmVjdGlvbigpKTsK
LSAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChtX3BhcmVudFN0eWxlLT5tYXJx
dWVlSW5jcmVtZW50KCkpOwotICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQobV9wYXJl
bnRTdHlsZS0+bWFycXVlZVNwZWVkKCkpOwotICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9v
cENvdW50KG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVMb29wQ291bnQoKSk7Ci0gICAgICAgIG1fc3R5
bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihtX3BhcmVudFN0eWxlLT5tYXJxdWVlQmVoYXZpb3IoKSk7
Ci0gICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoV0NTUykKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2FwTWFycXVlZUxvb3A6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZVJlcGV0aXRpb246IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVl
ZUxvb3BDb3VudCwgTWFycXVlZUxvb3BDb3VudCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlSW5maW5pdGUpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJx
dWVlTG9vcENvdW50KC0xKTsgLy8gLTEgbWVhbnMgcmVwZWF0IGZvcmV2ZXIuCi0gICAgICAgIGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50
KHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNpZiBFTkFCTEUoV0NTUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkOgot
I2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZDogewotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlU3BlZWQsIE1hcnF1ZWVTcGVlZCkg
ICAgICAKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVNsb3c6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVT
cGVlZCg1MDApOyAvLyA1MDAgbXNlYy4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0TWFycXVlZVNwZWVkKDg1KTsgLy8gODVtc2VjLiBUaGUgV2luSUUgZGVmYXVsdC4K
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUZhc3Q6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZCgxMCk7
IC8vIDEwbXNlYy4gU3VwZXIgZmFzdC4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpCi0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoMTAwMCAqIHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1
ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01TKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFy
cXVlZVNwZWVkKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKLSAgICAgICAgZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUikgLy8gRm9yIHNjcm9sbGFtb3VudCBzdXBwb3J0LgotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0TWFycXVlZVNwZWVkKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUlu
Y3JlbWVudDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlSW5j
cmVtZW50LCBNYXJxdWVlSW5jcmVtZW50KQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsK
LSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGw6Ci0gICAgICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoKDEsIEZpeGVkKSk7IC8vIDFweC4K
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZU5vcm1hbDoKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVu
dChMZW5ndGgoNiwgRml4ZWQpKTsgLy8gNnB4LiBUaGUgV2luSUUgZGVmYXVsdC4KLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlOgot
ICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgz
NiwgRml4ZWQpKTsgLy8gMzZweC4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBib29sIG9rID0g
dHJ1ZTsKLSAgICAgICAgICAgIExlbmd0aCBsID0gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZh
bHVlLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIDEsICZvayk7Ci0gICAgICAgICAgICBp
ZiAob2spCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChsKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShXQ1NTKQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3R5bGU6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9BTkRfUFJJTUlUSVZFKG1hcnF1ZWVCZWhhdmlvciwgTWFycXVlZUJlaGF2aW9yKSAgICAg
IAotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKFdDU1MpCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdhcE1hcnF1ZWVEaXI6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1hcnF1
ZWVEaXJlY3Rpb24sIE1hcnF1ZWVEaXJlY3Rpb24pCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUx0
cjoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1SSUdIVCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlUnRsOgot
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24oTUxFRlQpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
OwotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobWFycXVlZURp
cmVjdGlvbiwgTWFycXVlZURpcmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRVc2VyRHJhZzoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUxfQU5EX1BSSU1JVElWRSh1c2VyRHJhZywgVXNlckRyYWcpICAgICAgCi0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeToKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh1c2VyTW9kaWZ5LCBVc2VyTW9kaWZ5
KSAgICAgIAotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJT
ZWxlY3Q6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUo
dXNlclNlbGVjdCwgVXNlclNlbGVjdCkgICAgICAKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzogewotICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGlz
IHN1cHBvcnRlZCBieSBXaW5JRSwgYW5kIHNvIHdlIGxlYXZlIG9mZiB0aGUgIi13ZWJraXQtIiBp
biBvcmRlciB0bwotICAgICAgICAvLyB3b3JrIHdpdGggV2luSUUtc3BlY2lmaWMgcGFnZXMgdGhh
dCB1c2UgdGhlIHByb3BlcnR5LgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0
ZXh0T3ZlcmZsb3csIFRleHRPdmVyZmxvdykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8
fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIG1fc3R5bGUtPnNldFRleHRPdmVyZmxvdyhwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUVsbGlwc2lzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2U6IHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkg
ewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UobV9wYXJlbnRT
dHlsZS0+bWFyZ2luQmVmb3JlQ29sbGFwc2UoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRN
YXJnaW5BZnRlckNvbGxhcHNlKG1fcGFyZW50U3R5bGUtPm1hcmdpbkFmdGVyQ29sbGFwc2UoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRNYXJnaW5CZWZvcmVDb2xsYXBzZShNQ09MTEFQU0UpOwotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShNQ09MTEFQU0UpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxh
cHNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG1h
cmdpbkJlZm9yZUNvbGxhcHNlLCBNYXJnaW5CZWZvcmVDb2xsYXBzZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZToKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShtYXJnaW5BZnRlckNvbGxhcHNlLCBN
YXJnaW5BZnRlckNvbGxhcHNlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVDbGFtcDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChs
aW5lQ2xhbXAsIExpbmVDbGFtcCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZShw
cmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
LCBMaW5lQ2xhbXBMaW5lQ291bnQpKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaW5l
Q2xhbXAoTGluZUNsYW1wVmFsdWUocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIExpbmVDbGFtcFBlcmNlbnRhZ2UpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0OiB7
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGhpZ2hsaWdodCwgSGlnaGxpZ2h0
KTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9u
ZSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhpZ2hsaWdodChudWxsQXRvbSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhpZ2hsaWdodChwcmltaXRpdmVWYWx1ZS0+
Z2V0U3RyaW5nVmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEh5cGhlbnM6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwoaHlwaGVucywgSHlwaGVucyk7Ci0gICAgICAgIG1fc3R5bGUtPnNldEh5cGhlbnMoKnByaW1p
dGl2ZVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKGh5cGhlbmF0aW9uU3RyaW5nLCBIeXBoZW5hdGlvblN0cmluZyk7Ci0gICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRIeXBoZW5hdGlvblN0cmluZyhudWxsQXRvbSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldEh5cGhlbmF0aW9uU3RyaW5nKHByaW1pdGl2ZVZhbHVl
LT5nZXRTdHJpbmdWYWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9jYWxlOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKGh5cGhlbmF0aW9uTG9jYWxlLCBIeXBoZW5hdGlvbkxvY2FsZSk7Ci0gICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAg
ICAgICAgICBtX3N0eWxlLT5zZXRIeXBoZW5hdGlvbkxvY2FsZShudWxsQXRvbSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEh5cGhlbmF0aW9uTG9jYWxlKHByaW1pdGl2
ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKGJvcmRlckZpdCwgQm9yZGVyRml0KTsKLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQm9yZGVyKQotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Qm9yZGVyRml0KEJvcmRlckZpdEJvcmRlcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlckZpdChCb3JkZXJGaXRMaW5lcyk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0OiB7Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRTaXplQWRqdXN0LCBUZXh0U2l6
ZUFkanVzdCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0VGV4dFNpemVBZGp1c3Qo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgbV9m
b250RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U2VjdXJpdHk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMX0FORF9QUklNSVRJVkUodGV4dFNlY3VyaXR5LCBUZXh0U2VjdXJpdHkpCi0gICAgICAgIHJl
dHVybjsKLQotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKGRhc2hib2FyZFJlZ2lvbnMsIERhc2hib2FyZFJlZ2lvbnMpCi0gICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0RGFzaGJvYXJkUmVnaW9ucyhSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lv
bnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBEYXNoYm9h
cmRSZWdpb24gKnJlZ2lvbiA9IHByaW1pdGl2ZVZhbHVlLT5nZXREYXNoYm9hcmRSZWdpb25WYWx1
ZSgpOwotICAgICAgICBpZiAoIXJlZ2lvbikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIAotICAgICAgICBEYXNoYm9hcmRSZWdpb24gKmZpcnN0ID0gcmVnaW9uOwotICAgICAgICB3
aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgICAgICBMZW5ndGggdG9wID0gY29udmVydFRvTGVuZ3Ro
KHJlZ2lvbi0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAg
ICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZl
cnRUb0xlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUp
OwotICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5sZWZ0
KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9u
LT5tX2lzQ2lyY2xlKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lv
bihTdHlsZURhc2hib2FyZFJlZ2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmln
aHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAgICBt
X3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3Rhbmds
ZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBm
aXJzdCA/IGZhbHNlIDogdHJ1ZSk7Ci0gICAgICAgICAgICByZWdpb24gPSByZWdpb24tPm1fbmV4
dC5nZXQoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9lbGVtZW50LT5kb2N1bWVu
dCgpLT5zZXRIYXNEYXNoYm9hcmRSZWdpb25zKHRydWUpOwotICAgICAgICAKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSNlbmRpZiAgICAgICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0
bE9yZGVyaW5nOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2aXN1YWxseU9y
ZGVyZWQsIFZpc3VhbGx5T3JkZXJlZCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCAh
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IG1fc3R5bGUtPnNldFZpc3VhbGx5T3JkZXJlZChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZVZpc3VhbCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZVdpZHRoOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKHRleHRTdHJva2VXaWR0aCwgVGV4dFN0cm9rZVdpZHRoKQotICAgICAgICBmbG9hdCB3aWR0
aCA9IDA7Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUaGluOgotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU1l
ZGl1bToKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUaGljazogewotICAgICAgICAgICAgICAg
IGRvdWJsZSByZXN1bHQgPSAxLjAgLyA0ODsKLSAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNZWRpdW0pCi0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdCAqPSAzOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlVGhpY2spCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCAq
PSA1OwotICAgICAgICAgICAgICAgIHdpZHRoID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShy
ZXN1bHQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKS0+Y29tcHV0ZUxlbmd0aEZsb2F0KHN0
eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBt
X3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUtPnNldFRleHRTdHJva2VXaWR0aCh3aWR0aCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm0sIFRyYW5z
Zm9ybSk7Ci0gICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKLSAgICAgICAg
Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0
eWxlLCBvcGVyYXRpb25zKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtKG9wZXJhdGlv
bnMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW46Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5z
Zm9ybU9yaWdpblgsIFRyYW5zZm9ybU9yaWdpblgpCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKHRyYW5zZm9ybU9yaWdpblksIFRyYW5zZm9ybU9yaWdpblkpCi0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5zZm9ybU9yaWdpblosIFRyYW5zZm9ybU9yaWdp
blopCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1P
cmlnaW5YLCBUcmFuc2Zvcm1PcmlnaW5YKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBMZW5ndGggbDsKLSAgICAgICAgaW50IHR5cGUg
PSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAoQ1NTUHJpbWl0
aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICBsID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvciksIEZpeGVkKTsKLSAgICAgICAgZWxzZSBpZiAodHlw
ZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBsID0g
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRUcmFuc2Zv
cm1PcmlnaW5YKGwpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybU9yaWdpblk6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwodHJhbnNmb3JtT3JpZ2luWSwgVHJhbnNmb3JtT3JpZ2luWSkKLSAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgTGVuZ3RoIGw7Ci0g
ICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAg
ICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAg
ICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0
aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0gICAg
ICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQot
ICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwg
UGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9z
dHlsZS0+c2V0VHJhbnNmb3JtT3JpZ2luWShsKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aOiB7Ci0gICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5zZm9ybU9yaWdpblosIFRyYW5zZm9ybU9yaWdpblop
Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGZsb2F0IGY7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3Ro
KHR5cGUpKQotICAgICAgICAgICAgZiA9IHN0YXRpY19jYXN0PGZsb2F0PihwcmltaXRpdmVWYWx1
ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5z
ZXRUcmFuc2Zvcm1PcmlnaW5aKGYpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTCh0cmFuc2Zvcm1TdHlsZTNELCBUcmFuc2Zvcm1TdHlsZTNEKQotICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUcmFuc2Zvcm1TdHls
ZTNEKChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpID8g
VHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0QgOiBUcmFuc2Zvcm1TdHlsZTNERmxhdCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6IHsKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmUsIFBlcnNwZWN0aXZl
KQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVOb25lKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRQZXJzcGVjdGl2
ZSgwKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
ZmxvYXQgcGVyc3BlY3RpdmVWYWx1ZTsKLSAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1
ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5p
dFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0
eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwotICAgICAgICBlbHNlIGlm
ICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7Ci0gICAgICAgICAgICAv
LyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdHJlYXQgdmFsdWVsZXNzIG51bWJlcnMgYXMg
cHguCi0gICAgICAgICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QWCktPmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUs
IHpvb21GYWN0b3IpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBpZiAocGVyc3BlY3RpdmVWYWx1ZSA+PSAwLjBmKQotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luOgotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwZXJzcGVjdGl2ZU9yaWdpblgsIFBlcnNwZWN0aXZl
T3JpZ2luWCkKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmVP
cmlnaW5ZLCBQZXJzcGVjdGl2ZU9yaWdpblkpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlT3JpZ2luWCwgUGVyc3BlY3RpdmVPcmlnaW5YKQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBMZW5ndGggbDsKLSAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpOwotICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgo
dHlwZSkpCi0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVu
Z3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvciks
IEZpeGVkKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXRE
b3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBtX3N0eWxlLT5zZXRQZXJzcGVjdGl2ZU9yaWdpblgobCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2lu
WTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwZXJzcGVjdGl2ZU9yaWdp
blksIFBlcnNwZWN0aXZlT3JpZ2luWSkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAgIGludCB0eXBlID0g
cHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2
ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgbCA9IExlbmd0aChw
cmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgbCA9IExl
bmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0UGVyc3BlY3Rp
dmVPcmlnaW5ZKGwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb246Ci0gICAgICAgIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBt
X3N0eWxlLT5jbGVhckFuaW1hdGlvbnMoKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbmhlcml0KQot
ICAgICAgICAgICAgbV9zdHlsZS0+aW5oZXJpdEFuaW1hdGlvbnMobV9wYXJlbnRTdHlsZS0+YW5p
bWF0aW9ucygpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EZWxheToKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRShkZWxheSwgRGVs
YXksIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkRpcmVjdGlvbjoKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRShkaXJlY3Rp
b24sIERpcmVjdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb246Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFM
VUUoZHVyYXRpb24sIER1cmF0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZToKLSAgICAgICAgSEFORExFX0FOSU1B
VElPTl9WQUxVRShmaWxsTW9kZSwgRmlsbE1vZGUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgotICAgICAg
ICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGl0ZXJhdGlvbkNvdW50LCBJdGVyYXRpb25Db3VudCwg
dmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uTmFtZToKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRShuYW1lLCBOYW1lLCB2YWx1
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25Q
bGF5U3RhdGU6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUocGxheVN0YXRlLCBQbGF5
U3RhdGUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVF
KHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKLSAgICAgICAgaWYgKGlzSW5p
dGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmNsZWFyVHJhbnNpdGlvbnMoKTsKLSAgICAgICAg
ZWxzZSBpZiAoaXNJbmhlcml0KQotICAgICAgICAgICAgbV9zdHlsZS0+aW5oZXJpdFRyYW5zaXRp
b25zKG1fcGFyZW50U3R5bGUtPnRyYW5zaXRpb25zKCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheToKLSAgICAgICAgSEFORExFX1RS
QU5TSVRJT05fVkFMVUUoZGVsYXksIERlbGF5LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb246Ci0gICAgICAgIEhBTkRM
RV9UUkFOU0lUSU9OX1ZBTFVFKGR1cmF0aW9uLCBEdXJhdGlvbiwgdmFsdWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5OgotICAg
ICAgICBIQU5ETEVfVFJBTlNJVElPTl9WQUxVRShwcm9wZXJ0eSwgUHJvcGVydHksIHZhbHVlKQot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1p
bmdGdW5jdGlvbjoKLSAgICAgICAgSEFORExFX1RSQU5TSVRJT05fVkFMVUUodGltaW5nRnVuY3Rp
b24sIFRpbWluZ0Z1bmN0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlQb2ludGVyRXZlbnRzOgotICAgIHsKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCi0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS82NTYxMDc3PiBXb3JrIGFyb3VuZCB0aGUg
U3RvY2tzIHdpZGdldCdzIG1pc3VzZSBvZiB0aGUKLSAgICAgICAgLy8gcG9pbnRlci1ldmVudHMg
cHJvcGVydHkgYnkgbm90IGFwcGx5aW5nIGl0IGluIERhc2hib2FyZC4KLSAgICAgICAgU2V0dGlu
Z3MqIHNldHRpbmdzID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7Ci0gICAgICAg
IGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJp
bGl0eU1vZGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTChwb2ludGVyRXZlbnRzLCBQb2ludGVyRXZlbnRzKQotICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0
eWxlLT5zZXRQb2ludGVyRXZlbnRzKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKLSAgICAg
ICAgaWYgKGlzSW5oZXJpdCkgCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2xvclNwYWNlKG1f
cGFyZW50U3R5bGUtPmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2xvclNwYWNlKCpw
cmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlTaXplOgotICAgICAgICBhcHBseVBhZ2VTaXplUHJvcGVydHkodmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChzcGVhaywgU3BlYWspOwotICAgICAgICBpZiAoIXBy
aW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRT
cGVhaygqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAg
ICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRGly
ZWN0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVzb2x2ZWQgYnkgcmVzb2x2ZURpcmVjdGlvbkF3YXJl
UHJvcGVydHkoKSBiZWZvcmUgdGhlIHN3aXRjaC4KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZToKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xv
cjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGU6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXJDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aDoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luRW5kOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5T
dGFydDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
UGFkZGluZ0VuZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0OgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRQYWRkaW5nQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxX
aWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodDoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNaW5Mb2dpY2FsSGVpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dp
Y2FsV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQ6Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250U3RyZXRjaDoKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFnZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5UXVvdGVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91
Z2g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9yOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
TGluZVRocm91Z2hTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lk
dGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dE92ZXJsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1v
ZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVy
bGluZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVu
ZGVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGE6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6
Ci0gICAgICAgIHJldHVybjsKLSNpZiBFTkFCTEUoV0NTUykKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2FwSW5wdXRGb3JtYXQ6Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBtX2VsZW1lbnQt
Pmhhc1RhZ05hbWUoV2ViQ29yZTo6aW5wdXRUYWcpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWFz
ayA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG1fZWxlbWVudCktPnNldFdhcElucHV0Rm9ybWF0KG1h
c2spOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
YXBJbnB1dFJlcXVpcmVkOgotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgbV9lbGVtZW50
LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG1f
ZWxlbWVudCk7Ci0gICAgICAgICAgICBib29sIHJlcXVpcmVkID0gcHJpbWl0aXZlVmFsdWUtPmdl
dFN0cmluZ1ZhbHVlKCkgPT0gInRydWUiOwotICAgICAgICAgICAgZWxlbWVudC0+c2V0UmVxdWly
ZWQocmVxdWlyZWQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZiAKLQotICAg
IC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBw
b3J0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOiB7Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUod3JpdGluZ01vZGUsIFdyaXRp
bmdNb2RlKQotICAgICAgICBpZiAoIWlzSW5oZXJpdCAmJiAhaXNJbml0aWFsICYmIG1fZWxlbWVu
dCAmJiBtX2VsZW1lbnQgPT0gbV9lbGVtZW50LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KSkKLSAgICAgICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0V3JpdGluZ01vZGVTZXRP
bkRvY3VtZW50RWxlbWVudCh0cnVlKTsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNj
cmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0T3JpZW50YXRpb24obV9zdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7Ci0gICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVz
Y3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1
ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0Q29tYmluZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1J
VElWRSh0ZXh0Q29tYmluZSwgVGV4dENvbWJpbmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbjoKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh0ZXh0RW1waGFzaXNQb3NpdGlvbiwg
VGV4dEVtcGhhc2lzUG9zaXRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwodGV4dEVtcGhhc2lzRmlsbCwgVGV4dEVtcGhhc2lzRmlsbCkKLSAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dEVtcGhhc2lzTWFyaywgVGV4dEVtcGhhc2lzTWFy
aykKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dEVtcGhhc2lzQ3VzdG9t
TWFyaywgVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaykKLSAgICAgICAgaWYgKGlzSW5oZXJpdCB8fCBp
c0luaXRpYWwpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHZhbHVlLT5pc1Zh
bHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgICAgICAgICBBU1NFUlQobGlzdC0+bGVuZ3Ro
KCkgPT0gMik7Ci0gICAgICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkgIT0gMikKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSktPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihsaXN0LT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgdmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVP
cGVuKQotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2
YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRUZXh0RW1waGFzaXNNYXJrKCp2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51bGxBdG9tKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRp
dmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpIHsKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtD
dXN0b20pOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhw
cmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51
bGxBdG9tKTsKLQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVGaWxsZWQgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVPcGVu
KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKCpwcmltaXRpdmVW
YWx1ZSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBo
YXNpc01hcmtBdXRvKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0K
LQotICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFCTEUoU1ZHKQotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIC8vIFRyeSB0aGUgU1ZHIHByb3BlcnRpZXMKLSAgICAgICAgYXBwbHlTVkdQcm9wZXJ0eShp
ZCwgdmFsdWUpOwotI2VuZGlmCi0gICAgfQotfQotCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UGFnZVNpemVQcm9wZXJ0eShDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgbV9zdHlsZS0+cmVz
ZXRQYWdlU2l6ZVR5cGUoKTsKLSAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NW
YWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgTGVuZ3RoIHdpZHRoOwotICAgIExlbmd0aCBoZWlnaHQ7
Ci0gICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOwotICAgIHN3
aXRjaCAodmFsdWVMaXN0LT5sZW5ndGgoKSkgewotICAgIGNhc2UgMjogewotICAgICAgICAvLyA8
bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KLSAgICAgICAgcGFnZVNpemVU
eXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwotICAgICAgICBpZiAoIXZhbHVlTGlzdC0+aXRlbSgw
KS0+aXNQcmltaXRpdmVWYWx1ZSgpIHx8ICF2YWx1ZUxpc3QtPml0ZW0oMSktPmlzUHJpbWl0aXZl
VmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlMCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVM
aXN0LT5pdGVtKDApKTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
MSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVMaXN0LT5pdGVtKDEpKTsK
LSAgICAgICAgaW50IHR5cGUwID0gcHJpbWl0aXZlVmFsdWUwLT5wcmltaXRpdmVUeXBlKCk7Ci0g
ICAgICAgIGludCB0eXBlMSA9IHByaW1pdGl2ZVZhbHVlMS0+cHJpbWl0aXZlVHlwZSgpOwotICAg
ICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZTApKSB7Ci0g
ICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfQotICAgICAgICAgICAgaWYgKCFDU1NQcmltaXRpdmVW
YWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlMSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgd2lkdGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUwLT5jb21wdXRlTGVuZ3Ro
SW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKLSAgICAg
ICAgICAgIGhlaWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZTEtPmNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgotICAgICAg
ICAgICAgLy8gVGhlIHZhbHVlIG9yZGVyIGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBh
cnNlU2l6ZVBhcmFtZXRlci4KLSAgICAgICAgICAgIGlmICghcGFnZVNpemVGcm9tTmFtZShwcmlt
aXRpdmVWYWx1ZTAsIHByaW1pdGl2ZVZhbHVlMSwgd2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNl
IDE6IHsKLSAgICAgICAgLy8gPGxlbmd0aD4gfCBhdXRvIHwgPHBhZ2Utc2l6ZT4gfCBbIHBvcnRy
YWl0IHwgbGFuZHNjYXBlXQotICAgICAgICBpZiAoIXZhbHVlTGlzdC0+aXRlbSgwKS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlTGlzdC0+aXRlbSgwKSk7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBl
TGVuZ3RoKHR5cGUpKSB7Ci0gICAgICAgICAgICAvLyA8bGVuZ3RoPgotICAgICAgICAgICAgcGFn
ZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwotICAgICAgICAgICAgd2lkdGggPSBoZWln
aHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKLSAgICAgICAgICAg
ICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUTzsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQb3J0cmFpdDoKLSAgICAgICAgICAgICAgICBw
YWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUT19QT1JUUkFJVDsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYW5kc2NhcGU6Ci0gICAgICAgICAgICAg
ICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9fTEFORFNDQVBFOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvLyA8cGFn
ZS1zaXplPgotICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZF
RDsKLSAgICAgICAgICAgICAgICBpZiAoIXBhZ2VTaXplRnJvbU5hbWUocHJpbWl0aXZlVmFsdWUs
IDAsIHdpZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9zdHlsZS0+c2V0UGFnZVNpemVUeXBlKHBhZ2VT
aXplVHlwZSk7Ci0gICAgbV9zdHlsZS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVp
Z2h0KSk7Ci0gICAgcmV0dXJuOwotfQotCi1ib29sIENTU1N0eWxlU2VsZWN0b3I6OnBhZ2VTaXpl
RnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFs
dWUqIHBhZ2VPcmllbnRhdGlvbiwgTGVuZ3RoJiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCi17Ci0g
ICAgc3RhdGljIGNvbnN0IExlbmd0aCBhNVdpZHRoID0gbW1MZW5ndGgoMTQ4KSwgYTVIZWlnaHQg
PSBtbUxlbmd0aCgyMTApOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTRXaWR0aCA9IG1tTGVu
Z3RoKDIxMCksIGE0SGVpZ2h0ID0gbW1MZW5ndGgoMjk3KTsKLSAgICBzdGF0aWMgY29uc3QgTGVu
Z3RoIGEzV2lkdGggPSBtbUxlbmd0aCgyOTcpLCBhM0hlaWdodCA9IG1tTGVuZ3RoKDQyMCk7Ci0g
ICAgc3RhdGljIGNvbnN0IExlbmd0aCBiNVdpZHRoID0gbW1MZW5ndGgoMTc2KSwgYjVIZWlnaHQg
PSBtbUxlbmd0aCgyNTApOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYjRXaWR0aCA9IG1tTGVu
Z3RoKDI1MCksIGI0SGVpZ2h0ID0gbW1MZW5ndGgoMzUzKTsKLSAgICBzdGF0aWMgY29uc3QgTGVu
Z3RoIGxldHRlcldpZHRoID0gaW5jaExlbmd0aCg4LjUpLCBsZXR0ZXJIZWlnaHQgPSBpbmNoTGVu
Z3RoKDExKTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZ2FsV2lkdGggPSBpbmNoTGVuZ3Ro
KDguNSksIGxlZ2FsSGVpZ2h0ID0gaW5jaExlbmd0aCgxNCk7Ci0gICAgc3RhdGljIGNvbnN0IExl
bmd0aCBsZWRnZXJXaWR0aCA9IGluY2hMZW5ndGgoMTEpLCBsZWRnZXJIZWlnaHQgPSBpbmNoTGVu
Z3RoKDE3KTsKLQotICAgIGlmICghcGFnZVNpemVOYW1lIHx8IHBhZ2VTaXplTmFtZS0+cHJpbWl0
aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHN3aXRjaCAocGFnZVNpemVOYW1lLT5nZXRJZGVudCgpKSB7Ci0gICAg
Y2FzZSBDU1NWYWx1ZUE1OgotICAgICAgICB3aWR0aCA9IGE1V2lkdGg7Ci0gICAgICAgIGhlaWdo
dCA9IGE1SGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlQTQ6Ci0gICAg
ICAgIHdpZHRoID0gYTRXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gYTRIZWlnaHQ7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVBMzoKLSAgICAgICAgd2lkdGggPSBhM1dpZHRoOwot
ICAgICAgICBoZWlnaHQgPSBhM0hlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NW
YWx1ZUI1OgotICAgICAgICB3aWR0aCA9IGI1V2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGI1SGVp
Z2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlQjQ6Ci0gICAgICAgIHdpZHRo
ID0gYjRXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gYjRIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTVmFsdWVMZXR0ZXI6Ci0gICAgICAgIHdpZHRoID0gbGV0dGVyV2lkdGg7Ci0g
ICAgICAgIGhlaWdodCA9IGxldHRlckhlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NWYWx1ZUxlZ2FsOgotICAgICAgICB3aWR0aCA9IGxlZ2FsV2lkdGg7Ci0gICAgICAgIGhlaWdo
dCA9IGxlZ2FsSGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlTGVkZ2Vy
OgotICAgICAgICB3aWR0aCA9IGxlZGdlcldpZHRoOwotICAgICAgICBoZWlnaHQgPSBsZWRnZXJI
ZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBzd2l0Y2ggKHBhZ2VTaXplTmFtZS0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgQ1NT
VmFsdWVBNToKKyAgICAgICAgd2lkdGggPSBhNVdpZHRoOworICAgICAgICBoZWlnaHQgPSBhNUhl
aWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUE0OgorICAgICAgICB3aWR0
aCA9IGE0V2lkdGg7CisgICAgICAgIGhlaWdodCA9IGE0SGVpZ2h0OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1ZhbHVlQTM6CisgICAgICAgIHdpZHRoID0gYTNXaWR0aDsKKyAgICAgICAg
aGVpZ2h0ID0gYTNIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVCNToK
KyAgICAgICAgd2lkdGggPSBiNVdpZHRoOworICAgICAgICBoZWlnaHQgPSBiNUhlaWdodDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUI0OgorICAgICAgICB3aWR0aCA9IGI0V2lk
dGg7CisgICAgICAgIGhlaWdodCA9IGI0SGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1ZhbHVlTGV0dGVyOgorICAgICAgICB3aWR0aCA9IGxldHRlcldpZHRoOworICAgICAgICBo
ZWlnaHQgPSBsZXR0ZXJIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVM
ZWdhbDoKKyAgICAgICAgd2lkdGggPSBsZWdhbFdpZHRoOworICAgICAgICBoZWlnaHQgPSBsZWdh
bEhlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUxlZGdlcjoKKyAgICAg
ICAgd2lkdGggPSBsZWRnZXJXaWR0aDsKKyAgICAgICAgaGVpZ2h0ID0gbGVkZ2VySGVpZ2h0Owor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgaWYgKHBhZ2VPcmllbnRhdGlvbikgewpAQCAtNTkwNiw3ICszNDczLDcgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKAogICAgICAgICBsYXllci0+c2V0
Q29tcG9zaXRlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUobGF5ZXItPnR5cGUoKSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU5OTksOSArMzU2Niw5IEBAIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHIKICAgICAgICAgbGF5ZXItPnNl
dFNpemVUeXBlKENvdmVyKTsKICAgICBlbHNlCiAgICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShT
aXplTGVuZ3RoKTsKLSAgICAKKwogICAgIExlbmd0aFNpemUgYiA9IEZpbGxMYXllcjo6aW5pdGlh
bEZpbGxTaXplTGVuZ3RoKGxheWVyLT50eXBlKCkpOwotICAgIAorCiAgICAgaWYgKHZhbHVlLT5j
c3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NTX0lOSVRJQUwgfHwgcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb250YWluCiAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ292ZXIpIHsKICAgICAgICAgbGF5ZXItPnNldFNpemVM
ZW5ndGgoYik7CkBAIC02MDExLDE0ICszNTc4LDE0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
bWFwRmlsbFNpemUoQ1NTUHIKICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBh
aXJWYWx1ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vj
b25kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBm
aXJzdCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3QoKSk7CiAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4ocGFpci0+c2Vjb25kKCkpOwotICAgIAorCiAgICAgTGVuZ3RoIGZpcnN0TGVuZ3RoLCBz
ZWNvbmRMZW5ndGg7CiAgICAgaW50IGZpcnN0VHlwZSA9IGZpcnN0LT5wcmltaXRpdmVUeXBlKCk7
CiAgICAgaW50IHNlY29uZFR5cGUgPSBzZWNvbmQtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAKKwog
ICAgIGZsb2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7CiAKICAgICBp
ZiAoZmlyc3RUeXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTikKQEAgLTYwMzgs
NyArMzYwNSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHIKICAg
ICAgICAgc2Vjb25kTGVuZ3RoID0gTGVuZ3RoKHNlY29uZC0+Z2V0RG91YmxlVmFsdWUoKSwgUGVy
Y2VudCk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBiLnNldFdpZHRo
KGZpcnN0TGVuZ3RoKTsKICAgICBiLnNldEhlaWdodChzZWNvbmRMZW5ndGgpOwogICAgIGxheWVy
LT5zZXRTaXplTGVuZ3RoKGIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oCShyZXZpc2lvbiA3NTg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsOCBAQCBwdWJsaWM6CiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCBzZXRGb250U2l6ZShGb250RGVzY3JpcHRpb24mLCBmbG9hdCBz
aXplKTsKICAgICAgICAgc3RhdGljIGZsb2F0IGdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRT
aXplKERvY3VtZW50KiwgUmVuZGVyU3R5bGUqLCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCBz
cGVjaWZpZWRTaXplLCBib29sIHVzZVNWR1pvb21SdWxlcyk7Ci0KKyAgICAgICAgc3RhdGljIExl
bmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBs
aWVyID0gMSwgYm9vbCAqb2sgPSAwKTsKKyAgICAgICAgc3RhdGljIHZvaWQgYXBwbHlDb3VudGVy
TGlzdChSZW5kZXJTdHlsZSogc3R5bGUsIENTU1ZhbHVlTGlzdCogbGlzdCwgYm9vbCBpc1Jlc2V0
KTsKICAgICBwdWJsaWM6CiAgICAgICAgIENvbG9yIGdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlKikgY29uc3Q7CiAKQEAgLTMxMyw2ICszMTQsMzQ1IEBAIHB1Ymxp
YzoKICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4gbV9zZWxlY3RvckF0dHJzOwog
ICAgICAgICBWZWN0b3I8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qPiBtX2FkZGl0aW9uYWxB
dHRyaWJ1dGVTdHlsZURlY2xzOwogICAgICAgICBWZWN0b3I8TWVkaWFRdWVyeVJlc3VsdCo+IG1f
dmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0czsKKworICAgICAgICAvLyBzdGF0aWMg
ZnVuY3Rpb25zIGZvciBhcHBseWluZyBpbmRpdmlkdWFsIHByb3BlcnRpZXMKKyAgICAgICAgLy8g
RklYTUU6IHRoaXMgbGlzdCBjb3VsZCBiZSBnZW5lcmF0ZWQgYW5kICNpbmNsdWRlZAorI2RlZmlu
ZSBERUZJTkVfUFJPVE9UWVBFUyhQcm9wZXJ0eSkgXAorc3RhdGljIHZvaWQgaGFuZGxlSW5oZXJp
dCMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOyBcCitzdGF0aWMgdm9pZCBo
YW5kbGVJbml0aWFsIyNQcm9wZXJ0eShDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7IFwKK3N0
YXRpYyB2b2lkIGhhbmRsZVZhbHVlIyNQcm9wZXJ0eShDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5j
ZSwgQ1NTVmFsdWUgKnZhbHVlKTsKKworICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eUludmFsaWQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Q29sb3Ip
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5RGlyZWN0aW9uKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eURpc3BsYXkpCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5Rm9udCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlGb250RmFtaWx5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUZvbnRTaXplKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUZvbnRTdHls
ZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlGb250VmFyaWFudCkKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlGb250V2VpZ2h0KQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZykKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZSkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlab29tKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5QmFja2dyb3VuZCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQXR0YWNobWVudCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ2xpcCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
QmFja2dyb3VuZEltYWdlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJh
Y2tncm91bmRPcmlnaW4pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRYKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRZKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eUJhY2tncm91bmRTaXplKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJv
cmRlcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20p
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3Ip
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJh
ZGl1cykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21S
aWdodFJhZGl1cykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJD
b2xsYXBzZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJDb2xv
cikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0KQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikKKyAgICAg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoKQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCkKKyAgICAgICAgREVGSU5FX1BST1RP
VFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUpCisgICAgICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eUJvcmRlclN0eWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eUJvcmRlclRvcCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BDb2xvcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3JkZXJU
b3BMZWZ0UmFkaXVzKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRl
clRvcFJpZ2h0UmFkaXVzKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJv
cmRlclRvcFN0eWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvcmRlcldp
ZHRoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUJvdHRvbSkKKyAgICAg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlCb3hTaXppbmcpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpCisgICAgICAgIERFRklORV9QUk9U
T1RZUEVTKENTU1Byb3BlcnR5Q2xlYXIpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5Q2xpcCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlDb250ZW50
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQp
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5Q291bnRlclJlc2V0KQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUN1cnNvcikKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlFbXB0eUNlbGxzKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUZsb2F0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eUZvbnRTdHJldGNoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUhl
aWdodCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlMZWZ0KQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5TGlzdFN0eWxlKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5TWFyZ2luKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eU1hcmdpbkJvdHRvbSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU1hcmdpblRvcCkKKyAgICAg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNYXhIZWlnaHQpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5TWF4V2lkdGgpCisgICAgICAgIERFRklORV9QUk9UT1RZ
UEVTKENTU1Byb3BlcnR5TWluSGVpZ2h0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eU1pbldpZHRoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU9w
YWNpdHkpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5T3JwaGFucykKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlPdXRsaW5lKQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0KQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlPdXRsaW5lV2lkdGgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5T3ZlcmZsb3cpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5T3Zl
cmZsb3dYKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU92ZXJmbG93WSkK
KyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlQYWRkaW5nKQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20pCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5UGFkZGluZ0xlZnQpCisgICAgICAgIERFRklORV9QUk9U
T1RZUEVTKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eVBhZGRpbmdUb3ApCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5UGFnZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlQYWdlQnJl
YWtBZnRlcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlQYWdlQnJlYWtC
ZWZvcmUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5z
aWRlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMp
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5UG9zaXRpb24pCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5UXVvdGVzKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVJlc2l6ZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlSaWdodCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTaXpl
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVNyYykKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTcGVhaykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlUYWJsZUxheW91dCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlUZXh0QWxpZ24pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4
dEluZGVudCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0TGluZVRo
cm91Z2gpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dExpbmVUaHJv
dWdoQ29sb3IpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dExpbmVU
aHJvdWdoTW9kZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2hTdHlsZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0
TGluZVRocm91Z2hXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlU
ZXh0T3ZlcmZsb3cpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dE92
ZXJsaW5lKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRPdmVybGlu
ZUNvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRPdmVybGlu
ZU1vZGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5l
U3R5bGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5l
V2lkdGgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dFNoYWRvdykK
KyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtKQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSkKKyAgICAg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgpCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5VG9wKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlWZXJ0aWNhbEFsaWduKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVZpc2liaWxpdHkpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2hp
dGVTcGFjZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXaWRvd3MpCisg
ICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2lkdGgpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V29yZEJyZWFrKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdvcmRXcmFwKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVpJbmRleCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb24pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uRGVsYXkpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkR1cmF0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KQorICAgICAgICBERUZJTkVf
UFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFu
Y2UpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VW
aXNpYmlsaXR5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRDbGlwKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDb21wb3NpdGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUpCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmUpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IpCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUp
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3Jl
V2lkdGgpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
RW5kKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVu
ZENvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckVuZFN0eWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckVuZFdpZHRoKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckZpdCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJJbWFnZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJSYWRpdXMpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgpCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduKQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbikKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4KQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cCkKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcykKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXApCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50KQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2spCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlCb3hTaGFkb3cpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlKQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50KQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcCkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlKQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcikKKyAgICAg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUpCisg
ICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRo
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4p
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgp
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucykKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhKQor
ICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCkKKyAg
ICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0
ZXIpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRl
TG9jYWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bnMpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFr
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcCkK
KyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGgp
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdo
dCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkJlZm9yZUNvbGxhcHNlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZSkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQpCisgICAgICAgIERFRklORV9QUk9U
T1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQpCisgICAgICAgIERFRklORV9QUk9U
T1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uKQorICAgICAgICBERUZJTkVfUFJP
VE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQpCisgICAgICAgIERFRklO
RV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSkKKyAgICAg
ICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXNrKQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50KQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlKQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSkKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbikKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YKQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSkKKyAgICAgICAg
REVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSkKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90
ZUNvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdE1heExv
Z2ljYWxXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRN
YXhMb2dpY2FsSGVpZ2h0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdl
YmtpdE1pbkxvZ2ljYWxXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdE5ic3BNb2RlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJv
cGVydHlXZWJraXRQYWRkaW5nQmVmb3JlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblkpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Qp
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c0NvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1Bvc2l0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2UpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQ
RVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgpCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSkKKyAgICAgICAgREVG
SU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlKQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24pCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5KQor
ICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJh
dGlvbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0
aW9uUHJvcGVydHkpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQ
cm9wZXJ0eVdlYmtpdFVzZXJEcmFnKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eVdlYmtpdFVzZXJNb2RpZnkpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5V2Via2l0VXNlclNlbGVjdCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlDbGlwUGF0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlDbGlwUnVs
ZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlNYXNrKQorICAgICAgICBE
RUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91bmQpCisgICAgICAgIERF
RklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5RmlsdGVyKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUZsb29kQ29sb3IpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENT
U1Byb3BlcnR5Rmxvb2RPcGFjaXR5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9w
ZXJ0eUxpZ2h0aW5nQ29sb3IpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5
U3RvcENvbG9yKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVN0b3BPcGFj
aXR5KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xh
dGlvbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlDb2xvckludGVycG9s
YXRpb25GaWx0ZXJzKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUNvbG9y
UHJvZmlsZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlDb2xvclJlbmRl
cmluZykKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlGaWxsKQorICAgICAg
ICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUZpbGxPcGFjaXR5KQorICAgICAgICBERUZJ
TkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eUZpbGxSdWxlKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eU1hcmtlcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlNYXJrZXJFbmQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5TWFya2Vy
TWlkKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0KQor
ICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVNoYXBlUmVuZGVyaW5nKQorICAg
ICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVN0cm9rZSkKKyAgICAgICAgREVGSU5F
X1BST1RPVFlQRVMoQ1NTUHJvcGVydHlTdHJva2VEYXNoYXJyYXkpCisgICAgICAgIERFRklORV9Q
Uk9UT1RZUEVTKENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNldCkKKyAgICAgICAgREVGSU5FX1BS
T1RPVFlQRVMoQ1NTUHJvcGVydHlTdHJva2VMaW5lY2FwKQorICAgICAgICBERUZJTkVfUFJPVE9U
WVBFUyhDU1NQcm9wZXJ0eVN0cm9rZUxpbmVqb2luKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGltaXQpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVT
KENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0eSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NT
UHJvcGVydHlTdHJva2VXaWR0aCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlBbGlnbm1lbnRCYXNlbGluZSkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVy
dHlCYXNlbGluZVNoaWZ0KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eURv
bWluYW50QmFzZWxpbmUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5R2x5
cGhPcmllbnRhdGlvbkhvcml6b250YWwpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1By
b3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKQorICAgICAgICBERUZJTkVfUFJPVE9UWVBF
UyhDU1NQcm9wZXJ0eUtlcm5pbmcpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3Bl
cnR5VGV4dEFuY2hvcikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlWZWN0
b3JFZmZlY3QpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V3JpdGluZ01v
ZGUpCisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2Via2l0U3ZnU2hhZG93
KQorICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJl
Z2lvbikKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9v
cCkKKyAgICAgICAgREVGSU5FX1BST1RPVFlQRVMoQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQp
CisgICAgICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlKQor
ICAgICAgICBERUZJTkVfUFJPVE9UWVBFUyhDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIpCisgICAg
ICAgIERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQpCisgICAgICAg
IERFRklORV9QUk9UT1RZUEVTKENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZCkKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80615</attachid>
            <date>2011-01-30 20:01:12 -0800</date>
            <delta_ts>2011-01-31 15:19:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46592-20110131150108.patch</filename>
            <type>text/plain</type>
            <size>158237</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MTc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMTkgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkgdG8gdXNlIHNlcGFyYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBjYXNlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTIKKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGxp
Y2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRFRklORV9WQUxVRSk6CisgICAg
ICAgIChXZWJDb3JlOjpERUZJTkVfSU5IRVJJVCk6CisgICAgICAgIChXZWJDb3JlOjpERUZJTkVf
SU5JVElBTCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oOgorCiAyMDExLTAxLTExICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA3NTg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY4NSw2ICsxNjg1LDcgQEAK
IAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNG
TmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9h
ZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NzQxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwICov
OyB9OworCQk4MERDMjlCRDEyRTkyM0Y5MDBDODEzOTMgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwREMy
OUJDMTJFOTIzRjkwMEM4MTM5MyAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwICovOyB9Owog
CQk4MUE3MzI1RTEyMTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUE3MzI1RDEyMTAxODlCMDBGQzBEOUUg
LyogSURCQ3Vyc29yLmggKi87IH07CiAJCTgxQTczMjYwMTIxMDE4QTQwMEZDMEQ5RSAvKiBJREJD
dXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODFBNzMyNUYxMjEwMThBNDAwRkMwRDlFIC8qIElEQkN1cnNvci5jcHAgKi87IH07CiAJCTgxQTcz
Mjc4MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMyNzcxMjEwMTlFMTAwRkMw
RDlFIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi87IH07CkBAIC04MTAzLDYgKzgxMDQsNyBA
QAogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVFMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlc3BvbnNlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0VFNjg0NzQxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHA7
IHBhdGggPSBjZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODBEQzI5QkMxMkU5MjNGOTAwQzgxMzkzIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NTdHlsZUFwcGx5
UHJvcGVydHkuY3BwOyBwYXRoID0gY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxQTczMjVEMTIxMDE4OUIwMEZDMEQ5RSAvKiBJREJD
dXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxQTczMjVGMTIxMDE4QTQwMEZDMEQ5RSAvKiBJ
REJDdXJzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQ3Vy
c29yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFBNzMyNzcxMjEwMTlFMTAw
RkMwRDlFIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzA4MSw2ICsxMzA4Myw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MUUxQjFD
QTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovLAogCQkJCTQxRTFCMUNC
MEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovLAorCQkJCTgwREMyOUJDMTJF
OTIzRjkwMEM4MTM5MyAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwICovLAogCQkJCTQxRTFC
MUNDMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8sCiAJCQkJNDE2MkE0
NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICovLAogCQkJ
CTQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8s
CkBAIC0yNTAzMCw2ICsyNTAzMyw3IEBACiAJCQkJMkUzN0UwMDUxMkRCQzVBNDAwQTZCMjMzIC8q
IEpTRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNTY0MEJGMTJERjlFNUUwMEY0NTM2
RCAvKiBJbnNwZWN0b3JTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGM0Q0QzQ3ODEy
RTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODBEQzI5QkQxMkU5MjNGOTAwQzgxMzkzIC8qIENTU1N0eWxlQXBwbHlQ
cm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDc1ODk1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMjMzICsxMjUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLSNkZWZp
bmUgSEFORExFX0lOSEVSSVQocHJvcCwgUHJvcCkgXAotaWYgKGlzSW5oZXJpdCkgeyBcCi0gICAg
bV9zdHlsZS0+c2V0IyNQcm9wKG1fcGFyZW50U3R5bGUtPnByb3AoKSk7IFwKLSAgICByZXR1cm47
IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBc
Ci1IQU5ETEVfSU5IRVJJVChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbml0aWFsKSB7IFwKLSAgICBt
X3N0eWxlLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6OmluaXRpYWwjI1Byb3AoKSk7IFwKLSAgICBy
ZXR1cm47IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZB
TFVFKHByb3AsIFByb3AsIFZhbHVlKSBcCi1IQU5ETEVfSU5IRVJJVChwcm9wLCBQcm9wKSBcCi1p
ZiAoaXNJbml0aWFsKSB7IFwKLSAgICBtX3N0eWxlLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6Omlu
aXRpYWwjI1ZhbHVlKCkpO1wKLSAgICByZXR1cm47XAotfQotCi0jZGVmaW5lIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUocHJvcCwgUHJvcCkgXAotSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotaWYgKHByaW1pdGl2ZVZhbHVlKSBcCi0gICAg
bV9zdHlsZS0+c2V0IyNQcm9wKCpwcmltaXRpdmVWYWx1ZSk7Ci0KLSNkZWZpbmUgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKHByb3AsIFByb3AsIFZh
bHVlKSBcCi1IQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZBTFVFKHByb3AsIFByb3As
IFZhbHVlKSBcCi1pZiAocHJpbWl0aXZlVmFsdWUpIFwKLSAgICBtX3N0eWxlLT5zZXQjI1Byb3Ao
KnByaW1pdGl2ZVZhbHVlKTsKLQotI2RlZmluZSBIQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUX0FO
RF9JTklUSUFMKGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhl
cml0KSB7IFwKLSAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IG1fc3R5bGUtPmFjY2VzcyMjTGF5
ZXJUeXBlIyNMYXllcnMoKTsgXAotICAgIEZpbGxMYXllciogcHJldkNoaWxkID0gMDsgXAotICAg
IGNvbnN0IEZpbGxMYXllciogY3VyclBhcmVudCA9IG1fcGFyZW50U3R5bGUtPmxheWVyVHlwZSMj
TGF5ZXJzKCk7IFwKLSAgICB3aGlsZSAoY3VyclBhcmVudCAmJiBjdXJyUGFyZW50LT5pcyMjUHJv
cCMjU2V0KCkpIHsgXAotICAgICAgICBpZiAoIWN1cnJDaGlsZCkgeyBcCi0gICAgICAgICAgICAv
KiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIuKi8gXAotICAgICAgICAgICAgY3VyckNoaWxkID0g
bmV3IEZpbGxMYXllcihMYXllclR5cGUjI0ZpbGxMYXllcik7IFwKLSAgICAgICAgICAgIHByZXZD
aGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOyBcCi0gICAgICAgIH0gXAotICAgICAgICBjdXJyQ2hp
bGQtPnNldCMjUHJvcChjdXJyUGFyZW50LT5wcm9wKCkpOyBcCi0gICAgICAgIHByZXZDaGlsZCA9
IGN1cnJDaGlsZDsgXAotICAgICAgICBjdXJyQ2hpbGQgPSBwcmV2Q2hpbGQtPm5leHQoKTsgXAot
ICAgICAgICBjdXJyUGFyZW50ID0gY3VyclBhcmVudC0+bmV4dCgpOyBcCi0gICAgfSBcCi0gICAg
XAotICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsgXAotICAgICAgICAvKiBSZXNldCBhbnkgcmVtYWlu
aW5nIGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCi0gICAgICAgIGN1
cnJDaGlsZC0+Y2xlYXIjI1Byb3AoKTsgXAotICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQt
Pm5leHQoKTsgXAotICAgIH0gXAotfSBlbHNlIGlmIChpc0luaXRpYWwpIHsgXAotICAgIEZpbGxM
YXllciogY3VyckNoaWxkID0gbV9zdHlsZS0+YWNjZXNzIyNMYXllclR5cGUjI0xheWVycygpOyBc
Ci0gICAgY3VyckNoaWxkLT5zZXQjI1Byb3AoRmlsbExheWVyOjppbml0aWFsRmlsbCMjUHJvcChM
YXllclR5cGUjI0ZpbGxMYXllcikpOyBcCi0gICAgZm9yIChjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQt
Pm5leHQoKTsgY3VyckNoaWxkOyBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKSkgXAotICAg
ICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQcm9wKCk7IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfRklM
TF9MQVlFUl9WQUxVRShsYXllclR5cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCwgdmFsdWUpIHsg
XAotSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVF9BTkRfSU5JVElBTChsYXllclR5cGUsIExheWVy
VHlwZSwgcHJvcCwgUHJvcCkgXAotaWYgKGlzSW5oZXJpdCB8fCBpc0luaXRpYWwpIFwKLSAgICBy
ZXR1cm47IFwKLUZpbGxMYXllciogY3VyckNoaWxkID0gbV9zdHlsZS0+YWNjZXNzIyNMYXllclR5
cGUjI0xheWVycygpOyBcCi1GaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7IFwKLWlmICh2YWx1ZS0+
aXNWYWx1ZUxpc3QoKSkgeyBcCi0gICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50
byBhIGxheWVyLCBjcmVhdGluZyBuZXcgbGF5ZXJzIGFzIG5lZWRlZC4gKi8gXAotICAgIENTU1Zh
bHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOyBc
Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBp
KyspIHsgXAotICAgICAgICBpZiAoIWN1cnJDaGlsZCkgeyBcCi0gICAgICAgICAgICAvKiBOZWVk
IHRvIG1ha2UgYSBuZXcgbGF5ZXIgdG8gaG9sZCB0aGlzIHZhbHVlICovIFwKLSAgICAgICAgICAg
IGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpOyBcCi0gICAg
ICAgICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3VyckNoaWxkKTsgXAotICAgICAgICB9IFwKLSAg
ICAgICAgbWFwRmlsbCMjUHJvcChwcm9wZXJ0eSwgY3VyckNoaWxkLCB2YWx1ZUxpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSkpOyBcCi0gICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsg
XAotICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAotICAgIH0gXAotfSBl
bHNlIHsgXAotICAgIG1hcEZpbGwjI1Byb3AocHJvcGVydHksIGN1cnJDaGlsZCwgdmFsdWUpOyBc
Ci0gICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKLX0gXAotd2hpbGUgKGN1cnJD
aGlsZCkgeyBcCi0gICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBsYXllcnMgdG8gbm90IGhhdmUg
dGhlIHByb3BlcnR5IHNldC4gKi8gXAotICAgIGN1cnJDaGlsZC0+Y2xlYXIjI1Byb3AoKTsgXAot
ICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOyBcCi19IH0KLQotI2RlZmluZSBIQU5E
TEVfQkFDS0dST1VORF9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLUhBTkRMRV9G
SUxMX0xBWUVSX0lOSEVSSVRfQU5EX0lOSVRJQUwoYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcHJv
cCwgUHJvcCkKLQotI2RlZmluZSBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShwcm9wLCBQcm9wLCB2
YWx1ZSkgXAotSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoYmFja2dyb3VuZCwgQmFja2dyb3VuZCwg
cHJvcCwgUHJvcCwgdmFsdWUpCi0KLSNkZWZpbmUgSEFORExFX01BU0tfSU5IRVJJVF9BTkRfSU5J
VElBTChwcm9wLCBQcm9wKSBcCi1IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUX0FORF9JTklUSUFM
KG1hc2ssIE1hc2ssIHByb3AsIFByb3ApCi0KLSNkZWZpbmUgSEFORExFX01BU0tfVkFMVUUocHJv
cCwgUHJvcCwgdmFsdWUpIFwKLUhBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKG1hc2ssIE1hc2ssIHBy
b3AsIFByb3AsIHZhbHVlKQotCi0jZGVmaW5lIEhBTkRMRV9BTklNQVRJT05fSU5IRVJJVF9BTkRf
SU5JVElBTChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0KSB7IFwKLSAgICBBbmltYXRpb25M
aXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCi0gICAgY29uc3QgQW5p
bWF0aW9uTGlzdCogcGFyZW50TGlzdCA9IG1fcGFyZW50U3R5bGUtPmFuaW1hdGlvbnMoKTsgXAot
ICAgIHNpemVfdCBpID0gMCwgcGFyZW50U2l6ZSA9IHBhcmVudExpc3QgPyBwYXJlbnRMaXN0LT5z
aXplKCkgOiAwOyBcCi0gICAgZm9yICggOyBpIDwgcGFyZW50U2l6ZSAmJiBwYXJlbnRMaXN0LT5h
bmltYXRpb24oaSktPmlzIyNQcm9wIyNTZXQoKTsgKytpKSB7IFwKLSAgICAgICAgaWYgKGxpc3Qt
PnNpemUoKSA8PSBpKSBcCi0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVh
dGUoKSk7IFwKLSAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5zZXQjI1Byb3AocGFyZW50TGlz
dC0+YW5pbWF0aW9uKGkpLT5wcm9wKCkpOyBcCi0gICAgfSBcCi0gICAgXAotICAgIC8qIFJlc2V0
IGFueSByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAq
LyBcCi0gICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwKLSAgICAgICAgbGlzdC0+
YW5pbWF0aW9uKGkpLT5jbGVhciMjUHJvcCgpOyBcCi19IGVsc2UgaWYgKGlzSW5pdGlhbCkgeyBc
Ci0gICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5bGUtPmFjY2Vzc0FuaW1hdGlvbnMoKTsg
XAotICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1h
dGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgbGlzdC0+YW5pbWF0aW9uKDApLT5zZXQjI1Byb3AoQW5p
bWF0aW9uOjppbml0aWFsQW5pbWF0aW9uIyNQcm9wKCkpOyBcCi0gICAgZm9yIChzaXplX3QgaSA9
IDE7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oMCkt
PmNsZWFyIyNQcm9wKCk7IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKHBy
b3AsIFByb3AsIHZhbHVlKSB7IFwKLUhBTkRMRV9BTklNQVRJT05fSU5IRVJJVF9BTkRfSU5JVElB
TChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0IHx8IGlzSW5pdGlhbCkgXAotICAgIHJldHVy
bjsgXAotQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5bGUtPmFjY2Vzc0FuaW1hdGlvbnMoKTsg
XAotc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBcCi1pZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsg
XAotICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYW4gYW5pbWF0aW9uLCBj
cmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKLSAgICBDU1NWYWx1ZUxpc3Qq
IHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsgXAotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7IFwK
LSAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKSBcCi0gICAgICAgICAgICBs
aXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICAgICAgbWFwQW5pbWF0aW9u
IyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgdmFsdWVMaXN0LT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKGkpKTsgXAotICAgICAgICArK2NoaWxkSW5kZXg7IFwKLSAgICB9IFwKLX0g
ZWxzZSB7IFwKLSAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCi0gICAgICAgIGxpc3QtPmFwcGVu
ZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgIG1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5h
bmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVlKTsgXAotICAgIGNoaWxkSW5kZXggPSAxOyBcCi19
IFwKLWZvciAoIDsgY2hpbGRJbmRleCA8IGxpc3QtPnNpemUoKTsgKytjaGlsZEluZGV4KSB7IFwK
LSAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8gbm90IGhhdmUgdGhlIHBy
b3BlcnR5IHNldC4gKi8gXAotICAgIGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KS0+Y2xlYXIj
I1Byb3AoKTsgXAotfSBcCi19Ci0KLSNkZWZpbmUgSEFORExFX1RSQU5TSVRJT05fSU5IRVJJVF9B
TkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0KSB7IFwKLSAgICBBbmltYXRp
b25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMoKTsgXAotICAgIGNvbnN0
IEFuaW1hdGlvbkxpc3QqIHBhcmVudExpc3QgPSBtX3BhcmVudFN0eWxlLT50cmFuc2l0aW9ucygp
OyBcCi0gICAgc2l6ZV90IGkgPSAwLCBwYXJlbnRTaXplID0gcGFyZW50TGlzdCA/IHBhcmVudExp
c3QtPnNpemUoKSA6IDA7IFwKLSAgICBmb3IgKCA7IGkgPCBwYXJlbnRTaXplICYmIHBhcmVudExp
c3QtPmFuaW1hdGlvbihpKS0+aXMjI1Byb3AjI1NldCgpOyArK2kpIHsgXAotICAgICAgICBpZiAo
bGlzdC0+c2l6ZSgpIDw9IGkpIFwKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246
OmNyZWF0ZSgpKTsgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPnNldCMjUHJvcChwYXJl
bnRMaXN0LT5hbmltYXRpb24oaSktPnByb3AoKSk7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgLyog
UmVzZXQgYW55IHJlbWFpbmluZyB0cmFuc2l0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkg
c2V0LiAqLyBcCi0gICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwKLSAgICAgICAg
bGlzdC0+YW5pbWF0aW9uKGkpLT5jbGVhciMjUHJvcCgpOyBcCi19IGVsc2UgaWYgKGlzSW5pdGlh
bCkgeyBcCi0gICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5bGUtPmFjY2Vzc1RyYW5zaXRp
b25zKCk7IFwKLSAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCi0gICAgICAgIGxpc3QtPmFwcGVu
ZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+c2V0IyNQ
cm9wKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbiMjUHJvcCgpKTsgXAotICAgIGZvciAoc2l6
ZV90IGkgPSAxOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwKLSAgICAgICAgbGlzdC0+YW5pbWF0
aW9uKDApLT5jbGVhciMjUHJvcCgpOyBcCi19Ci0KLSNkZWZpbmUgSEFORExFX1RSQU5TSVRJT05f
VkFMVUUocHJvcCwgUHJvcCwgdmFsdWUpIHsgXAotSEFORExFX1RSQU5TSVRJT05fSU5IRVJJVF9B
TkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0IHx8IGlzSW5pdGlhbCkgXAot
ICAgIHJldHVybjsgXAotQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5bGUtPmFjY2Vzc1RyYW5z
aXRpb25zKCk7IFwKLXNpemVfdCBjaGlsZEluZGV4ID0gMDsgXAotaWYgKHZhbHVlLT5pc1ZhbHVl
TGlzdCgpKSB7IFwKLSAgICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgdHJh
bnNpdGlvbiwgY3JlYXRpbmcgbmV3IGFuaW1hdGlvbnMgYXMgbmVlZGVkLiAqLyBcCi0gICAgQ1NT
VmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7
IFwKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhbHVlTGlzdC0+bGVuZ3RoKCk7
IGkrKykgeyBcCi0gICAgICAgIGlmIChjaGlsZEluZGV4IDw9IGxpc3QtPnNpemUoKSkgXAotICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgICAgIG1h
cEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVlTGlzdC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKLSAgICAgICAgKytjaGlsZEluZGV4OyBcCi0g
ICAgfSBcCi19IGVsc2UgeyBcCi0gICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkgXAotICAgICAgICBs
aXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICBtYXBBbmltYXRpb24jI1By
b3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7IFwKLSAgICBjaGlsZEluZGV4
ID0gMTsgXAotfSBcCi1mb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0LT5zaXplKCk7ICsrY2hpbGRJ
bmRleCkgeyBcCi0gICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyB0cmFuc2l0aW9ucyB0byBub3Qg
aGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCi0gICAgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5k
ZXgpLT5jbGVhciMjUHJvcCgpOyBcCi19IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9D
T05EKHByb3BJRCwgcHJvcCwgUHJvcCkgXAotaWYgKGlkID09IHByb3BJRCkgeyBcCi0gICAgbV9z
dHlsZS0+c2V0IyNQcm9wKG1fcGFyZW50U3R5bGUtPnByb3AoKSk7IFwKLSAgICByZXR1cm47IFwK
LX0KLSAgICAKLSNkZWZpbmUgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChwcm9wSUQs
IHByb3AsIHByb3BBbHQsIFByb3ApIFwKLWlmIChpZCA9PSBwcm9wSUQpIHsgXAotICAgIGlmICht
X3BhcmVudFN0eWxlLT5wcm9wKCkuaXNWYWxpZCgpKSBcCi0gICAgICAgIG1fc3R5bGUtPnNldCMj
UHJvcChtX3BhcmVudFN0eWxlLT5wcm9wKCkpOyBcCi0gICAgZWxzZSBcCi0gICAgICAgIG1fc3R5
bGUtPnNldCMjUHJvcChtX3BhcmVudFN0eWxlLT5wcm9wQWx0KCkpOyBcCi0gICAgcmV0dXJuOyBc
Ci19Ci0KLSNkZWZpbmUgSEFORExFX0lOSVRJQUxfQ09ORChwcm9wSUQsIFByb3ApIFwKLWlmIChp
ZCA9PSBwcm9wSUQpIHsgXAotICAgIG1fc3R5bGUtPnNldCMjUHJvcChSZW5kZXJTdHlsZTo6aW5p
dGlhbCMjUHJvcCgpKTsgXAotICAgIHJldHVybjsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9JTklU
SUFMX0NPTkRfV0lUSF9WQUxVRShwcm9wSUQsIFByb3AsIFZhbHVlKSBcCi1pZiAoaWQgPT0gcHJv
cElEKSB7IFwKLSAgICBtX3N0eWxlLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6OmluaXRpYWwjI1Zh
bHVlKCkpOyBcCi0gICAgcmV0dXJuOyBcCi19Ci0KIGNsYXNzIENTU1J1bGVEYXRhIDogcHVibGlj
IE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBDU1NSdWxlRGF0YSh1bnNpZ25lZCBwb3MsIENT
U1N0eWxlUnVsZSogciwgQ1NTU2VsZWN0b3IqIHNlbCwgQ1NTUnVsZURhdGEqIHByZXYgPSAwKQpA
QCAtMjkzMCw3ICsyNzAzLDcgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRTdHlsZVJ1bGUoQ1NTU3R5
bGVSdQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gdGhpcyBpcyBtb3N0bHkg
Ym9yaW5nIHN0dWZmIG9uIGhvdyB0byBhcHBseSBhIGNlcnRhaW4gcnVsZSB0byB0aGUgcmVuZGVy
c3R5bGUuLi4KIAotc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290
U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKQorTGVuZ3RoIENTU1N0
eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91Ymxl
IG11bHRpcGxpZXIsIGJvb2wgKm9rKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdG9sZXJh
bnQgb2YgYSBudWxsIHN0eWxlIHZhbHVlLiBUaGUgb25seSBwbGFjZSBzdHlsZSBpcyB1c2VkIGlz
IGluCiAgICAgLy8gbGVuZ3RoIG1lYXN1cmVtZW50cywgbGlrZSAnZW1zJyBhbmQgJ3B4Jy4gQW5k
IGluIHRob3NlIGNhc2VzIHN0eWxlIGlzIG9ubHkgdXNlZApAQCAtMzA2MSw3ICsyODM0LDcgQEAg
U3RyaW5nIENTU1N0eWxlU2VsZWN0b3I6OnBhZ2VOYW1lKGludCAvKgogICAgIHJldHVybiAiIjsK
IH0KIAotc3RhdGljIHZvaWQgYXBwbHlDb3VudGVyTGlzdChSZW5kZXJTdHlsZSogc3R5bGUsIENT
U1ZhbHVlTGlzdCogbGlzdCwgYm9vbCBpc1Jlc2V0KQordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjph
cHBseUNvdW50ZXJMaXN0KFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTVmFsdWVMaXN0KiBsaXN0LCBi
b29sIGlzUmVzZXQpCiB7CiAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgbWFwID0gc3R5bGUtPmFj
Y2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7CiAgICAgdHlwZWRlZiBDb3VudGVyRGlyZWN0aXZlTWFw
OjppdGVyYXRvciBJdGVyYXRvcjsKQEAgLTMxNDYsMjQgKzI5MTksMTEgQEAgaW5saW5lIGJvb2wg
aXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoaQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiB7Ci0gICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gMDsKLSAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKLSAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKLQotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3Rp
dmVab29tKCk7Ci0KLSAgICAvLyBTVkcgaGFuZGxlcyB6b29taW5nIGluIGEgZGlmZmVyZW50IHdh
eSBjb21wYXJlZCB0byBDU1MuIFRoZSB3aG9sZSBkb2N1bWVudCBpcyBzY2FsZWQgaW5zdGVhZAot
ICAgIC8vIG9mIGVhY2ggaW5kaXZpZHVhbCBsZW5ndGggdmFsdWUgaW4gdGhlIHJlbmRlciBzdHls
ZSAvIHRyZWUuIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoKigpCi0gICAgLy8gbXVs
dGlwbGllcyBlYWNoIHJlc29sdmVkIGxlbmd0aCB3aXRoIHRoZSB6b29tIG11bHRpcGxpZXIgLSBz
byBmb3IgU1ZHIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGF0LgotICAgIC8vIFRob3VnaCBhbGwgQ1NT
IHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50cyAo
d2lkdGgvaGVpZ2h0L2JvcmRlci9wYWRkaW5nLi4uKQotICAgIC8vIG5lZWQgdG8gcmVzcGVjdCB0
aGUgc2NhbGluZy4gUmVuZGVyQm94ICh0aGUgcGFyZW50IGNsYXNzIG9mIFJlbmRlclNWR1Jvb3Qp
IGdyYWJzIHZhbHVlcyBsaWtlCi0gICAgLy8gd2lkdGgvaGVpZ2h0L2JvcmRlci9wYWRkaW5nLy4u
LiBmcm9tIHRoZSBSZW5kZXJTdHlsZSAtPiBmb3IgU1ZHIHRoZXNlIHZhbHVlcyB3b3VsZCBuZXZl
ciBzY2FsZSwKLSAgICAvLyBpZiB3ZSdkIHBhc3MgYSAxLjAgem9vbSBmYWN0b3IgZXZlcnlod2Vy
ZS4gU28gd2Ugb25seSBwYXNzIGEgem9vbSBmYWN0b3Igb2YgMS4wIGZvciBzcGVjaWZpYwotICAg
IC8vIHByb3BlcnRpZXMgdGhhdCBhcmUgTk9UIGFsbG93ZWQgdG8gc2NhbGUgd2l0aGluIGEgem9v
bWVkIFNWRyBkb2N1bWVudCAobGV0dGVyL3dvcmQtc3BhY2luZy9mb250LXNpemUpLgotICAgIGJv
b2wgdXNlU1ZHWm9vbVJ1bGVzID0gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aXNTVkdFbGVtZW50
KCk7Ci0KLSAgICBMZW5ndGggbDsKLSAgICBib29sIGFwcGx5ID0gZmFsc2U7CisvLyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAwOworLy8gICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCisvLyAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vCisvLyAgICBMZW5ndGggbDsKIAogICAgIHVu
c2lnbmVkIHNob3J0IHZhbHVlVHlwZSA9IHZhbHVlLT5jc3NWYWx1ZVR5cGUoKTsKIApAQCAtMzE3
NiwyNjk4ICsyOTM2LDQ4OCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHko
aW50CiAgICAgICAgIC8vIExpbWl0IHRoZSBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQg
dG8gb25seSB0aGUgb25lcyBob25vcmVkIGJ5IDp2aXNpdGVkLgogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCisjZGVmaW5lIEhBTkRMRV9DQVNFKFByb3BlcnR5KSBcCitjYXNlIFByb3Bl
cnR5OiB7IFwKKyAgICBpZiAoaXNJbmhlcml0KSBcCisgICAgICAgIGhhbmRsZUluaGVyaXQjI1By
b3BlcnR5KHRoaXMpOyBcCisgICAgZWxzZSBpZiAoaXNJbml0aWFsKSBcCisgICAgICAgIGhhbmRs
ZUluaXRpYWwjI1Byb3BlcnR5KHRoaXMpOyBcCisgICAgZWxzZSBcCisgICAgICAgIGhhbmRsZVZh
bHVlIyNQcm9wZXJ0eSh0aGlzLCB2YWx1ZSk7IFwKKyAgICByZXR1cm47IFwKK30KKwogICAgIC8v
IFdoYXQgZm9sbG93cyBpcyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVydGllcyBpbnRv
IHRoZWlyIGNvcnJlc3BvbmRpbmcgZnJvbnQtZW5kCiAgICAgLy8gUmVuZGVyU3R5bGUgdmFsdWVz
LiAgU2hvcnRoYW5kcyAoZS5nLiBib3JkZXIsIGJhY2tncm91bmQpIG9jY3VyIGluIHRoaXMgbGlz
dCBhcyB3ZWxsIGFuZAogICAgIC8vIGFyZSBvbmx5IGhpdCB3aGVuIG1hcHBpbmcgImluaGVyaXQi
IG9yICJpbml0aWFsIiBpbnRvIGZyb250LWVuZCB2YWx1ZXMuCiAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGlkKTsKICAgICBzd2l0Y2ggKHBy
b3BlcnR5KSB7Ci0vLyBpZGVudCBvbmx5IHByb3BlcnRpZXMKLSAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZEF0dGFjaG1lbnQ6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKGF0
dGFjaG1lbnQsIEF0dGFjaG1lbnQsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNr
Z3JvdW5kQ2xpcDoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoY2xpcCwgQ2xpcCwg
dmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dy
b3VuZENvbXBvc2l0ZToKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoY29tcG9zaXRl
LCBDb21wb3NpdGUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRPcmlnaW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRP
cmlnaW46Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKG9yaWdpbiwgT3JpZ2luLCB2
YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6Ci0gICAgICAgIEhB
TkRMRV9CQUNLR1JPVU5EX1ZBTFVFKHNpemUsIFNpemUsIHZhbHVlKQotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50OgotICAgICAgICBIQU5E
TEVfTUFTS19WQUxVRShhdHRhY2htZW50LCBBdHRhY2htZW50LCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKLSAgICAgICAgSEFORExF
X01BU0tfVkFMVUUoY2xpcCwgQ2xpcCwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZToKLSAgICAgICAgSEFORExFX01BU0tfVkFM
VUUoY29tcG9zaXRlLCBDb21wb3NpdGUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVF
KG9yaWdpbiwgT3JpZ2luLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRNYXNrU2l6ZToKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoc2l6ZSwgU2l6
ZSwgdmFsdWUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVu
dCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXApCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdEJhY2tncm91bmRPcmlnaW4pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kU2l6ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXpl
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFz
a1NpemUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlDbGVhcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eURpcmVjdGlvbikKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eURpc3BsYXkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlF
bXB0eUNlbGxzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5RmxvYXQpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlGb250U3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlG
b250VmFyaWFudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbikKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlP
dmVyZmxvdykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU92ZXJmbG93WCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eU92ZXJmbG93WSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVBhZ2VCcmVha0JlZm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZ2VCcmVha0Fm
dGVyKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5UG9zaXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlUYWJsZUxheW91dCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVZpc2liaWxpdHkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXaGl0
ZVNwYWNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb25YKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uWSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tSZXBlYXRYKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlDdXJzb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVy
TGVmdENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
QmFja2dyb3VuZEltYWdlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0lt
YWdlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21XaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0
aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlMZXR0ZXJTcGFjaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V29yZFNwYWNpbmcp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXb3JkQnJlYWspCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXb3JkV3JhcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE5i
c3BNb2RlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVD
b2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVJlc2l6ZSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eU1heFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWluV2lk
dGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVRvcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxlZnQpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlSaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJv
dHRvbSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU1hcmdpblRvcCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
TWFyZ2luQm90dG9tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWFyZ2luTGVmdCkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZGRpbmdUb3ApCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlQYWRkaW5nUmlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFkZGluZ0xlZnQpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0SW5kZW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5TWF4SGVpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5SGVpZ2h0KQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5TWluSGVpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5VmVydGljYWxBbGlnbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnRTaXplKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5WkluZGV4KQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2lkb3dzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3JwaGFucykKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlUZXh0QWxpZ24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlDbGlwKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5Q29udGVudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eUNvdW50ZXJJbmNyZW1lbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlDb3VudGVyUmVz
ZXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250RmFtaWx5KQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlab29tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2spCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlCb3JkZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlcldpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5Qm9yZGVyQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJUb3Ap
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJv
cmRlckxlZnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlNYXJnaW4pCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlQYWRkaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Rm9u
dCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxpc3RTdHlsZSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eU91dGxpbmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRB
cHBlYXJhbmNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2Up
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJSYWRpdXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BMZWZ0UmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmln
aHRSYWRpdXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFk
aXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0KQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVRleHRTaGFkb3cpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3hTaGFkb3cpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3cpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
T3BhY2l0eSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5U3JjKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
VW5pY29kZVJhbmdlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VW
aXNpYmlsaXR5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9u
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRCb3hQYWNrKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94
RmxleCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cCkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJveFNpemluZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkNvdW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uR2FwKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uU3BhbikKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5SdWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucykK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
RGlyZWN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVRleHRPdmVyZmxvdykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkNvbGxhcHNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3Jl
Q29sbGFwc2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xs
YXBzZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFw
c2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBz
ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdEh5cGhlbnMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRI
eXBoZW5hdGVDaGFyYWN0ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRIeXBo
ZW5hdGVMb2NhbGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0UGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVs
YXkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24p
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbikKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvbkR1cmF0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvblByb3BlcnR5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvblRpbWluZ0Z1bmN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UG9pbnRl
ckV2ZW50cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlv
bikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVNpemUpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlTcGVhaykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUludmFsaWQpCisKKyAg
ICAvLyBEaXJlY3Rpb25hbCBwcm9wZXJ0aWVzIGFyZSByZXNvbHZlZCBieSByZXNvbHZlRGlyZWN0
aW9uQXdhcmVQcm9wZXJ0eSgpIGJlZm9yZSB0aGUgc3dpdGNoLgorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdp
ZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJCZWZvcmVDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQmVmb3JlV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJB
ZnRlcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3Ip
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQmVmb3JlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QWZ0ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdExvZ2ljYWxXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdExvZ2lj
YWxIZWlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lk
dGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodCkKKyAgICAvLyBlbmQg
ZGlyZWN0aW9uYWwgcHJvcGVydGllcworCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250
U3RyZXRjaCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZ2UpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlRdW90ZXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2gpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xv
cikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZSkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5VGV4dE92ZXJsaW5lKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dE92
ZXJsaW5lQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2Rl
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0
VW5kZXJsaW5lQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5l
TW9kZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXMpCisKKyAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVs
IDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0V3JpdGluZ01vZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0
Q29tYmluZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bv
c2l0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5
bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24pCisj
aWYgRU5BQkxFKFdDU1MpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9v
cCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdhcE1hcnF1ZWVEaXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXYXBJbnB1
dEZvcm1hdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQpCisj
ZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRyeSB0aGUg
U1ZHIHByb3BlcnRpZXMKKyAgICAgICAgYXBwbHlTVkdQcm9wZXJ0eShpZCwgdmFsdWUpOworI2Vu
ZGlmCisgICAgfQorfQorCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UGFnZVNpemVQcm9w
ZXJ0eShDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgbV9zdHlsZS0+cmVzZXRQYWdlU2l6ZVR5cGUo
KTsKKyAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTChib3JkZXJDb2xsYXBzZSwgQm9yZGVyQ29sbGFwc2UpCi0gICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUpCisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgTGVuZ3RoIHdpZHRoOworICAgIExlbmd0aCBo
ZWlnaHQ7CisgICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOwor
ICAgIHN3aXRjaCAodmFsdWVMaXN0LT5sZW5ndGgoKSkgeworICAgIGNhc2UgMjogeworICAgICAg
ICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KKyAgICAgICAgcGFn
ZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOworICAgICAgICBpZiAoIXZhbHVlTGlzdC0+
aXRlbSgwKS0+aXNQcmltaXRpdmVWYWx1ZSgpIHx8ICF2YWx1ZUxpc3QtPml0ZW0oMSktPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbGxh
cHNlOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckNvbGxhcHNlKHRydWUpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNlcGFyYXRl
OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckNvbGxhcHNlKGZhbHNlKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgwKSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZTEgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlz
dC0+aXRlbSgxKSk7CisgICAgICAgIGludCB0eXBlMCA9IHByaW1pdGl2ZVZhbHVlMC0+cHJpbWl0
aXZlVHlwZSgpOworICAgICAgICBpbnQgdHlwZTEgPSBwcmltaXRpdmVWYWx1ZTEtPnByaW1pdGl2
ZVR5cGUoKTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3Ro
KHR5cGUwKSkgeworICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KKyAgICAgICAgICAgIGlmICgh
Q1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZTEpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIHdpZHRoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlMC0+
Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBG
aXhlZCk7CisgICAgICAgICAgICBoZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUxLT5jb21w
dXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVk
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+IDxvcmllbnRh
dGlvbj4KKyAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvcmRlciBpcyBndWFyYW50ZWVkLiBTZWUg
Q1NTUGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIuCisgICAgICAgICAgICBpZiAoIXBhZ2VTaXpl
RnJvbU5hbWUocHJpbWl0aXZlVmFsdWUwLCBwcmltaXRpdmVWYWx1ZTEsIHdpZHRoLCBoZWlnaHQp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoYm9yZGVyVG9wU3R5bGUsIEJv
cmRlclRvcFN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoYm9yZGVyUmlnaHRTdHlsZSwgQm9yZGVyUmln
aHRTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShib3JkZXJCb3R0b21TdHlsZSwgQm9yZGVyQm90dG9t
U3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRTdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5E
X1BSSU1JVElWRV9XSVRIX1ZBTFVFKGJvcmRlckxlZnRTdHlsZSwgQm9yZGVyTGVmdFN0eWxlLCBC
b3JkZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5l
U3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUob3V0
bGluZVN0eWxlLCBPdXRsaW5lU3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVN0eWxl
KERPVFRFRCwgdHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0T3V0bGluZVN0eWxlKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShjYXB0aW9uU2lkZSwgQ2FwdGlvblNp
ZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoY2xlYXIsIENsZWFyKQot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjoKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShkaXJlY3Rpb24sIERpcmVj
dGlvbikKLSAgICAgICAgaWYgKCFpc0luaGVyaXQgJiYgIWlzSW5pdGlhbCAmJiBtX2VsZW1lbnQg
JiYgbV9lbGVtZW50ID09IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkp
Ci0gICAgICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldERpcmVjdGlvblNldE9uRG9j
dW1lbnRFbGVtZW50KHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eURpc3BsYXk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJ
VkUoZGlzcGxheSwgRGlzcGxheSkKLSNpZiBFTkFCTEUoV0NTUykKLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVXYXBNYXJxdWVlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBX
QVAgTWFycXVlZSBzdHlsZQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WChP
TUFSUVVFRSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3ZlcmZsb3dZKE9NQVJRVUVF
KTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRXaGl0ZVNwYWNlKE5PV1JBUCk7Ci0gICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNTEVGVCk7Ci0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDg1KTsgLy8gTm9ybWFsIHNwZWVkCi0g
ICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudCgxKTsKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlQmVoYXZpb3IoTVNDUk9MTCk7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAobV9wYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0RGlzcGxheShtX3BhcmVudFN0eWxlLT5kaXNwbGF5KCkpOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlzcGxheSgqcHJpbWl0aXZlVmFs
dWUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlz
cGxheSgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGVtcHR5Q2VsbHMsIEVtcHR5Q2VsbHMpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoZmxvYXRpbmcsIEZsb2F0aW5nKQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKLSAgICB7Ci0gICAg
ICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3Jp
cHRpb24oKTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRJdGFsaWMobV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkp
OwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0SXRhbGljKGZhbHNlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXBy
aW1pdGl2ZVZhbHVlKQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSAxOiB7CisgICAg
ICAgIC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBwb3J0cmFpdCB8IGxhbmRz
Y2FwZV0KKyAgICAgICAgaWYgKCF2YWx1ZUxpc3QtPml0ZW0oMCktPmlzUHJpbWl0aXZlVmFsdWUo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZUxpc3QtPml0
ZW0oMCkpOworICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCk7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBl
KSkgeworICAgICAgICAgICAgLy8gPGxlbmd0aD4KKyAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9
IFBBR0VfU0laRV9SRVNPTFZFRDsKKyAgICAgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlm
ICh0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkg
ewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVPYmxpcXVlOgotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBvYmxpcXVlIGlzIHRoZSBzYW1lIGFzIGl0YWxpYyBmb3IgdGhlIG1vbWVudC4u
LgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVJdGFsaWM6Ci0gICAgICAgICAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgICAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUF1dG86CisgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpF
X0FVVE87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
UG9ydHJhaXQ6CisgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9f
UE9SVFJBSVQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlTGFuZHNjYXBlOgorICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9B
VVRPX0xBTkRTQ0FQRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4KKyAgICAgICAgICAgICAgICBwYWdl
U2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7CisgICAgICAgICAgICAgICAgaWYgKCFwYWdl
U2l6ZUZyb21OYW1lKHByaW1pdGl2ZVZhbHVlLCAwLCB3aWR0aCwgaGVpZ2h0KSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlm
IChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAg
ICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgbV9zdHlsZS0+c2V0UGFnZVNpemVUeXBl
KHBhZ2VTaXplVHlwZSk7CisgICAgbV9zdHlsZS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0
aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJuOworfQogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50OgotICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9
IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAoaXNJbmhlcml0KSAKLSAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMobV9wYXJlbnRTdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCkuc21hbGxDYXBzKCkpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwp
Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBzKGZhbHNlKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIGludCBpZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpOwotICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoZmFsc2UpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbENhcHMpCi0gICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldFNtYWxsQ2Fwcyh0cnVlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVl
OwotICAgICAgICByZXR1cm47Citib29sIENTU1N0eWxlU2VsZWN0b3I6OnBhZ2VTaXplRnJvbU5h
bWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHBh
Z2VPcmllbnRhdGlvbiwgTGVuZ3RoJiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCit7CisgICAgc3Rh
dGljIGNvbnN0IExlbmd0aCBhNVdpZHRoID0gbW1MZW5ndGgoMTQ4KSwgYTVIZWlnaHQgPSBtbUxl
bmd0aCgyMTApOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTRXaWR0aCA9IG1tTGVuZ3RoKDIx
MCksIGE0SGVpZ2h0ID0gbW1MZW5ndGgoMjk3KTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGEz
V2lkdGggPSBtbUxlbmd0aCgyOTcpLCBhM0hlaWdodCA9IG1tTGVuZ3RoKDQyMCk7CisgICAgc3Rh
dGljIGNvbnN0IExlbmd0aCBiNVdpZHRoID0gbW1MZW5ndGgoMTc2KSwgYjVIZWlnaHQgPSBtbUxl
bmd0aCgyNTApOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYjRXaWR0aCA9IG1tTGVuZ3RoKDI1
MCksIGI0SGVpZ2h0ID0gbW1MZW5ndGgoMzUzKTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxl
dHRlcldpZHRoID0gaW5jaExlbmd0aCg4LjUpLCBsZXR0ZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDEx
KTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZ2FsV2lkdGggPSBpbmNoTGVuZ3RoKDguNSks
IGxlZ2FsSGVpZ2h0ID0gaW5jaExlbmd0aCgxNCk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBs
ZWRnZXJXaWR0aCA9IGluY2hMZW5ndGgoMTEpLCBsZWRnZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDE3
KTsKKworICAgIGlmICghcGFnZVNpemVOYW1lIHx8IHBhZ2VTaXplTmFtZS0+cHJpbWl0aXZlVHlw
ZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHN3aXRjaCAocGFnZVNpemVOYW1lLT5nZXRJZGVudCgpKSB7CisgICAgY2FzZSBD
U1NWYWx1ZUE1OgorICAgICAgICB3aWR0aCA9IGE1V2lkdGg7CisgICAgICAgIGhlaWdodCA9IGE1
SGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlQTQ6CisgICAgICAgIHdp
ZHRoID0gYTRXaWR0aDsKKyAgICAgICAgaGVpZ2h0ID0gYTRIZWlnaHQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTVmFsdWVBMzoKKyAgICAgICAgd2lkdGggPSBhM1dpZHRoOworICAgICAg
ICBoZWlnaHQgPSBhM0hlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUI1
OgorICAgICAgICB3aWR0aCA9IGI1V2lkdGg7CisgICAgICAgIGhlaWdodCA9IGI1SGVpZ2h0Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlQjQ6CisgICAgICAgIHdpZHRoID0gYjRX
aWR0aDsKKyAgICAgICAgaGVpZ2h0ID0gYjRIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTVmFsdWVMZXR0ZXI6CisgICAgICAgIHdpZHRoID0gbGV0dGVyV2lkdGg7CisgICAgICAg
IGhlaWdodCA9IGxldHRlckhlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1
ZUxlZ2FsOgorICAgICAgICB3aWR0aCA9IGxlZ2FsV2lkdGg7CisgICAgICAgIGhlaWdodCA9IGxl
Z2FsSGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlTGVkZ2VyOgorICAg
ICAgICB3aWR0aCA9IGxlZGdlcldpZHRoOworICAgICAgICBoZWlnaHQgPSBsZWRnZXJIZWlnaHQ7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFdlaWdodDoKLSAgICB7Ci0gICAgICAgIEZv
bnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24o
KTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRXZWlnaHQobV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpOwotICAg
ICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlQm9sZGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldFdlaWdodChmb250RGVzY3JpcHRpb24uYm9sZGVyV2VpZ2h0KCkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaWdo
dGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChm
b250RGVzY3JpcHRpb24ubGlnaHRlcldlaWdodCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQm9sZDoKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZTcwMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJvbGQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU0MDA6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWU5MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2Vp
Z2h0KEZvbnRXZWlnaHQ5MDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU4MDA6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ4MDApOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU2MDA6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRX
ZWlnaHQ2MDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWU1MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ1MDApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWUzMDA6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQzMDAp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWUyMDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0V2VpZ2h0KEZvbnRXZWlnaHQyMDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWUxMDA6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQxMDApOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
aWYgKHBhZ2VPcmllbnRhdGlvbikgeworICAgICAgICBpZiAocGFnZU9yaWVudGF0aW9uLT5wcmlt
aXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgc3dpdGNoIChwYWdlT3JpZW50YXRpb24tPmdldElkZW50
KCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKKyAgICAgICAgICAgIHN0ZDo6
c3dhcCh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENT
U1ZhbHVlUG9ydHJhaXQ6CisgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1
cm47CiAgICAgfQotICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRp
b246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobGlz
dFN0eWxlUG9zaXRpb24sIExpc3RTdHlsZVBvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUobGlzdFN0eWxlVHlwZSwgTGlzdFN0eWxlVHlwZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAgICB7Ci0gICAg
ICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WCht
X3BhcmVudFN0eWxlLT5vdmVyZmxvd1goKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVy
Zmxvd1kobV9wYXJlbnRTdHlsZS0+b3ZlcmZsb3dZKCkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRPdmVyZmxvd1goUmVuZGVyU3R5bGU6OmluaXRpYWxPdmVyZmxvd1goKSk7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1koUmVuZGVyU3R5bGU6OmluaXRpYWxP
dmVyZmxvd1koKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgICAg
IAotICAgICAgICBFT3ZlcmZsb3cgbyA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworTGVuZ3RoIENTU1N0eWxlU2VsZWN0b3I6Om1tTGVuZ3RoKGRvdWJsZSBtbSkgY29u
c3QKK3sKKyAgICByZXR1cm4gTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobW0sIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU0pLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKK30KKworTGVuZ3RoIENTU1N0eWxlU2Vs
ZWN0b3I6OmluY2hMZW5ndGgoZG91YmxlIGluY2gpIGNvbnN0Cit7CisgICAgcmV0dXJuIExlbmd0
aChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGluY2gsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SU4pLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSksIEZpeGVkKTsKK30KIAotICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1gobyk7Ci0gICAg
ICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WShvKTsKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFw
RmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUq
IHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNT
U19JTklUSUFMKSB7CisgICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50KEZpbGxMYXllcjo6aW5p
dGlhbEZpbGxBdHRhY2htZW50KGxheWVyLT50eXBlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUob3ZlcmZsb3dYLCBPdmVyZmxvd1gpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG92ZXJmbG93WSwgT3ZlcmZsb3dZ
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZB
TFVFKHBhZ2VCcmVha0JlZm9yZSwgUGFnZUJyZWFrQmVmb3JlLCBQYWdlQnJlYWspCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShwYWdlQnJl
YWtBZnRlciwgUGFnZUJyZWFrQWZ0ZXIsIFBhZ2VCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6IHsKLSAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShwYWdlQnJlYWtJbnNpZGUsIFBhZ2VCcmVha0luc2lk
ZSwgUGFnZUJyZWFrKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBFUGFnZUJyZWFrIHBhZ2VCcmVhayA9ICpwcmltaXRpdmVWYWx1ZTsK
LSAgICAgICAgaWYgKHBhZ2VCcmVhayAhPSBQQkFMV0FZUykKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldFBhZ2VCcmVha0luc2lkZShwYWdlQnJlYWspOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUocG9zaXRpb24sIFBvc2l0aW9uKQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiB7Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRhYmxlTGF5b3V0LCBUYWJsZUxheW91dCkKLQot
ICAgICAgICBFVGFibGVMYXlvdXQgbCA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAgaWYgKGwg
PT0gVEFVVE8pCi0gICAgICAgICAgICBsID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJsZUxheW91
dCgpOwotCi0gICAgICAgIG1fc3R5bGUtPnNldFRhYmxlTGF5b3V0KGwpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6IAot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHVuaWNvZGVC
aWRpLCBVbmljb2RlQmlkaSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0VHJhbnNmb3JtOiAKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRSh0ZXh0VHJhbnNmb3JtLCBUZXh0VHJhbnNmb3JtKQotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUodmlzaWJpbGl0eSwgVmlzaWJpbGl0eSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHdoaXRlU3BhY2UsIFdoaXRlU3BhY2Up
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b246Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX0lOSEVSSVRfQU5EX0lOSVRJQUwoeFBvc2l0
aW9uLCBYUG9zaXRpb24pOwotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9JTkhFUklUX0FORF9J
TklUSUFMKHlQb3NpdGlvbiwgWVBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOiB7Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JP
VU5EX1ZBTFVFKHhQb3NpdGlvbiwgWFBvc2l0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWTogewotICAgICAg
ICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRSh5UG9zaXRpb24sIFlQb3NpdGlvbiwgdmFsdWUpCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvbjoKLSAgICAgICAgSEFORExFX01BU0tfSU5IRVJJVF9BTkRfSU5JVElBTCh4UG9zaXRpb24s
IFhQb3NpdGlvbik7Ci0gICAgICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwoeVBv
c2l0aW9uLCBZUG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblg6IHsKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoeFBvc2l0
aW9uLCBYUG9zaXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOiB7Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZB
TFVFKHlQb3NpdGlvbiwgWVBvc2l0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKLSAgICAgICAgSEFORExFX0JB
Q0tHUk9VTkRfSU5IRVJJVF9BTkRfSU5JVElBTChyZXBlYXRYLCBSZXBlYXRYKTsKLSAgICAgICAg
SEFORExFX0JBQ0tHUk9VTkRfSU5IRVJJVF9BTkRfSU5JVElBTChyZXBlYXRZLCBSZXBlYXRZKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDoK
LSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUocmVwZWF0WCwgUmVwZWF0WCwgdmFsdWUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6
Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKHJlcGVhdFksIFJlcGVhdFksIHZhbHVl
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6
Ci0gICAgICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwocmVwZWF0WCwgUmVwZWF0
WCk7Ci0gICAgICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwocmVwZWF0WSwgUmVw
ZWF0WSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdFg6Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKHJlcGVhdFgsIFJlcGVhdFgsIHZhbHVl
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZ
OgotICAgICAgICBIQU5ETEVfTUFTS19WQUxVRShyZXBlYXRZLCBSZXBlYXRZLCB2YWx1ZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOiB7Ci0gICAg
ICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhvcml6b250YWxC
b3JkZXJTcGFjaW5nKG1fcGFyZW50U3R5bGUtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkpOwot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKG1fcGFyZW50U3R5
bGUtPnZlcnRpY2FsQm9yZGVyU3BhY2luZygpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlm
IChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJT
cGFjaW5nKDApOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5n
KDApOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKGhvcml6b250YWxCb3JkZXJTcGFjaW5nLCBIb3Jpem9udGFsQm9yZGVy
U3BhY2luZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3Ro
U2hvcnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAg
bV9zdHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3Bh
Y2luZzogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEJvcmRl
clNwYWNpbmcsIFZlcnRpY2FsQm9yZGVyU3BhY2luZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
LCB6b29tRmFjdG9yKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5n
KHNwYWNpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlD
dXJzb3I6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEN1cnNvcihtX3BhcmVudFN0eWxlLT5jdXJzb3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRDdXJzb3JMaXN0KG1fcGFyZW50U3R5bGUtPmN1cnNvcnMoKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHlsZS0+Y2xlYXJDdXJzb3JMaXN0KCk7Ci0gICAg
ICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcihSZW5k
ZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIENTU1Zh
bHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAg
ICAgICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEN1cnNvcihDVVJTT1JfQVVUTyk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxl
bjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7
Ci0gICAgICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlw
ZSgpOwotICAgICAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VVJJKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDdXJzb3JJ
bWFnZVZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU0N1cnNvckltYWdlVmFs
dWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZh
bHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+dXBkYXRlSWZTVkdDdXJz
b3JJc1VzZWQobV9lbGVtZW50KSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vyc29ycyBhcmUgbm90
IGFsbG93ZWQgdG8gc2hhcmUgc3R5bGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5hZGRD
dXJzb3IoY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q3Vyc29yLCBpbWFnZSks
IGltYWdlLT5ob3RTcG90KCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAg
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAg
ICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAg
ICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UICYmIG1fc3R5bGUt
PmN1cnNvcigpICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKSkKLSAgICAgICAgICAgICAgICBt
X3N0eWxlLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm47Ci0vLyBjb2xvcnMgfHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoK
LSAgICAgICAgLy8gSWYgdGhlICdjdXJyZW50Q29sb3InIGtleXdvcmQgaXMgc2V0IG9uIHRoZSAn
Y29sb3InIHByb3BlcnR5IGl0c2VsZiwKLSAgICAgICAgLy8gaXQgaXMgdHJlYXRlZCBhcyAnY29s
b3I6aW5oZXJpdCcgYXQgcGFyc2UgdGltZQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYg
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpCi0gICAg
ICAgICAgICBpc0luaGVyaXQgPSB0cnVlOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21Db2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blJ1bGVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjogewotICAgICAgICBDb2xvciBjb2w7Ci0gICAg
ICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGJhY2tncm91bmRDb2xvciwgQmFja2dyb3VuZENvbG9y
KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0
eUJvcmRlclRvcENvbG9yLCBib3JkZXJUb3BDb2xvciwgY29sb3IsIEJvcmRlclRvcENvbG9yKQot
ICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbUNvbG9yLCBib3JkZXJCb3R0b21Db2xvciwgY29sb3IsIEJvcmRlckJvdHRvbUNv
bG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIGJvcmRlclJpZ2h0Q29sb3IsIGNvbG9yLCBCb3JkZXJSaWdo
dENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgYm9yZGVyTGVmdENvbG9yLCBjb2xvciwgQm9yZGVyTGVm
dENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUNvbG9y
LCBjb2xvciwgQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFD
S1VQKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBvdXRsaW5lQ29sb3IsIGNvbG9yLCBPdXRsaW5l
Q29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLCBjb2x1bW5SdWxlQ29sb3IsIGNvbG9yLCBDb2x1
bW5SdWxlQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQ
KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCB0ZXh0U3Ryb2tlQ29sb3IsIGNvbG9y
LCBUZXh0U3Ryb2tlQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhf
QkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIHRleHRFbXBoYXNpc0Nv
bG9yLCBjb2xvciwgVGV4dEVtcGhhc2lzQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwgdGV4dEZp
bGxDb2xvciwgY29sb3IsIFRleHRGaWxsQ29sb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgLy8gVGhlIGJvcmRl
ci9vdXRsaW5lIGNvbG9ycyB3aWxsIGp1c3QgbWFwIHRvIHRoZSBpbnZhbGlkIGNvbG9yIHxjb2x8
IGFib3ZlLiAgVGhpcyB3aWxsIGhhdmUgdGhlCi0gICAgICAgICAgICAvLyBlZmZlY3Qgb2YgZm9y
Y2luZyB0aGUgdXNlIG9mIHRoZSBjdXJyZW50Q29sb3Igd2hlbiBpdCBjb21lcyB0aW1lIHRvIGRy
YXcgdGhlIGJvcmRlcnMgKGFuZCBvZgotICAgICAgICAgICAgLy8gbm90IHBhaW50aW5nIHRoZSBi
YWNrZ3JvdW5kIHNpbmNlIHRoZSBjb2xvciB3b24ndCBiZSB2YWxpZCkuCi0gICAgICAgICAgICBp
ZiAoaWQgPT0gQ1NTUHJvcGVydHlDb2xvcikKLSAgICAgICAgICAgICAgICBjb2wgPSBSZW5kZXJT
dHlsZTo6aW5pdGlhbENvbG9yKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
IXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNv
bCA9IGdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJhY2tncm91bmRDb2xvcihjb2wp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BD
b2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENvbG9yKGNvbCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodENvbG9yKGNvbCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3IoY29sKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Q29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1By
b3BlcnR5T3V0bGluZUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZUNvbG9y
KGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGVDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVDb2xv
cihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0U3Ryb2tlQ29s
b3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFz
aXNDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RmlsbENvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEZpbGxD
b2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0vLyB1cmkgfHwgaW5oZXJpdAotICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVF
KGltYWdlLCBJbWFnZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza0ltYWdlOgotICAgICAgICBIQU5ETEVfTUFTS19WQUxVRShpbWFnZSwgSW1h
Z2UsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHls
ZUltYWdlOgotICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobGlzdFN0
eWxlSW1hZ2UsIExpc3RTdHlsZUltYWdlKQotICAgICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVJ
bWFnZShzdHlsZUltYWdlKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIHZhbHVlKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLS8vIGxlbmd0aAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGg6Ci0gICAgewotICAgICAgICBpZiAo
aXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5
Qm9yZGVyVG9wV2lkdGgsIGJvcmRlclRvcFdpZHRoLCBCb3JkZXJUb3BXaWR0aCkKLSAgICAgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBib3Jk
ZXJSaWdodFdpZHRoLCBCb3JkZXJSaWdodFdpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVS
SVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBib3JkZXJCb3R0b21XaWR0aCwg
Qm9yZGVyQm90dG9tV2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1By
b3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBib3JkZXJMZWZ0V2lkdGgsIEJvcmRlckxlZnRXaWR0aCkK
LSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgs
IG91dGxpbmVXaWR0aCwgT3V0bGluZVdpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRf
Q09ORChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgY29sdW1uUnVsZVdpZHRoLCBD
b2x1bW5SdWxlV2lkdGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJ
VEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQm9yZGVyVG9wV2lkdGgsIEJvcmRl
cldpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQm9yZGVyUmlnaHRXaWR0aCwgQm9yZGVyV2lkdGgpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21XaWR0aCwgQm9yZGVyQm90dG9tV2lkdGgsIEJvcmRlcldpZHRoKQotICAgICAgICAg
ICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdp
ZHRoLCBCb3JkZXJMZWZ0V2lkdGgsIEJvcmRlcldpZHRoKQotICAgICAgICAgICAgSEFORExFX0lO
SVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBPdXRsaW5lV2lk
dGgsIEJvcmRlcldpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDb2x1bW5SdWxlV2lkdGgsIEJv
cmRlcldpZHRoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgd2lk
dGggPSAzOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0g
ICAgICAgIGNhc2UgQ1NTVmFsdWVUaGluOgotICAgICAgICAgICAgd2lkdGggPSAxOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06Ci0gICAgICAgICAgICB3
aWR0aCA9IDM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaWNr
OgotICAgICAgICAgICAgd2lkdGggPSA1OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ1NTVmFsdWVJbnZhbGlkOgotICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aFNob3J0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rv
cik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3aWR0aCA8IDApIHJldHVybjsKLSAgICAg
ICAgc3dpdGNoIChpZCkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aCh3aWR0aCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGg6Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodFdpZHRoKHdpZHRoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aCh3aWR0aCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRXaWR0aCh3aWR0aCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aDoKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldE91dGxpbmVXaWR0aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aDoKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVXaWR0aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9v
dGhpbmc6IHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAoaXNJbmhlcml0KSAKLSAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKG1fcGFyZW50U3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlh
bCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKEF1dG9TbW9v
dGhpbmcpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaW50IGlkID0gcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCk7Ci0gICAgICAgICAgICBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhp
bmc7Ci0gICAgICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZUF1dG86Ci0gICAgICAgICAgICAgICAgICAgIHNtb290aGluZyA9IEF1dG9TbW9vdGhpbmc7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVOb25lOgotICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmcgPSBOb1Ntb290aGluZzsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUFu
dGlhbGlhc2VkOgotICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmcgPSBBbnRpYWxpYXNlZDsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVN1YnBpeGVsQW50aWFsaWFzZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNtb290aGluZyA9IFN1
YnBpeGVsQW50aWFsaWFzZWQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmcgPSBBdXRvU21vb3RoaW5nOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoc21v
b3RoaW5nKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0
aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2lu
ZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6Ci0gICAgewotICAgICAgICAKLSAg
ICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChD
U1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIGxldHRlclNwYWNpbmcsIExldHRlclNwYWNpbmcpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIHdv
cmRTcGFjaW5nLCBXb3JkU3BhY2luZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFM
X0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIExldHRlclNwYWNpbmcs
IExldHRlcldvcmRTcGFjaW5nKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRI
X1ZBTFVFKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIFdvcmRTcGFjaW5nLCBMZXR0ZXJXb3JkU3Bh
Y2luZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
aW50IHdpZHRoID0gMDsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKSB7Ci0gICAgICAgICAgICB3aWR0aCA9
IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB1c2VTVkda
b29tUnVsZXMgPyAxLjBmIDogem9vbUZhY3Rvcik7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNo
IChpZCkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldExldHRlclNwYWNpbmcod2lkdGgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldFdvcmRTcGFjaW5nKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgLy8gIyMjIG5lZWRzIHRoZSBkZWZpbml0aW9ucyBpbiByZW5kZXJzdHlsZQotICAgICAgICBk
ZWZhdWx0OiBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUxfQU5EX1BSSU1JVElWRSh3b3JkQnJlYWssIFdvcmRCcmVhaykKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh3b3JkV3JhcCwgV29yZFdyYXApCi0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6Ci0gICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobmJzcE1vZGUsIE5CU1BNb2RlKQot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazoKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShraHRtbExpbmVC
cmVhaywgS0hUTUxMaW5lQnJlYWspCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjoKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShtYXRjaE5lYXJlc3RNYWlsQmxvY2tx
dW90ZUNvbG9yLCBNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOgotICAgIHsKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwocmVzaXplLCBSZXNpemUpCi0KLSAgICAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBF
UmVzaXplIHIgPSBSRVNJWkVfTk9ORTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0
aW5ncyA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpKQotICAgICAgICAgICAgICAg
IHIgPSBzZXR0aW5ncy0+dGV4dEFyZWFzQXJlUmVzaXphYmxlKCkgPyBSRVNJWkVfQk9USCA6IFJF
U0laRV9OT05FOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHIgPSAqcHJpbWl0aXZlVmFs
dWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgbV9zdHlsZS0+c2V0UmVzaXplKHIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIGxlbmd0aCwgcGVyY2VudAotICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXhXaWR0aDoKLSAgICAgICAgLy8gK25vbmUgK2luaGVyaXQKLSAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlTm9uZSkKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICBjYXNlIENTU1Byb3BlcnR5
VG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlSaWdo
dDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0
aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpblRvcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hcmdpbkJvdHRvbToKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVmdDoKLSAg
ICAgICAgLy8gK2luaGVyaXQgK2F1dG8KLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5V2lk
dGggfHwgaWQgPT0gQ1NTUHJvcGVydHlNaW5XaWR0aCB8fCBpZCA9PSBDU1NQcm9wZXJ0eU1heFdp
ZHRoKSB7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnRyaW5zaWMpIHsKLSAgICAgICAgICAgICAgICBsID0g
TGVuZ3RoKEludHJpbnNpYyk7Ci0gICAgICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNaW5JbnRyaW5zaWMpIHsKLSAgICAgICAgICAg
ICAgICBsID0gTGVuZ3RoKE1pbkludHJpbnNpYyk7Ci0gICAgICAgICAgICAgICAgYXBwbHkgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChpZCAhPSBDU1NQcm9w
ZXJ0eU1heFdpZHRoICYmIHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICBjYXNl
IENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWRkaW5nTGVmdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDoKLSAgICAgICAg
Ly8gK2luaGVyaXQKLSAgICB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAg
IEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXhXaWR0aCwgbWF4V2lkdGgsIE1heFdp
ZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvdHRvbSwg
Ym90dG9tLCBCb3R0b20pCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3Bl
cnR5VG9wLCB0b3AsIFRvcCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJv
cGVydHlMZWZ0LCBsZWZ0LCBMZWZ0KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChD
U1NQcm9wZXJ0eVJpZ2h0LCByaWdodCwgUmlnaHQpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9DT05EKENTU1Byb3BlcnR5V2lkdGgsIHdpZHRoLCBXaWR0aCkKLSAgICAgICAgICAgIEhBTkRM
RV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNaW5XaWR0aCwgbWluV2lkdGgsIE1pbldpZHRoKQot
ICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIHBh
ZGRpbmdUb3AsIFBhZGRpbmdUb3ApCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENT
U1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBwYWRkaW5nUmlnaHQsIFBhZGRpbmdSaWdodCkKLSAgICAg
ICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBwYWRk
aW5nQm90dG9tLCBQYWRkaW5nQm90dG9tKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09O
RChDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBwYWRkaW5nTGVmdCwgUGFkZGluZ0xlZnQpCi0gICAg
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBtYXJnaW5U
b3AsIE1hcmdpblRvcCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVy
dHlNYXJnaW5SaWdodCwgbWFyZ2luUmlnaHQsIE1hcmdpblJpZ2h0KQotICAgICAgICAgICAgSEFO
RExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgbWFyZ2luQm90dG9tLCBN
YXJnaW5Cb3R0b20pCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5
TWFyZ2luTGVmdCwgbWFyZ2luTGVmdCwgTWFyZ2luTGVmdCkKLSAgICAgICAgICAgIEhBTkRMRV9J
TkhFUklUX0NPTkQoQ1NTUHJvcGVydHlUZXh0SW5kZW50LCB0ZXh0SW5kZW50LCBUZXh0SW5kZW50
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5p
dGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1By
b3BlcnR5TWF4V2lkdGgsIE1heFdpZHRoLCBNYXhTaXplKQotICAgICAgICAgICAgSEFORExFX0lO
SVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm90dG9tLCBCb3R0b20sIE9mZnNldCkK
LSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVRv
cCwgVG9wLCBPZmZzZXQpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFM
VUUoQ1NTUHJvcGVydHlMZWZ0LCBMZWZ0LCBPZmZzZXQpCi0gICAgICAgICAgICBIQU5ETEVfSU5J
VElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlSaWdodCwgUmlnaHQsIE9mZnNldCkKLSAg
ICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVdpZHRo
LCBXaWR0aCwgU2l6ZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxV
RShDU1NQcm9wZXJ0eU1pbldpZHRoLCBNaW5XaWR0aCwgTWluU2l6ZSkKLSAgICAgICAgICAgIEhB
TkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIFBhZGRp
bmdUb3AsIFBhZGRpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFM
VUUoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIFBhZGRpbmdSaWdodCwgUGFkZGluZykKLSAgICAg
ICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdC
b3R0b20sIFBhZGRpbmdCb3R0b20sIFBhZGRpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElB
TF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgUGFkZGluZ0xlZnQsIFBh
ZGRpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJv
cGVydHlNYXJnaW5Ub3AsIE1hcmdpblRvcCwgTWFyZ2luKQotICAgICAgICAgICAgSEFORExFX0lO
SVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIE1hcmdpblJpZ2h0
LCBNYXJnaW4pCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b20sIE1hcmdpbkJvdHRvbSwgTWFyZ2luKQotICAgICAgICAgICAg
SEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgTWFy
Z2luTGVmdCwgTWFyZ2luKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORChDU1NQcm9w
ZXJ0eVRleHRJbmRlbnQsIFRleHRJbmRlbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0gCi0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmICFhcHBseSkgewotICAgICAgICAg
ICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAg
ICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAg
ICAgICAgICAgIC8vIEhhbmRsZSBvdXIgcXVpcmt5IG1hcmdpbiB1bml0cyBpZiB3ZSBoYXZlIHRo
ZW0uCi0gICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3Ip
LCBGaXhlZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZS0+aXNR
dWlya1ZhbHVlKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRp
dmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAg
ICB9Ci0gICAgICAgIGlmICghYXBwbHkpIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChpZCkgewot
ICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldE1heFdpZHRoKGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRC
b3R0b20obCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1By
b3BlcnR5VG9wOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFRvcChsKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgotICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldExlZnQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6Ci0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0UmlnaHQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2lkdGg6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0V2lkdGgobCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWlu
V2lkdGg6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWluV2lkdGgobCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoK
LSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nVG9wKGwpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nUmlnaHQobCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nQm90dG9tKGwpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0OgotICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdMZWZ0KGwpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRvcDoKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5Ub3AobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6Ci0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0TWFyZ2luUmlnaHQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgotICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldE1hcmdpbkJvdHRvbShsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldE1hcmdpbkxlZnQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDoKLSAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRUZXh0SW5kZW50KGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6Ci0gICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZU5vbmUpIHsKLSAgICAgICAgICAgIGwgPSBMZW5ndGgodW5kZWZpbmVkTGVuZ3RoLCBGaXhl
ZCk7Ci0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICBjYXNlIENTU1By
b3BlcnR5SGVpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6Ci0gICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUludHJpbnNpYykgewotICAgICAgICAgICAgbCA9IExlbmd0aChJbnRyaW5zaWMpOwotICAgICAg
ICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlICYm
IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTWluSW50cmluc2ljKSB7Ci0g
ICAgICAgICAgICBsID0gTGVuZ3RoKE1pbkludHJpbnNpYyk7Ci0gICAgICAgICAgICBhcHBseSA9
IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoaWQgIT0gQ1NTUHJvcGVydHlNYXhIZWlnaHQgJiYg
cHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVB
dXRvKQotICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAgICBpZiAoaXNJbmhlcml0KSB7
Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBt
YXhIZWlnaHQsIE1heEhlaWdodCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NT
UHJvcGVydHlIZWlnaHQsIGhlaWdodCwgSGVpZ2h0KQotICAgICAgICAgICAgSEFORExFX0lOSEVS
SVRfQ09ORChDU1NQcm9wZXJ0eU1pbkhlaWdodCwgbWluSGVpZ2h0LCBNaW5IZWlnaHQpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAg
ICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWF4SGVp
Z2h0LCBNYXhIZWlnaHQsIE1heFNpemUpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05E
X1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlIZWlnaHQsIEhlaWdodCwgU2l6ZSkKLSAgICAgICAgICAg
IEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgTWlu
SGVpZ2h0LCBNaW5TaXplKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmICFhcHBseSkgewotICAgICAgICAgICAgdW5zaWduZWQg
c2hvcnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAg
ICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAg
ICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxl
bmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0g
ICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSkKLSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3Vi
bGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGFwcGx5KQotICAgICAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlNYXhIZWlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1h
eEhlaWdodChsKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
SGVpZ2h0KGwpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRNaW5IZWlnaHQobCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodmVydGljYWxBbGlnbiwgVmVydGlj
YWxBbGlnbikKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAg
RVZlcnRpY2FsQWxpZ24gYWxpZ247Ci0KLSAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRvcDoKLSAgICAg
ICAgICAgICAgICAgICAgYWxpZ24gPSBUT1A7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVCb3R0b206Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gQk9UVE9NOyBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTWlkZGxlOgotICAgICAgICAgICAgICAg
ICAgICBhbGlnbiA9IE1JRERMRTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUJhc2VsaW5lOgotICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IEJBU0VMSU5FOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVGV4dEJvdHRvbToKLSAgICAgICAgICAgICAg
ICAgICAgYWxpZ24gPSBURVhUX0JPVFRPTTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVRleHRUb3A6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gVEVYVF9UT1A7IGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdWI6Ci0gICAgICAgICAgICAgICAg
ICAgIGFsaWduID0gU1VCOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3Vw
ZXI6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1VQRVI7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRCYXNlbGluZU1pZGRsZToKLSAgICAgICAgICAgICAg
ICAgICAgYWxpZ24gPSBCQVNFTElORV9NSURETEU7IGJyZWFrOwotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKGFsaWduKTsKLSAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAgIExlbmd0aCBsOwotICAgICAgICAgIGlmIChDU1NQ
cmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBM
ZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOwotICAgICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAg
ICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
Ci0KLSAgICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKExFTkdUSCk7Ci0gICAgICAg
ICAgbV9zdHlsZS0+c2V0VmVydGljYWxBbGlnbkxlbmd0aChsKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6Ci0gICAgewotICAgICAg
ICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCk7Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsKLSAgICAg
ICAgZmxvYXQgb2xkU2l6ZSA9IDA7Ci0gICAgICAgIGZsb2F0IHNpemUgPSAwOwotICAgICAgICAK
LSAgICAgICAgYm9vbCBwYXJlbnRJc0Fic29sdXRlU2l6ZSA9IGZhbHNlOwotICAgICAgICBpZiAo
bV9wYXJlbnROb2RlKSB7Ci0gICAgICAgICAgICBvbGRTaXplID0gbV9wYXJlbnRTdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOwotICAgICAgICAgICAgcGFyZW50SXNBYnNv
bHV0ZVNpemUgPSBtX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5pc0Fic29sdXRlU2l6
ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAg
c2l6ZSA9IG9sZFNpemU7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnROb2RlKQotICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShtX3BhcmVudFN0eWxlLT5mb250
RGVzY3JpcHRpb24oKS5rZXl3b3JkU2l6ZSgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRp
YWwpIHsKLSAgICAgICAgICAgIHNpemUgPSBmb250U2l6ZUZvcktleXdvcmQobV9jaGVja2VyLm1f
ZG9jdW1lbnQsIENTU1ZhbHVlTWVkaXVtLCBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0
U2l6ZSgpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShDU1NW
YWx1ZU1lZGl1bSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwotICAgICAgICB9IGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAvLyBLZXl3b3JkcyBhcmUg
YmVpbmcgdXNlZC4KLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlWHhTbWFsbDoKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlWFNtYWxsOgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVT
bWFsbDoKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgotICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlWExh
cmdlOgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVYeExhcmdlOgotICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRYeHhMYXJnZToKLSAgICAgICAgICAgICAgICAgICAgc2l6
ZSA9IGZvbnRTaXplRm9yS2V5d29yZChtX2NoZWNrZXIubV9kb2N1bWVudCwgcHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCksIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOwot
ICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlcjoKLSAg
ICAgICAgICAgICAgICAgICAgc2l6ZSA9IGxhcmdlckZvbnRTaXplKG9sZFNpemUsIG1fY2hlY2tl
ci5tX2RvY3VtZW50LT5pblF1aXJrc01vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFsbGVyOgotICAgICAgICAgICAgICAg
ICAgICBzaXplID0gc21hbGxlckZvbnRTaXplKG9sZFNpemUsIG1fY2hlY2tlci5tX2RvY3VtZW50
LT5pblF1aXJrc01vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHBhcmVu
dElzQWJzb2x1dGVTaXplICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUxhcmdlciB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVNtYWxsZXIpKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUo
KTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJ
c0Fic29sdXRlU2l6ZSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICE9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRU1TICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTICYmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgIT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TKSk7Ci0gICAgICAgICAgICBpZiAoQ1NTUHJpbWl0aXZl
VmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICAgICAgc2l6ZSA9IHBy
aW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQobV9wYXJlbnRTdHlsZSwgbV9yb290RWxl
bWVudFN0eWxlLCB0cnVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgICAgIHNpemUgPSAocHJpbWl0
aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSAqIG9sZFNpemUpIC8gMTAwLjBmOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChzaXplIDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBzZXRGb250U2l6ZShm
b250RGVzY3JpcHRpb24sIHNpemUpOwotICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2Ny
aXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5WkluZGV4OiB7
Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChtX3BhcmVudFN0eWxl
LT5oYXNBdXRvWkluZGV4KCkpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b1pJ
bmRleCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFpJ
bmRleChtX3BhcmVudFN0eWxlLT56SW5kZXgoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b1pJbmRleCgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBG
SVhNRTogU2hvdWxkIGNsYW1wIGFsbCBzb3J0cyBvZiBvdGhlciBpbnRlZ2VyIHByb3BlcnRpZXMg
dG9vLgotICAgICAgICBjb25zdCBkb3VibGUgbWluSW50QXNEb3VibGUgPSBJTlRfTUlOOwotICAg
ICAgICBjb25zdCBkb3VibGUgbWF4SW50QXNEb3VibGUgPSBJTlRfTUFYOwotICAgICAgICBtX3N0
eWxlLT5zZXRaSW5kZXgoc3RhdGljX2Nhc3Q8aW50PihtYXgobWluSW50QXNEb3VibGUsIG1pbihw
cmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgbWF4SW50QXNEb3VibGUpKSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6Ci0gICAgewot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh3aWRvd3MsIFdpZG93cykKLSAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgp
ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBtX3N0eWxlLT5zZXRXaWRvd3MocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5
T3JwaGFuczoKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG9ycGhh
bnMsIE9ycGhhbnMpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFs
dWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0T3JwaGFucyhwcmltaXRpdmVW
YWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAgICAgICAKLQot
Ly8gbGVuZ3RoLCBwZXJjZW50LCBudW1iZXIKLSAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdo
dDoKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGxpbmVIZWlnaHQs
IExpbmVIZWlnaHQpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0OwotICAgICAgICBpbnQgdHlwZSA9IHBy
aW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgICAgIGxpbmVIZWlnaHQg
PSBMZW5ndGgoLTEwMC4wLCBQZXJjZW50KTsKLSAgICAgICAgZWxzZSBpZiAoQ1NTUHJpbWl0aXZl
VmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKLSAgICAgICAgICAgIGRvdWJsZSBtdWx0
aXBsaWVyID0gem9vbUZhY3RvcjsKLSAgICAgICAgICAgIGlmIChtX3N0eWxlLT50ZXh0U2l6ZUFk
anVzdCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fY2hlY2tlci5t
X2RvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9IGZy
YW1lLT50ZXh0Wm9vbUZhY3RvcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGluZUhl
aWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChz
dHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsICBtdWx0aXBsaWVyKSwgRml4ZWQpOwotICAgICAg
ICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQot
ICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aCgobV9zdHlsZS0+Zm9udFNpemUoKSAqIHBy
aW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKSAvIDEwMCwgRml4ZWQpOwotICAgICAgICBlbHNl
IGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAg
bGluZUhlaWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSAqIDEw
MC4wLCBQZXJjZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KGxpbmVIZWlnaHQpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0vLyBzdHJpbmcKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduOgotICAgIHsK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dEFsaWduLCBUZXh0QWxpZ24p
Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGludCBpZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOwotICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVTdGFydCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRBbGlnbihtX3N0
eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQpOwotICAgICAgICBl
bHNlIGlmIChpZCA9PSBDU1NWYWx1ZUVuZCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRB
bGlnbihtX3N0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSSUdIVCA6IExFRlQpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0QWxpZ24oKnByaW1pdGl2
ZVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotLy8gcmVjdAotICAgIGNhc2UgQ1NT
UHJvcGVydHlDbGlwOgotICAgIHsKLSAgICAgICAgTGVuZ3RoIHRvcDsKLSAgICAgICAgTGVuZ3Ro
IHJpZ2h0OwotICAgICAgICBMZW5ndGggYm90dG9tOwotICAgICAgICBMZW5ndGggbGVmdDsKLSAg
ICAgICAgYm9vbCBoYXNDbGlwID0gdHJ1ZTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAg
ICAgICAgICAgaWYgKG1fcGFyZW50U3R5bGUtPmhhc0NsaXAoKSkgewotICAgICAgICAgICAgICAg
IHRvcCA9IG1fcGFyZW50U3R5bGUtPmNsaXBUb3AoKTsKLSAgICAgICAgICAgICAgICByaWdodCA9
IG1fcGFyZW50U3R5bGUtPmNsaXBSaWdodCgpOwotICAgICAgICAgICAgICAgIGJvdHRvbSA9IG1f
cGFyZW50U3R5bGUtPmNsaXBCb3R0b20oKTsKLSAgICAgICAgICAgICAgICBsZWZ0ID0gbV9wYXJl
bnRTdHlsZS0+Y2xpcExlZnQoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgaGFzQ2xpcCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHRvcCA9IHJpZ2h0ID0gYm90dG9t
ID0gbGVmdCA9IExlbmd0aCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGlz
SW5pdGlhbCkgewotICAgICAgICAgICAgaGFzQ2xpcCA9IGZhbHNlOwotICAgICAgICAgICAgdG9w
ID0gcmlnaHQgPSBib3R0b20gPSBsZWZ0ID0gTGVuZ3RoKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
IXByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1JFQ1QpIHsKLSAgICAgICAgICAgIFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0
UmVjdFZhbHVlKCk7Ci0gICAgICAgICAgICBpZiAoIXJlY3QpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgdG9wID0gY29udmVydFRvTGVuZ3RoKHJlY3QtPnRvcCgpLCBzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgcmlnaHQg
PSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+cmlnaHQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0
eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGJvdHRvbSA9IGNvbnZlcnRUb0xlbmd0aChy
ZWN0LT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsK
LSAgICAgICAgICAgIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+bGVmdCgpLCBzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICB9IGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUtPnNldENsaXAodG9wLCByaWdodCwg
Ym90dG9tLCBsZWZ0KTsKLSAgICAgICAgbV9zdHlsZS0+c2V0SGFzQ2xpcChoYXNDbGlwKTsKLSAg
ICAKLSAgICAgICAgLy8gcmVjdCwgaWRlbnQKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotLy8g
bGlzdHMKLSAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoKLSAgICAgICAgLy8gbGlzdCBvZiBz
dHJpbmcsIHVyaSwgY291bnRlciwgYXR0ciwgaQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IElu
IENTUzMsIGl0IHdpbGwgYmUgcG9zc2libGUgdG8gaW5oZXJpdCBjb250ZW50LiAgSW4gQ1NTMiBp
dCBpcyBub3QuICBUaGlzCi0gICAgICAgIC8vIG5vdGUgaXMgYSByZW1pbmRlciB0aGF0IGV2ZW50
dWFsbHkgImluaGVyaXQiIG5lZWRzIHRvIGJlIHN1cHBvcnRlZC4KLQotICAgICAgICBpZiAoaXNJ
bml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5jbGVhckNvbnRlbnQoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNW
YWx1ZUxpc3QoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBDU1NWYWx1ZUxpc3Qq
IGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgICAgIGludCBs
ZW4gPSBsaXN0LT5sZW5ndGgoKTsKLQotICAgICAgICBib29sIGRpZFNldCA9IGZhbHNlOwotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBDU1NWYWx1
ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0gICAgICAgICAgICBp
ZiAoaXRlbS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRDb250ZW50KHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqPihpdGVt
KS0+Z2VuZXJhdGVkSW1hZ2UoKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICBkaWRTZXQgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIWl0ZW0t
PmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGNv
bnRlbnRWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzoKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0Q29udGVudChjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBkaWRTZXQp
OwotICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQVRU
UjogewotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2FuIGEgbmFtZXNwYWNlIGJlIHNw
ZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPwotICAgICAgICAgICAgICAgICAgICBpZiAobV9zdHls
ZS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCi0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRVbmlxdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYXJlbnRTdHlsZS0+c2V0VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIFF1YWxpZmllZE5hbWUgYXR0cihudWxsQXRvbSwgY29udGVudFZhbHVlLT5nZXRTdHJpbmdW
YWx1ZSgpLmltcGwoKSwgbnVsbEF0b20pOwotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRDb250ZW50KG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKGF0dHIpLmltcGwoKSwgZGlkU2V0KTsK
LSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gcmVnaXN0ZXIgdGhlIGZhY3QgdGhhdCB0aGUgYXR0cmlidXRlIHZhbHVlIGFmZmVjdHMgdGhl
IHN0eWxlCi0gICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0b3JBdHRycy5hZGQoYXR0ci5sb2Nh
bE5hbWUoKS5pbXBsKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTog
ewotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnRWYWx1ZS0+aXNJbWFnZVZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Q29udGVudChjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDb250
ZW50LCBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4oY29udGVudFZhbHVlKSksIGRpZFNldCk7
Ci0gICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfQ09VTlRFUjogewotICAgICAgICAgICAgICAgICAgICBDb3VudGVyKiBj
b3VudGVyVmFsdWUgPSBjb250ZW50VmFsdWUtPmdldENvdW50ZXJWYWx1ZSgpOwotICAgICAgICAg
ICAgICAgICAgICBPd25QdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIgPSBhZG9wdFB0cihuZXcg
Q291bnRlckNvbnRlbnQoY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAoRUxpc3RTdHlsZVR5cGUpY291bnRlclZhbHVlLT5saXN0U3R5bGVOdW1iZXIo
KSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSkpOwotICAgICAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRDb250ZW50KGNvdW50ZXIucmVsZWFzZSgpLCBkaWRTZXQpOwotICAgICAgICAgICAg
ICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBpZiAoIWRpZFNldCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmNs
ZWFyQ29udGVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6Ci0gICAgICAgIGFwcGx5Q291bnRlckxpc3Qoc3R5bGUoKSwg
dmFsdWUtPmlzVmFsdWVMaXN0KCkgPyBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSkg
OiAwLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRl
clJlc2V0OgotICAgICAgICBhcHBseUNvdW50ZXJMaXN0KHN0eWxlKCksIHZhbHVlLT5pc1ZhbHVl
TGlzdCgpID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpIDogMCwgdHJ1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OiB7Ci0gICAg
ICAgIC8vIGxpc3Qgb2Ygc3RyaW5ncyBhbmQgaWRzCi0gICAgICAgIGlmIChpc0luaGVyaXQpIHsK
LSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBwYXJlbnRGb250RGVzY3JpcHRpb24gPSBtX3Bh
cmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlv
biBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KHBhcmVudEZvbnREZXNjcmlwdGlv
bi5nZW5lcmljRmFtaWx5KCkpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWls
eShwYXJlbnRGb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKSk7Ci0gICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0SXNTcGVjaWZpZWRGb250KHBhcmVudEZvbnREZXNjcmlwdGlvbi5pc1Nw
ZWNpZmllZEZvbnQoKSk7Ci0gICAgICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0
aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVl
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewot
ICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGluaXRpYWxEZXNjID0gRm9udERlc2NyaXB0aW9u
KCk7Ci0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCB0
aGUgc2l6ZSB0byBhY2NvdW50IGZvciB0aGUgZ2VuZXJpYyBmYW1pbHkgY2hhbmdlIGZyb20gbW9u
b3NwYWNlCi0gICAgICAgICAgICAvLyB0byBub24tbW9ub3NwYWNlLgotICAgICAgICAgICAgaWYg
KGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpICYmIGZvbnREZXNjcmlwdGlvbi51c2VGaXhl
ZERlZmF1bHRTaXplKCkpCi0gICAgICAgICAgICAgICAgc2V0Rm9udFNpemUoZm9udERlc2NyaXB0
aW9uLCBmb250U2l6ZUZvcktleXdvcmQobV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlWHhT
bWFsbCArIGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwgZmFsc2UpKTsKLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KGluaXRpYWxEZXNjLmdlbmVy
aWNGYW1pbHkoKSk7Ci0gICAgICAgICAgICBpZiAoIWluaXRpYWxEZXNjLmZpcnN0RmFtaWx5KCku
ZmFtaWx5SXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1p
bHkoaW5pdGlhbERlc2MuZmlyc3RGYW1pbHkoKSk7Ci0gICAgICAgICAgICBpZiAobV9zdHlsZS0+
c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgbV9m
b250RGlydHkgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0
PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgp
OwotICAgICAgICBGb250RmFtaWx5JiBmaXJzdEZhbWlseSA9IGZvbnREZXNjcmlwdGlvbi5maXJz
dEZhbWlseSgpOwotICAgICAgICBGb250RmFtaWx5KiBjdXJyRmFtaWx5ID0gMDsKLSAgICAgICAg
Ci0gICAgICAgIC8vIEJlZm9yZSBtYXBwaW5nIGluIGEgbmV3IGZvbnQtZmFtaWx5IHByb3BlcnR5
LCB3ZSBzaG91bGQgcmVzZXQgdGhlIGdlbmVyaWMgZmFtaWx5LgotICAgICAgICBib29sIG9sZEZh
bWlseVVzZWRGaXhlZERlZmF1bHRTaXplID0gZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVs
dFNpemUoKTsKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERl
c2NyaXB0aW9uOjpOb0ZhbWlseSk7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47
IGkrKykgewotICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogY29udGVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsK
LSAgICAgICAgICAgIEF0b21pY1N0cmluZyBmYWNlOwotICAgICAgICAgICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICBp
ZiAoY29udGVudFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGVudFZhbHVlLT5pc0ZvbnRGYW1p
bHlWYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBmYWNlID0gc3RhdGljX2Nhc3Q8Rm9udEZh
bWlseVZhbHVlKj4oY29udGVudFZhbHVlKS0+ZmFtaWx5TmFtZSgpOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChjb250ZW50VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0lERU5UICYmIHNldHRpbmdzKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChjb250
ZW50VmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVdlYmtpdEJvZHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gc2V0dGluZ3MtPnN0
YW5kYXJkRm9udEZhbWlseSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZhY2UgPSAiLXdlYmtpdC1zZXJpZiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlNlcmlmRmFtaWx5
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlU2Fuc1NlcmlmOgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICIt
d2Via2l0LXNhbnMtc2VyaWYiOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpTYW5zU2VyaWZGYW1pbHkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVDdXJzaXZlOgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0
LWN1cnNpdmUiOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdl
bmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpDdXJzaXZlRmFtaWx5KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRmFu
dGFzeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1mYW50YXN5IjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5
KEZvbnREZXNjcmlwdGlvbjo6RmFudGFzeUZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU1vbm9zcGFjZToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1tb25vc3BhY2UiOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERl
c2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
IWZhY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJyRmFtaWx5KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIEZpbGxpbmcgaW4gdGhlIGZpcnN0IGZhbWlseS4KLSAgICAg
ICAgICAgICAgICAgICAgZmlyc3RGYW1pbHkuc2V0RmFtaWx5KGZhY2UpOwotICAgICAgICAgICAg
ICAgICAgICBmaXJzdEZhbWlseS5hcHBlbmRGYW1pbHkoMCk7IC8vIFJlbW92ZSBhbnkgaW5oZXJp
dGVkIGZhbWlseS1mYWxsYmFjayBsaXN0LgotICAgICAgICAgICAgICAgICAgICBjdXJyRmFtaWx5
ID0gJmZpcnN0RmFtaWx5OwotICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
SXNTcGVjaWZpZWRGb250KGZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkgPT0gRm9udERl
c2NyaXB0aW9uOjpOb0ZhbWlseSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNoYXJlZEZv
bnRGYW1pbHk6OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAgICAgICBuZXdGYW1pbHktPnNldEZh
bWlseShmYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgY3VyckZhbWlseS0+YXBwZW5kRmFtaWx5
KG5ld0ZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSBuZXdGYW1pbHku
Z2V0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gV2UgY2FuJ3QgY2FsbCB1c2VGaXhlZERlZmF1bHRTaXplKCkgdW50aWwgYWxsIG5l
dyBmb250IGZhbWlsaWVzIGhhdmUgYmVlbiBhZGRlZAotICAgICAgICAvLyBJZiBjdXJyRmFtaWx5
IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2V0IGF0IGxlYXN0IG9uZSBmYW1pbHkgb24gdGhpcyBkZXNj
cmlwdGlvbi4KLSAgICAgICAgaWYgKGN1cnJGYW1pbHkpIHsKLSAgICAgICAgICAgIGlmIChmb250
RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZh
dWx0U2l6ZSgpICE9IG9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXplKQotICAgICAgICAgICAg
ICAgIHNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgZm9udFNpemVGb3JLZXl3b3JkKG1fY2hl
Y2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24ua2V5d29y
ZFNpemUoKSAtIDEsICFvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkpOwotCi0gICAgICAg
ICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0g
ICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uOiB7Ci0gICAg
ICAgIC8vIGxpc3Qgb2YgaWRlbnQKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
dGV4dERlY29yYXRpb24sIFRleHREZWNvcmF0aW9uKQotICAgICAgICBpbnQgdCA9IFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24oKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
ICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAg
ICAgICAgLy8gZG8gbm90aGluZwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCF2
YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBDU1NWYWx1ZUxpc3QgKmxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7
Ci0gICAgICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IENTU1ZhbHVlICppdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwotICAgICAgICAgICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZU5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ID0gVEROT05FOyBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVVuZGVybGluZToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHQgfD0gVU5ERVJMSU5FOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZU92ZXJsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgdCB8PSBPVkVS
TElORTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5lVGhyb3Vn
aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHQgfD0gTElORV9USFJPVUdIOyBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUJsaW5rOgotICAgICAgICAgICAgICAgICAg
ICAgICAgdCB8PSBCTElOSzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdHlsZS0+c2V0VGV4dERlY29yYXRpb24o
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Wm9vbToK
LSAgICB7Ci0gICAgICAgIC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdCBiZWZvcmUgd2UgZG8g
YW55dGhpbmcuICBUaGlzIGFsbG93cyB0aGUgc2V0Wm9vbSBtZXRob2QgdG8gYWNjdXJhdGVseSBj
b21wdXRlIGEgbmV3Ci0gICAgICAgIC8vIHpvb20gaW4gZWZmZWN0LgotICAgICAgICBtX3N0eWxl
LT5zZXRFZmZlY3RpdmVab29tKG1fcGFyZW50U3R5bGUgPyBtX3BhcmVudFN0eWxlLT5lZmZlY3Rp
dmVab29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAgICAgIAotICAgICAg
ICAvLyBOb3cgd2UgY2FuIGhhbmRsZSBpbmhlcml0IGFuZCBpbml0aWFsLgotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTCh6b29tLCBab29tKQotICAgICAgICAKLSAgICAgICAgLy8g
SGFuZGxlIG5vcm1hbC9yZXNldCwgbnVtYmVycyBhbmQgcGVyY2VudGFnZXMuCi0gICAgICAgIGlu
dCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAgICAgIGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlUmVzZXQpIHsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxa
b29tKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlh
bFpvb20oKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVEb2N1bWVudCkgewotICAgICAgICAgICAgZmxvYXQgZG9jWm9vbSA9IG1fY2hl
Y2tlci5tX2RvY3VtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT56b29tKCk7Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRFZmZlY3RpdmVab29tKGRvY1pvb20pOwotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Wm9vbShkb2Nab29tKTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgewotICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRGbG9hdFZhbHVlKCkpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Wm9vbShw
cmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwLjBmKTsKLSAgICAgICAgfSBlbHNl
IGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7Ci0gICAgICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkKLSAgICAgICAgICAgICAgICBt
X3N0eWxlLT5zZXRab29tKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0vLyBzaG9ydGhhbmQgcHJvcGVydGllcwotICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kOgotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5jbGVhckJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJhY2tn
cm91bmRDb2xvcihDb2xvcigpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaGVy
aXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPmluaGVyaXRCYWNrZ3JvdW5kTGF5ZXJzKCptX3Bh
cmVudFN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
QmFja2dyb3VuZENvbG9yKG1fcGFyZW50U3R5bGUtPmJhY2tncm91bmRDb2xvcigpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6Ci0g
ICAgICAgIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5jbGVhck1hc2tMYXll
cnMoKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbmhlcml0KQotICAgICAgICAgICAgbV9zdHlsZS0+
aW5oZXJpdE1hc2tMYXllcnMoKm1fcGFyZW50U3R5bGUtPm1hc2tMYXllcnMoKSk7Ci0gICAgICAg
IHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0
eUJvcmRlciB8fCBpZCA9PSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9y
ZGVyVG9wQ29sb3IobV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wQ29sb3IoKS5pc1ZhbGlkKCkgPyBt
X3BhcmVudFN0eWxlLT5ib3JkZXJUb3BDb2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7
Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3IobV9wYXJlbnRT
dHlsZS0+Ym9yZGVyQm90dG9tQ29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3Jk
ZXJCb3R0b21Db2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9yKG1fcGFyZW50U3R5bGUtPmJvcmRlckxlZnRD
b2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJvcmRlckxlZnRDb2xvcigpIDogbV9w
YXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVy
UmlnaHRDb2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodENvbG9yKCkuaXNWYWxpZCgpID8g
bV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpOiBtX3BhcmVudFN0eWxlLT5jb2xvcigp
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENvbG9yKENvbG9yKCkpOyAvLyBSZXNl
dCB0byBpbnZhbGlkIGNvbG9yIHNvIGN1cnJlbnRDb2xvciBpcyB1c2VkIGluc3RlYWQuCi0gICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3IoQ29sb3IoKSk7Ci0gICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9yKENvbG9yKCkpOwotICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0Q29sb3IoQ29sb3IoKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5Qm9yZGVyIHx8
IGlkID09IENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BTdHls
ZShtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJCb3R0b21TdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21TdHls
ZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0U3R5bGUobV9wYXJl
bnRTdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEJvcmRlclJpZ2h0U3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRTdHlsZSgpKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFN0eWxlKFJlbmRlclN0eWxlOjppbml0aWFsQm9y
ZGVyU3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tU3R5
bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBt
X3N0eWxlLT5zZXRCb3JkZXJMZWZ0U3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHls
ZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodFN0eWxlKFJlbmRl
clN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5Qm9yZGVyIHx8IGlkID09IENTU1Byb3BlcnR5
Qm9yZGVyV2lkdGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aChtX3BhcmVudFN0eWxlLT5i
b3JkZXJUb3BXaWR0aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0
b21XaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVm
dFdpZHRoKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgo
bV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEJvcmRlclRvcFdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgoKSk7Ci0gICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tV2lkdGgoUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3JkZXJXaWR0aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJM
ZWZ0V2lkdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCgpKTsKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodFdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFsQm9y
ZGVyV2lkdGgoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENvbG9yKG1fcGFyZW50U3R5bGUtPmJv
cmRlclRvcENvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wQ29sb3Io
KSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9y
ZGVyVG9wU3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wU3R5bGUoKSk7Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BXaWR0
aCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAg
ICBtX3N0eWxlLT5yZXNldEJvcmRlclRvcCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodENvbG9yKG1fcGFyZW50U3R5bGUtPmJvcmRlclJp
Z2h0Q29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodENvbG9yKCkg
OiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRl
clJpZ2h0U3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRTdHlsZSgpKTsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmln
aHRXaWR0aCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAg
ICAgICAgICBtX3N0eWxlLT5yZXNldEJvcmRlclJpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21Db2xvcihtX3BhcmVudFN0eWxl
LT5ib3JkZXJCb3R0b21Db2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJvcmRlckJv
dHRvbUNvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldEJvcmRlckJvdHRvbVN0eWxlKG1fcGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbVN0eWxl
KCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tV2lkdGgobV9wYXJlbnRT
dHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAo
aXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+cmVzZXRCb3JkZXJCb3R0b20oKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OgotICAgICAgICBp
ZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0Q29sb3Io
bV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdENvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHls
ZS0+Ym9yZGVyTGVmdENvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRTdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0
U3R5bGUoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgobV9wYXJl
bnRTdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0Qm9yZGVyTGVmdCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKLSAgICAgICAgaWYgKGlz
SW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luVG9wKG1fcGFyZW50U3R5
bGUtPm1hcmdpblRvcCgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpbkJvdHRvbSht
X3BhcmVudFN0eWxlLT5tYXJnaW5Cb3R0b20oKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRN
YXJnaW5MZWZ0KG1fcGFyZW50U3R5bGUtPm1hcmdpbkxlZnQoKSk7Ci0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRNYXJnaW5SaWdodChtX3BhcmVudFN0eWxlLT5tYXJnaW5SaWdodCgpKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5y
ZXNldE1hcmdpbigpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRp
bmc6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBh
ZGRpbmdUb3AobV9wYXJlbnRTdHlsZS0+cGFkZGluZ1RvcCgpKTsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldFBhZGRpbmdCb3R0b20obV9wYXJlbnRTdHlsZS0+cGFkZGluZ0JvdHRvbSgpKTsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdMZWZ0KG1fcGFyZW50U3R5bGUtPnBhZGRpbmdM
ZWZ0KCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ1JpZ2h0KG1fcGFyZW50U3R5
bGUtPnBhZGRpbmdSaWdodCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRp
YWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5yZXNldFBhZGRpbmcoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0g
ICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9wYXJlbnRTdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaW5lSGVpZ2h0
KG1fcGFyZW50U3R5bGUtPmxpbmVIZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVIZWlnaHRW
YWx1ZSA9IDA7Ci0gICAgICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAg
ICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICBBU1NF
UlQoc2V0dGluZ3MpOyAvLyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRv
Y3VtZW50IHNob3VsZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdz
Ci0gICAgICAgICAgICBpZiAoIXNldHRpbmdzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlN0YW5kYXJk
RmFtaWx5KTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNl
dHRpbmdzLT5mb250UmVuZGVyaW5nTW9kZSgpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRVc2VQcmludGVyRm9udChtX2NoZWNrZXIubV9kb2N1bWVudC0+cHJpbnRpbmcoKSk7Ci0g
ICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseSA9IG1fY2hl
Y2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKLSAgICAg
ICAgICAgIGlmICghc3RhbmRhcmRGb250RmFtaWx5LmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLnNldEZhbWlseShzdGFuZGFyZEZvbnRG
YW1pbHkpOwotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLmFw
cGVuZEZhbWlseSgwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRLZXl3b3JkU2l6ZShDU1NWYWx1ZU1lZGl1bSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwot
ICAgICAgICAgICAgc2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdv
cmQobV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlTWVkaXVtLCBmYWxzZSkpOwotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWln
aHQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7Ci0gICAgICAgICAgICBp
ZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAg
ICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxl
Ojppbml0aWFsTGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIG1fbGluZUhlaWdodFZhbHVlID0g
MDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlw
dGlvbjsKLSAgICAgICAgICAgIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtRm9u
dChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsKLQotICAgICAg
ICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4g
IElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBmb250LgotICAgICAgICAgICAgaWYg
KGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
TWFrZSBzdXJlIHRoZSByZW5kZXJpbmcgbW9kZSBhbmQgcHJpbnRlciBmb250IHNldHRpbmdzIGFy
ZSB1cGRhdGVkLgotICAgICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fY2hlY2tl
ci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOwotICAgICAgICAgICAgICAgIEFTU0VSVChzZXR0aW5n
cyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hv
dWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKLSAgICAgICAg
ICAgICAgICBpZiAoIXNldHRpbmdzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZv
bnRSZW5kZXJpbmdNb2RlKCkpOwotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRV
c2VQcmludGVyRm9udChtX2NoZWNrZXIubV9kb2N1bWVudC0+cHJpbnRpbmcoKSk7Ci0gICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBmYWN0b3IuCi0gICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVG
cm9tU3BlY2lmaWVkU2l6ZShtX2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9u
dERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRT
aXplKCksIHVzZVNWR1pvb21SdWxlcykpOwotICAgICAgICAgICAgICAgIGlmIChtX3N0eWxlLT5z
ZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAg
bV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHZh
bHVlLT5pc0ZvbnRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBGb250VmFsdWUgKmZvbnQgPSBzdGF0
aWNfY2FzdDxGb250VmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoIWZvbnQtPnN0eWxl
IHx8ICFmb250LT52YXJpYW50IHx8ICFmb250LT53ZWlnaHQgfHwKLSAgICAgICAgICAgICAgICAg
IWZvbnQtPnNpemUgfHwgIWZvbnQtPmxpbmVIZWlnaHQgfHwgIWZvbnQtPmZhbWlseSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFN0eWxlLCBmb250LT5zdHlsZS5nZXQoKSk7Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIGZvbnQtPnZhcmlhbnQuZ2V0KCkpOwotICAgICAgICAg
ICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGZvbnQtPndlaWdodC5nZXQo
KSk7Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIGZvbnQt
PnNpemUuZ2V0KCkpOwotCi0gICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IGZvbnQtPmxp
bmVIZWlnaHQuZ2V0KCk7Ci0KLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlG
b250RmFtaWx5LCBmb250LT5mYW1pbHkuZ2V0KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
bjsKLSAgICAgICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKLSAgICAgICAgaWYg
KGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlVHlwZShtX3Bh
cmVudFN0eWxlLT5saXN0U3R5bGVUeXBlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGlz
dFN0eWxlSW1hZ2UobV9wYXJlbnRTdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKSk7Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVQb3NpdGlvbihtX3BhcmVudFN0eWxlLT5saXN0U3R5bGVQ
b3NpdGlvbigpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHlsZVR5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxM
aXN0U3R5bGVUeXBlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlSW1hZ2Uo
UmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVJbWFnZSgpKTsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldExpc3RTdHlsZVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlUG9z
aXRpb24oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRPdXRsaW5lV2lkdGgobV9wYXJlbnRTdHlsZS0+b3V0bGluZVdpZHRoKCkpOwotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZUNvbG9yKG1fcGFyZW50U3R5bGUtPm91dGxpbmVDb2xv
cigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPm91dGxpbmVDb2xvcigpIDogbV9wYXJlbnRT
dHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lU3R5bGUobV9w
YXJlbnRTdHlsZS0+b3V0bGluZVN0eWxlKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0T3V0bGluZSgpOwotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBDU1MzIFByb3BlcnRpZXMKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QXBwZWFyYW5jZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChh
cHBlYXJhbmNlLCBBcHBlYXJhbmNlKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRBcHBlYXJhbmNlKCpwcmltaXRp
dmVWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVySW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFn
ZTogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9DT05EKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlLCBCb3JkZXJJ
bWFnZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXZWJraXRN
YXNrQm94SW1hZ2UsIG1hc2tCb3hJbWFnZSwgTWFza0JveEltYWdlKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExF
X0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIEJv
cmRlckltYWdlLCBOaW5lUGllY2VJbWFnZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NP
TkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgTWFza0JveEltYWdl
LCBOaW5lUGllY2VJbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIE5pbmVQaWVjZUltYWdlIGltYWdlOwotICAgICAgICBtYXBOaW5lUGllY2VJbWFnZShwcm9w
ZXJ0eSwgdmFsdWUsIGltYWdlKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckltYWdlKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVySW1h
Z2UoaW1hZ2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXNrQm94
SW1hZ2UoaW1hZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclJhZGl1czoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVz
OgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3Jk
ZXJUb3BMZWZ0UmFkaXVzKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKSk7Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhtX3BhcmVudFN0eWxl
LT5ib3JkZXJUb3BSaWdodFJhZGl1cygpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMobV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygp
KTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKG1fcGFy
ZW50U3R5bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnJlc2V0Qm9yZGVyUmFkaXVzKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgLy8gRmFsbCB0aHJvdWdoCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExl
ZnRSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7
Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVm
dFJhZGl1cywgYm9yZGVyVG9wTGVmdFJhZGl1cywgQm9yZGVyVG9wTGVmdFJhZGl1cykKLSAgICAg
ICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1
cywgYm9yZGVyVG9wUmlnaHRSYWRpdXMsIEJvcmRlclRvcFJpZ2h0UmFkaXVzKQotICAgICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMs
IGJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpCi0gICAgICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRp
dXMsIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBCb3JkZXJCb3R0b21SaWdodFJhZGl1cykKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGlzSW5p
dGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1By
b3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgQm9yZGVyVG9wTGVmdFJhZGl1cywgQm9yZGVyUmFk
aXVzKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIEJvcmRlclRvcFJpZ2h0UmFkaXVzLCBCb3JkZXJSYWRp
dXMpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBCb3JkZXJS
YWRpdXMpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgQm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIEJv
cmRlclJhZGl1cykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUGFpciog
cGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKLSAgICAgICAgaWYgKCFwYWly
IHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBMZW5ndGggcmFkaXVzV2lkdGg7Ci0gICAgICAgIExlbmd0aCByYWRpdXNI
ZWlnaHQ7Ci0gICAgICAgIGlmIChwYWlyLT5maXJzdCgpLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgcmFkaXVzV2lkdGgg
PSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVuZ3RoKG1heChpbnRNaW5Gb3JM
ZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGhJ
bnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSkpLCBGaXhlZCk7Ci0g
ICAgICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0
aChwYWlyLT5zZWNvbmQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0aChtYXgoaW50TWluRm9yTGVuZ3Ro
LCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aEludChz
dHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKSksIEZpeGVkKTsKLSAgICAg
ICAgaW50IHdpZHRoID0gcmFkaXVzV2lkdGgucmF3VmFsdWUoKTsKLSAgICAgICAgaW50IGhlaWdo
dCA9IHJhZGl1c0hlaWdodC5yYXdWYWx1ZSgpOwotICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhl
aWdodCA8IDApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh3aWR0aCA9PSAwKQot
ICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gcmFkaXVzV2lkdGg7IC8vIE51bGwgb3V0IHRoZSBv
dGhlciB2YWx1ZS4KLSAgICAgICAgZWxzZSBpZiAoaGVpZ2h0ID09IDApCi0gICAgICAgICAgICBy
YWRpdXNXaWR0aCA9IHJhZGl1c0hlaWdodDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgot
Ci0gICAgICAgIExlbmd0aFNpemUgc2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKLSAg
ICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRv
cExlZnRSYWRpdXM6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wTGVmdFJh
ZGl1cyhzaXplKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1czoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhzaXplKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzOgotICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoc2l6ZSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXM6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9t
UmlnaHRSYWRpdXMoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJhZGl1cyhzaXplKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKG91dGxpbmVPZmZzZXQsIE91dGxpbmVPZmZzZXQpCi0gICAgICAg
IG1fc3R5bGUtPnNldE91dGxpbmVPZmZzZXQocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJ
bnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzogewotICAgICAgICBGb250
RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7
Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIAotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dFRleHRSZW5kZXJpbmdNb2RlKG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnRleHRS
ZW5kZXJpbmdNb2RlKCkpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0VGV4dFJlbmRlcmluZ01vZGUoQXV0b1RleHRSZW5kZXJpbmcp
OwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFRleHRS
ZW5kZXJpbmdNb2RlKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1f
c3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAg
bV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0U2hhZG93OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaGFkb3c6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdzogewotICAgICAgICBpZiAoaXNJbmhlcml0
KSB7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQotICAgICAg
ICAgICAgICAgIHJldHVybiBtX3N0eWxlLT5zZXRUZXh0U2hhZG93KG1fcGFyZW50U3R5bGUtPnRl
eHRTaGFkb3coKSA/IG5ldyBTaGFkb3dEYXRhKCptX3BhcmVudFN0eWxlLT50ZXh0U2hhZG93KCkp
IDogMCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdHlsZS0+c2V0Qm94U2hhZG93KG1fcGFyZW50
U3R5bGUtPmJveFNoYWRvdygpID8gbmV3IFNoYWRvd0RhdGEoKm1fcGFyZW50U3R5bGUtPmJveFNo
YWRvdygpKSA6IDApOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0
aXZlVmFsdWUpIC8vIGluaXRpYWwgfCBub25lCi0gICAgICAgICAgICByZXR1cm4gaWQgPT0gQ1NT
UHJvcGVydHlUZXh0U2hhZG93ID8gbV9zdHlsZS0+c2V0VGV4dFNoYWRvdygwKSA6IG1fc3R5bGUt
PnNldEJveFNoYWRvdygwKTsKLQotICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIENTU1ZhbHVlTGlzdCAqbGlzdCA9IHN0YXRp
Y19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxl
bmd0aCgpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAg
ICAgICBDU1NWYWx1ZSogY3VyclZhbHVlID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhp
KTsKLSAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1NoYWRvd1ZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBTaGFkb3dWYWx1ZSogaXRlbSA9IHN0YXRp
Y19jYXN0PFNoYWRvd1ZhbHVlKj4obGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7Ci0g
ICAgICAgICAgICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9y
b290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGludCB5ID0gaXRlbS0+
eS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0
b3IpOwotICAgICAgICAgICAgaW50IGJsdXIgPSBpdGVtLT5ibHVyID8gaXRlbS0+Ymx1ci0+Y29t
cHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpIDog
MDsKLSAgICAgICAgICAgIGludCBzcHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVtLT5zcHJlYWQt
PmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9y
KSA6IDA7Ci0gICAgICAgICAgICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IGl0ZW0tPnN0eWxl
ICYmIGl0ZW0tPnN0eWxlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5zZXQgPyBJbnNldCA6IE5v
cm1hbDsKLSAgICAgICAgICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgaWYgKGl0ZW0tPmNv
bG9yKQotICAgICAgICAgICAgICAgIGNvbG9yID0gZ2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUo
aXRlbS0+Y29sb3IuZ2V0KCkpOwotICAgICAgICAgICAgU2hhZG93RGF0YSogc2hhZG93RGF0YSA9
IG5ldyBTaGFkb3dEYXRhKHgsIHksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIGlkID09IENT
U1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9y
Ojp0cmFuc3BhcmVudCk7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hh
ZG93KQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRTaGFkb3coc2hhZG93RGF0YSwg
aSAhPSAwKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRC
b3hTaGFkb3coc2hhZG93RGF0YSwgaSAhPSAwKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0OiB7Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJveFJlZmxlY3QsIEJveFJlZmxlY3QpCi0gICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm94UmVm
bGVjdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveFJlZmxlY3QoKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghdmFsdWUtPmlzUmVmbGVjdFZh
bHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQ1NTUmVmbGVjdFZhbHVlKiBy
ZWZsZWN0VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NSZWZsZWN0VmFsdWUqPih2YWx1ZSk7Ci0gICAg
ICAgIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IHJlZmxlY3Rpb24gPSBTdHlsZVJlZmxlY3Rpb246
OmNyZWF0ZSgpOwotICAgICAgICByZWZsZWN0aW9uLT5zZXREaXJlY3Rpb24ocmVmbGVjdFZhbHVl
LT5kaXJlY3Rpb24oKSk7Ci0gICAgICAgIGlmIChyZWZsZWN0VmFsdWUtPm9mZnNldCgpKSB7Ci0g
ICAgICAgICAgICBpbnQgdHlwZSA9IHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPnByaW1pdGl2ZVR5
cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSkKLSAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVuZ3RoKHJl
ZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVuZ3Ro
KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpKTsKLSAgICAgICAgfQot
ICAgICAgICBOaW5lUGllY2VJbWFnZSBtYXNrOwotICAgICAgICBtYXBOaW5lUGllY2VJbWFnZShw
cm9wZXJ0eSwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2spOwotICAgICAgICByZWZsZWN0aW9u
LT5zZXRNYXNrKG1hc2spOwotICAgICAgICAKLSAgICAgICAgbV9zdHlsZS0+c2V0Qm94UmVmbGVj
dChyZWZsZWN0aW9uLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eU9wYWNpdHk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
KG9wYWNpdHksIE9wYWNpdHkpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0
aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikKLSAgICAgICAgICAgIHJldHVybjsgLy8gRXJyb3IgY2FzZS4KLSAgICAgICAgLy8gQ2xhbXAg
b3BhY2l0eSB0byB0aGUgcmFuZ2UgMC0xCi0gICAgICAgIG1fc3R5bGUtPnNldE9wYWNpdHkobWlu
KDEuMGYsIG1heCgwLjBmLCBwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKSkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgotICAgIHsK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94QWxpZ24sIEJveEFsaWduKQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBFQm94QWxpZ25tZW50IGJveEFsaWdubWVudCA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAg
aWYgKGJveEFsaWdubWVudCAhPSBCSlVTVElGWSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJv
eEFsaWduKGJveEFsaWdubWVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVNyYzogLy8gT25seSB1c2VkIGluIEBmb250LWZhY2UgcnVsZXMuCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZVJhbmdlOiAvLyBPbmx5IHVzZWQg
aW4gQGZvbnQtZmFjZSBydWxlcy4KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKGJhY2tmYWNlVmlzaWJpbGl0eSwgQmFja2ZhY2VWaXNpYmlsaXR5KQotICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCYWNrZmFjZVZpc2li
aWxpdHkoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVmlzaWJsZSkgPyBC
YWNrZmFjZVZpc2liaWxpdHlWaXNpYmxlIDogQmFja2ZhY2VWaXNpYmlsaXR5SGlkZGVuKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoYm94RGlyZWN0
aW9uLCBCb3hEaXJlY3Rpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94TGluZXM6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9Q
UklNSVRJVkUoYm94TGluZXMsIEJveExpbmVzKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUxfQU5EX1BSSU1JVElWRShib3hPcmllbnQsIEJveE9yaWVudCkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgotICAgIHsKLSAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94UGFjaywgQm94UGFjaykKLSAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRUJveEFsaWdubWVu
dCBib3hQYWNrID0gKnByaW1pdGl2ZVZhbHVlOwotICAgICAgICBpZiAoYm94UGFjayAhPSBCU1RS
RVRDSCAmJiBib3hQYWNrICE9IEJCQVNFTElORSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJv
eFBhY2soYm94UGFjayk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveEZsZXg6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJv
eEZsZXgsIEJveEZsZXgpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikK
LSAgICAgICAgICAgIHJldHVybjsgLy8gRXJyb3IgY2FzZS4KLSAgICAgICAgbV9zdHlsZS0+c2V0
Qm94RmxleChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXA6Ci0gICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKGJveEZsZXhHcm91cCwgQm94RmxleEdyb3VwKQotICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkg
IT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAgICByZXR1cm47IC8v
IEVycm9yIGNhc2UuCi0gICAgICAgIG1fc3R5bGUtPnNldEJveEZsZXhHcm91cCgodW5zaWduZWQg
aW50KShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cDoKLSAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94T3JkaW5hbEdyb3VwLCBCb3hPcmRpbmFsR3JvdXAp
Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAgIHJl
dHVybjsgLy8gRXJyb3IgY2FzZS4KLSAgICAgICAgbV9zdHlsZS0+c2V0Qm94T3JkaW5hbEdyb3Vw
KCh1bnNpZ25lZCBpbnQpKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hTaXppbmcsIEJveFNpemluZykKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ29udGVudEJveCkKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldEJveFNpemluZyhDT05URU5UX0JPWCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJveFNpemluZyhCT1JERVJfQk9YKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudDogewotICAgICAgICBpZiAo
aXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRTdHlsZS0+aGFzQXV0b0NvbHVt
bkNvdW50KCkpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbkNvdW50
KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1u
Q291bnQobV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291bnQoKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b0Nv
bHVtbkNvdW50KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9z
dHlsZS0+c2V0Q29sdW1uQ291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHByaW1pdGl2
ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcDogewotICAgICAgICBpZiAoaXNJbmhlcml0
KSB7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRTdHlsZS0+aGFzTm9ybWFsQ29sdW1uR2FwKCkp
Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uR2FwKG1fcGFy
ZW50U3R5bGUtPmNvbHVtbkdhcCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBl
bHNlIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVOb3JtYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc05vcm1hbENvbHVtbkdhcCgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUtPnNldENv
bHVtbkdhcChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKGNvbHVtblNwYW4sIENvbHVtblNwYW4pCi0gICAgICAgIG1fc3R5bGUt
PnNldENvbHVtblNwYW4ocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBbGwp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5XaWR0aDogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBpZiAobV9w
YXJlbnRTdHlsZS0+aGFzQXV0b0NvbHVtbldpZHRoKCkpCi0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgobV9wYXJlbnRTdHlsZS0+Y29sdW1uV2lkdGgo
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsIHx8
IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgocHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21G
YWN0b3IpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZVN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9B
TkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoY29sdW1uUnVsZVN0eWxlLCBDb2x1bW5SdWxlU3R5bGUs
IEJvcmRlclN0eWxlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrQmVmb3JlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9B
TkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoY29sdW1uQnJlYWtCZWZvcmUsIENvbHVtbkJyZWFrQmVm
b3JlLCBQYWdlQnJlYWspCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uQnJlYWtBZnRlcjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxf
QU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKGNvbHVtbkJyZWFrQWZ0ZXIsIENvbHVtbkJyZWFrQWZ0
ZXIsIFBhZ2VCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5CcmVha0luc2lkZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TF9XSVRIX1ZBTFVFKGNvbHVtbkJyZWFrSW5zaWRlLCBDb2x1bW5CcmVha0luc2lkZSwgUGFnZUJy
ZWFrKQotICAgICAgICBFUGFnZUJyZWFrIHBiID0gKnByaW1pdGl2ZVZhbHVlOwotICAgICAgICBp
ZiAocGIgIT0gUEJBTFdBWVMpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5CcmVha0lu
c2lkZShwYik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRDb2x1bW5SdWxlQ29sb3IobV9wYXJlbnRTdHlsZS0+Y29sdW1uUnVsZUNvbG9y
KCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Y29sdW1uUnVsZUNvbG9yKCkgOiBtX3BhcmVu
dFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVTdHls
ZShtX3BhcmVudFN0eWxlLT5jb2x1bW5SdWxlU3R5bGUoKSk7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRDb2x1bW5SdWxlV2lkdGgobV9wYXJlbnRTdHlsZS0+Y29sdW1uUnVsZVdpZHRoKCkpOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5
bGUtPnJlc2V0Q29sdW1uUnVsZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbnM6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAg
IGlmIChtX3BhcmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uV2lkdGgoKSkKLSAgICAgICAgICAgICAg
ICBtX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5XaWR0aChtX3BhcmVudFN0eWxlLT5jb2x1
bW5XaWR0aCgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtbkNvdW50KG1fcGFyZW50
U3R5bGUtPmNvbHVtbkNvdW50KCkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkNvdW50
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZToKLSAgICAgICAgaWYgKHZhbHVlVHlwZSAhPSBDU1NWYWx1ZTo6Q1NTX0lOSEVS
SVQgfHwgIW1fcGFyZW50Tm9kZSkgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVl
RGlyZWN0aW9uKG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVEaXJlY3Rpb24oKSk7Ci0gICAgICAgIG1f
c3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQobV9wYXJlbnRTdHlsZS0+bWFycXVlZUluY3JlbWVu
dCgpKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKG1fcGFyZW50U3R5bGUtPm1h
cnF1ZWVTcGVlZCgpKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudChtX3Bh
cmVudFN0eWxlLT5tYXJxdWVlTG9vcENvdW50KCkpOwotICAgICAgICBtX3N0eWxlLT5zZXRNYXJx
dWVlQmVoYXZpb3IobV9wYXJlbnRTdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkpOwotICAgICAgICBy
ZXR1cm47Ci0jaWYgRU5BQkxFKFdDU1MpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVM
b29wOgotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9u
OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1hcnF1ZWVMb29wQ291bnQs
IE1hcnF1ZWVMb29wQ291bnQpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZUluZmluaXRlKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3Vu
dCgtMSk7IC8vIC0xIG1lYW5zIHJlcGVhdCBmb3JldmVyLgotICAgICAgICBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudChwcmltaXRpdmVW
YWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxF
KFdDU1MpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZDoKLSNlbmRpZgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQ6IHsKLSAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZVNwZWVkLCBNYXJxdWVlU3BlZWQpICAgICAgCi0gICAg
ICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVT
bG93OgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoNTAwKTsg
Ly8gNTAwIG1zZWMuCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1h
cnF1ZWVTcGVlZCg4NSk7IC8vIDg1bXNlYy4gVGhlIFdpbklFIGRlZmF1bHQuCi0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVGYXN0OgotICAg
ICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoMTApOyAvLyAxMG1zZWMu
IFN1cGVyIGZhc3QuCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
TWFycXVlZVNwZWVkKDEwMDAgKiBwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19NUykKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZChw
cmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
IC8vIEZvciBzY3JvbGxhbW91bnQgc3VwcG9ydC4KLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1h
cnF1ZWVTcGVlZChwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQ6IHsK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZUluY3JlbWVudCwgTWFy
cXVlZUluY3JlbWVudCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgxLCBGaXhlZCkpOyAvLyAxcHguCi0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0g
ICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoKDYs
IEZpeGVkKSk7IC8vIDZweC4gVGhlIFdpbklFIGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKLSAgICAgICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChMZW5ndGgoMzYsIEZpeGVkKSk7
IC8vIDM2cHguCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7Ci0gICAg
ICAgICAgICBMZW5ndGggbCA9IGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOwotICAgICAgICAgICAgaWYgKG9rKQotICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQobCk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoV0NTUykKLSAgICBjYXNlIENTU1By
b3BlcnR5V2FwTWFycXVlZVN0eWxlOgotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRShtYXJxdWVlQmVoYXZpb3IsIE1hcnF1ZWVCZWhhdmlvcikgICAgICAKLSAgICAgICAg
cmV0dXJuOwotI2lmIEVOQUJMRShXQ1NTKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVl
RGlyOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlRGlyZWN0aW9u
LCBNYXJxdWVlRGlyZWN0aW9uKQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMdHI6Ci0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNUklHSFQpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVJ0bDoKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1MRUZUKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0TWFycXVlZURpcmVjdGlvbigqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG1hcnF1ZWVEaXJlY3Rpb24sIE1h
cnF1ZWVEaXJlY3Rpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlckRyYWc6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklN
SVRJVkUodXNlckRyYWcsIFVzZXJEcmFnKSAgICAgIAotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUodXNlck1vZGlmeSwgVXNlck1vZGlmeSkgICAgICAKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHVzZXJTZWxlY3Qs
IFVzZXJTZWxlY3QpICAgICAgCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0T3ZlcmZsb3c6IHsKLSAgICAgICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyBzdXBwb3J0ZWQg
YnkgV2luSUUsIGFuZCBzbyB3ZSBsZWF2ZSBvZmYgdGhlICItd2Via2l0LSIgaW4gb3JkZXIgdG8K
LSAgICAgICAgLy8gd29yayB3aXRoIFdpbklFLXNwZWNpZmljIHBhZ2VzIHRoYXQgdXNlIHRoZSBw
cm9wZXJ0eS4KLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dE92ZXJmbG93
LCBUZXh0T3ZlcmZsb3cpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxl
LT5zZXRUZXh0T3ZlcmZsb3cocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVF
bGxpcHNpcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKG1fcGFyZW50U3R5bGUtPm1hcmdp
bkJlZm9yZUNvbGxhcHNlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luQWZ0ZXJD
b2xsYXBzZShtX3BhcmVudFN0eWxlLT5tYXJnaW5BZnRlckNvbGxhcHNlKCkpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
TWFyZ2luQmVmb3JlQ29sbGFwc2UoTUNPTExBUFNFKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dE1hcmdpbkFmdGVyQ29sbGFwc2UoTUNPTExBUFNFKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxh
cHNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShtYXJnaW5CZWZvcmVD
b2xsYXBzZSwgTWFyZ2luQmVmb3JlQ29sbGFwc2UpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUobWFyZ2luQWZ0ZXJDb2xsYXBzZSwgTWFyZ2luQWZ0ZXJD
b2xsYXBzZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
Q2xhbXA6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobGluZUNsYW1wLCBM
aW5lQ2xhbXApCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsK
LSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAg
ICAgICAgICBtX3N0eWxlLT5zZXRMaW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUocHJpbWl0aXZlVmFs
dWUtPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgTGluZUNsYW1w
TGluZUNvdW50KSk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGluZUNsYW1wKExpbmVD
bGFtcFZhbHVlKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BFUkNFTlRBR0UpLCBMaW5lQ2xhbXBQZXJjZW50YWdlKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodDogewotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChoaWdobGlnaHQsIEhpZ2hsaWdodCk7Ci0gICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRIaWdobGlnaHQobnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3N0eWxlLT5zZXRIaWdobGlnaHQocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1Zh
bHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRIeXBoZW5zOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGh5cGhlbnMs
IEh5cGhlbnMpOwotICAgICAgICBtX3N0eWxlLT5zZXRIeXBoZW5zKCpwcmltaXRpdmVWYWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bmF0ZUNoYXJhY3RlcjogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChoeXBo
ZW5hdGlvblN0cmluZywgSHlwaGVuYXRpb25TdHJpbmcpOwotICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0SHlwaGVuYXRpb25TdHJpbmcobnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRIeXBoZW5hdGlvblN0cmluZyhwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5n
VmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEh5cGhlbmF0ZUxvY2FsZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TChoeXBoZW5hdGlvbkxvY2FsZSwgSHlwaGVuYXRpb25Mb2NhbGUpOwotICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0SHlwaGVuYXRpb25Mb2NhbGUobnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3N0eWxlLT5zZXRIeXBoZW5hdGlvbkxvY2FsZShwcmltaXRpdmVWYWx1ZS0+Z2V0
U3RyaW5nVmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckZpdDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TChib3JkZXJGaXQsIEJvcmRlckZpdCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUJvcmRlcikKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRl
ckZpdChCb3JkZXJGaXRCb3JkZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRCb3JkZXJGaXQoQm9yZGVyRml0TGluZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDogewotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0U2l6ZUFkanVzdCwgVGV4dFNpemVBZGp1c3QpCi0g
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
KSByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFRleHRTaXplQWRqdXN0KHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0byk7Ci0gICAgICAgIG1fZm9udERpcnR5ID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dFNlY3VyaXR5OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJ
TUlUSVZFKHRleHRTZWN1cml0eSwgVGV4dFNlY3VyaXR5KQotICAgICAgICByZXR1cm47Ci0KLSNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERh
c2hib2FyZFJlZ2lvbjogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChkYXNo
Ym9hcmRSZWdpb25zLCBEYXNoYm9hcmRSZWdpb25zKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZh
bHVlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldERh
c2hib2FyZFJlZ2lvbnMoUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgRGFzaGJvYXJkUmVnaW9uICpy
ZWdpb24gPSBwcmltaXRpdmVWYWx1ZS0+Z2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsKLSAgICAg
ICAgaWYgKCFyZWdpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAg
ICAgRGFzaGJvYXJkUmVnaW9uICpmaXJzdCA9IHJlZ2lvbjsKLSAgICAgICAgd2hpbGUgKHJlZ2lv
bikgewotICAgICAgICAgICAgTGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPnRv
cCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIHJp
Z2h0ID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+cmlnaHQoKSwgc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlKTsKLSAgICAgICAgICAgIExlbmd0aCBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgo
cmVnaW9uLT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLSAgICAgICAg
ICAgIExlbmd0aCBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+bGVmdCgpLCBzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNs
ZSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNo
Ym9hcmRSZWdpb246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20s
IGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7Ci0gICAgICAgICAgICBlbHNl
IGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5nbGUsIHJlZ2lvbi0+
bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxz
ZSA6IHRydWUpOwotICAgICAgICAgICAgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0SGFz
RGFzaGJvYXJkUmVnaW9ucyh0cnVlKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0jZW5kaWYgICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodmlzdWFsbHlPcmRlcmVkLCBWaXN1
YWxseU9yZGVyZWQpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5z
ZXRWaXN1YWxseU9yZGVyZWQocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVW
aXN1YWwpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
dHJva2VXaWR0aDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0U3Ry
b2tlV2lkdGgsIFRleHRTdHJva2VXaWR0aCkKLSAgICAgICAgZmxvYXQgd2lkdGggPSAwOwotICAg
ICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBj
YXNlIENTU1ZhbHVlVGhpbjoKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06Ci0gICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlVGhpY2s6IHsKLSAgICAgICAgICAgICAgICBkb3VibGUgcmVz
dWx0ID0gMS4wIC8gNDg7Ci0gICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlTWVkaXVtKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKj0g
MzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZVRoaWNrKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKj0gNTsKLSAgICAg
ICAgICAgICAgICB3aWR0aCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVzdWx0LCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyktPmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB3aWR0aCA9
IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxlbWVu
dFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBtX3N0eWxlLT5zZXRUZXh0U3Ryb2tlV2lkdGgod2lkdGgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06IHsKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtLCBUcmFuc2Zvcm0pOwotICAg
ICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7Ci0gICAgICAgIGNyZWF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbnModmFsdWUsIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgb3BlcmF0
aW9ucyk7Ci0gICAgICAgIG1fc3R5bGUtPnNldFRyYW5zZm9ybShvcGVyYXRpb25zKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1PcmlnaW5Y
LCBUcmFuc2Zvcm1PcmlnaW5YKQotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0
cmFuc2Zvcm1PcmlnaW5ZLCBUcmFuc2Zvcm1PcmlnaW5ZKQotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1PcmlnaW5aLCBUcmFuc2Zvcm1PcmlnaW5aKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblg6IHsK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWCwgVHJh
bnNmb3JtT3JpZ2luWCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjpp
c1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVW
YWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5
bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmlt
aXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtT3JpZ2luWChs
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5ZOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5z
Zm9ybU9yaWdpblksIFRyYW5zZm9ybU9yaWdpblkpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIExlbmd0aCBsOwotICAgICAgICBpbnQg
dHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChDU1NQ
cmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBM
ZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOwotICAgICAgICBlbHNlIGlm
ICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAg
IGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFRy
YW5zZm9ybU9yaWdpblkobCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWjogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTCh0cmFuc2Zvcm1PcmlnaW5aLCBUcmFuc2Zvcm1PcmlnaW5aKQotICAgICAgICBp
ZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmbG9hdCBm
OwotICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0g
ICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAg
ICAgICAgICAgIGYgPSBzdGF0aWNfY2FzdDxmbG9hdD4ocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVM
ZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3Jt
T3JpZ2luWihmKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1TdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
dHJhbnNmb3JtU3R5bGUzRCwgVHJhbnNmb3JtU3R5bGUzRCkKLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtU3R5bGUzRCgocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKSA/IFRyYW5zZm9ybVN0
eWxlM0RQcmVzZXJ2ZTNEIDogVHJhbnNmb3JtU3R5bGUzREZsYXQpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlOiB7Ci0gICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlLCBQZXJzcGVjdGl2ZSkKLSAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlTm9uZSkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGVyc3BlY3RpdmUoMCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZsb2F0IHBlcnNw
ZWN0aXZlVmFsdWU7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3Ro
KHR5cGUpKQotICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0
PihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgewotICAgICAgICAgICAgLy8gRm9yIGJhY2t3
YXJkIGNvbXBhdGliaWxpdHksIHRyZWF0IHZhbHVlbGVzcyBudW1iZXJzIGFzIHB4LgotICAgICAg
ICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocHJpbWl0
aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5j
b21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9y
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHBl
cnNwZWN0aXZlVmFsdWUgPj0gMC4wZikKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBlcnNwZWN0
aXZlKHBlcnNwZWN0aXZlVmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbjoKLSAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmVPcmlnaW5YLCBQZXJzcGVjdGl2ZU9yaWdpblgpCi0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlT3JpZ2luWSwgUGVy
c3BlY3RpdmVPcmlnaW5ZKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlT3JpZ2luWDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTChwZXJzcGVjdGl2ZU9yaWdpblgsIFBlcnNwZWN0aXZlT3JpZ2luWCkKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgTGVuZ3RoIGw7
Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAg
ICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAg
ICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxl
bmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0g
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
KQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KSwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
bV9zdHlsZS0+c2V0UGVyc3BlY3RpdmVPcmlnaW5YKGwpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk6IHsKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmVPcmlnaW5ZLCBQZXJzcGVj
dGl2ZU9yaWdpblkpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIExlbmd0aCBsOwotICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNV
bml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
LCB6b29tRmFjdG9yKSwgRml4ZWQpOwotICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0
aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFBlcnNwZWN0aXZlT3JpZ2luWShs
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uOgotICAgICAgICBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+Y2xl
YXJBbmltYXRpb25zKCk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAg
IG1fc3R5bGUtPmluaGVyaXRBbmltYXRpb25zKG1fcGFyZW50U3R5bGUtPmFuaW1hdGlvbnMoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVs
YXk6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZGVsYXksIERlbGF5LCB2YWx1ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJl
Y3Rpb246Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZGlyZWN0aW9uLCBEaXJlY3Rp
b24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkR1cmF0aW9uOgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGR1cmF0aW9u
LCBEdXJhdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUo
ZmlsbE1vZGUsIEZpbGxNb2RlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudDoKLSAgICAgICAgSEFORExFX0FO
SU1BVElPTl9WQUxVRShpdGVyYXRpb25Db3VudCwgSXRlcmF0aW9uQ291bnQsIHZhbHVlKQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWU6Ci0g
ICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUobmFtZSwgTmFtZSwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlOgot
ICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKHBsYXlTdGF0ZSwgUGxheVN0YXRlLCB2YWx1
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbjoKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRSh0aW1pbmdGdW5j
dGlvbiwgVGltaW5nRnVuY3Rpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246Ci0gICAgICAgIGlmIChpc0luaXRpYWwpCi0gICAg
ICAgICAgICBtX3N0eWxlLT5jbGVhclRyYW5zaXRpb25zKCk7Ci0gICAgICAgIGVsc2UgaWYgKGlz
SW5oZXJpdCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmluaGVyaXRUcmFuc2l0aW9ucyhtX3BhcmVu
dFN0eWxlLT50cmFuc2l0aW9ucygpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXk6Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZB
TFVFKGRlbGF5LCBEZWxheSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uOgotICAgICAgICBIQU5ETEVfVFJBTlNJVElP
Tl9WQUxVRShkdXJhdGlvbiwgRHVyYXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eToKLSAgICAgICAgSEFORExF
X1RSQU5TSVRJT05fVkFMVUUocHJvcGVydHksIFByb3BlcnR5LCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246
Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdG
dW5jdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5UG9p
bnRlckV2ZW50czoKLSAgICB7Ci0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAg
ICAvLyA8cmRhcjovL3Byb2JsZW0vNjU2MTA3Nz4gV29yayBhcm91bmQgdGhlIFN0b2NrcyB3aWRn
ZXQncyBtaXN1c2Ugb2YgdGhlCi0gICAgICAgIC8vIHBvaW50ZXItZXZlbnRzIHByb3BlcnR5IGJ5
IG5vdCBhcHBseWluZyBpdCBpbiBEYXNoYm9hcmQuCi0gICAgICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOwotICAgICAgICBpZiAoc2V0dGlu
Z3MgJiYgc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwocG9pbnRlckV2ZW50cywgUG9pbnRlckV2ZW50cykKLSAgICAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0UG9p
bnRlckV2ZW50cygqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246Ci0gICAgICAgIGlmIChpc0lu
aGVyaXQpIAotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sb3JTcGFjZShtX3BhcmVudFN0eWxl
LT5jb2xvclNwYWNlKCkpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sb3JTcGFjZSgqcHJpbWl0aXZlVmFs
dWUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5U2l6
ZToKLSAgICAgICAgYXBwbHlQYWdlU2l6ZVByb3BlcnR5KHZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazoKLSAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwoc3BlYWssIFNwZWFrKTsKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0U3BlYWsoKnByaW1p
dGl2ZVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUludmFsaWQ6Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIERpcmVjdGlvbmFsIHBy
b3BlcnRpZXMgYXJlIHJlc29sdmVkIGJ5IHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KCkg
YmVmb3JlIHRoZSBzd2l0Y2guCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3I6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJFbmRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQ6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3I6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3I6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkVuZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQ6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFk
ZGluZ0FmdGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGg6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9n
aWNhbEhlaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5
Rm9udFN0cmV0Y2g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2U6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVF1b3RlczoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dExpbmVUaHJvdWdoTW9kZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdo
U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVy
bGluZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dE92ZXJsaW5lV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dFVuZGVybGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHls
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOgotICAgICAgICBy
ZXR1cm47Ci0jaWYgRU5BQkxFKFdDU1MpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0Rm9y
bWF0OgotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgbV9lbGVtZW50LT5oYXNUYWdOYW1l
KFdlYkNvcmU6OmlucHV0VGFnKSkgewotICAgICAgICAgICAgU3RyaW5nIG1hc2sgPSBwcmltaXRp
dmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihtX2VsZW1lbnQpLT5zZXRXYXBJbnB1dEZvcm1hdChtYXNrKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1
aXJlZDoKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIG1fZWxlbWVudC0+aXNGb3JtQ29u
dHJvbEVsZW1lbnQoKSkgewotICAgICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihtX2VsZW1lbnQpOwot
ICAgICAgICAgICAgYm9vbCByZXF1aXJlZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1
ZSgpID09ICJ0cnVlIjsKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldFJlcXVpcmVkKHJlcXVpcmVk
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0jZW5kaWYgCi0KLSAgICAvLyBDU1MgVGV4
dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHdyaXRpbmdNb2RlLCBXcml0aW5nTW9kZSkKLSAg
ICAgICAgaWYgKCFpc0luaGVyaXQgJiYgIWlzSW5pdGlhbCAmJiBtX2VsZW1lbnQgJiYgbV9lbGVt
ZW50ID09IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCi0gICAgICAg
ICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldFdyaXRpbmdNb2RlU2V0T25Eb2N1bWVudEVs
ZW1lbnQodHJ1ZSk7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBt
X3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE9y
aWVudGF0aW9uKG1fc3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFs
IDogVmVydGljYWwpOwotICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodGV4dENv
bWJpbmUsIFRleHRDb21iaW5lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUodGV4dEVtcGhhc2lzUG9zaXRpb24sIFRleHRFbXBoYXNp
c1Bvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRl
eHRFbXBoYXNpc0ZpbGwsIFRleHRFbXBoYXNpc0ZpbGwpCi0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKHRleHRFbXBoYXNpc01hcmssIFRleHRFbXBoYXNpc01hcmspCi0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRFbXBoYXNpc0N1c3RvbU1hcmssIFRleHRF
bXBoYXNpc0N1c3RvbU1hcmspCi0gICAgICAgIGlmIChpc0luaGVyaXQgfHwgaXNJbml0aWFsKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkg
ewotICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVM
aXN0Kj4odmFsdWUpOwotICAgICAgICAgICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpID09IDIpOwot
ICAgICAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpICE9IDIpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpLT5pc1By
aW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4obGlzdC0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayhpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlRmlsbGVkIHx8IHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikKLSAgICAg
ICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqdmFsdWUpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVt
cGhhc2lzTWFyaygqdmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpOwotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQ3VzdG9tKTsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsocHJpbWl0aXZlVmFs
dWUtPmdldFN0cmluZ1ZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7Ci0K
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmlsbGVk
IHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikgewotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqcHJpbWl0aXZlVmFsdWUpOwotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQXV0
byk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFz
aXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
VGV4dEVtcGhhc2lzTWFyaygqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAg
cmV0dXJuOwotCi0jaWYgRU5BQkxFKFNWRykKLSAgICBkZWZhdWx0OgotICAgICAgICAvLyBUcnkg
dGhlIFNWRyBwcm9wZXJ0aWVzCi0gICAgICAgIGFwcGx5U1ZHUHJvcGVydHkoaWQsIHZhbHVlKTsK
LSNlbmRpZgotICAgIH0KLX0KLQotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXpl
UHJvcGVydHkoQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIG1fc3R5bGUtPnJlc2V0UGFnZVNpemVU
eXBlKCk7Ci0gICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4o
dmFsdWUpOwotICAgIExlbmd0aCB3aWR0aDsKLSAgICBMZW5ndGggaGVpZ2h0OwotICAgIFBhZ2VT
aXplVHlwZSBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUTzsKLSAgICBzd2l0Y2ggKHZhbHVl
TGlzdC0+bGVuZ3RoKCkpIHsKLSAgICBjYXNlIDI6IHsKLSAgICAgICAgLy8gPGxlbmd0aD57Mn0g
fCA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+Ci0gICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0Vf
U0laRV9SRVNPTFZFRDsKLSAgICAgICAgaWYgKCF2YWx1ZUxpc3QtPml0ZW0oMCktPmlzUHJpbWl0
aXZlVmFsdWUoKSB8fCAhdmFsdWVMaXN0LT5pdGVtKDEpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZTAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgw
KSk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTEgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgxKSk7Ci0gICAgICAgIGlu
dCB0eXBlMCA9IHByaW1pdGl2ZVZhbHVlMC0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpbnQg
dHlwZTEgPSBwcmltaXRpdmVWYWx1ZTEtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENT
U1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUwKSkgewotICAgICAgICAgICAg
Ly8gPGxlbmd0aD57Mn0KLSAgICAgICAgICAgIGlmICghQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5p
dFR5cGVMZW5ndGgodHlwZTEpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHdpZHRoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlMC0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0
aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7Ci0gICAgICAgICAgICBoZWln
aHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUxLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0
eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIC8vIDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KLSAgICAgICAgICAgIC8vIFRo
ZSB2YWx1ZSBvcmRlciBpcyBndWFyYW50ZWVkLiBTZWUgQ1NTUGFyc2VyOjpwYXJzZVNpemVQYXJh
bWV0ZXIuCi0gICAgICAgICAgICBpZiAoIXBhZ2VTaXplRnJvbU5hbWUocHJpbWl0aXZlVmFsdWUw
LCBwcmltaXRpdmVWYWx1ZTEsIHdpZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSAxOiB7Ci0gICAg
ICAgIC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBwb3J0cmFpdCB8IGxhbmRz
Y2FwZV0KLSAgICAgICAgaWYgKCF2YWx1ZUxpc3QtPml0ZW0oMCktPmlzUHJpbWl0aXZlVmFsdWUo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZUxpc3QtPml0
ZW0oMCkpOwotICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCk7Ci0gICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBl
KSkgewotICAgICAgICAgICAgLy8gPGxlbmd0aD4KLSAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9
IFBBR0VfU0laRV9SRVNPTFZFRDsKLSAgICAgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlm
ICh0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkg
ewotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgICAgICAgICAgcGFnZVNp
emVUeXBlID0gUEFHRV9TSVpFX0FVVE87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlUG9ydHJhaXQ6Ci0gICAgICAgICAgICAgICAgcGFnZVNpemVUeXBl
ID0gUEFHRV9TSVpFX0FVVE9fUE9SVFJBSVQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBlOgotICAgICAgICAgICAgICAgIHBhZ2VTaXpl
VHlwZSA9IFBBR0VfU0laRV9BVVRPX0xBTkRTQ0FQRTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4KLSAg
ICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKHByaW1pdGl2ZVZhbHVlLCAwLCB3aWR0aCwg
aGVpZ2h0KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIG1fc3R5bGUtPnNldFBhZ2VTaXplVHlwZShwYWdlU2l6ZVR5cGUpOwot
ICAgIG1fc3R5bGUtPnNldFBhZ2VTaXplKExlbmd0aFNpemUod2lkdGgsIGhlaWdodCkpOwotICAg
IHJldHVybjsKLX0KLQotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpwYWdlU2l6ZUZyb21OYW1lKENT
U1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3Jp
ZW50YXRpb24sIExlbmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KQotewotICAgIHN0YXRpYyBj
b25zdCBMZW5ndGggYTVXaWR0aCA9IG1tTGVuZ3RoKDE0OCksIGE1SGVpZ2h0ID0gbW1MZW5ndGgo
MjEwKTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE0V2lkdGggPSBtbUxlbmd0aCgyMTApLCBh
NEhlaWdodCA9IG1tTGVuZ3RoKDI5Nyk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBhM1dpZHRo
ID0gbW1MZW5ndGgoMjk3KSwgYTNIZWlnaHQgPSBtbUxlbmd0aCg0MjApOwotICAgIHN0YXRpYyBj
b25zdCBMZW5ndGggYjVXaWR0aCA9IG1tTGVuZ3RoKDE3NiksIGI1SGVpZ2h0ID0gbW1MZW5ndGgo
MjUwKTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI0V2lkdGggPSBtbUxlbmd0aCgyNTApLCBi
NEhlaWdodCA9IG1tTGVuZ3RoKDM1Myk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZXR0ZXJX
aWR0aCA9IGluY2hMZW5ndGgoOC41KSwgbGV0dGVySGVpZ2h0ID0gaW5jaExlbmd0aCgxMSk7Ci0g
ICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZWdhbFdpZHRoID0gaW5jaExlbmd0aCg4LjUpLCBsZWdh
bEhlaWdodCA9IGluY2hMZW5ndGgoMTQpOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGVkZ2Vy
V2lkdGggPSBpbmNoTGVuZ3RoKDExKSwgbGVkZ2VySGVpZ2h0ID0gaW5jaExlbmd0aCgxNyk7Ci0K
LSAgICBpZiAoIXBhZ2VTaXplTmFtZSB8fCBwYWdlU2l6ZU5hbWUtPnByaW1pdGl2ZVR5cGUoKSAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBzd2l0Y2ggKHBhZ2VTaXplTmFtZS0+Z2V0SWRlbnQoKSkgewotICAgIGNhc2UgQ1NTVmFs
dWVBNToKLSAgICAgICAgd2lkdGggPSBhNVdpZHRoOwotICAgICAgICBoZWlnaHQgPSBhNUhlaWdo
dDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUE0OgotICAgICAgICB3aWR0aCA9
IGE0V2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGE0SGVpZ2h0OwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1ZhbHVlQTM6Ci0gICAgICAgIHdpZHRoID0gYTNXaWR0aDsKLSAgICAgICAgaGVp
Z2h0ID0gYTNIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVCNToKLSAg
ICAgICAgd2lkdGggPSBiNVdpZHRoOwotICAgICAgICBoZWlnaHQgPSBiNUhlaWdodDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUI0OgotICAgICAgICB3aWR0aCA9IGI0V2lkdGg7
Ci0gICAgICAgIGhlaWdodCA9IGI0SGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U1ZhbHVlTGV0dGVyOgotICAgICAgICB3aWR0aCA9IGxldHRlcldpZHRoOwotICAgICAgICBoZWln
aHQgPSBsZXR0ZXJIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVMZWdh
bDoKLSAgICAgICAgd2lkdGggPSBsZWdhbFdpZHRoOwotICAgICAgICBoZWlnaHQgPSBsZWdhbEhl
aWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUxlZGdlcjoKLSAgICAgICAg
d2lkdGggPSBsZWRnZXJXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gbGVkZ2VySGVpZ2h0OwotICAg
ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgaWYgKHBhZ2VPcmllbnRhdGlvbikgewotICAgICAgICBpZiAocGFnZU9yaWVudGF0aW9u
LT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc3dpdGNoIChwYWdlT3JpZW50YXRpb24tPmdl
dElkZW50KCkpIHsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKLSAgICAgICAgICAg
IHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENTU1ZhbHVlUG9ydHJhaXQ6Ci0gICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUxlbmd0aCBDU1NT
dHlsZVNlbGVjdG9yOjptbUxlbmd0aChkb3VibGUgbW0pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIExl
bmd0aChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1tLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X01NKS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5
bGUpLCBGaXhlZCk7Ci19Ci0KLUxlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjppbmNoTGVuZ3RoKGRv
dWJsZSBpbmNoKSBjb25zdAotewotICAgIHJldHVybiBMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShpbmNoLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOKS0+Y29tcHV0ZUxlbmd0aElu
dEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7Ci19Ci0KLXZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmls
bExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+Y3NzVmFs
dWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMKSB7Ci0gICAgICAgIGxheWVyLT5zZXRB
dHRhY2htZW50KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50KGxheWVyLT50eXBlKCkp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwpAQCAtNTkwNiw3ICszNDU2LDcgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKAogICAgICAgICBsYXllci0+c2V0
Q29tcG9zaXRlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUobGF5ZXItPnR5cGUoKSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU5OTksOSArMzU0OSw5IEBAIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHIKICAgICAgICAgbGF5ZXItPnNl
dFNpemVUeXBlKENvdmVyKTsKICAgICBlbHNlCiAgICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShT
aXplTGVuZ3RoKTsKLSAgICAKKwogICAgIExlbmd0aFNpemUgYiA9IEZpbGxMYXllcjo6aW5pdGlh
bEZpbGxTaXplTGVuZ3RoKGxheWVyLT50eXBlKCkpOwotICAgIAorCiAgICAgaWYgKHZhbHVlLT5j
c3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NTX0lOSVRJQUwgfHwgcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb250YWluCiAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ292ZXIpIHsKICAgICAgICAgbGF5ZXItPnNldFNpemVM
ZW5ndGgoYik7CkBAIC02MDExLDE0ICszNTYxLDE0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
bWFwRmlsbFNpemUoQ1NTUHIKICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBh
aXJWYWx1ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vj
b25kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBm
aXJzdCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3QoKSk7CiAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4ocGFpci0+c2Vjb25kKCkpOwotICAgIAorCiAgICAgTGVuZ3RoIGZpcnN0TGVuZ3RoLCBz
ZWNvbmRMZW5ndGg7CiAgICAgaW50IGZpcnN0VHlwZSA9IGZpcnN0LT5wcmltaXRpdmVUeXBlKCk7
CiAgICAgaW50IHNlY29uZFR5cGUgPSBzZWNvbmQtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAKKwog
ICAgIGZsb2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7CiAKICAgICBp
ZiAoZmlyc3RUeXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTikKQEAgLTYwMzgs
NyArMzU4OCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHIKICAg
ICAgICAgc2Vjb25kTGVuZ3RoID0gTGVuZ3RoKHNlY29uZC0+Z2V0RG91YmxlVmFsdWUoKSwgUGVy
Y2VudCk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBiLnNldFdpZHRo
KGZpcnN0TGVuZ3RoKTsKICAgICBiLnNldEhlaWdodChzZWNvbmRMZW5ndGgpOwogICAgIGxheWVy
LT5zZXRTaXplTGVuZ3RoKGIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oCShyZXZpc2lvbiA3NTg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsOCBAQCBwdWJsaWM6CiAgICAgcHJp
dmF0ZToKICAgICAgICAgdm9pZCBzZXRGb250U2l6ZShGb250RGVzY3JpcHRpb24mLCBmbG9hdCBz
aXplKTsKICAgICAgICAgc3RhdGljIGZsb2F0IGdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRT
aXplKERvY3VtZW50KiwgUmVuZGVyU3R5bGUqLCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCBz
cGVjaWZpZWRTaXplLCBib29sIHVzZVNWR1pvb21SdWxlcyk7Ci0KKyAgICAgICAgc3RhdGljIExl
bmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJl
bmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAw
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgYXBwbHlDb3VudGVyTGlzdChSZW5kZXJTdHlsZSosIENT
U1ZhbHVlTGlzdCosIGJvb2wgaXNSZXNldCk7CiAgICAgcHVibGljOgogICAgICAgICBDb2xvciBn
ZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSopIGNvbnN0OwogCkBA
IC0zMTMsNiArMzE0LDkgQEAgcHVibGljOgogICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0lt
cGwqPiBtX3NlbGVjdG9yQXR0cnM7CiAgICAgICAgIFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbio+IG1fYWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHM7CiAgICAgICAgIFZlY3Rv
cjxNZWRpYVF1ZXJ5UmVzdWx0Kj4gbV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRz
OworCisvLyBwdWxsIGluIGF1dG8tZ2VuZXJhdGVkIGFwcGx5IHByb3BlcnR5IHByb3RvdHlwZXMK
KyNpbmNsdWRlICJDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCIKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShyZXZpc2lvbiA3NTg5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAkod29ya2luZyBjb3B5KQpAQCAtMTM4
LDMgKzEzOCw1MyBAQCBFT0YKIGNsb3NlIEhFQURFUjsKIAogc3lzdGVtKCJncGVyZiAtLWtleS1w
b3NpdGlvbnM9XCIqXCIgLUQgLW4gLXMgMiBDU1NQcm9wZXJ0eU5hbWVzLmdwZXJmID4gQ1NTUHJv
cGVydHlOYW1lcy5jcHAiKSA9PSAwIHx8IGRpZSAiY2FsbGluZyBncGVyZiBmYWlsZWQ6ICQ/IjsK
KworCitvcGVuIEFQUExZX0hFQURFUiwgIj5DU1NTdHlsZUFwcGx5UHJvcGVydHkuaCIgfHwgZGll
ICJDb3VsZCBub3Qgb3BlbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCBmb3Igd3JpdGluZyI7Citw
cmludCBBUFBMWV9IRUFERVIgPDwgIkVPRiI7CisvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxs
eSBnZW5lcmF0ZWQgZnJvbSBDU1NQcm9wZXJ0eU5hbWVzLmluIGJ5IG1ha2Vwcm9wLCBkbyBub3Qg
ZWRpdCAqLworCitzdGF0aWMgdm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHlJbnZhbGlkKENT
U1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRpYWxDU1NQ
cm9wZXJ0eUludmFsaWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQg
aGFuZGxlVmFsdWVDU1NQcm9wZXJ0eUludmFsaWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2Us
IENTU1ZhbHVlICp2YWx1ZSk7CisKK0VPRgorCitmb3JlYWNoIG15ICRuYW1lIChAbmFtZXMpIHsK
KyAgbXkgJGlkID0gJG5hbWU7CisgICRpZCA9fiBzLyheW14tXSl8LSguKS91YygkMXx8JDIpL2dl
OworICBwcmludCBBUFBMWV9IRUFERVIgInN0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRDU1NQcm9w
ZXJ0eSIgLiAkaWQgLiAiKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTtcbiI7CisgIHByaW50
IEFQUExZX0hFQURFUiAic3RhdGljIHZvaWQgaGFuZGxlSW5pdGlhbENTU1Byb3BlcnR5IiAuICRp
ZCAuICIoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpO1xuIjsKKyAgcHJpbnQgQVBQTFlfSEVB
REVSICJzdGF0aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5IiAuICRpZCAuICIoQ1NTU3R5
bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7XG5cbiI7Cit9CisKK3ByaW50
IEFQUExZX0hFQURFUiA8PCAiRU9GIjsKKyNpZiBFTkFCTEUoV0NTUykKKy8vIEZJWE1FOiBXQ1NT
IFByb3BlcnRpZXMgYXJlIG5vdCBhY3R1YWxseSBkZWZpbmVkIGluIENTU1Byb3BlcnR5LmluCitz
dGF0aWMgdm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcChDU1NTdHls
ZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVy
dHlXYXBNYXJxdWVlTG9vcChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9p
ZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3AoQ1NTU3R5bGVTZWxlY3RvciAq
aW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7CisKK3N0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRD
U1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7Citz
dGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQoQ1NTU3R5
bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlVmFsdWVDU1NQcm9wZXJ0
eVdhcE1hcnF1ZWVTcGVlZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZh
bHVlKTsKKworc3RhdGljIHZvaWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5V2FwTWFycXVlZVN0
eWxlKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRp
YWxDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZShDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7
CitzdGF0aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlKENTU1N0
eWxlU2VsZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpOworCitzdGF0aWMgdm9pZCBo
YW5kbGVJbmhlcml0Q1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyKENTU1N0eWxlU2VsZWN0b3IgKmlu
c3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRpYWxDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVE
aXIoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlVmFsdWVD
U1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1Zh
bHVlICp2YWx1ZSk7CisKK3N0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRDU1NQcm9wZXJ0eVdhcElu
cHV0Rm9ybWF0KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRs
ZUluaXRpYWxDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0KENTU1N0eWxlU2VsZWN0b3IgKmluc3Rh
bmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZVZhbHVlQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdChD
U1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKTsKKworc3RhdGljIHZv
aWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZChDU1NTdHlsZVNlbGVj
dG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVydHlXYXBJ
bnB1dFJlcXVpcmVkKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhh
bmRsZVZhbHVlQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVpcmVkKENTU1N0eWxlU2VsZWN0b3IgKmlu
c3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpOworI2VuZGlmCitFT0YKKworY2xvc2UgQVBQTFlfSEVB
REVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80687</attachid>
            <date>2011-01-31 15:19:59 -0800</date>
            <delta_ts>2011-02-01 21:44:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46592-20110201101955.patch</filename>
            <type>text/plain</type>
            <size>316121</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MTc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMTkgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkgdG8gdXNlIHNlcGFyYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBjYXNlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTIKKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGxp
Y2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRFRklORV9WQUxVRSk6CisgICAg
ICAgIChXZWJDb3JlOjpERUZJTkVfSU5IRVJJVCk6CisgICAgICAgIChXZWJDb3JlOjpERUZJTkVf
SU5JVElBTCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oOgorCiAyMDExLTAxLTExICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA3NTg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY4NSw2ICsxNjg1LDcgQEAK
IAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgw
MEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVzcG9uc2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNG
TmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9h
ZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NzQxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwICov
OyB9OworCQk4MERDMjlCRDEyRTkyM0Y5MDBDODEzOTMgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwREMy
OUJDMTJFOTIzRjkwMEM4MTM5MyAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwICovOyB9Owog
CQk4MUE3MzI1RTEyMTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUE3MzI1RDEyMTAxODlCMDBGQzBEOUUg
LyogSURCQ3Vyc29yLmggKi87IH07CiAJCTgxQTczMjYwMTIxMDE4QTQwMEZDMEQ5RSAvKiBJREJD
dXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODFBNzMyNUYxMjEwMThBNDAwRkMwRDlFIC8qIElEQkN1cnNvci5jcHAgKi87IH07CiAJCTgxQTcz
Mjc4MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMyNzcxMjEwMTlFMTAwRkMw
RDlFIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi87IH07CkBAIC04MTAzLDYgKzgxMDQsNyBA
QAogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVFMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJj
ZVJlc3BvbnNlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0VFNjg0NzQxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHA7
IHBhdGggPSBjZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODBEQzI5QkMxMkU5MjNGOTAwQzgxMzkzIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDU1NTdHlsZUFwcGx5
UHJvcGVydHkuY3BwOyBwYXRoID0gY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxQTczMjVEMTIxMDE4OUIwMEZDMEQ5RSAvKiBJREJD
dXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxQTczMjVGMTIxMDE4QTQwMEZDMEQ5RSAvKiBJ
REJDdXJzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQ3Vy
c29yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFBNzMyNzcxMjEwMTlFMTAw
RkMwRDlFIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQkN1cnNvckJhY2tlbmRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzA4MSw2ICsxMzA4Myw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MUUxQjFD
QTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwICovLAogCQkJCTQxRTFCMUNC
MEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oICovLAorCQkJCTgwREMyOUJDMTJF
OTIzRjkwMEM4MTM5MyAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwICovLAogCQkJCTQxRTFC
MUNDMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5pZGwgKi8sCiAJCQkJNDE2MkE0
NEQxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckNvbnRleHQuY3BwICovLAogCQkJ
CTQxNjJBNDRFMTAxMTQ1QUUwMERGRjNFRCAvKiBEZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmggKi8s
CkBAIC0yNTAzMCw2ICsyNTAzMyw3IEBACiAJCQkJMkUzN0UwMDUxMkRCQzVBNDAwQTZCMjMzIC8q
IEpTRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBNTY0MEJGMTJERjlFNUUwMEY0NTM2
RCAvKiBJbnNwZWN0b3JTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGM0Q0QzQ3ODEy
RTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODBEQzI5QkQxMkU5MjNGOTAwQzgxMzkzIC8qIENTU1N0eWxlQXBwbHlQ
cm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZUFwcGx5UHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUw
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQorICogICAgICAgICAgIChDKSAyMDA0LTIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVA
Y2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pY2hvbGFzIFNoYW5r
cyAod2Via2l0QG5pY2tzaGFua3MuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgorCisjaW5jbHVkZSAiQ291bnRlckNv
bnRlbnQuaCIKKyNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRlICJDU1NSZWZsZWN0VmFsdWUuaCIKKyNpbmNsdWRl
ICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRlICJGb250RmFt
aWx5VmFsdWUuaCIKKyNpbmNsdWRlICJGb250VmFsdWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNpbmNsdWRl
ICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgiCisjaW5jbHVkZSAiU3R5bGVH
ZW5lcmF0ZWRJbWFnZS5oIgorCisjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiVmlzaXRlZExpbmtTdHJhdGVneS5o
IgorI2VuZGlmCisKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisjaW5jbHVkZSAiRGFz
aGJvYXJkUmVnaW9uLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiWExp
bmtOYW1lcy5oIgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShX
TUwpCisjaW5jbHVkZSAiV01MTmFtZXMuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oUVQpCisj
aW5jbHVkZSA8cXdlYmhpc3RvcnlpbnRlcmZhY2UuaD4KKyNlbmRpZgorCit1c2luZyBuYW1lc3Bh
Y2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZpbmUgREVGSU5FX0lOSEVSSVQo
UHJvcGVydHkpIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjUHJvcGVydHko
Q1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpCisKKyNkZWZpbmUgREVGSU5FX0lOSVRJQUwoUHJv
cGVydHkpIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjUHJvcGVydHkoQ1NT
U3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpCisKKyNkZWZpbmUgREVGSU5FX1ZBTFVFKFByb3BlcnR5
KSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNQcm9wZXJ0eShDU1NTdHlsZVNl
bGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKQorCisjZGVmaW5lIERFRklORV9IQU5E
TEVfSU5IRVJJVChQcm9wZXJ0eSwgU2V0dGVyLCBHZXR0ZXIpIFwKK0RFRklORV9JTkhFUklUKFBy
b3BlcnR5KSBcCit7IFwKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKGluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT5HZXR0ZXIoKSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX0lO
SEVSSVRfQkFDS1VQKFByb3BlcnR5LCBTZXR0ZXIsIEdldHRlciwgQmFja3VwKSBcCitERUZJTkVf
SU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxl
LT5HZXR0ZXIoKS5pc1ZhbGlkKCkpIFwKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRl
cihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0dGVyKCkpOyBcCisgICAgZWxzZSBcCisgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPkJh
Y2t1cCgpKTsgXAorfQorCisjZGVmaW5lIERFRklORV9IQU5ETEVfSU5JVElBTChQcm9wZXJ0eSwg
U2V0dGVyLCBHZXR0ZXIpIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5KSBcCit7IFwKKyAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKFJlbmRlclN0eWxlOjpHZXR0ZXIoKSk7IFwKK30KKwor
I2RlZmluZSBERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoUHJvcGVydHksIFNldHRlcikgXAor
REVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIFwKK3sgXAorICAgIENvbG9yIGNvbDsgXAorICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoY29sKTsgXAorfQorCisjZGVmaW5lIERFRklORV9IQU5E
TEVfVkFMVUUoUHJvcGVydHksIFNldHRlcikgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7
IFwKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeyBcCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
IFwKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcigqcCk7IFwKKyAgICB9IFwKK30K
KworI2RlZmluZSBERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKFByb3BlcnR5LCBTZXR0ZXIpIFwK
K0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsgXAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAgIENvbG9yIGNvbCA9IGluc3Rh
bmNlLT5nZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShwKTsgXAorICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+U2V0dGVyKGNvbCk7IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfSU5IRVJJVChQcm9wZXJ0eSwgbGF5ZXJUeXBlLCBMYXllclR5cGUsIHBy
b3AsIFByb3ApIFwKK0RFRklORV9JTkhFUklUKFByb3BlcnR5KSBcCit7IFwKKyAgICBGaWxsTGF5
ZXIqIGN1cnJDaGlsZCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5
ZXJzKCk7IFwKKyAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7IFwKKyAgICBjb25zdCBGaWxs
TGF5ZXIqIGN1cnJQYXJlbnQgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bGF5ZXJUeXBlIyNM
YXllcnMoKTsgXAorICAgIHdoaWxlIChjdXJyUGFyZW50ICYmIGN1cnJQYXJlbnQtPmlzIyNQcm9w
IyNTZXQoKSkgeyBcCisgICAgICAgIGlmICghY3VyckNoaWxkKSB7IFwKKyAgICAgICAgICAgIC8q
IE5lZWQgdG8gbWFrZSBhIG5ldyBsYXllci4qLyBcCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBu
ZXcgRmlsbExheWVyKExheWVyVHlwZSMjRmlsbExheWVyKTsgXAorICAgICAgICAgICAgcHJldkNo
aWxkLT5zZXROZXh0KGN1cnJDaGlsZCk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGN1cnJDaGls
ZC0+c2V0IyNQcm9wKGN1cnJQYXJlbnQtPnByb3AoKSk7IFwKKyAgICAgICAgcHJldkNoaWxkID0g
Y3VyckNoaWxkOyBcCisgICAgICAgIGN1cnJDaGlsZCA9IHByZXZDaGlsZC0+bmV4dCgpOyBcCisg
ICAgICAgIGN1cnJQYXJlbnQgPSBjdXJyUGFyZW50LT5uZXh0KCk7IFwKKyAgICB9IFwKKyAgICBc
CisgICAgd2hpbGUgKGN1cnJDaGlsZCkgeyBcCisgICAgICAgIC8qIFJlc2V0IGFueSByZW1haW5p
bmcgbGF5ZXJzIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKKyAgICAgICAgY3Vy
ckNoaWxkLT5jbGVhciMjUHJvcCgpOyBcCisgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+
bmV4dCgpOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSVRJQUwoUHJvcGVydHksIGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCitE
RUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgRmlsbExheWVyKiBjdXJyQ2hpbGQg
PSBpbnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzIyNMYXllclR5cGUjI0xheWVycygpOyBcCisgICAg
Y3VyckNoaWxkLT5zZXQjI1Byb3AoRmlsbExheWVyOjppbml0aWFsRmlsbCMjUHJvcChMYXllclR5
cGUjI0ZpbGxMYXllcikpOyBcCisgICAgZm9yIChjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQo
KTsgY3VyckNoaWxkOyBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKSkgXAorICAgICAgICBj
dXJyQ2hpbGQtPmNsZWFyIyNQcm9wKCk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfVkFMVUUoUHJvcGVydHksIGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9w
KSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIEZpbGxMYXllciogY3VyckNo
aWxkID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAor
ICAgIEZpbGxMYXllciogcHJldkNoaWxkID0gMDsgXAorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxp
c3QoKSkgeyBcCisgICAgICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBs
YXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuICovIFwKKyAgICAgICAgQ1NTVmFs
dWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgp
OyBpKyspIHsgXAorICAgICAgICAgICAgaWYgKCFjdXJyQ2hpbGQpIHsgXAorICAgICAgICAgICAg
ICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBsYXllciB0byBob2xkIHRoaXMgdmFsdWUgKi8gXAor
ICAgICAgICAgICAgICAgIGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoTGF5ZXJUeXBlIyNGaWxs
TGF5ZXIpOyBcCisgICAgICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1cnJDaGlsZCk7
IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgaW5zdGFuY2UtPm1hcEZpbGwjI1Byb3Ao
UHJvcGVydHksIGN1cnJDaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkp
KTsgXAorICAgICAgICAgICAgcHJldkNoaWxkID0gY3VyckNoaWxkOyBcCisgICAgICAgICAgICBj
dXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAorICAgICAgICB9IFwKKyAgICB9IGVsc2Ug
eyBcCisgICAgICAgIGluc3RhbmNlLT5tYXBGaWxsIyNQcm9wKFByb3BlcnR5LCBjdXJyQ2hpbGQs
IHZhbHVlKTsgXAorICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAorICAg
IH0gXAorICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsgXAorICAgICAgICAvKiBSZXNldCBhbGwgcmVt
YWluaW5nIGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAgICAg
IGN1cnJDaGlsZC0+Y2xlYXIjI1Byb3AoKTsgXAorICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hp
bGQtPm5leHQoKTsgXAorICAgIH0gXAorfQorCisjZGVmaW5lIERFRklORV9OVUxMX0lOSEVSSVQo
UHJvcGVydHkpIERFRklORV9JTkhFUklUKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNl
KTt9CisjZGVmaW5lIERFRklORV9OVUxMX0lOSVRJQUwoUHJvcGVydHkpIERFRklORV9JTklUSUFM
KFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTt9CisjZGVmaW5lIERFRklORV9OVUxM
X1ZBTFVFKFByb3BlcnR5KSBERUZJTkVfVkFMVUUoUHJvcGVydHkpIHtVTlVTRURfUEFSQU0oaW5z
dGFuY2UpOyBVTlVTRURfUEFSQU0odmFsdWUpO30KKworI2RlZmluZSBERUZJTkVfVU5SRUFDSEFC
TEVfSU5IRVJJVChQcm9wZXJ0eSkgREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIHtVTlVTRURfUEFS
QU0oaW5zdGFuY2UpOyBBU1NFUlRfTk9UX1JFQUNIRUQoKTt9CisjZGVmaW5lIERFRklORV9VTlJF
QUNIQUJMRV9JTklUSUFMKFByb3BlcnR5KSBERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkge1VOVVNF
RF9QQVJBTShpbnN0YW5jZSk7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpO30KKyNkZWZpbmUgREVGSU5F
X1VOUkVBQ0hBQkxFX1ZBTFVFKFByb3BlcnR5KSBERUZJTkVfVkFMVUUoUHJvcGVydHkpIHtVTlVT
RURfUEFSQU0oaW5zdGFuY2UpOyBVTlVTRURfUEFSQU0odmFsdWUpOyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTt9CisKKyNkZWZpbmUgREVGSU5FX0VRVUlWQUxFTlRfSU5IRVJJVChQcm9wZXJ0eSwgRXF1
aXZhbGVudCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIHtDU1NTdHlsZVNlbGVjdG9yOjpo
YW5kbGVJbmhlcml0IyNFcXVpdmFsZW50KGluc3RhbmNlKTt9CisjZGVmaW5lIERFRklORV9FUVVJ
VkFMRU5UX0lOSVRJQUwoUHJvcGVydHksIEVxdWl2YWxlbnQpIFwKK0RFRklORV9JTklUSUFMKFBy
b3BlcnR5KSB7Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjRXF1aXZhbGVudChpbnN0
YW5jZSk7fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9WQUxVRShQcm9wZXJ0eSwgRXF1aXZh
bGVudCkgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSB7Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxl
VmFsdWUjI0VxdWl2YWxlbnQoaW5zdGFuY2UsIHZhbHVlKTt9CisjZGVmaW5lIERFRklORV9FUVVJ
VkFMRU5UX1BST1BFUlRZKFByb3BlcnR5LCBFcXVpdmFsZW50KSBcCitERUZJTkVfRVFVSVZBTEVO
VF9JTkhFUklUKFByb3BlcnR5LCBFcXVpdmFsZW50KSBcCitERUZJTkVfRVFVSVZBTEVOVF9JTklU
SUFMKFByb3BlcnR5LCBFcXVpdmFsZW50KSBcCitERUZJTkVfRVFVSVZBTEVOVF9WQUxVRShQcm9w
ZXJ0eSwgRXF1aXZhbGVudCkKKworLy8gWFhYIGNvbWJpbmUgRVhQQU5ESU5HIGRlZmluaXRpb25z
PworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKFByb3BlcnR5LCBGaXJzdCwg
U2Vjb25kKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRmlyc3QoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjU2Vjb25kKGluc3RhbmNlKTsgXAorfQorCisjZGVmaW5l
IERFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oUHJvcGVydHksIEZpcnN0LCBTZWNvbmQpIFwK
K0RFRklORV9JTklUSUFMKFByb3BlcnR5KSBcCit7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpo
YW5kbGVJbml0aWFsIyNGaXJzdChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpo
YW5kbGVJbml0aWFsIyNTZWNvbmQoaW5zdGFuY2UpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0VY
UEFORElOR19WQUxVRV9UV08oUHJvcGVydHksIEZpcnN0LCBTZWNvbmQpIFwKK0RFRklORV9WQUxV
RShQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWUjI0Zp
cnN0KGluc3RhbmNlLCB2YWx1ZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVWYWx1
ZSMjU2Vjb25kKGluc3RhbmNlLCB2YWx1ZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5E
SU5HX0lOSEVSSVRfVEhSRUUoUHJvcGVydHksIEZpcnN0LCBTZWNvbmQsIFRoaXJkKSBcCitERUZJ
TkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxl
SW5oZXJpdCMjRmlyc3QoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxl
SW5oZXJpdCMjU2Vjb25kKGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRs
ZUluaGVyaXQjI1RoaXJkKGluc3RhbmNlKTsgXAorfQorCisjZGVmaW5lIERFRklORV9FWFBBTkRJ
TkdfSU5JVElBTF9USFJFRShQcm9wZXJ0eSwgRmlyc3QsIFNlY29uZCwgVGhpcmQpIFwKK0RFRklO
RV9JTklUSUFMKFByb3BlcnR5KSBcCit7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJ
bml0aWFsIyNGaXJzdChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJ
bml0aWFsIyNTZWNvbmQoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxl
SW5pdGlhbCMjVGhpcmQoaW5zdGFuY2UpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0VYUEFORElO
R19JTkhFUklUX0ZPVVIoUHJvcGVydHksIEZpcnN0LCBTZWNvbmQsIFRoaXJkLCBGb3VydGgpIFwK
K0RFRklORV9JTkhFUklUKFByb3BlcnR5KSBcCit7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpo
YW5kbGVJbmhlcml0IyNGaXJzdChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpo
YW5kbGVJbmhlcml0IyNTZWNvbmQoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6
aGFuZGxlSW5oZXJpdCMjVGhpcmQoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6
aGFuZGxlSW5oZXJpdCMjRm91cnRoKGluc3RhbmNlKTsgXAorfQorCisjZGVmaW5lIERFRklORV9F
WFBBTkRJTkdfSU5JVElBTF9GT1VSKFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kLCBUaGlyZCwgRm91
cnRoKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxl
Y3Rvcjo6aGFuZGxlSW5pdGlhbCMjRmlyc3QoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxl
Y3Rvcjo6aGFuZGxlSW5pdGlhbCMjU2Vjb25kKGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2Vs
ZWN0b3I6OmhhbmRsZUluaXRpYWwjI1RoaXJkKGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2Vs
ZWN0b3I6OmhhbmRsZUluaXRpYWwjI0ZvdXJ0aChpbnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBE
RUZJTkVfU1BBQ0lOR19WQUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJv
cGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsgXAorICAgICAgICBib29sIHVzZVNWR1pvb21SdWxlcyA9IGluc3RhbmNlLT5t
X2VsZW1lbnQgJiYgaW5zdGFuY2UtPm1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7IFwKKyAgICAg
ICAgaW50IHdpZHRoID0gMDsgXAorICAgICAgICBpZiAocC0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1
ZU5vcm1hbCkgXAorICAgICAgICAgICAgd2lkdGggPSBwLT5jb21wdXRlTGVuZ3RoSW50KGluc3Rh
bmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB1c2VTVkda
b29tUnVsZXMgPyAxLjBmIDogaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7IFwK
KyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcih3aWR0aCk7IFwKKyAgICB9IFwKK30K
KyNkZWZpbmUgREVGSU5FX1dJRFRIX1ZBTFVFKFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9W
QUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsgXAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAgIHNob3J0IHdpZHRoID0gMzsgXAorICAgICAg
ICBzd2l0Y2ggKHAtPmdldElkZW50KCkpIHsgXAorICAgICAgICBjYXNlIENTU1ZhbHVlVGhpbjog
XAorICAgICAgICAgICAgd2lkdGggPSAxOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAg
ICBjYXNlIENTU1ZhbHVlTWVkaXVtOiBcCisgICAgICAgICAgICB3aWR0aCA9IDM7IFwKKyAgICAg
ICAgICAgIGJyZWFrOyBcCisgICAgICAgIGNhc2UgQ1NTVmFsdWVUaGljazogXAorICAgICAgICAg
ICAgd2lkdGggPSA1OyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICBjYXNlIENTU1Zh
bHVlSW52YWxpZDogXAorICAgICAgICAgICAgd2lkdGggPSBwLT5jb21wdXRlTGVuZ3RoU2hvcnQo
aW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGlu
c3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpOyBcCisgICAgICAgICAgICBicmVhazsg
XAorICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgICByZXR1cm47IFwKKyAgICAgICAgfSBc
CisgICAgICAgIGlmICh3aWR0aCA+PSAwKSB7IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5TZXR0ZXIod2lkdGgpOyBcCisgICAgICAgIH0gXAorICAgIH0gXAorfQorCisjZGVmaW5l
IERFRklORV9MRU5HVEhfVkFMVUUoUHJvcGVydHksIFNldHRlciwgTm9uZUVuYWJsZWQsIEludHJp
bnNpY0VuYWJsZWQsIE1pbkludHJpbnNpY0VuYWJsZWQsIEF1dG9FbmFibGVkLCBOb25lVW5kZWZp
bmVkKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7IFwKKyAgICAg
ICAgaWYgKE5vbmVFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlTm9uZSkgXAorICAgICAgICAgICAgaWYgKE5vbmVVbmRlZmluZWQpIFwKKyAgICAgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKExlbmd0aCh1bmRlZmluZWRMZW5ndGgsIEZp
eGVkKSk7IFwKKyAgICAgICAgICAgIGVsc2UgXAorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKCkpOyBcCisgICAgICAgIGVsc2UgaWYgKEludHJpbnNpY0Vu
YWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnRyaW5zaWMp
IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKEludHJpbnNp
YykpOyBcCisgICAgICAgIGVsc2UgaWYgKE1pbkludHJpbnNpY0VuYWJsZWQgJiYgcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNaW5JbnRyaW5zaWMpIFwKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKE1pbkludHJpbnNpYykpOyBcCisgICAg
ICAgIGVsc2UgaWYgKEF1dG9FbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlQXV0bykgXAorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihM
ZW5ndGgoKSk7IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIGludCB0eXBlID0gcHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsgXAorICAgICAgICAgICAgaWYgKENTU1ByaW1p
dGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSBcCisgICAgICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPlNldHRlcihMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGhJbnRGb3JMZW5ndGgoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RF
bGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpLCBGaXhlZCwg
cHJpbWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKSk7IFwKKyAgICAgICAgICAgIGVsc2UgaWYg
KHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSBcCisgICAgICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdl
dERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsgXAorICAgICAgICB9IFwKKyAgICB9IFwKK30KKwor
I2RlZmluZSBERUZJTkVfUkFESVVTX1ZBTFVFKFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9W
QUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsgXAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsgXAorICAgICAgICBQYWlyKiBwYWlyID0g
cHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOyBcCisgICAgICAgIGlmICghcGFpciB8fCAh
cGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpIFwKKyAgICAgICAgICAgIHJldHVybjsg
XAorICAgICAgICBMZW5ndGggcmFkaXVzV2lkdGg7IFwKKyAgICAgICAgTGVuZ3RoIHJhZGl1c0hl
aWdodDsgXAorICAgICAgICBpZiAocGFpci0+Zmlyc3QoKS0+cHJpbWl0aXZlVHlwZSgpID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgXAorICAgICAgICAgICAgcmFkaXVzV2lk
dGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7IFwK
KyAgICAgICAgZWxzZSBcCisgICAgICAgICAgICByYWRpdXNXaWR0aCA9IExlbmd0aChtYXgoaW50
TWluRm9yTGVuZ3RoLCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWlyLT5maXJzdCgpLT5jb21wdXRl
TGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVu
dFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSkpLCBGaXhlZCk7IFwK
KyAgICAgICAgaWYgKHBhaXItPnNlY29uZCgpLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSBcCisgICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBM
ZW5ndGgocGFpci0+c2Vjb25kKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOyBcCisgICAg
ICAgIGVsc2UgXAorICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKG1heChpbnRNaW5G
b3JMZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPnNlY29uZCgpLT5jb21wdXRlTGVu
Z3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0
eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSkpLCBGaXhlZCk7IFwKKyAg
ICAgICAgaW50IHdpZHRoID0gcmFkaXVzV2lkdGgucmF3VmFsdWUoKTsgXAorICAgICAgICBpbnQg
aGVpZ2h0ID0gcmFkaXVzSGVpZ2h0LnJhd1ZhbHVlKCk7IFwKKyAgICAgICAgaWYgKHdpZHRoIDwg
MCB8fCBoZWlnaHQgPCAwKSBcCisgICAgICAgICAgICByZXR1cm47IFwKKyAgICAgICAgaWYgKCF3
aWR0aCkgXAorICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gcmFkaXVzV2lkdGg7IFwKKyAgICAg
ICAgZWxzZSBpZiAoIWhlaWdodCkgXAorICAgICAgICAgICAgcmFkaXVzV2lkdGggPSByYWRpdXNI
ZWlnaHQ7IFwKKyAgICAgICAgTGVuZ3RoU2l6ZSBzaXplKHJhZGl1c1dpZHRoLCByYWRpdXNIZWln
aHQpOyBcCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoc2l6ZSk7IFwKKyAgICB9
IFwKK30KKworI2RlZmluZSBERUZJTkVfU0hBRE9XX1ZBTFVFKFByb3BlcnR5LCBTZXR0ZXIpIFwK
K0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsgXAorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKDApOyBcCisg
ICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCisgICAgICAgIENTU1ZhbHVl
TGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsgXAorICAgICAg
ICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7IFwKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBsZW47IGkrKykgeyBcCisgICAgICAgICAgICBDU1NWYWx1ZSogY3VyclZhbHVlID0gbGlzdC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsgXAorICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUt
PmlzU2hhZG93VmFsdWUoKSkgXAorICAgICAgICAgICAgICAgIGNvbnRpbnVlOyBcCisgICAgICAg
ICAgICBTaGFkb3dWYWx1ZSogaXRlbSA9IHN0YXRpY19jYXN0PFNoYWRvd1ZhbHVlKj4obGlzdC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKKyAgICAgICAgICAgIGludCB4ID0gaXRlbS0+
eC0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1f
cm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7IFwK
KyAgICAgICAgICAgIGludCB5ID0gaXRlbS0+eS0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+
bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1f
c3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7IFwKKyAgICAgICAgICAgIGludCBibHVyID0gaXRlbS0+
Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0
KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZl
Y3RpdmVab29tKCkpIDogMDsgXAorICAgICAgICAgICAgaW50IHNwcmVhZCA9IGl0ZW0tPnNwcmVh
ZCA/IGl0ZW0tPnNwcmVhZC0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQo
KSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVj
dGl2ZVpvb20oKSkgOiAwOyBcCisgICAgICAgICAgICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9
IGl0ZW0tPnN0eWxlICYmIGl0ZW0tPnN0eWxlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5zZXQg
PyBJbnNldCA6IE5vcm1hbDsgXAorICAgICAgICAgICAgQ29sb3IgY29sb3I7IFwKKyAgICAgICAg
ICAgIGlmIChpdGVtLT5jb2xvcikgXAorICAgICAgICAgICAgICAgIGNvbG9yID0gaW5zdGFuY2Ut
PmdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGl0ZW0tPmNvbG9yLmdldCgpKTsgXAorICAgICAg
ICAgICAgU2hhZG93RGF0YSogc2hhZG93RGF0YSA9IG5ldyBTaGFkb3dEYXRhKHgsIHksIGJsdXIs
IHNwcmVhZCwgc2hhZG93U3R5bGUsIFByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hh
ZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7IFwKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoc2hhZG93RGF0YSwgISFpKTsgXAor
ICAgICAgICB9IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfQU5JTUFUSU9OX0lOSEVS
SVQoUHJvcGVydHksIHByb3AsIFByb3ApIFwKK0RFRklORV9JTkhFUklUKFByb3BlcnR5KSBcCit7
IFwKKyAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2Vzc0Fu
aW1hdGlvbnMoKTsgXAorICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudExpc3QgPSBpbnN0
YW5jZS0+bV9wYXJlbnRTdHlsZS0+YW5pbWF0aW9ucygpOyBcCisgICAgc2l6ZV90IGkgPSAwLCBw
YXJlbnRTaXplID0gcGFyZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6IDA7IFwKKyAgICBm
b3IgKCA7IGkgPCBwYXJlbnRTaXplICYmIHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+aXMjI1By
b3AjI1NldCgpOyArK2kpIHsgXAorICAgICAgICBpZiAobGlzdC0+c2l6ZSgpIDw9IGkpIFwKKyAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAorICAgICAgICBs
aXN0LT5hbmltYXRpb24oaSktPnNldCMjUHJvcChwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPnBy
b3AoKSk7IFwKKyAgICB9IFwKKyAgICBcCisgICAgLyogUmVzZXQgYW55IHJlbWFpbmluZyBhbmlt
YXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKKyAgICBmb3IgKCA7IGkg
PCBsaXN0LT5zaXplKCk7ICsraSkgXAorICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFy
IyNQcm9wKCk7IFwKK30KKworI2RlZmluZSBERUZJTkVfQU5JTUFUSU9OX0lOSVRJQUwoUHJvcGVy
dHksIHByb3AsIFByb3ApIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5KSBcCit7IFwKKyAgICBB
bmltYXRpb25MaXN0KiBsaXN0ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2Vzc0FuaW1hdGlvbnMo
KTsgXAorICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKKyAgICAgICAgbGlzdC0+YXBwZW5kKEFu
aW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgbGlzdC0+YW5pbWF0aW9uKDApLT5zZXQjI1Byb3Ao
QW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uIyNQcm9wKCkpOyBcCisgICAgZm9yIChzaXplX3Qg
aSA9IDE7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAorICAgICAgICBsaXN0LT5hbmltYXRpb24o
MCktPmNsZWFyIyNQcm9wKCk7IFwKK30KKworI2RlZmluZSBERUZJTkVfQU5JTUFUSU9OX1ZBTFVF
KFByb3BlcnR5LCBwcm9wLCBQcm9wKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAor
ICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBpbnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzQW5pbWF0
aW9ucygpOyBcCisgICAgc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBcCisgICAgaWYgKHZhbHVlLT5p
c1ZhbHVlTGlzdCgpKSB7IFwKKyAgICAgICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQg
aW50byBhbiBhbmltYXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFzIG5lZWRlZC4gKi8g
XAorICAgICAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVl
TGlzdCo+KHZhbHVlKTsgXAorICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZh
bHVlTGlzdC0+bGVuZ3RoKCk7IGkrKykgeyBcCisgICAgICAgICAgICBpZiAoY2hpbGRJbmRleCA8
PSBsaXN0LT5zaXplKCkpIFwKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9u
OjpjcmVhdGUoKSk7IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tYXBBbmltYXRpb24jI1Byb3Ao
bGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soaSkpOyBcCisgICAgICAgICAgICArK2NoaWxkSW5kZXg7IFwKKyAgICAgICAgfSBcCisg
ICAgfSBlbHNlIHsgXAorICAgICAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCisgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICAgICAgaW5zdGFuY2Ut
Pm1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVlKTsg
XAorICAgICAgICBjaGlsZEluZGV4ID0gMTsgXAorICAgIH0gXAorICAgIGZvciAoIDsgY2hpbGRJ
bmRleCA8IGxpc3QtPnNpemUoKTsgKytjaGlsZEluZGV4KSB7IFwKKyAgICAgICAgLyogUmVzZXQg
YWxsIHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICov
IFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLT5jbGVhciMjUHJvcCgpOyBc
CisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX1RSQU5TSVRJT05fSU5IRVJJVChQcm9wZXJ0
eSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIFwKK3sgXAorICAgIEFu
aW1hdGlvbkxpc3QqIGxpc3QgPSBpbnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMo
KTsgXAorICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudExpc3QgPSBpbnN0YW5jZS0+bV9w
YXJlbnRTdHlsZS0+dHJhbnNpdGlvbnMoKTsgXAorICAgIHNpemVfdCBpID0gMCwgcGFyZW50U2l6
ZSA9IHBhcmVudExpc3QgPyBwYXJlbnRMaXN0LT5zaXplKCkgOiAwOyBcCisgICAgZm9yICggOyBp
IDwgcGFyZW50U2l6ZSAmJiBwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPmlzIyNQcm9wIyNTZXQo
KTsgKytpKSB7IFwKKyAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBpKSBcCisgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICAgICAgbGlzdC0+YW5p
bWF0aW9uKGkpLT5zZXQjI1Byb3AocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5wcm9wKCkpOyBc
CisgICAgfSBcCisgICAgXAorICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgdHJhbnNpdGlvbnMg
dG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorICAgIGZvciAoIDsgaSA8IGxpc3Qt
PnNpemUoKTsgKytpKSBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+Y2xlYXIjI1Byb3Ao
KTsgXAorfQorCisjZGVmaW5lIERFRklORV9UUkFOU0lUSU9OX0lOSVRJQUwoUHJvcGVydHksIHBy
b3AsIFByb3ApIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5KSBcCit7IFwKKyAgICBBbmltYXRp
b25MaXN0KiBsaXN0ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2Vzc1RyYW5zaXRpb25zKCk7IFwK
KyAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCisgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRp
b246OmNyZWF0ZSgpKTsgXAorICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+c2V0IyNQcm9wKEFuaW1h
dGlvbjo6aW5pdGlhbEFuaW1hdGlvbiMjUHJvcCgpKTsgXAorICAgIGZvciAoc2l6ZV90IGkgPSAx
OyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKDApLT5j
bGVhciMjUHJvcCgpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX1RSQU5TSVRJT05fVkFMVUUoUHJv
cGVydHksIHByb3AsIFByb3ApIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAg
QW5pbWF0aW9uTGlzdCogbGlzdCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9u
cygpOyBcCisgICAgc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBcCisgICAgaWYgKHZhbHVlLT5pc1Zh
bHVlTGlzdCgpKSB7IFwKKyAgICAgICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50
byBhIHRyYW5zaXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFzIG5lZWRlZC4gKi8gXAor
ICAgICAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlz
dCo+KHZhbHVlKTsgXAorICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhbHVl
TGlzdC0+bGVuZ3RoKCk7IGkrKykgeyBcCisgICAgICAgICAgICBpZiAoY2hpbGRJbmRleCA8PSBs
aXN0LT5zaXplKCkpIFwKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpj
cmVhdGUoKSk7IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tYXBBbmltYXRpb24jI1Byb3AobGlz
dC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSkpOyBcCisgICAgICAgICAgICArK2NoaWxkSW5kZXg7IFwKKyAgICAgICAgfSBcCisgICAg
fSBlbHNlIHsgXAorICAgICAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCisgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICAgICAgaW5zdGFuY2UtPm1h
cEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVlKTsgXAor
ICAgICAgICBjaGlsZEluZGV4ID0gMTsgXAorICAgIH0gXAorICAgIGZvciAoIDsgY2hpbGRJbmRl
eCA8IGxpc3QtPnNpemUoKTsgKytjaGlsZEluZGV4KSB7IFwKKyAgICAgICAgLyogUmVzZXQgYWxs
IHJlbWFpbmluZyB0cmFuc2l0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBc
CisgICAgICAgIGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KS0+Y2xlYXIjI1Byb3AoKTsgXAor
ICAgIH0gXAorfQorCisvLyBDU1NQcm9wZXJ0eUludmFsaWQKK0RFRklORV9OVUxMX0lOSEVSSVQo
Q1NTUHJvcGVydHlJbnZhbGlkKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eUludmFs
aWQpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUludmFsaWQpCisKKy8vIENTU1Byb3Bl
cnR5Q29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUNvbG9yLCBzZXRDb2xv
ciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlDb2xvciwgc2V0Q29s
b3IsIGluaXRpYWxDb2xvcikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUNvbG9yKQoreworICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAg
IGlmIChwLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKQorICAgICAgICAgICAg
Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5Q29sb3IoaW5zdGFuY2Up
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29sb3Io
aW5zdGFuY2UtPmdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHApKTsKKyAgICB9Cit9CisKKy8v
IENTU1Byb3BlcnR5RGlyZWN0aW9uCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlE
aXJlY3Rpb24sIHNldERpcmVjdGlvbiwgZGlyZWN0aW9uKQorREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBzZXREaXJlY3Rpb24sIGluaXRpYWxEaXJlY3Rpb24pCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pCit7CisgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldERpcmVjdGlvbigqcCk7CisgICAgfQorICAgIGlmIChpbnN0YW5jZS0+bV9lbGVtZW50
ICYmIGluc3RhbmNlLT5tX2VsZW1lbnQgPT0gaW5zdGFuY2UtPm1fZWxlbWVudC0+ZG9jdW1lbnQo
KS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgIGluc3RhbmNlLT5tX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPnNldERpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOworfQorCisvLyBD
U1NQcm9wZXJ0eURpc3BsYXkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eURpc3Bs
YXksIHNldERpc3BsYXksIGRpc3BsYXkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlEaXNwbGF5LCBzZXREaXNwbGF5LCBpbml0aWFsRGlzcGxheSkKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eURpc3BsYXkpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyNpZiBFTkFCTEUoV0NTUykKKyAgICAgICAgaWYgKHAtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVXYXBNYXJxdWVlKSB7CisgICAgICAgICAgICAvLyBJbml0aWFsaXplIFdB
UCBNYXJxdWVlIHN0eWxlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3ZlcmZs
b3dYKE9NQVJRVUVFKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPdmVyZmxv
d1koT01BUlFVRUUpOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFdoaXRlU3Bh
Y2UoTk9XUkFQKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlRGly
ZWN0aW9uKE1MRUZUKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVl
U3BlZWQoODUpOyAvLyBOb3JtYWwgc3BlZWQKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRNYXJxdWVlTG9vcENvdW50KDEpOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldE1hcnF1ZWVCZWhhdmlvcihNU0NST0xMKTsKKworICAgICAgICAgICAgaWYgKGluc3RhbmNl
LT5tX3BhcmVudFN0eWxlKSB7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dERpc3BsYXkoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmRpc3BsYXkoKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZW5kaWYKKyAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldERpc3BsYXkoKnApOworICAgIH0KK30KKworLy8gQ1NTUHJv
cGVydHlGb250CitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnQpCit7CisgICAgRm9udERl
c2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250
RGVzY3JpcHRpb24oKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGluZUhlaWdodChpbnN0
YW5jZS0+bV9wYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpKTsKKyAgICBpbnN0YW5jZS0+bV9saW5l
SGVpZ2h0VmFsdWUgPSAwOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2Ny
aXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9
IHRydWU7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUZvbnQpCit7CisgICAgU2V0dGlu
Z3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygp
OworICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRp
b24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhh
dmUgc2V0dGluZ3MKKyAgICBpZiAoIXNldHRpbmdzKQorICAgICAgICByZXR1cm47CisgICAgRm9u
dERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0R2Vu
ZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlN0YW5kYXJkRmFtaWx5KTsKKyAgICBmb250RGVz
Y3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9udFJlbmRlcmluZ01vZGUoKSk7
CisgICAgZm9udERlc2NyaXB0aW9uLnNldFVzZVByaW50ZXJGb250KGluc3RhbmNlLT5tX2NoZWNr
ZXIubV9kb2N1bWVudC0+cHJpbnRpbmcoKSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGFu
ZGFyZEZvbnRGYW1pbHkgPSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdz
KCktPnN0YW5kYXJkRm9udEZhbWlseSgpOworICAgIGlmICghc3RhbmRhcmRGb250RmFtaWx5Lmlz
RW1wdHkoKSkgeworICAgICAgICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5zZXRGYW1p
bHkoc3RhbmRhcmRGb250RmFtaWx5KTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFt
aWx5KCkuYXBwZW5kRmFtaWx5KDApOworICAgIH0KKyAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5
d29yZFNpemUoQ1NTVmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKKyAgICBpbnN0
YW5jZS0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdvcmQoaW5z
dGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZU1lZGl1bSwgZmFsc2UpKTsKKyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExp
bmVIZWlnaHQoKSk7CisgICAgaW5zdGFuY2UtPm1fbGluZUhlaWdodFZhbHVlID0gMDsKKyAgICBp
ZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24p
KQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5Rm9udCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgICAgICBib29sIHVzZVNWR1pvb21S
dWxlcyA9IGluc3RhbmNlLT5tX2VsZW1lbnQgJiYgaW5zdGFuY2UtPm1fZWxlbWVudC0+aXNTVkdF
bGVtZW50KCk7CisKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldExpbmVIZWlnaHQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOworICAgICAgICBpbnN0YW5jZS0+bV9saW5l
SGVpZ2h0VmFsdWUgPSAwOworCisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b247CisgICAgICAgIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtRm9udChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsKKworICAgICAgICAvLyBE
b3VibGUtY2hlY2sgYW5kIHNlZSBpZiB0aGUgdGhlbWUgZGlkIGFueXRoaW5nLiAgSWYgbm90LCBk
b24ndCBib3RoZXIgdXBkYXRpbmcgdGhlIGZvbnQuCisgICAgICAgIGlmIChmb250RGVzY3JpcHRp
b24uaXNBYnNvbHV0ZVNpemUoKSkgeworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSByZW5k
ZXJpbmcgbW9kZSBhbmQgcHJpbnRlciBmb250IHNldHRpbmdzIGFyZSB1cGRhdGVkLgorICAgICAg
ICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50
LT5zZXR0aW5ncygpOworICAgICAgICAgICAgQVNTRVJUKHNldHRpbmdzKTsgLy8gSWYgd2UncmUg
ZG9pbmcgc3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBkb2N1bWVudCBzaG91bGQgYWx3YXlzIGJlIGlu
IGEgZnJhbWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5ncworICAgICAgICAgICAgaWYgKCFzZXR0aW5n
cykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9udFJlbmRlcmluZ01vZGUoKSk7CisgICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0VXNlUHJpbnRlckZvbnQoaW5zdGFuY2UtPm1fY2hlY2tl
ci5tX2RvY3VtZW50LT5wcmludGluZygpKTsKKworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSB6
b29tIGZhY3Rvci4KKyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUo
Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoaW5zdGFuY2UtPm1fY2hlY2tlci5tX2Rv
Y3VtZW50LCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1
dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVzZVNWR1pvb21SdWxl
cykpOworICAgICAgICAgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRp
b24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9mb250RGly
dHkgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNGb250VmFsdWUo
KSkgeworICAgICAgICBGb250VmFsdWUqIGZvbnQgPSBzdGF0aWNfY2FzdDxGb250VmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIGlmICghZm9udC0+c3R5bGUgfHwgIWZvbnQtPnZhcmlhbnQgfHwgIWZv
bnQtPndlaWdodCB8fCAhZm9udC0+c2l6ZSB8fCAhZm9udC0+bGluZUhlaWdodCB8fCAhZm9udC0+
ZmFtaWx5KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBDU1NTdHlsZVNlbGVjdG9yOjpo
YW5kbGVWYWx1ZUNTU1Byb3BlcnR5Rm9udFN0eWxlKGluc3RhbmNlLCBmb250LT5zdHlsZS5nZXQo
KSk7CisgICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlQ1NTUHJvcGVydHlGb250
VmFyaWFudChpbnN0YW5jZSwgZm9udC0+dmFyaWFudC5nZXQoKSk7CisgICAgICAgIENTU1N0eWxl
U2VsZWN0b3I6OmhhbmRsZVZhbHVlQ1NTUHJvcGVydHlGb250V2VpZ2h0KGluc3RhbmNlLCBmb250
LT53ZWlnaHQuZ2V0KCkpOworICAgICAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVWYWx1ZUNT
U1Byb3BlcnR5Rm9udFNpemUoaW5zdGFuY2UsIGZvbnQtPnNpemUuZ2V0KCkpOworCisgICAgICAg
IGluc3RhbmNlLT5tX2xpbmVIZWlnaHRWYWx1ZSA9IGZvbnQtPmxpbmVIZWlnaHQuZ2V0KCk7CisK
KyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWVDU1NQcm9wZXJ0eUZvbnRGYW1p
bHkoaW5zdGFuY2UsIGZvbnQtPmZhbWlseS5nZXQoKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHkKKy8vIGxpc3Qgb2Ygc3RyaW5ncyBhbmQgaWRzCitERUZJTkVfSU5IRVJJ
VChDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpCit7CisgICAgRm9udERlc2NyaXB0aW9uIHBhcmVudEZv
bnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24o
KTsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFt
aWx5KHBhcmVudEZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRGYW1pbHkocGFyZW50Rm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkpOwor
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc1NwZWNpZmllZEZvbnQocGFyZW50Rm9udERlc2NyaXB0
aW9uLmlzU3BlY2lmaWVkRm9udCgpKTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250
RGlydHkgPSB0cnVlOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlGb250RmFtaWx5KQor
eworICAgIEZvbnREZXNjcmlwdGlvbiBpbml0aWFsRGVzYyA9IEZvbnREZXNjcmlwdGlvbigpOwor
ICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCk7CisgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgdGhlIHNpemUgdG8g
YWNjb3VudCBmb3IgdGhlIGdlbmVyaWMgZmFtaWx5IGNoYW5nZSBmcm9tIG1vbm9zcGFjZQorICAg
IC8vIHRvIG5vbi1tb25vc3BhY2UuCisgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6
ZSgpICYmIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpCisgICAgICAgIGlu
c3RhbmNlLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRTaXplRm9yS2V5d29yZChp
bnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlWHhTbWFsbCArIGZvbnREZXNj
cmlwdGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwgZmFsc2UpKTsKKyAgICBmb250RGVzY3JpcHRpb24u
c2V0R2VuZXJpY0ZhbWlseShpbml0aWFsRGVzYy5nZW5lcmljRmFtaWx5KCkpOworICAgIGlmICgh
aW5pdGlhbERlc2MuZmlyc3RGYW1pbHkoKS5mYW1pbHlJc0VtcHR5KCkpCisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRGYW1pbHkoaW5pdGlhbERlc2MuZmlyc3RGYW1pbHkoKSk7CisgICAgaWYg
KGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkK
KyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxVRShD
U1NQcm9wZXJ0eUZvbnRGYW1pbHkpCit7CisgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBp
bnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgQ1NTVmFsdWVMaXN0KiBs
aXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgIGludCBsZW4gPSBs
aXN0LT5sZW5ndGgoKTsKKyAgICBGb250RmFtaWx5JiBmaXJzdEZhbWlseSA9IGZvbnREZXNjcmlw
dGlvbi5maXJzdEZhbWlseSgpOworICAgIEZvbnRGYW1pbHkqIGN1cnJGYW1pbHkgPSAwOworCisg
ICAgLy8gQmVmb3JlIG1hcHBpbmcgaW4gYSBuZXcgZm9udC1mYW1pbHkgcHJvcGVydHksIHdlIHNo
b3VsZCByZXNldCB0aGUgZ2VuZXJpYyBmYW1pbHkuCisgICAgYm9vbCBvbGRGYW1pbHlVc2VkRml4
ZWREZWZhdWx0U2l6ZSA9IGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpOb0Zh
bWlseSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIENT
U1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKKyAgICAgICAg
aWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgIEF0b21pY1N0cmluZyBmYWNlOworICAgICAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNl
dHRpbmdzKCk7CisgICAgICAgIGlmIChjb250ZW50VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykgeworICAgICAgICAgICAgaWYgKGNvbnRlbnRW
YWx1ZS0+aXNGb250RmFtaWx5VmFsdWUoKSkKKyAgICAgICAgICAgICAgICBmYWNlID0gc3RhdGlj
X2Nhc3Q8Rm9udEZhbWlseVZhbHVlKj4oY29udGVudFZhbHVlKS0+ZmFtaWx5TmFtZSgpOworICAg
ICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSURFTlQgJiYgc2V0dGluZ3MpIHsKKyAgICAgICAgICAgIHN3aXRjaCAo
Y29udGVudFZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Vi
a2l0Qm9keToKKyAgICAgICAgICAgICAgICBmYWNlID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZh
bWlseSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVNlcmlmOgorICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1zZXJpZiI7CisgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9u
OjpTZXJpZkZhbWlseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlU2Fuc1NlcmlmOgorICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1zYW5z
LXNlcmlmIjsKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWls
eShGb250RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ3Vyc2l2ZToKKyAgICAgICAgICAgICAgICBm
YWNlID0gIi13ZWJraXQtY3Vyc2l2ZSI7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpDdXJzaXZlRmFtaWx5KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVGYW50YXN5OgorICAg
ICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1mYW50YXN5IjsKKyAgICAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OkZhbnRhc3lG
YW1pbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZU1vbm9zcGFjZToKKyAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtbW9ub3NwYWNlIjsK
KyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVz
Y3JpcHRpb246Ok1vbm9zcGFjZUZhbWlseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZhY2UuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBpZiAoIWN1cnJGYW1pbHkpIHsKKyAgICAgICAgICAgICAgICAvLyBGaWxsaW5n
IGluIHRoZSBmaXJzdCBmYW1pbHkuCisgICAgICAgICAgICAgICAgZmlyc3RGYW1pbHkuc2V0RmFt
aWx5KGZhY2UpOworICAgICAgICAgICAgICAgIGZpcnN0RmFtaWx5LmFwcGVuZEZhbWlseSgwKTsg
Ly8gUmVtb3ZlIGFueSBpbmhlcml0ZWQgZmFtaWx5LWZhbGxiYWNrIGxpc3QuCisgICAgICAgICAg
ICAgICAgY3VyckZhbWlseSA9ICZmaXJzdEZhbWlseTsKKyAgICAgICAgICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0SXNTcGVjaWZpZWRGb250KGZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5
KCkgPT0gRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdGYW1pbHkgPSBTaGFy
ZWRGb250RmFtaWx5OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBuZXdGYW1pbHktPnNldEZh
bWlseShmYWNlKTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3
RmFtaWx5KTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0gbmV3RmFtaWx5LmdldCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gV2UgY2FuJ3QgY2FsbCB1
c2VGaXhlZERlZmF1bHRTaXplKCkgdW50aWwgYWxsIG5ldyBmb250IGZhbWlsaWVzIGhhdmUgYmVl
biBhZGRlZAorICAgIC8vIElmIGN1cnJGYW1pbHkgaXMgbm9uLXplcm8gdGhlbiB3ZSBzZXQgYXQg
bGVhc3Qgb25lIGZhbWlseSBvbiB0aGlzIGRlc2NyaXB0aW9uLgorICAgIGlmIChjdXJyRmFtaWx5
KSB7CisgICAgICAgIGlmIChmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBmb250RGVz
Y3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpICE9IG9sZEZhbWlseVVzZWRGaXhlZERlZmF1
bHRTaXplKQorICAgICAgICAgICAgaW5zdGFuY2UtPnNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlv
biwgZm9udFNpemVGb3JLZXl3b3JkKGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudCwgQ1NT
VmFsdWVYeFNtYWxsICsgZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXplKCkgLSAxLCAhb2xkRmFt
aWx5VXNlZEZpeGVkRGVmYXVsdFNpemUpKTsKKworICAgICAgICBpZiAoaW5zdGFuY2UtPm1fc3R5
bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICAgICAgaW5z
dGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuOworfQorCisvLyBD
U1NQcm9wZXJ0eUZvbnRTaXplCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRTaXplKQor
eworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXpl
KDApOworICAgIGZsb2F0IHNpemUgPSAwOworCisgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudE5v
ZGUpIHsKKyAgICAgICAgc2l6ZSA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3Jp
cHRpb24oKS5zcGVjaWZpZWRTaXplKCk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3
b3JkU2l6ZShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkua2V5d29y
ZFNpemUoKSk7CisgICAgfQorCisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm47CisK
KyAgICBpbnN0YW5jZS0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKKyAgICBp
ZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24p
KQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworICAgIHJldHVybjsKK30K
K0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udFNpemUpCit7CisgICAgRm9udERlc2NyaXB0
aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24o
KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoMCk7CisgICAgZmxvYXQgc2l6
ZSA9IDA7CisKKyAgICBzaXplID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Zm9udFNpemVGb3JLZXl3b3Jk
KGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudCwgQ1NTVmFsdWVNZWRpdW0sIGZvbnREZXNj
cmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRL
ZXl3b3JkU2l6ZShDU1NWYWx1ZU1lZGl1bSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOworCisgICAg
aWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnN0YW5jZS0+c2V0Rm9udFNp
emUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9m
b250RGlydHkgPSB0cnVlOworICAgIHJldHVybjsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eUZvbnRTaXplKQoreworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisKKyAgICBGb250RGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
OworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsKKyAgICBmbG9hdCBvbGRT
aXplID0gMDsKKyAgICBmbG9hdCBzaXplID0gMDsKKworICAgIGJvb2wgcGFyZW50SXNBYnNvbHV0
ZVNpemUgPSBmYWxzZTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50Tm9kZSkgeworICAgICAg
ICBvbGRTaXplID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNw
ZWNpZmllZFNpemUoKTsKKyAgICAgICAgcGFyZW50SXNBYnNvbHV0ZVNpemUgPSBpbnN0YW5jZS0+
bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXNBYnNvbHV0ZVNpemUoKTsKKyAgICB9
CisKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgLy8gS2V5
d29yZHMgYXJlIGJlaW5nIHVzZWQuCisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVh4U21hbGw6CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVYU21hbGw6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFsbDoKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZU1lZGl1bToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlOgorICAgICAgICBj
YXNlIENTU1ZhbHVlWExhcmdlOgorICAgICAgICBjYXNlIENTU1ZhbHVlWHhMYXJnZToKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFh4eExhcmdlOgorICAgICAgICAgICAgc2l6ZSA9IGZvbnRT
aXplRm9yS2V5d29yZChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQsIHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpKTsK
KyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZXI6CisgICAgICAgICAgICBzaXplID0gaW5zdGFu
Y2UtPmxhcmdlckZvbnRTaXplKG9sZFNpemUsIGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVu
dC0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NT
VmFsdWVTbWFsbGVyOgorICAgICAgICAgICAgc2l6ZSA9IGluc3RhbmNlLT5zbWFsbGVyRm9udFNp
emUob2xkU2l6ZSwgaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5pblF1aXJrc01vZGUo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRl
U2l6ZShwYXJlbnRJc0Fic29sdXRlU2l6ZSAmJiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVMYXJnZXIgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVTbWFsbGVyKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVW
YWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNv
bHV0ZVNpemUocGFyZW50SXNBYnNvbHV0ZVNpemUgfHwgKHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFICYmIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMg
JiYgdHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUyAmJiB0eXBlICE9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUkVNUykpOworICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6Omlz
VW5pdFR5cGVMZW5ndGgodHlwZSkpCisgICAgICAgICAgICBzaXplID0gcHJpbWl0aXZlVmFsdWUt
PmNvbXB1dGVMZW5ndGhGbG9hdChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZSwgaW5zdGFuY2UtPm1f
cm9vdEVsZW1lbnRTdHlsZSwgdHJ1ZSk7CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgc2l6ZSA9IChwcmltaXRp
dmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpICogb2xkU2l6ZSkgLyAxMDAuMGY7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA8IDApCisgICAg
ICAgIHJldHVybjsKKworICAgIGluc3RhbmNlLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24s
IHNpemUpOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9
CisKKworLy8gQ1NTUHJvcGVydHlGb250U3R5bGUKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5
Rm9udFN0eWxlKQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0
YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNl
dEl0YWxpYyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGlj
KCkpOworCisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9u
dERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30K
K0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udFN0eWxlKQoreworICAgIEZvbnREZXNjcmlw
dGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhmYWxzZSk7CisKKyAgICBpZiAoaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAg
ICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVGSU5FX1ZBTFVFKENTU1By
b3BlcnR5Rm9udFN0eWxlKQoreworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERl
c2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIHN3
aXRjaCAocC0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVPYmxpcXVlOgorICAgIC8v
IEZJWE1FOiBvYmxpcXVlIGlzIHRoZSBzYW1lIGFzIGl0YWxpYyBmb3IgdGhlIG1vbWVudC4uLgor
ICAgIGNhc2UgQ1NTVmFsdWVJdGFsaWM6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFs
aWModHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CisgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3Rh
bmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQK
K0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpCit7CisgICAgRm9udERlc2Ny
aXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRp
b24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBzKGluc3RhbmNlLT5tX3BhcmVu
dFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSk7CisKKyAgICBpZiAoaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAg
ICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJv
cGVydHlGb250VmFyaWFudCkKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRTbWFsbENhcHMoZmFsc2UpOworCisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1f
Zm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50
KQoreworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5z
dGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGludCBpZCA9IHAtPmdldElk
ZW50KCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0U21hbGxDYXBzKGZhbHNlKTsKKyAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVNt
YWxsQ2FwcykKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2Fwcyh0cnVlKTsKKyAg
ICBlbHNlCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2Zv
bnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENTU1Byb3BlcnR5Rm9udFdlaWdodAorREVGSU5FX0lO
SEVSSVQoQ1NTUHJvcGVydHlGb250V2VpZ2h0KQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldFdlaWdodChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkud2VpZ2h0KCkpOworCisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9u
dERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udFdlaWdodCkK
K3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFdlaWdodE5vcm1hbCk7CisKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkg
PSB0cnVlOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Rm9udFdlaWdodCkKK3sKKyAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0
eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKworICAgIHN3aXRjaCAocC0+Z2V0SWRlbnQoKSkgewor
ICAgIGNhc2UgMDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBDU1NW
YWx1ZUJvbGRlcjoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChmb250RGVzY3Jp
cHRpb24uYm9sZGVyV2VpZ2h0KCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVl
TGlnaHRlcjoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChmb250RGVzY3JpcHRp
b24ubGlnaHRlcldlaWdodCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUJv
bGQ6CisgICAgY2FzZSBDU1NWYWx1ZTcwMDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChGb250V2VpZ2h0Qm9sZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVO
b3JtYWw6CisgICAgY2FzZSBDU1NWYWx1ZTQwMDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dFdlaWdodChGb250V2VpZ2h0Tm9ybWFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NW
YWx1ZTkwMDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0OTAw
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZTgwMDoKKyAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0ODAwKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NWYWx1ZTYwMDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250
V2VpZ2h0NjAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZTUwMDoKKyAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0NTAwKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NWYWx1ZTMwMDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChGb250V2VpZ2h0MzAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZTIw
MDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0MjAwKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZTEwMDoKKyAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldFdlaWdodChGb250V2VpZ2h0MTAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5t
X2ZvbnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZworREVG
SU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nKQoreworICAgIEZvbnREZXNjcmlw
dGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFRleHRSZW5kZXJpbmdNb2RlKGluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS50ZXh0UmVuZGVyaW5nTW9kZSgpKTsKKyAg
ICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRp
b24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVGSU5FX0lO
SVRJQUwoQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nKQoreworICAgIEZvbnREZXNjcmlwdGlvbiBm
b250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldFRleHRSZW5kZXJpbmdNb2RlKEF1dG9UZXh0UmVuZGVyaW5n
KTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZykKK3sKKyAgICBpZiAodmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAg
Rm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250
RGVzY3JpcHRpb24oKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFRleHRSZW5kZXJpbmdN
b2RlKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9mb250RGlydHkgPSB0cnVlOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRGb250
U21vb3RoaW5nCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcp
Cit7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0
eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0Rm9udFNtb290
aGluZyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290
aGluZygpKTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihm
b250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOwor
fQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKQoreworICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoQXV0
b1Ntb290aGluZyk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRp
b24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1
ZTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcpCit7Cisg
ICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+
bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisKKyAgICBGb250U21vb3RoaW5nTW9kZSBzbW9v
dGhpbmc7CisgICAgc3dpdGNoIChwLT5nZXRJZGVudCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZUF1
dG86CisgICAgICAgIHNtb290aGluZyA9IEF1dG9TbW9vdGhpbmc7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICBzbW9vdGhpbmcgPSBOb1Ntb290aGluZzsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUFudGlhbGlhc2VkOgorICAgICAgICBz
bW9vdGhpbmcgPSBBbnRpYWxpYXNlZDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1
ZVN1YnBpeGVsQW50aWFsaWFzZWQ6CisgICAgICAgIHNtb290aGluZyA9IFN1YnBpeGVsQW50aWFs
aWFzZWQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBzbW9vdGhpbmcgPSBBdXRvU21vb3RoaW5nOworICAgIH0KKyAg
ICBmb250RGVzY3JpcHRpb24uc2V0Rm9udFNtb290aGluZyhzbW9vdGhpbmcpOworCisgICAgaWYg
KGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkK
KyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U2l6ZUFkanVzdAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0VGV4dFNpemVBZGp1c3QsIHNldFRleHRTaXplQWRqdXN0LCB0ZXh0U2l6ZUFkanVzdCkK
K0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0LCBz
ZXRUZXh0U2l6ZUFkanVzdCwgaW5pdGlhbFRleHRTaXplQWRqdXN0KQorREVGSU5FX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldFRleHRTaXplQWRqdXN0KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlQXV0byk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlCisvLyBD
U1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAor
REVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGUsIHNldFdy
aXRpbmdNb2RlLCB3cml0aW5nTW9kZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdFdyaXRpbmdNb2RlLCBzZXRXcml0aW5nTW9kZSwgaW5pdGlhbFdyaXRpbmdNb2RlKQor
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGUpCit7CisgICAgaWYgKHZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRXcml0aW5nTW9kZSgqcHJpbWl0aXZlVmFsdWUp
OworICAgIH0KKyAgICBpZiAoaW5zdGFuY2UtPm1fZWxlbWVudCAmJiBpbnN0YW5jZS0+bV9lbGVt
ZW50ID09IGluc3RhbmNlLT5tX2VsZW1lbnQtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgp
KQorICAgICAgICBpbnN0YW5jZS0+bV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXRXcml0aW5nTW9k
ZVNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9u
dERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGluc3RhbmNlLT5tX3N0eWxlLT5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbCA6IFZlcnRpY2FsKTsKKyAgICBpZiAoaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAg
ICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorCisvLyBDU1NQcm9wZXJ0eVpvb20K
K0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Wm9vbSkKK3sKKyAgICAvLyBSZXNldCB0aGUgem9v
bSBpbiBlZmZlY3QgYmVmb3JlIHdlIGRvIGFueXRoaW5nLiBUaGlzIGFsbG93cyB0aGUgc2V0Wm9v
bSBtZXRob2QgdG8gYWNjdXJhdGVseSBjb21wdXRlIGEgbmV3IHpvb20gaW4gZWZmZWN0LgorICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRFZmZlY3RpdmVab29tKGluc3RhbmNlLT5tX3BhcmVudFN0
eWxlID8gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA6IFJlbmRlclN0
eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShpbnN0
YW5jZS0+bV9wYXJlbnRTdHlsZS0+em9vbSgpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3Bl
cnR5Wm9vbSkKK3sKKyAgICAvLyBSZXNldCB0aGUgem9vbSBpbiBlZmZlY3QgYmVmb3JlIHdlIGRv
IGFueXRoaW5nLiBUaGlzIGFsbG93cyB0aGUgc2V0Wm9vbSBtZXRob2QgdG8gYWNjdXJhdGVseSBj
b21wdXRlIGEgbmV3IHpvb20gaW4gZWZmZWN0LgorICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRF
ZmZlY3RpdmVab29tKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlID8gaW5zdGFuY2UtPm1fcGFyZW50
U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA6IFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7
Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlab29tKQoreworICAgIC8vIFJlc2V0IHRoZSB6
b29tIGluIGVmZmVjdCBiZWZvcmUgd2UgZG8gYW55dGhpbmcuIFRoaXMgYWxsb3dzIHRoZSBzZXRa
b29tIG1ldGhvZCB0byBhY2N1cmF0ZWx5IGNvbXB1dGUgYSBuZXcgem9vbSBpbiBlZmZlY3QuCisg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oaW5zdGFuY2UtPm1fcGFyZW50
U3R5bGUgPyBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+ZWZmZWN0aXZlWm9vbSgpIDogUmVuZGVy
U3R5bGU6OmluaXRpYWxab29tKCkpOworCisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisKKyAg
ICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CisgICAg
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVSZXNldCkgewor
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RWZmZWN0aXZlWm9vbShSZW5kZXJTdHlsZTo6
aW5pdGlhbFpvb20oKSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRab29tKFJlbmRl
clN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlRG9jdW1lbnQpIHsKKyAgICAgICAgZmxvYXQgZG9jWm9vbSA9
IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+em9v
bSgpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RWZmZWN0aXZlWm9vbShkb2Nab29t
KTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFpvb20oZG9jWm9vbSk7CisgICAgfSBl
bHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgeworICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRab29tKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkg
LyAxMDAuMGYpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikgeworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRab29tKHByaW1pdGl2ZVZhbHVlLT5n
ZXRGbG9hdFZhbHVlKCkpOworICAgIH0KKworICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRy
dWU7Cit9CisKKy8vIENTU1Byb3BlcnR5TGluZUhlaWdodAorREVGSU5FX0hBTkRMRV9JTkhFUklU
KENTU1Byb3BlcnR5TGluZUhlaWdodCwgc2V0TGluZUhlaWdodCwgbGluZUhlaWdodCkKK0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIHNldExpbmVIZWlnaHQsIGlu
aXRpYWxMaW5lSGVpZ2h0KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5TGluZUhlaWdodCkKK3sK
KyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKworICAgICAgICBMZW5ndGggbGluZUhlaWdodDsKKyAgICAgICAgaW50IHR5cGUg
PSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgICAgICBsaW5lSGVp
Z2h0ID0gTGVuZ3RoKC0xMDAuMCwgUGVyY2VudCk7CisgICAgICAgIGVsc2UgaWYgKENTU1ByaW1p
dGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7CisgICAgICAgICAgICBkb3VibGUg
bXVsdGlwbGllciA9IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7CisgICAgICAg
ICAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnRleHRTaXplQWRqdXN0KCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50
LT5mcmFtZSgpKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9IGZyYW1lLT50ZXh0
Wm9vbUZhY3RvcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGluZUhlaWdodCA9IExl
bmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+
bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgIG11bHRpcGxpZXIp
LCBGaXhlZCk7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKChpbnN0YW5j
ZS0+bV9zdHlsZS0+Zm9udFNpemUoKSAqIHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKSAv
IDEwMCwgRml4ZWQpOworICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aChwcmltaXRpdmVW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSAqIDEwMC4wLCBQZXJjZW50KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGluZUhl
aWdodChsaW5lSGVpZ2h0KTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZAor
REVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kKQoreworICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5jbGVhckJhY2tncm91bmRMYXllcnMoKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKCkpOworfQorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5pbmhlcml0QmFja2dyb3Vu
ZExheWVycygqaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSk7Cisg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJhY2tncm91bmRDb2xvcihpbnN0YW5jZS0+bV9wYXJl
bnRTdHlsZS0+YmFja2dyb3VuZENvbG9yKCkpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50CitE
RUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRh
Y2htZW50LCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBhdHRhY2htZW50LCBBdHRhY2htZW50KQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0
YWNobWVudCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgYXR0YWNobWVudCwgQXR0YWNobWVudCkK
K0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRh
Y2htZW50LCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBhdHRhY2htZW50LCBBdHRhY2htZW50KQor
CisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJf
SU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCBjbGlwLCBDbGlwKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgY2xpcCwgQ2xpcCkKK0RF
RklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBi
YWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBjbGlwLCBDbGlwKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCBzZXRCYWNrZ3JvdW5kQ29sb3IsIGJhY2tncm91bmRDb2xvcikKK0RFRklORV9IQU5ETEVf
SU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgc2V0QmFja2dyb3VuZENv
bG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgc2V0QmFja2dyb3VuZENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1h
Z2UsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGltYWdlLCBJbWFnZSkKK0RFRklORV9IQU5ETEVf
RklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBiYWNrZ3JvdW5k
LCBCYWNrZ3JvdW5kLCBpbWFnZSwgSW1hZ2UpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFM
VUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGlt
YWdlLCBJbWFnZSkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIGJhY2tn
cm91bmQsIEJhY2tncm91bmQsIG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hBTkRMRV9GSUxMX0xB
WUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBiYWNrZ3JvdW5kLCBCYWNr
Z3JvdW5kLCBvcmlnaW4sIE9yaWdpbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShD
U1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIGJhY2tncm91bmQsIEJhY2tncm91bmQsIG9yaWdp
biwgT3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbgorREVGSU5FX0VY
UEFORElOR19JTkhFUklUX1RXTyhDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkp
CitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVFdPKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgKK0RFRklORV9IQU5ETEVf
RklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgeFBvc2l0aW9uLCBYUG9zaXRpb24pCitERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIGJhY2tncm91
bmQsIEJhY2tncm91bmQsIHhQb3NpdGlvbiwgWFBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgYmFja2dyb3VuZCwg
QmFja2dyb3VuZCwgeFBvc2l0aW9uLCBYUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uWQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCB5UG9zaXRpb24s
IFlQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgeVBvc2l0aW9uLCBZ
UG9zaXRpb24pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb25ZLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCB5UG9zaXRpb24sIFlQb3Np
dGlvbikKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0CitERUZJTkVfRVhQQU5ESU5H
X0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSkKK0RFRklORV9FWFBB
TkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZKQorREVGSU5F
X05VTExfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0KQorCisvLyBDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRYCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQ
cm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCByZXBlYXRY
LCBSZXBlYXRYKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0WCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0WCwgUmVwZWF0
WCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRYLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCByZXBlYXRYLCBSZXBlYXRYKQorCisvLyBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5I
RVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCByZXBlYXRZLCBSZXBlYXRZKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0
WSwgUmVwZWF0WSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRZLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCByZXBlYXRZLCBSZXBlYXRZ
KQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplCitERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBiYWNrZ3JvdW5kLCBCYWNrZ3Jv
dW5kLCBzaXplLCBTaXplKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kU2l6ZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgc2l6ZSwgU2l6ZSkK
K0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXpl
LCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBzaXplLCBTaXplKQorCisvLyBDU1NQcm9wZXJ0eUJv
cmRlcgorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5Qm9yZGVyLCBD
U1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0
eUJvcmRlckNvbG9yKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RIUkVFKENTU1Byb3BlcnR5
Qm9yZGVyLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3Jk
ZXIpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tCitERUZJTkVfRVhQQU5ESU5HX0lOSEVS
SVRfVEhSRUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tV2lkdGgpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSkKK3sKKyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRCb3JkZXJCb3R0b20oKTsKK30KK0RFRklORV9OVUxM
X1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbUNvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tQ29sb3IsIHNldEJvcmRlckJvdHRvbUNvbG9yLCBib3JkZXJCb3R0b21Db2xvciwgY29s
b3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21D
b2xvciwgc2V0Qm9yZGVyQm90dG9tQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIHNldEJvcmRlckJvdHRvbUNvbG9yKQorCisvLyBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIHNldEJvcmRlckJvdHRvbUxlZnRSYWRp
dXMsIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBp
bml0aWFsQm9yZGVyUmFkaXVzKQorREVGSU5FX1JBRElVU19WQUxVRShDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMsIHNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpCisKKy8vIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1
cywgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMs
IGluaXRpYWxCb3JkZXJSYWRpdXMpCitERUZJTkVfUkFESVVTX1ZBTFVFKENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMsIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKQorCisvLyBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZSwgc2V0Qm9yZGVyQm90dG9tU3R5bGUsIGJvcmRlckJvdHRv
bVN0eWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGUsIHNldEJvcmRlckJvdHRvbVN0eWxlLCBpbml0aWFsQm9yZGVyU3R5bGUpCitERUZJTkVfSEFO
RExFX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIHNldEJvcmRlckJvdHRvbVN0
eWxlKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgc2V0Qm9yZGVyQm90dG9tV2lkdGgs
IGJvcmRlckJvdHRvbVdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tV2lkdGgsIHNldEJvcmRlckJvdHRvbVdpZHRoLCBpbml0aWFsQm9yZGVyV2lkdGgp
CitERUZJTkVfV0lEVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgc2V0Qm9y
ZGVyQm90dG9tV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlLCBzZXRCb3JkZXJDb2xsYXBz
ZSwgYm9yZGVyQ29sbGFwc2UpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3Jk
ZXJDb2xsYXBzZSwgc2V0Qm9yZGVyQ29sbGFwc2UsIGluaXRpYWxCb3JkZXJDb2xsYXBzZSkKK0RF
RklORV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlKQoreworICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgIGNhc2UgQ1NT
VmFsdWVDb2xsYXBzZToKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3JkZXJD
b2xsYXBzZSh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVl
U2VwYXJhdGU6CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm9yZGVyQ29sbGFw
c2UoZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8v
IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9GT1VSKENT
U1Byb3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3IpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfRk9VUihDU1NQ
cm9wZXJ0eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJD
b2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJMZWZ0CitERUZJTkVfRVhQQU5ESU5HX0lOSEVS
SVRfVEhSRUUoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0LCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
ciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRo
KQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0KQoreworICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5yZXNldEJvcmRlckxlZnQoKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1By
b3BlcnR5Qm9yZGVyTGVmdCkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIHNldEJv
cmRlckxlZnRDb2xvciwgYm9yZGVyTGVmdENvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5J
VElBTF9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgc2V0Qm9yZGVyTGVmdENvbG9y
KQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwg
c2V0Qm9yZGVyTGVmdENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZQorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBzZXRCb3JkZXJM
ZWZ0U3R5bGUsIGJvcmRlckxlZnRTdHlsZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRTdHlsZSwgc2V0Qm9yZGVyTGVmdFN0eWxlLCBpbml0aWFsQm9yZGVyU3R5
bGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBzZXRC
b3JkZXJMZWZ0U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIHNldEJvcmRlckxlZnRX
aWR0aCwgYm9yZGVyTGVmdFdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFdpZHRoLCBzZXRCb3JkZXJMZWZ0V2lkdGgsIGluaXRpYWxCb3JkZXJXaWR0aCkK
K0RFRklORV9XSURUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgc2V0Qm9yZGVy
TGVmdFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cworREVGSU5FX0VYUEFORElO
R19JTkhFUklUX0ZPVVIoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMpCit7CisgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnJlc2V0Qm9yZGVyUmFkaXVzKCk7Cit9CitERUZJTkVfTlVMTF9WQUxV
RShDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJSaWdodAor
REVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldEJvcmRlclJpZ2h0KCk7
Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0KQorCisvLyBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NT
UHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBzZXRCb3JkZXJSaWdodENvbG9yLCBib3JkZXJSaWdo
dENvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3IsIHNldEJvcmRlclJpZ2h0Q29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVF
X0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgc2V0Qm9yZGVyUmlnaHRDb2xvcikK
KworLy8gQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlCitERUZJTkVfSEFORExFX0lOSEVSSVQo
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBzZXRCb3JkZXJSaWdodFN0eWxlLCBib3JkZXJS
aWdodFN0eWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRT
dHlsZSwgc2V0Qm9yZGVyUmlnaHRTdHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorREVGSU5FX0hB
TkRMRV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIHNldEJvcmRlclJpZ2h0U3R5
bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aAorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgc2V0Qm9yZGVyUmlnaHRXaWR0aCwgYm9y
ZGVyUmlnaHRXaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0V2lkdGgsIHNldEJvcmRlclJpZ2h0V2lkdGgsIGluaXRpYWxCb3JkZXJXaWR0aCkKK0RFRklO
RV9XSURUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIHNldEJvcmRlclJpZ2h0
V2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZworREVGSU5FX0VYUEFORElOR19J
TkhFUklUX1RXTyhDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFj
aW5nKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eUJvcmRlclNwYWNp
bmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlCb3JkZXJTcGFjaW5nKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlCitERUZJTkVfRVhQ
QU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlKQorREVGSU5FX0VYUEFO
RElOR19JTklUSUFMX0ZPVVIoQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSkKK0RFRklORV9OVUxMX1ZB
TFVFKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wCitE
RUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlCb3JkZXJUb3AsIENTU1By
b3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGgpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclRvcCkK
K3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRCb3JkZXJUb3AoKTsKK30KK0RFRklORV9O
VUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclRv
cENvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVyVG9w
Q29sb3IsIHNldEJvcmRlclRvcENvbG9yLCBib3JkZXJUb3BDb2xvciwgY29sb3IpCitERUZJTkVf
SEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgc2V0Qm9yZGVy
VG9wQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyVG9w
Q29sb3IsIHNldEJvcmRlclRvcENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRS
YWRpdXMKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXMsIHNldEJvcmRlclRvcExlZnRSYWRpdXMsIGJvcmRlclRvcExlZnRSYWRpdXMpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBzZXRCb3JkZXJU
b3BMZWZ0UmFkaXVzLCBpbml0aWFsQm9yZGVyUmFkaXVzKQorREVGSU5FX1JBRElVU19WQUxVRShD
U1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIHNldEJvcmRlclRvcExlZnRSYWRpdXMpCisK
Ky8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1
cywgYm9yZGVyVG9wUmlnaHRSYWRpdXMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlCb3JkZXJUb3BSaWdodFJhZGl1cywgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIGluaXRpYWxC
b3JkZXJSYWRpdXMpCitERUZJTkVfUkFESVVTX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmln
aHRSYWRpdXMsIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRl
clRvcFN0eWxlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHls
ZSwgc2V0Qm9yZGVyVG9wU3R5bGUsIGJvcmRlclRvcFN0eWxlKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIHNldEJvcmRlclRvcFN0eWxlLCBpbml0aWFs
Qm9yZGVyU3R5bGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5
bGUsIHNldEJvcmRlclRvcFN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoCitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgc2V0Qm9yZGVy
VG9wV2lkdGgsIGJvcmRlclRvcFdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGgsIHNldEJvcmRlclRvcFdpZHRoLCBpbml0aWFsQm9yZGVyV2lkdGgp
CitERUZJTkVfV0lEVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgc2V0Qm9yZGVy
VG9wV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgKK0RFRklORV9FWFBBTkRJTkdf
SU5IRVJJVF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9w
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgpCitERUZJTkVfRVhQQU5ESU5HX0lO
SVRJQUxfRk9VUihDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoKQorREVGSU5FX05VTExfVkFMVUUoQ1NT
UHJvcGVydHlCb3JkZXJXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlCb3R0b20KK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvdHRvbSwgc2V0Qm90dG9tLCBib3R0b20pCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3R0b20sIHNldEJvdHRvbSwgaW5pdGlhbE9mZnNl
dCkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3R0b20sIHNldEJvdHRvbSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5Qm94U2l6aW5n
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3hTaXppbmcsIHNldEJveFNpemlu
ZywgYm94U2l6aW5nKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm94U2l6aW5n
LCBzZXRCb3hTaXppbmcsIGluaXRpYWxCb3hTaXppbmcpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlCb3hTaXppbmcpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRlbnRCb3gpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0Qm94U2l6aW5nKENPTlRFTlRfQk9YKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFNpemluZyhCT1JERVJfQk9YKTsKKyAgICB9Cit9
CisKKy8vIENTU1Byb3BlcnR5Q2FwdGlvblNpZGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eUNhcHRpb25TaWRlLCBzZXRDYXB0aW9uU2lkZSwgY2FwdGlvblNpZGUpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSwgc2V0Q2FwdGlvblNpZGUsIGlu
aXRpYWxDYXB0aW9uU2lkZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlDYXB0aW9u
U2lkZSwgc2V0Q2FwdGlvblNpZGUpCisKKy8vIENTU1Byb3BlcnR5Q2xlYXIKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eUNsZWFyLCBzZXRDbGVhciwgY2xlYXIpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlDbGVhciwgc2V0Q2xlYXIsIGluaXRpYWxDbGVhcikKK0RF
RklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlDbGVhciwgc2V0Q2xlYXIpCisKKy8vIENTU1By
b3BlcnR5Q2xpcAorCisvLyBDU1NQcm9wZXJ0eUNvbnRlbnQKKy8vIEZJWE1FOiBJbiBDU1MzLCBp
dCB3aWxsIGJlIHBvc3NpYmxlIHRvIGluaGVyaXQgY29udGVudC4gIEluIENTUzIgaXQgaXMgbm90
LiAgVGhpcworICAgIC8vIG5vdGUgaXMgYSByZW1pbmRlciB0aGF0IGV2ZW50dWFsbHkgImluaGVy
aXQiIG5lZWRzIHRvIGJlIHN1cHBvcnRlZC4KK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVy
dHlDb250ZW50KQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlDb250ZW50KQoreworICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5jbGVhckNvbnRlbnQoKTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eUNvbnRlbnQpCit7CisgICAgLy8gbGlzdCBvZiBzdHJpbmcsIHVyaSwgY291bnRlciwgYXR0
ciwgaQorICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVl
KTsKKyAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CisKKyAgICBib29sIGRpZFNldCA9IGZh
bHNlOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgQ1NTVmFs
dWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOworICAgICAgICBpZiAo
aXRlbS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpIHsKKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRDb250ZW50KHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqPihp
dGVtKS0+Z2VuZXJhdGVkSW1hZ2UoKSwgZGlkU2V0KTsKKyAgICAgICAgICAgIGRpZFNldCA9IHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb250
ZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAg
ICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpKSB7CisgICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc6CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0Q29udGVudChjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBk
aWRTZXQpOworICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQVRUUjogeworICAgICAgICAgICAg
Ly8gRklYTUU6IENhbiBhIG5hbWVzcGFjZSBiZSBzcGVjaWZpZWQgZm9yIGFuIGF0dHIoZm9vKT8K
KyAgICAgICAgICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VV
RE8pCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFVuaXF1ZSgpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5z
ZXRVbmlxdWUoKTsKKyAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cihudWxsQXRvbSwgY29u
dGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgbnVsbEF0b20pOworICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbnRlbnQoaW5zdGFuY2UtPm1fZWxlbWVudC0+Z2V0
QXR0cmlidXRlKGF0dHIpLmltcGwoKSwgZGlkU2V0KTsKKyAgICAgICAgICAgIGRpZFNldCA9IHRy
dWU7CisgICAgICAgICAgICAvLyByZWdpc3RlciB0aGUgZmFjdCB0aGF0IHRoZSBhdHRyaWJ1dGUg
dmFsdWUgYWZmZWN0cyB0aGUgc3R5bGUKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3NlbGVjdG9y
QXR0cnMuYWRkKGF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkk6IHsKKyAg
ICAgICAgICAgIGlmICghY29udGVudFZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb250ZW50KGlu
c3RhbmNlLT5jYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDb250ZW50LCBzdGF0
aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4oY29udGVudFZhbHVlKSksIGRpZFNldCk7CisgICAgICAg
ICAgICBkaWRTZXQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NPVU5URVI6IHsKKyAgICAgICAgICAgIENv
dW50ZXIqIGNvdW50ZXJWYWx1ZSA9IGNvbnRlbnRWYWx1ZS0+Z2V0Q291bnRlclZhbHVlKCk7Cisg
ICAgICAgICAgICBPd25QdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIgPSBhZG9wdFB0cihuZXcg
Q291bnRlckNvbnRlbnQoY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksCisgICAgICAgICAgICAg
ICAgKEVMaXN0U3R5bGVUeXBlKWNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlTnVtYmVyKCksIGNvdW50
ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRDb250ZW50KGNvdW50ZXIucmVsZWFzZSgpLCBkaWRTZXQpOworICAgICAgICAgICAgZGlkU2V0
ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlmICghZGlkU2V0KQor
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xlYXJDb250ZW50KCk7CisgICAgcmV0dXJuOwor
fQorCisvLyBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQKK0RFRklORV9OVUxMX0lOSEVSSVQo
Q1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50KQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9w
ZXJ0eUNvdW50ZXJJbmNyZW1lbnQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlDb3VudGVySW5j
cmVtZW50KQoreworICAgIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxpc3QoaW5zdGFu
Y2UtPm1fc3R5bGUuZ2V0KCksIHZhbHVlLT5pc1ZhbHVlTGlzdCgpID8gc3RhdGljX2Nhc3Q8Q1NT
VmFsdWVMaXN0Kj4odmFsdWUpIDogMCwgZmFsc2UpOworfQorCisvLyBDU1NQcm9wZXJ0eUNvdW50
ZXJSZXNldAorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldCkKK0RF
RklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQpCitERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlDb3VudGVyUmVzZXQpCit7CisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlD
b3VudGVyTGlzdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgdmFsdWUtPmlzVmFsdWVMaXN0KCkg
PyBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSkgOiAwLCB0cnVlKTsKK30KKworLy8g
Q1NTUHJvcGVydHlDdXJzb3IKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Q3Vyc29yKQorewor
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJzb3IoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUt
PmN1cnNvcigpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q3Vyc29yTGlzdChpbnN0YW5j
ZS0+bV9wYXJlbnRTdHlsZS0+Y3Vyc29ycygpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3Bl
cnR5Q3Vyc29yKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckN1cnNvckxpc3QoKTsK
KyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q3Vyc29yKFJlbmRlclN0eWxlOjppbml0aWFsQ3Vy
c29yKCkpOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Q3Vyc29yKQoreworICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5jbGVhckN1cnNvckxpc3QoKTsKKyAgICBpZiAodmFsdWUtPmlzVmFsdWVM
aXN0KCkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4odmFsdWUpOworICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CisgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJzb3IoQ1VSU09SX0FVVE8pOworICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICBDU1NWYWx1ZSogaXRl
bSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CisgICAgICAgICAgICBpZiAoIWl0
ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2
ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1VSSSkgeworICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+aXNDdXJzb3JJbWFnZVZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4ocHJp
bWl0aXZlVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnVwZGF0ZUlmU1ZH
Q3Vyc29ySXNVc2VkKGluc3RhbmNlLT5tX2VsZW1lbnQpKSAvLyBFbGVtZW50cyB3aXRoIFNWRyBj
dXJzb3JzIGFyZSBub3QgYWxsb3dlZCB0byBzaGFyZSBzdHlsZS4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRVbmlxdWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPmFkZEN1cnNvcihpbnN0YW5jZS0+Y2FjaGVkT3JQZW5kaW5n
RnJvbVZhbHVlKENTU1Byb3BlcnR5Q3Vyc29yLCBpbWFnZSksIGltYWdlLT5ob3RTcG90KCkpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnQg
dHlwZSA9IHAtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19JREVOVCAmJiBpbnN0YW5jZS0+bV9zdHlsZS0+Y3Vyc29yKCkgIT0gRUN1
cnNvcigqcCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q3Vyc29yKCpwKTsK
KyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5RW1wdHlDZWxscworREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5RW1wdHlDZWxscywgc2V0RW1wdHlDZWxscywgZW1wdHlDZWxscykKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMsIHNldEVtcHR5Q2VsbHMs
IGluaXRpYWxFbXB0eUNlbGxzKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUVtcHR5
Q2VsbHMsIHNldEVtcHR5Q2VsbHMpCisKKy8vIENTU1Byb3BlcnR5RmxvYXQKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eUZsb2F0LCBzZXRGbG9hdGluZywgZmxvYXRpbmcpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlGbG9hdCwgc2V0RmxvYXRpbmcsIGluaXRpYWxG
bG9hdGluZykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlGbG9hdCwgc2V0RmxvYXRp
bmcpCisKKy8vIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NT
UHJvcGVydHlGb250U3RyZXRjaCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlGb250
U3RyZXRjaCkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gpCisKKy8v
IENTU1Byb3BlcnR5SGVpZ2h0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlIZWln
aHQsIHNldEhlaWdodCwgaGVpZ2h0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
SGVpZ2h0LCBzZXRIZWlnaHQsIGluaXRpYWxTaXplKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQ
cm9wZXJ0eUhlaWdodCwgc2V0SGVpZ2h0LCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2Up
CisKKy8vIENTU1Byb3BlcnR5TGVmdAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
TGVmdCwgc2V0TGVmdCwgbGVmdCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUxl
ZnQsIHNldExlZnQsIGluaXRpYWxPZmZzZXQpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3Bl
cnR5TGVmdCwgc2V0TGVmdCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8v
IENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5TGV0dGVyU3BhY2luZywgc2V0TGV0dGVyU3BhY2luZywgbGV0dGVyU3BhY2luZykKK0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIHNldExldHRlclNwYWNp
bmcsIGluaXRpYWxMZXR0ZXJXb3JkU3BhY2luZykKK0RFRklORV9TUEFDSU5HX1ZBTFVFKENTU1By
b3BlcnR5TGV0dGVyU3BhY2luZywgc2V0TGV0dGVyU3BhY2luZykKKworLy8gQ1NTUHJvcGVydHlM
aXN0U3R5bGUKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eUxpc3RT
dHlsZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdl
LCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKQorREVGSU5FX0VYUEFORElOR19JTklUSUFM
X1RIUkVFKENTU1Byb3BlcnR5TGlzdFN0eWxlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENT
U1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24pCitE
RUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUxpc3RTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlM
aXN0U3R5bGVJbWFnZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TGlzdFN0eWxl
SW1hZ2UsIHNldExpc3RTdHlsZUltYWdlLCBsaXN0U3R5bGVJbWFnZSkKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCBzZXRMaXN0U3R5bGVJbWFnZSwgaW5p
dGlhbExpc3RTdHlsZUltYWdlKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1h
Z2UpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldExpc3RTdHlsZUltYWdlKGluc3RhbmNl
LT5zdHlsZUltYWdlKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIHZhbHVlKSk7Cit9CisKKy8v
IENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLCBzZXRMaXN0U3R5bGVQb3NpdGlvbiwgbGlzdFN0eWxl
UG9zaXRpb24pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3Np
dGlvbiwgc2V0TGlzdFN0eWxlUG9zaXRpb24sIGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbikKK0RF
RklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwgc2V0TGlzdFN0
eWxlUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZQorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgc2V0TGlzdFN0eWxlVHlwZSwgbGlz
dFN0eWxlVHlwZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGUsIHNldExpc3RTdHlsZVR5cGUsIGluaXRpYWxMaXN0U3R5bGVUeXBlKQorREVGSU5FX0hBTkRM
RV9WQUxVRShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIHNldExpc3RTdHlsZVR5cGUpCisKKy8v
IENTU1Byb3BlcnR5TWFyZ2luCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQcm9w
ZXJ0eU1hcmdpbiwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQs
IENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQpCitERUZJTkVf
SU5JVElBTChDU1NQcm9wZXJ0eU1hcmdpbikKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVz
ZXRNYXJnaW4oKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luKQorCisv
LyBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5TWFyZ2luQm90dG9tLCBzZXRNYXJnaW5Cb3R0b20sIG1hcmdpbkJvdHRvbSkKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgc2V0TWFyZ2luQm90dG9tLCBp
bml0aWFsTWFyZ2luKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpbkJvdHRv
bSwgc2V0TWFyZ2luQm90dG9tLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKKwor
Ly8gQ1NTUHJvcGVydHlNYXJnaW5MZWZ0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlNYXJnaW5MZWZ0LCBzZXRNYXJnaW5MZWZ0LCBtYXJnaW5MZWZ0KQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgc2V0TWFyZ2luTGVmdCwgaW5pdGlhbE1hcmdp
bikKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBzZXRNYXJnaW5M
ZWZ0LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlN
YXJnaW5SaWdodAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQs
IHNldE1hcmdpblJpZ2h0LCBtYXJnaW5SaWdodCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0LCBzZXRNYXJnaW5SaWdodCwgaW5pdGlhbE1hcmdpbikKK0RFRklO
RV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgc2V0TWFyZ2luUmlnaHQsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eU1hcmdpblRv
cAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBzZXRNYXJnaW5U
b3AsIG1hcmdpblRvcCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1hcmdpblRv
cCwgc2V0TWFyZ2luVG9wLCBpbml0aWFsTWFyZ2luKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQ
cm9wZXJ0eU1hcmdpblRvcCwgc2V0TWFyZ2luVG9wLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVl
LCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNYXhIZWlnaHQKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eU1heEhlaWdodCwgc2V0TWF4SGVpZ2h0LCBtYXhIZWlnaHQpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIHNldE1heEhlaWdodCwgaW5pdGlh
bE1heFNpemUpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBzZXRN
YXhIZWlnaHQsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlKQorCisvLyBDU1NQcm9wZXJ0
eU1heFdpZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlNYXhXaWR0aCwgc2V0
TWF4V2lkdGgsIG1heFdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TWF4
V2lkdGgsIHNldE1heFdpZHRoLCBpbml0aWFsTWF4U2l6ZSkKK0RFRklORV9MRU5HVEhfVkFMVUUo
Q1NTUHJvcGVydHlNYXhXaWR0aCwgc2V0TWF4V2lkdGgsIHRydWUsIHRydWUsIHRydWUsIGZhbHNl
LCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNaW5IZWlnaHQKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eU1pbkhlaWdodCwgc2V0TWluSGVpZ2h0LCBtaW5IZWlnaHQpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNaW5IZWlnaHQsIHNldE1pbkhlaWdodCwgaW5pdGlh
bE1pblNpemUpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5TWluSGVpZ2h0LCBzZXRN
aW5IZWlnaHQsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVy
dHlNaW5XaWR0aAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWluV2lkdGgsIHNl
dE1pbldpZHRoLCBtaW5XaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1p
bldpZHRoLCBzZXRNaW5XaWR0aCwgaW5pdGlhbE1pblNpemUpCitERUZJTkVfTEVOR1RIX1ZBTFVF
KENTU1Byb3BlcnR5TWluV2lkdGgsIHNldE1pbldpZHRoLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1
ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5T3BhY2l0eQorREVGSU5FX0hBTkRMRV9JTkhFUklU
KENTU1Byb3BlcnR5T3BhY2l0eSwgc2V0T3BhY2l0eSwgb3BhY2l0eSkKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eU9wYWNpdHksIHNldE9wYWNpdHksIGluaXRpYWxPcGFjaXR5KQor
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5T3BhY2l0eSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpCisgICAgICAgICAgICAvLyBDbGFtcCBvcGFjaXR5IHRvIHRoZSByYW5nZSAwLTEK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPcGFjaXR5KG1pbigxLjBmLCBtYXgo
MC4wZiwgcHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkpKTsKKyAgICB9Cit9CisKKy8v
IENTU1Byb3BlcnR5T3JwaGFucworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5T3Jw
aGFucywgc2V0T3JwaGFucywgb3JwaGFucykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eU9ycGhhbnMsIHNldE9ycGhhbnMsIGluaXRpYWxPcnBoYW5zKQorREVGSU5FX1ZBTFVFKENT
U1Byb3BlcnR5T3JwaGFucykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3JwaGFucyhwcmltaXRpdmVWYWx1ZS0+Z2V0
SW50VmFsdWUoKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eU91dGxpbmUKK0RFRklORV9F
WFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eU91dGxpbmUsIENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwgQ1NTUHJvcGVydHlPdXRsaW5lU3R5
bGUpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eU91dGxpbmUpCit7CisgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnJlc2V0T3V0bGluZSgpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlPdXRsaW5lKQorCisvLyBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcgorREVGSU5FX0hBTkRMRV9J
TkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwgc2V0T3V0bGluZUNvbG9yLCBv
dXRsaW5lQ29sb3IsIGNvbG9yKQorREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3Bl
cnR5T3V0bGluZUNvbG9yLCBzZXRPdXRsaW5lQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NP
TE9SKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBzZXRPdXRsaW5lQ29sb3IpCisKKy8vIENTU1By
b3BlcnR5T3V0bGluZU9mZnNldAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5T3V0
bGluZU9mZnNldCwgc2V0T3V0bGluZU9mZnNldCwgb3V0bGluZU9mZnNldCkKK0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQsIHNldE91dGxpbmVPZmZzZXQsIGlu
aXRpYWxPdXRsaW5lT2Zmc2V0KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZU9mZnNl
dCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE91dGxpbmVPZmZz
ZXQocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0
KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZl
Y3RpdmVab29tKCkpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlCitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsIHNldE91dGxpbmVT
dHlsZSwgb3V0bGluZVN0eWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3V0
bGluZVN0eWxlLCBzZXRPdXRsaW5lU3R5bGUsIGluaXRpYWxCb3JkZXJTdHlsZSkKK0RFRklORV9W
QUxVRShDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRPdXRsaW5lU3R5bGUoRE9UVEVELCB0cnVlKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE91dGxpbmVTdHlsZSgqcHJp
bWl0aXZlVmFsdWUpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgc2V0T3V0bGluZVdp
ZHRoLCBvdXRsaW5lV2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlPdXRs
aW5lV2lkdGgsIHNldE91dGxpbmVXaWR0aCwgaW5pdGlhbEJvcmRlcldpZHRoKQorREVGSU5FX1dJ
RFRIX1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBzZXRPdXRsaW5lV2lkdGgpCisKKy8v
IENTU1Byb3BlcnR5T3ZlcmZsb3cKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJv
cGVydHlPdmVyZmxvdywgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZ
KQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eU92ZXJmbG93LCBDU1NQ
cm9wZXJ0eU92ZXJmbG93WSwgQ1NTUHJvcGVydHlPdmVyZmxvd1kpCitERUZJTkVfRVhQQU5ESU5H
X1ZBTFVFX1RXTyhDU1NQcm9wZXJ0eU92ZXJmbG93LCBDU1NQcm9wZXJ0eU92ZXJmbG93WSwgQ1NT
UHJvcGVydHlPdmVyZmxvd1kpCisKKy8vIENTU1Byb3BlcnR5T3ZlcmZsb3dYCitERUZJTkVfSEFO
RExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIHNldE92ZXJmbG93WCwgb3ZlcmZsb3dY
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBzZXRPdmVyZmxv
d1gsIGluaXRpYWxPdmVyZmxvd1gpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5T3Zl
cmZsb3dYLCBzZXRPdmVyZmxvd1gpCisKKy8vIENTU1Byb3BlcnR5T3ZlcmZsb3dZCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHNldE92ZXJmbG93WSwgb3ZlcmZs
b3dZKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBzZXRPdmVy
Zmxvd1ksIGluaXRpYWxPdmVyZmxvd1kpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5
T3ZlcmZsb3dZLCBzZXRPdmVyZmxvd1kpCisKKy8vIENTU1Byb3BlcnR5UGFkZGluZworREVGSU5F
X0VYUEFORElOR19JTkhFUklUX0ZPVVIoQ1NTUHJvcGVydHlQYWRkaW5nLCBDU1NQcm9wZXJ0eVBh
ZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0
b20sIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVBh
ZGRpbmcpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0UGFkZGluZygpOworfQorREVG
SU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nKQorCisvLyBDU1NQcm9wZXJ0eVBhZGRp
bmdCb3R0b20KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20s
IHNldFBhZGRpbmdCb3R0b20sIHBhZGRpbmdCb3R0b20pCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBzZXRQYWRkaW5nQm90dG9tLCBpbml0aWFsUGFkZGlu
ZykKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBzZXRQYWRk
aW5nQm90dG9tLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1By
b3BlcnR5UGFkZGluZ0xlZnQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZGRp
bmdMZWZ0LCBzZXRQYWRkaW5nTGVmdCwgcGFkZGluZ0xlZnQpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgc2V0UGFkZGluZ0xlZnQsIGluaXRpYWxQYWRkaW5n
KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBzZXRQYWRkaW5n
TGVmdCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0
eVBhZGRpbmdSaWdodAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UGFkZGluZ1Jp
Z2h0LCBzZXRQYWRkaW5nUmlnaHQsIHBhZGRpbmdSaWdodCkKK0RFRklORV9IQU5ETEVfSU5JVElB
TChDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgc2V0UGFkZGluZ1JpZ2h0LCBpbml0aWFsUGFkZGlu
ZykKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIHNldFBhZGRp
bmdSaWdodCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9w
ZXJ0eVBhZGRpbmdUb3AKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZGRpbmdU
b3AsIHNldFBhZGRpbmdUb3AsIHBhZGRpbmdUb3ApCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlQYWRkaW5nVG9wLCBzZXRQYWRkaW5nVG9wLCBpbml0aWFsUGFkZGluZykKK0RFRklO
RV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBzZXRQYWRkaW5nVG9wLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5UGFnZQorREVG
SU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZ2UpCitERUZJTkVfTlVMTF9JTklUSUFMKENT
U1Byb3BlcnR5UGFnZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5UGFnZSkKKworLy8g
Q1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5UGFnZUJyZWFrQWZ0ZXIsIHNldFBhZ2VCcmVha0FmdGVyLCBwYWdlQnJlYWtBZnRlcikKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyLCBzZXRQYWdlQnJl
YWtBZnRlciwgaW5pdGlhbFBhZ2VCcmVhaykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVy
dHlQYWdlQnJlYWtBZnRlciwgc2V0UGFnZUJyZWFrQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5UGFn
ZUJyZWFrQmVmb3JlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWdlQnJlYWtC
ZWZvcmUsIHNldFBhZ2VCcmVha0JlZm9yZSwgcGFnZUJyZWFrQmVmb3JlKQorREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlLCBzZXRQYWdlQnJlYWtCZWZvcmUs
IGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5UGFnZUJy
ZWFrQmVmb3JlLCBzZXRQYWdlQnJlYWtCZWZvcmUpCisKKy8vIENTU1Byb3BlcnR5UGFnZUJyZWFr
SW5zaWRlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUs
IHNldFBhZ2VCcmVha0luc2lkZSwgcGFnZUJyZWFrSW5zaWRlKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlLCBzZXRQYWdlQnJlYWtJbnNpZGUsIGluaXRp
YWxQYWdlQnJlYWspCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUpCit7
CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFrID0gKnByaW1pdGl2ZVZhbHVl
OworICAgICAgICBpZiAocGFnZUJyZWFrICE9IFBCQUxXQVlTKQorICAgICAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldFBhZ2VCcmVha0luc2lkZShwYWdlQnJlYWspOworICAgIH0KK30KKwor
Ly8gQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQorLy8gPHJkYXI6Ly9wcm9ibGVtLzY1NjEwNzc+IFdvcmsgYXJvdW5kIHRoZSBTdG9ja3Mgd2lk
Z2V0J3MgbWlzdXNlIG9mIHRoZQorLy8gcG9pbnRlci1ldmVudHMgcHJvcGVydHkgYnkgbm90IGFw
cGx5aW5nIGl0IGluIERhc2hib2FyZC4KK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5UG9pbnRl
ckV2ZW50cykKK3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBpbnN0YW5jZS0+bV9jaGVja2Vy
Lm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT51
c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQorICAgICAgICByZXR1cm47
CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFBvaW50ZXJFdmVudHMoaW5zdGFuY2UtPm1fcGFy
ZW50U3R5bGUtPnBvaW50ZXJFdmVudHMoKSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0
eVBvaW50ZXJFdmVudHMpCit7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1f
Y2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0
aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRQb2ludGVyRXZlbnRzKFJlbmRlclN0
eWxlOjppbml0aWFsUG9pbnRlckV2ZW50cygpKTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVBvaW50ZXJFdmVudHMpCit7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1f
Y2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0
aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0UG9pbnRlckV2
ZW50cygqcHJpbWl0aXZlVmFsdWUpOworICAgIH0KK30KKyNlbHNlCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBzZXRQb2ludGVyRXZlbnRzLCBwb2ludGVy
RXZlbnRzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywg
c2V0UG9pbnRlckV2ZW50cywgaW5pdGlhbFBvaW50ZXJFdmVudHMpCitERUZJTkVfSEFORExFX1ZB
TFVFKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgc2V0UG9pbnRlckV2ZW50cykKKyNlbmRpZgor
CisvLyBDU1NQcm9wZXJ0eVBvc2l0aW9uCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlQb3NpdGlvbiwgc2V0UG9zaXRpb24sIHBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5UG9zaXRpb24sIHNldFBvc2l0aW9uLCBpbml0aWFsUG9zaXRpb24pCitERUZJ
TkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5UG9zaXRpb24sIHNldFBvc2l0aW9uKQorCisvLyBD
U1NQcm9wZXJ0eVF1b3RlcworREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVF1b3RlcykK
K0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlRdW90ZXMpCitERUZJTkVfTlVMTF9WQUxV
RShDU1NQcm9wZXJ0eVF1b3RlcykKKworLy8gQ1NTUHJvcGVydHlSZXNpemUKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVJlc2l6ZSwgc2V0UmVzaXplLCByZXNpemUpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlSZXNpemUsIHNldFJlc2l6ZSwgaW5pdGlhbFJlc2l6
ZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVJlc2l6ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBFUmVzaXplIHJl
c3VsdCA9IFJFU0laRV9OT05FOworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlQXV0bykgeworICAgICAgICAgICAgICAgIGlmIChTZXR0aW5ncyog
c2V0dGluZ3MgPSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCkpCisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldHRpbmdzLT50ZXh0QXJlYXNBcmVSZXNpemFi
bGUoKSA/IFJFU0laRV9CT1RIIDogUkVTSVpFX05PTkU7CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0UmVzaXplKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
Ky8vIENTU1Byb3BlcnR5UmlnaHQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVJp
Z2h0LCBzZXRSaWdodCwgcmlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlS
aWdodCwgc2V0UmlnaHQsIGluaXRpYWxPZmZzZXQpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1By
b3BlcnR5UmlnaHQsIHNldFJpZ2h0LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkK
KworLy8gQ1NTUHJvcGVydHlTaXplCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5U2l6
ZSkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlTaXplKQorREVGSU5FX1ZBTFVFKENT
U1Byb3BlcnR5U2l6ZSkKK3sKKyAgICBpbnN0YW5jZS0+YXBwbHlQYWdlU2l6ZVByb3BlcnR5KHZh
bHVlKTsKK30KKworLy8gQ1NTUHJvcGVydHlTcmMKKy8vIE9ubHkgdXNlZCBpbiBAZm9udC1mYWNl
IHJ1bGVzLgorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVNyYykKK0RFRklORV9OVUxM
X0lOSVRJQUwoQ1NTUHJvcGVydHlTcmMpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVNy
YykKKworLy8gQ1NTUHJvcGVydHlTcGVhaworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5U3BlYWssIHNldFNwZWFrLCBzcGVhaykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVNwZWFrLCBzZXRTcGVhaywgaW5pdGlhbFNwZWFrKQorREVGSU5FX0hBTkRMRV9WQUxVRShD
U1NQcm9wZXJ0eVNwZWFrLCBzZXRTcGVhaykKKworLy8gQ1NTUHJvcGVydHlUYWJsZUxheW91dAor
REVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGFibGVMYXlvdXQsIHNldFRhYmxlTGF5
b3V0LCB0YWJsZUxheW91dCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRhYmxl
TGF5b3V0LCBzZXRUYWJsZUxheW91dCwgaW5pdGlhbFRhYmxlTGF5b3V0KQorREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5VGFibGVMYXlvdXQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIEVUYWJsZUxheW91
dCBsYXlvdXQgPSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAgIGlmIChsYXlvdXQgPT0gVEFVVE8p
CisgICAgICAgICAgICBsYXlvdXQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhYmxlTGF5b3V0KCk7
CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUYWJsZUxheW91dChsYXlvdXQpOworICAg
IH0KK30KKworLy8gQ1NTUHJvcGVydHlUZXh0QWxpZ24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVRleHRBbGlnbiwgc2V0VGV4dEFsaWduLCB0ZXh0QWxpZ24pCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIHNldFRleHRBbGlnbiwgaW5pdGlhbFRl
eHRBbGlnbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVRleHRBbGlnbikKK3sKKyAgICBpZiAo
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsK
KyAgICAgICAgaW50IGlkID0gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCk7CisgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZVN0YXJ0KQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dFRleHRBbGlnbihpbnN0YW5jZS0+bV9zdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8g
TEVGVCA6IFJJR0hUKTsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVFbmQpCisgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEFsaWduKGluc3RhbmNlLT5tX3N0eWxl
LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSSUdIVCA6IExFRlQpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEFsaWduKCpwcmltaXRpdmVW
YWx1ZSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgc2V0VGV4dERlY29yYXRp
b24sIHRleHREZWNvcmF0aW9uKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VGV4
dERlY29yYXRpb24sIHNldFRleHREZWNvcmF0aW9uLCBpbml0aWFsVGV4dERlY29yYXRpb24pCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikKK3sKKyAgICBpZiAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7Cisg
ICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZh
bHVlKTsKKyAgICAgICAgaW50IHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9u
KCk7CisgICAgICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOworICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgICAgICAg
ICAgdCA9IFRETk9ORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVVbmRlcmxpbmU6CisgICAgICAgICAgICAgICAgdCB8PSBVTkRFUkxJTkU7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlT3ZlcmxpbmU6Cisg
ICAgICAgICAgICAgICAgdCB8PSBPVkVSTElORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5lVGhyb3VnaDoKKyAgICAgICAgICAgICAgICB0IHw9
IExJTkVfVEhST1VHSDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVCbGluazoKKyAgICAgICAgICAgICAgICB0IHw9IEJMSU5LOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dFRleHREZWNvcmF0aW9uKHQpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlUZXh0SW5kZW50
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0SW5kZW50LCBzZXRUZXh0SW5k
ZW50LCB0ZXh0SW5kZW50KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VGV4dElu
ZGVudCwgc2V0VGV4dEluZGVudCwgaW5pdGlhbFRleHRJbmRlbnQpCitERUZJTkVfTEVOR1RIX1ZB
TFVFKENTU1Byb3BlcnR5VGV4dEluZGVudCwgc2V0VGV4dEluZGVudCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaAorREVG
SU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaCkKK0RFRklORV9OVUxM
X0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2gpCitERUZJTkVfTlVMTF9WQUxVRShD
U1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaCkKKworLy8gQ1NTUHJvcGVydHlUZXh0TGluZVRocm91
Z2hDb2xvcgorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENv
bG9yKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9y
KQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcikKKwor
Ly8gQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlCitERUZJTkVfTlVMTF9JTkhFUklUKENT
U1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZSkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJv
cGVydHlUZXh0TGluZVRocm91Z2hNb2RlKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlU
ZXh0TGluZVRocm91Z2hNb2RlKQorCisvLyBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxl
CitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGUpCitE
RUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGUpCitERUZJ
TkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlKQorCisvLyBDU1NQ
cm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3Bl
cnR5VGV4dExpbmVUaHJvdWdoV2lkdGgpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5
VGV4dExpbmVUaHJvdWdoV2lkdGgpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdworREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93LCBzZXRUZXh0T3ZlcmZsb3csIHRl
eHRPdmVyZmxvdykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRPdmVyZmxv
dywgc2V0VGV4dE92ZXJmbG93LCBpbml0aWFsVGV4dE92ZXJmbG93KQorREVGSU5FX1ZBTFVFKENT
U1Byb3BlcnR5VGV4dE92ZXJmbG93KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4
dE92ZXJmbG93KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRWxsaXBzaXMp
OworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmUKK0RFRklORV9OVUxMX0lO
SEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmUpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1By
b3BlcnR5VGV4dE92ZXJsaW5lKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0T3Zl
cmxpbmUpCisKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lQ29sb3IKK0RFRklORV9OVUxMX0lO
SEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcikKK0RFRklORV9OVUxMX0lOSVRJQUwo
Q1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcikKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3Bl
cnR5VGV4dE92ZXJsaW5lQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZQor
REVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGUpCitERUZJTkVf
TlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZSkKK0RFRklORV9OVUxMX1ZB
TFVFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0T3Zl
cmxpbmVTdHlsZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0
eWxlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlKQor
REVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSkKKworLy8gQ1NT
UHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aAorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0
eVRleHRPdmVybGluZVdpZHRoKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRP
dmVybGluZVdpZHRoKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVX
aWR0aCkKKworLy8gQ1NTUHJvcGVydHlUZXh0U2hhZG93CitERUZJTkVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVRleHRTaGFkb3cpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRTaGFkb3co
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPnRleHRTaGFkb3coKSA/IG5ldyBTaGFkb3dEYXRhKCpp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+dGV4dFNoYWRvdygpKSA6IDApOworfQorREVGSU5FX0lO
SVRJQUwoQ1NTUHJvcGVydHlUZXh0U2hhZG93KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRUZXh0U2hhZG93KDApOworfQorREVGSU5FX1NIQURPV19WQUxVRShDU1NQcm9wZXJ0eVRleHRT
aGFkb3csIHNldFRleHRTaGFkb3cpCisKKy8vIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybQorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgc2V0VGV4dFRyYW5z
Zm9ybSwgdGV4dFRyYW5zZm9ybSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRl
eHRUcmFuc2Zvcm0sIHNldFRleHRUcmFuc2Zvcm0sIGluaXRpYWxUZXh0VHJhbnNmb3JtKQorREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIHNldFRleHRUcmFuc2Zv
cm0pCisKKy8vIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZQorREVGSU5FX05VTExfSU5IRVJJVChD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5
VGV4dFVuZGVybGluZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3IKK0RFRklORV9OVUxMX0lOSEVS
SVQoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3IpCitERUZJTkVfTlVMTF9JTklUSUFMKENT
U1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUK
K0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZSkKK0RFRklO
RV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZSkKK0RFRklORV9OVUxM
X1ZBTFVFKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUpCisKKy8vIENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVN0eWxlCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dFVuZGVy
bGluZVN0eWxlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVT
dHlsZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlKQor
CisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aAorREVGSU5FX05VTExfSU5IRVJJVChD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lV2lkdGgpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRl
eHRVbmRlcmxpbmVXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlUb3AKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVRvcCwgc2V0VG9wLCB0b3ApCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlUb3AsIHNldFRvcCwgaW5pdGlhbE9mZnNldCkKK0RFRklORV9MRU5HVEhfVkFM
VUUoQ1NTUHJvcGVydHlUb3AsIHNldFRvcCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFs
c2UpCisKKy8vIENTU1Byb3BlcnR5VW5pY29kZUJpZGkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzZXRVbmljb2RlQmlkaSwgdW5pY29kZUJpZGkpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgc2V0VW5pY29kZUJpZGks
IGluaXRpYWxVbmljb2RlQmlkaSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlVbmlj
b2RlQmlkaSwgc2V0VW5pY29kZUJpZGkpCisKKy8vIENTU1Byb3BlcnR5VW5pY29kZVJhbmdlCisv
LyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NT
UHJvcGVydHlVbmljb2RlUmFuZ2UpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VW5p
Y29kZVJhbmdlKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpCisK
Ky8vIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5VmVydGljYWxBbGlnbiwgc2V0VmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnbikKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIHNldFZlcnRpY2Fs
QWxpZ24sIGluaXRpYWxWZXJ0aWNhbEFsaWduKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5VmVy
dGljYWxBbGlnbikKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSB7CisgICAgICAgICAgICBFVmVydGljYWxBbGlnbiBhbGlnbjsKKyAgICAgICAgICAg
IHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVUb3A6CisgICAgICAgICAgICAgICAgYWxpZ24gPSBUT1A7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQm90dG9tOgorICAgICAgICAgICAg
ICAgIGFsaWduID0gQk9UVE9NOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZU1pZGRsZToKKyAgICAgICAgICAgICAgICBhbGlnbiA9IE1JRERMRTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVCYXNlbGluZToK
KyAgICAgICAgICAgICAgICBhbGlnbiA9IEJBU0VMSU5FOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRleHRCb3R0b206CisgICAgICAgICAgICAgICAg
YWxpZ24gPSBURVhUX0JPVFRPTTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVUZXh0VG9wOgorICAgICAgICAgICAgICAgIGFsaWduID0gVEVYVF9UT1A7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3ViOgor
ICAgICAgICAgICAgICAgIGFsaWduID0gU1VCOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1cGVyOgorICAgICAgICAgICAgICAgIGFsaWduID0gU1VQ
RVI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Vi
a2l0QmFzZWxpbmVNaWRkbGU6CisgICAgICAgICAgICAgICAgYWxpZ24gPSBCQVNFTElORV9NSURE
TEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKGFsaWduKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAg
ICAgICAgIExlbmd0aCBsZW5ndGg7CisgICAgICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6
OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCisgICAgICAgICAgICAgICAgbGVuZ3RoID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKGluc3RhbmNlLT5tX3N0
eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHls
ZS0+ZWZmZWN0aXZlWm9vbSgpKSwgRml4ZWQpOworICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgICAgICAgbGVu
Z3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKExFTkdUSCk7
CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VmVydGljYWxBbGlnbkxlbmd0aChs
ZW5ndGgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVZpc2liaWxpdHkK
K0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVZpc2liaWxpdHksIHNldFZpc2liaWxp
dHksIHZpc2liaWxpdHkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlWaXNpYmls
aXR5LCBzZXRWaXNpYmlsaXR5LCBpbml0aWFsVmlzaWJpbGl0eSkKK0RFRklORV9IQU5ETEVfVkFM
VUUoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBzZXRWaXNpYmlsaXR5KQorCisvLyBDU1NQcm9wZXJ0
eVdoaXRlU3BhY2UKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdoaXRlU3BhY2Us
IHNldFdoaXRlU3BhY2UsIHdoaXRlU3BhY2UpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlXaGl0ZVNwYWNlLCBzZXRXaGl0ZVNwYWNlLCBpbml0aWFsV2hpdGVTcGFjZSkKK0RFRklO
RV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBzZXRXaGl0ZVNwYWNlKQorCisv
LyBDU1NQcm9wZXJ0eVdpZG93cworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2lk
b3dzLCBzZXRXaWRvd3MsIHdpZG93cykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdpZG93cywgc2V0V2lkb3dzLCBpbml0aWFsV2lkb3dzKQorREVGSU5FX1ZBTFVFKENTU1Byb3Bl
cnR5V2lkb3dzKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1p
dGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRXaWRvd3MocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVl
KCkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXaWR0aAorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2lkdGgsIHNldFdpZHRoLCB3aWR0aCkKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdpZHRoLCBzZXRXaWR0aCwgaW5pdGlhbFNpemUpCitERUZJTkVfTEVO
R1RIX1ZBTFVFKENTU1Byb3BlcnR5V2lkdGgsIHNldFdpZHRoLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwg
dHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5V29yZEJyZWFrCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlXb3JkQnJlYWssIHNldFdvcmRCcmVhaywgd29yZEJyZWFrKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V29yZEJyZWFrLCBzZXRXb3JkQnJlYWssIGlu
aXRpYWxXb3JkQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V29yZEJyZWFr
LCBzZXRXb3JkQnJlYWspCisKKy8vIENTU1Byb3BlcnR5V29yZFNwYWNpbmcKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nLCBzZXRXb3JkU3BhY2luZywgd29yZFNw
YWNpbmcpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgc2V0
V29yZFNwYWNpbmcsIGluaXRpYWxMZXR0ZXJXb3JkU3BhY2luZykKK0RFRklORV9TUEFDSU5HX1ZB
TFVFKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIHNldFdvcmRTcGFjaW5nKQorCisvLyBDU1NQcm9w
ZXJ0eVdvcmRXcmFwCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXb3JkV3JhcCwg
c2V0V29yZFdyYXAsIHdvcmRXcmFwKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
V29yZFdyYXAsIHNldFdvcmRXcmFwLCBpbml0aWFsV29yZFdyYXApCitERUZJTkVfSEFORExFX1ZB
TFVFKENTU1Byb3BlcnR5V29yZFdyYXAsIHNldFdvcmRXcmFwKQorCisvLyBDU1NQcm9wZXJ0eVpJ
bmRleAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlaSW5kZXgpCit7CisgICAgaWYgKGluc3Rh
bmNlLT5tX3BhcmVudFN0eWxlLT5oYXNBdXRvWkluZGV4KCkpCisgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRIYXNBdXRvWkluZGV4KCk7CisgICAgZWxzZQorICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0WkluZGV4KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT56SW5kZXgoKSk7Cit9
CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVpJbmRleCkKK3sKKyAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0SGFzQXV0b1pJbmRleCgpOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Wklu
ZGV4KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1
dG9aSW5kZXgoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxk
IGNsYW1wIGFsbCBzb3J0cyBvZiBvdGhlciBpbnRlZ2VyIHByb3BlcnRpZXMgdG9vLgorICAgICAg
ICAgICAgY29uc3QgZG91YmxlIG1pbkludEFzRG91YmxlID0gSU5UX01JTjsKKyAgICAgICAgICAg
IGNvbnN0IGRvdWJsZSBtYXhJbnRBc0RvdWJsZSA9IElOVF9NQVg7CisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0WkluZGV4KHN0YXRpY19jYXN0PGludD4obWF4KG1pbkludEFzRG91
YmxlLCBtaW4ocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIG1heEludEFzRG91Ymxl
KSkpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b24KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQoreworICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5jbGVhckFuaW1hdGlvbnMoKTsKK30KK0RFRklORV9JTkhFUklUKENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5pbmhl
cml0QW5pbWF0aW9ucyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+YW5pbWF0aW9ucygpKTsKK30K
K0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5CitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgZGVsYXksIERlbGF5KQorREVGSU5FX0FOSU1B
VElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIGRlbGF5LCBEZWxh
eSkKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxh
eSwgZGVsYXksIERlbGF5KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlv
bgorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGly
ZWN0aW9uLCBkaXJlY3Rpb24sIERpcmVjdGlvbikKK0RFRklORV9BTklNQVRJT05fSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwgZGlyZWN0aW9uLCBEaXJlY3Rpb24p
CitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0
aW9uLCBkaXJlY3Rpb24sIERpcmVjdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25EdXJhdGlvbgorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKK0RFRklORV9BTklNQVRJT05fSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgRHVyYXRp
b24pCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVy
YXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25GaWxsTW9kZQorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRmlsbE1vZGUsIGZpbGxNb2RlLCBGaWxsTW9kZSkKK0RFRklORV9BTklNQVRJT05fSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCBmaWxsTW9kZSwgRmlsbE1v
ZGUpCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmls
bE1vZGUsIGZpbGxNb2RlLCBGaWxsTW9kZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25JdGVyYXRpb25Db3VudAorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIGl0ZXJhdGlvbkNvdW50LCBJdGVyYXRpb25Db3Vu
dCkKK0RFRklORV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0
ZXJhdGlvbkNvdW50LCBpdGVyYXRpb25Db3VudCwgSXRlcmF0aW9uQ291bnQpCitERUZJTkVfQU5J
TUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIGl0
ZXJhdGlvbkNvdW50LCBJdGVyYXRpb25Db3VudCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25OYW1lCitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25OYW1lLCBuYW1lLCBOYW1lKQorREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgbmFtZSwgTmFtZSkKK0RFRklORV9BTklNQVRJT05fVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLCBuYW1lLCBOYW1lKQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZQorREVGSU5FX0FOSU1BVElPTl9JTkhFUklU
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlLCBwbGF5U3RhdGUsIFBsYXlTdGF0
ZSkKK0RFRklORV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBs
YXlTdGF0ZSwgcGxheVN0YXRlLCBQbGF5U3RhdGUpCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlLCBwbGF5U3RhdGUsIFBsYXlTdGF0ZSkK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbgorREVGSU5FX0FO
SU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24s
IHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbikKK0RFRklORV9BTklNQVRJT05fSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCB0aW1pbmdGdW5jdGlv
biwgVGltaW5nRnVuY3Rpb24pCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlv
bikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBzZXRBcHBlYXJhbmNlLCBhcHBlYXJhbmNl
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgc2V0
QXBwZWFyYW5jZSwgaW5pdGlhbEFwcGVhcmFuY2UpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgc2V0QXBwZWFyYW5jZSkKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZmFjZVZpc2liaWxpdHkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwgc2V0QmFja2ZhY2VWaXNpYmlsaXR5LCBiYWNrZmFj
ZVZpc2liaWxpdHkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCYWNr
ZmFjZVZpc2liaWxpdHksIHNldEJhY2tmYWNlVmlzaWJpbGl0eSwgaW5pdGlhbEJhY2tmYWNlVmlz
aWJpbGl0eSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0
eSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJhY2tmYWNlVmlz
aWJpbGl0eSgocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVWaXNpYmxlKSA/
IEJhY2tmYWNlVmlzaWJpbGl0eVZpc2libGUgOiBCYWNrZmFjZVZpc2liaWxpdHlIaWRkZW4pOwor
ICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcAorREVGSU5FX0VR
VUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCwgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29t
cG9zaXRlCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNvbXBvc2l0ZSwg
Q29tcG9zaXRlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBjb21wb3Np
dGUsIENvbXBvc2l0ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNvbXBv
c2l0ZSwgQ29tcG9zaXRlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4K
K0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9y
aWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRTaXplCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9wZXJ0eVdl
YmtpdEJhY2tncm91bmRTaXplLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplKQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcikKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyQ29sb3IKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXJDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQWZ0ZXJDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXJTdHlsZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJBZnRlclN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJBZnRlclN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRl
cldpZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckFmdGVyV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckFmdGVyV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJBZnRlcldpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmUpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZSkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcgorREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcikKK0RF
RklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29s
b3IpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmVDb2xvcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZQorREVGSU5F
X1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSkK
K0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3Jl
U3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aAorREVG
SU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0
aCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVm
b3JlV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQKK0RFRklORV9V
TlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kKQorREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQpCitERUZJTkVfVU5S
RUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQpCisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kU3R5bGUKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kU3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckVuZFN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5k
V2lkdGgKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
RW5kV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckVuZFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0CitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQsIHNldEJvcmRlckZpdCwg
Ym9yZGVyRml0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
Rml0LCBzZXRCb3JkZXJGaXQsIGluaXRpYWxCb3JkZXJGaXQpCitERUZJTkVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJGaXQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUJvcmRlcikKKyAgICAgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRCb3JkZXJGaXQoQm9yZGVyRml0Qm9yZGVyKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJvcmRlckZpdChCb3JkZXJGaXRMaW5l
cyk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFj
aW5nCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9u
dGFsU3BhY2luZywgc2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsIGhvcml6b250YWxCb3JkZXJT
cGFjaW5nKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9y
aXpvbnRhbFNwYWNpbmcsIHNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nLCBpbml0aWFsSG9yaXpv
bnRhbEJvcmRlclNwYWNpbmcpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJI
b3Jpem9udGFsU3BhY2luZykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9
IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7CisgICAgICAgIHNob3J0IHNwYWNp
bmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KGluc3RhbmNlLT5tX3N0eWxl
LmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcp
OworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZQorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIHNldEJvcmRlckltYWdl
LCBib3JkZXJJbWFnZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckltYWdlLCBzZXRCb3JkZXJJbWFnZSwgaW5pdGlhbE5pbmVQaWVjZUltYWdlKQorREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UpCit7CisgICAgTmluZVBpZWNlSW1h
Z2UgaW1hZ2U7CisgICAgaW5zdGFuY2UtPm1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVySW1hZ2UsIHZhbHVlLCBpbWFnZSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEJvcmRlckltYWdlKGltYWdlKTsKK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRp
dXMKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFk
aXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyU3RhcnQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yCitERUZJTkVf
VU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IpCitE
RUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29s
b3IpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUKK0RFRklORV9V
TlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkKK0RF
RklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHls
ZSkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aAorREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoKQorREVG
SU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRo
KQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRX
aWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZywg
c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nLCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcsIHNl
dFZlcnRpY2FsQm9yZGVyU3BhY2luZywgaW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2luZykKK0RF
RklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZykKK3sKKyAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZl
Y3RpdmVab29tKCk7CisgICAgICAgIHNob3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29t
cHV0ZUxlbmd0aFNob3J0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290
RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dFZlcnRpY2FsQm9yZGVyU3BhY2luZyhzcGFjaW5nKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0Qm94QWxpZ24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dEJveEFsaWduLCBzZXRCb3hBbGlnbiwgYm94QWxpZ24pCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbiwgc2V0Qm94QWxpZ24sIGluaXRpYWxCb3hBbGlnbikK
K0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduKQoreworICAgIGlmICh2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
ICAgICBFQm94QWxpZ25tZW50IGJveEFsaWdubWVudCA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAg
ICAgaWYgKGJveEFsaWdubWVudCAhPSBCSlVTVElGWSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRCb3hBbGlnbihib3hBbGlnbm1lbnQpOworICAgICAgICByZXR1cm47CisgICAg
fQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbgorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBzZXRCb3hEaXJlY3Rpb24sIGJv
eERpcmVjdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveERp
cmVjdGlvbiwgc2V0Qm94RGlyZWN0aW9uLCBpbml0aWFsQm94RGlyZWN0aW9uKQorREVGSU5FX0hB
TkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbiwgc2V0Qm94RGlyZWN0aW9u
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgsIHNldEJveEZsZXgsIGJveEZsZXgpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4LCBzZXRCb3hGbGV4LCBpbml0aWFs
Qm94RmxleCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgpCit7CisgICAg
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldEJveEZsZXgocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSk7CisgICAgfQorfQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cAorREVGSU5FX0hBTkRMRV9JTkhFUklU
KENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwLCBzZXRCb3hGbGV4R3JvdXAsIGJveEZsZXhH
cm91cCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91
cCwgc2V0Qm94RmxleEdyb3VwLCBpbml0aWFsQm94RmxleEdyb3VwKQorREVGSU5FX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hGbGV4R3JvdXAoKHVu
c2lnbmVkIGludCkocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpKTsKKyAgICB9Cit9
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzLCBzZXRCb3hMaW5lcywgYm94TGluZXMpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcywgc2V0Qm94TGluZXMsIGlu
aXRpYWxCb3hMaW5lcykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3hM
aW5lcywgc2V0Qm94TGluZXMpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3Vw
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXAs
IHNldEJveE9yZGluYWxHcm91cCwgYm94T3JkaW5hbEdyb3VwKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwLCBzZXRCb3hPcmRpbmFsR3JvdXAs
IGluaXRpYWxCb3hPcmRpbmFsR3JvdXApCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRC
b3hPcmRpbmFsR3JvdXApCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveE9yZGluYWxHcm91cCgodW5zaWduZWQgaW50
KShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOworICAgIH0KK30KKworLy8gQ1NT
UHJvcGVydHlXZWJraXRCb3hPcmllbnQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdEJveE9yaWVudCwgc2V0Qm94T3JpZW50LCBib3hPcmllbnQpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIHNldEJveE9yaWVudCwgaW5pdGlh
bEJveE9yaWVudCkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmll
bnQsIHNldEJveE9yaWVudCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBzZXRCb3hQYWNrLCBib3hQ
YWNrKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm94UGFjaywgc2V0
Qm94UGFjaywgaW5pdGlhbEJveFBhY2spCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRC
b3hQYWNrKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBFQm94QWxpZ25tZW50IGJveFBhY2sgPSAqcHJp
bWl0aXZlVmFsdWU7CisgICAgICAgIGlmIChib3hQYWNrICE9IEJTVFJFVENIICYmIGJveFBhY2sg
IT0gQkJBU0VMSU5FKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFBhY2so
Ym94UGFjayk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QsIHNldEJveFJl
ZmxlY3QsIGJveFJlZmxlY3QpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRCb3hSZWZsZWN0LCBzZXRCb3hSZWZsZWN0LCBpbml0aWFsQm94UmVmbGVjdCkKK0RFRklORV9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QpCit7CisgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFJlZmxl
Y3QoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hSZWZsZWN0KCkpOworICAgIH0gZWxzZSBpZiAodmFs
dWUtPmlzUmVmbGVjdFZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUmVmbGVjdFZhbHVlKiByZWZsZWN0
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NSZWZsZWN0VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIFJl
ZlB0cjxTdHlsZVJlZmxlY3Rpb24+IHJlZmxlY3Rpb24gPSBTdHlsZVJlZmxlY3Rpb246OmNyZWF0
ZSgpOworICAgICAgICByZWZsZWN0aW9uLT5zZXREaXJlY3Rpb24ocmVmbGVjdFZhbHVlLT5kaXJl
Y3Rpb24oKSk7CisgICAgICAgIGlmIChyZWZsZWN0VmFsdWUtPm9mZnNldCgpKSB7CisgICAgICAg
ICAgICBpbnQgdHlwZSA9IHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPnByaW1pdGl2ZVR5cGUoKTsK
KyAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSkKKyAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVuZ3RoKHJlZmxlY3RW
YWx1ZS0+b2Zmc2V0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVuZ3RoKHJlZmxl
Y3RWYWx1ZS0+b2Zmc2V0KCktPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoaW5zdGFuY2UtPm1f
c3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0
eWxlLT5lZmZlY3RpdmVab29tKCkpLCBGaXhlZCkpOworICAgICAgICB9CisgICAgICAgIE5pbmVQ
aWVjZUltYWdlIG1hc2s7CisgICAgICAgIGluc3RhbmNlLT5tYXBOaW5lUGllY2VJbWFnZShDU1NQ
cm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QsIHJlZmxlY3RWYWx1ZS0+bWFzaygpLCBtYXNrKTsKKyAg
ICAgICAgcmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldEJveFJlZmxlY3QocmVmbGVjdGlvbi5yZWxlYXNlKCkpOworICAgIH0KK30KKworLy8g
Q1NTUHJvcGVydHlCb3hTaGFkb3cKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Qm94U2hhZG93
KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hTaGFkb3coaW5zdGFuY2UtPm1fcGFy
ZW50U3R5bGUtPmJveFNoYWRvdygpID8gbmV3IFNoYWRvd0RhdGEoKmluc3RhbmNlLT5tX3BhcmVu
dFN0eWxlLT5ib3hTaGFkb3coKSkgOiAwKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5
Qm94U2hhZG93KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hTaGFkb3coMCk7Cit9
CitERUZJTkVfU0hBRE9XX1ZBTFVFKENTU1Byb3BlcnR5Qm94U2hhZG93LCBzZXRCb3hTaGFkb3cp
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93CitERUZJTkVfRVFVSVZBTEVOVF9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBDU1NQcm9wZXJ0eUJveFNoYWRvdykKK0RF
RklORV9FUVVJVkFMRU5UX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIENTU1By
b3BlcnR5Qm94U2hhZG93KQorREVGSU5FX1NIQURPV19WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJv
eFNoYWRvdywgc2V0Qm94U2hhZG93KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVj
dGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0
aW9uLCBzZXRDb2xvclNwYWNlLCBjb2xvclNwYWNlKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRDb2xvckNvcnJlY3Rpb24pCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENv
bG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7Cit9CitERUZJTkVfSEFORExFX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uLCBzZXRDb2xvclNwYWNlKQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIHNldENvbHVtbkJyZWFrQWZ0ZXIsIGNvbHVt
bkJyZWFrQWZ0ZXIpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5CcmVha0FmdGVyLCBzZXRDb2x1bW5CcmVha0FmdGVyLCBpbml0aWFsUGFnZUJyZWFrKQorREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIHNldENv
bHVtbkJyZWFrQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUK
K0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3Jl
LCBzZXRDb2x1bW5CcmVha0JlZm9yZSwgY29sdW1uQnJlYWtCZWZvcmUpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgc2V0Q29sdW1uQnJl
YWtCZWZvcmUsIGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUsIHNldENvbHVtbkJyZWFrQmVmb3JlKQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlCitERUZJTkVfSEFORExFX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSwgc2V0Q29sdW1uQnJlYWtJbnNpZGUs
IGNvbHVtbkJyZWFrSW5zaWRlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uQnJlYWtJbnNpZGUsIHNldENvbHVtbkJyZWFrSW5zaWRlLCBpbml0aWFsUGFnZUJy
ZWFrKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpCit7
CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgIEVQYWdlQnJlYWsgcGIgPSAqcHJpbWl0aXZlVmFsdWU7CisgICAg
ICAgIGlmIChwYiAhPSBQQkFMV0FZUykKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRDb2x1bW5CcmVha0luc2lkZShwYik7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkNvdW50CitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50
KQoreworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+aGFzQXV0b0NvbHVtbkNvdW50
KCkpCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uQ291bnQoKTsK
KyAgICBlbHNlCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5Db3VudChpbnN0
YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291bnQoKSk7Cit9CitERUZJTkVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRIYXNBdXRvQ29sdW1uQ291bnQoKTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkNvdW50KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldEhhc0F1dG9Db2x1bW5Db3VudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Q29sdW1uQ291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+
KHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7CisgICAgfQorfQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkdhcAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5HYXApCit7CisgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5oYXNOb3JtYWxD
b2x1bW5HYXAoKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc05vcm1hbENvbHVt
bkdhcCgpOworICAgIGVsc2UKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbkdh
cChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uR2FwKCkpOworfQorREVGSU5FX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXApCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldEhhc05vcm1hbENvbHVtbkdhcCgpOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uR2FwKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5HYXAocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGhGbG9hdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRT
dHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkpOworICAgIH0KK30KKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRf
VEhSRUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blJ1bGVDb2xvciwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZVdpZHRoKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5SdWxlKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldENvbHVtblJ1bGUoKTsK
K30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZSkKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9C
QUNLVVAoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsIHNldENvbHVtblJ1bGVDb2xv
ciwgY29sdW1uUnVsZUNvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgc2V0Q29sdW1uUnVsZUNvbG9yKQorREVG
SU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwg
c2V0Q29sdW1uUnVsZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHls
ZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxl
LCBzZXRDb2x1bW5SdWxlU3R5bGUsIGNvbHVtblJ1bGVTdHlsZSkKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSwgc2V0Q29sdW1uUnVsZVN0eWxl
LCBpbml0aWFsQm9yZGVyU3R5bGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZVN0eWxlLCBzZXRDb2x1bW5SdWxlU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZVdpZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlV2lkdGgsIHNldENvbHVtblJ1bGVXaWR0aCwgY29sdW1uUnVsZVdpZHRo
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRo
LCBzZXRDb2x1bW5SdWxlV2lkdGgsIGluaXRpYWxCb3JkZXJXaWR0aCkKK0RFRklORV9XSURUSF9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgc2V0Q29sdW1uUnVsZVdpZHRo
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4KK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4sIHNldENvbHVtblNwYW4sIGNvbHVtblNwYW4p
CitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuLCBzZXRD
b2x1bW5TcGFuLCBpbml0aWFsQ29sdW1uU3BhbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblNwYW4pCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRDb2x1bW5TcGFuKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQWxsKTsK
KyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgKK0RFRklORV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgpCit7CisgICAgaWYgKGluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uV2lkdGgoKSkKKyAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOworICAgIGVsc2UKKyAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldENvbHVtbldpZHRoKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jb2x1
bW5XaWR0aCgpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lk
dGgpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOwor
fQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgpCit7CisgICAgaWYg
KHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8p
CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5X
aWR0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGluc3RhbmNlLT5tX3N0eWxl
LmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+
ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bnMKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucykKK3sKKyAgICBpZiAo
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmhhc0F1dG9Db2x1bW5XaWR0aCgpKQorICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7CisgICAgZWxzZQorICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgoaW5zdGFuY2UtPm1fcGFyZW50
U3R5bGUtPmNvbHVtbldpZHRoKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5D
b3VudChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291bnQoKSk7Cit9CitERUZJTkVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRD
b2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkNvdW50KCkpOworfQorREVGSU5F
X05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zKQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdEZvbnRTaXplRGVsdGEKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRG
b250U2l6ZURlbHRhKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRT
aXplRGVsdGEpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVs
dGEpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0CitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQsIHNldEhpZ2hsaWdodCwgaGlnaGxpZ2h0KQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0LCBzZXRIaWdo
bGlnaHQsIGluaXRpYWxIaWdobGlnaHQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRI
aWdobGlnaHQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
SGlnaGxpZ2h0KG51bGxBdG9tKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldEhpZ2hsaWdodChwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7
CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcgorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyLCBz
ZXRIeXBoZW5hdGlvblN0cmluZywgaHlwaGVuYXRpb25TdHJpbmcpCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIsIHNldEh5cGhlbmF0aW9u
U3RyaW5nLCBpbml0aWFsSHlwaGVuYXRpb25TdHJpbmcpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25TdHJpbmcobnVsbEF0b20pOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25TdHJpbmco
cHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOworICAgIH0KK30KKworLy8gQ1NTUHJv
cGVydHlXZWJraXRIeXBoZW5hdGVMb2NhbGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZSwgc2V0SHlwaGVuYXRpb25Mb2NhbGUsIGh5cGhlbmF0
aW9uTG9jYWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0SHlwaGVu
YXRlTG9jYWxlLCBzZXRIeXBoZW5hdGlvbkxvY2FsZSwgaW5pdGlhbEh5cGhlbmF0aW9uTG9jYWxl
KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9jYWxlKQoreworICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVB
dXRvKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEh5cGhlbmF0aW9uTG9jYWxl
KG51bGxBdG9tKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldEh5cGhlbmF0aW9uTG9jYWxlKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsK
KyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0SHlwaGVucworREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0SHlwaGVucywgc2V0SHlwaGVucywgaHlwaGVucykKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMsIHNldEh5cGhlbnMs
IGluaXRpYWxIeXBoZW5zKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEh5
cGhlbnMsIHNldEh5cGhlbnMpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIHNldEtIVE1MTGlu
ZUJyZWFrLCBraHRtbExpbmVCcmVhaykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdExpbmVCcmVhaywgc2V0S0hUTUxMaW5lQnJlYWssIGluaXRpYWxLSFRNTExpbmVCcmVh
aykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIHNldEtI
VE1MTGluZUJyZWFrKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcAorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wLCBzZXRMaW5lQ2xhbXAsIGxp
bmVDbGFtcCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFt
cCwgc2V0TGluZUNsYW1wLCBpbml0aWFsTGluZUNsYW1wKQorREVGSU5FX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0TGluZUNsYW1wKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnQgdHlwZSA9IHByaW1p
dGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZShwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBMaW5lQ2xhbXBMaW5lQ291bnQpKTsKKyAgICAg
ICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVl
KHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UpLCBMaW5lQ2xhbXBQZXJjZW50YWdlKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdExvZ2ljYWxXaWR0aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRMb2dpY2FsV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVp
Z2h0CitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxI
ZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdExvZ2lj
YWxIZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRMb2dp
Y2FsSGVpZ2h0KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2Us
IHNldE1hcmdpbkFmdGVyQ29sbGFwc2UsIG1hcmdpbkFmdGVyQ29sbGFwc2UpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBzZXRNYXJn
aW5BZnRlckNvbGxhcHNlLCBpbml0aWFsTWFyZ2luQWZ0ZXJDb2xsYXBzZSkKK0RFRklORV9IQU5E
TEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBzZXRNYXJnaW5B
ZnRlckNvbGxhcHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xs
YXBzZSwgc2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIG1hcmdpbkJlZm9yZUNvbGxhcHNlKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2Us
IHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBpbml0aWFsTWFyZ2luQmVmb3JlQ29sbGFwc2UpCitE
RUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2Us
IHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJv
dHRvbUNvbGxhcHNlCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkJvdHRvbUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFw
c2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UKK0RFRklORV9FUVVJ
VkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQ29sbGFwc2UKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29s
bGFwc2UpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcmdpbkJlZm9yZUNvbGxhcHNl
KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSgpKTsKKyAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShpbnN0YW5jZS0+bV9wYXJl
bnRTdHlsZS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSgpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dE1hcmdpbkJlZm9yZUNvbGxhcHNlKE1DT0xMQVBTRSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldE1hcmdpbkFmdGVyQ29sbGFwc2UoTUNPTExBUFNFKTsKK30KK0RFRklORV9OVUxMX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQWZ0ZXIKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQWZ0ZXIpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkFmdGVyKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlCitERUZJTkVf
VU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZSkKK0RFRklO
RV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlKQorREVG
SU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFy
dAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFy
dCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3Rh
cnQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFy
dCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlCitERUZJTkVfTlVMTF9JTkhFUklUKENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZSkKK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFycXVlZURpcmVjdGlvbigpKTsKKyAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+
bWFycXVlZUluY3JlbWVudCgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNw
ZWVkKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJxdWVlU3BlZWQoKSk7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUt
Pm1hcnF1ZWVMb29wQ291bnQoKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVC
ZWhhdmlvcihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkpOworfQor
REVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIHNldE1hcnF1ZWVEaXJlY3Rpb24sIG1hcnF1ZWVE
aXJlY3Rpb24pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
RGlyZWN0aW9uLCBzZXRNYXJxdWVlRGlyZWN0aW9uLCBpbml0aWFsTWFycXVlZURpcmVjdGlvbikK
K0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBz
ZXRNYXJxdWVlRGlyZWN0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1l
bnQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1l
bnQsIHNldE1hcnF1ZWVJbmNyZW1lbnQsIG1hcnF1ZWVJbmNyZW1lbnQpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LCBzZXRNYXJxdWVlSW5j
cmVtZW50LCBpbml0aWFsTWFycXVlZUluY3JlbWVudCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFsbDoKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgxLCBGaXhlZCkpOyAv
LyAxcHguCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0
aCg2LCBGaXhlZCkpOyAvLyA2cHguIFRoZSBXaW5JRSBkZWZhdWx0LgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgzNiwgRml4ZWQpKTsgLy8gMzZweC4K
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgIExlbmd0aCBsZW5ndGggPSBjb252ZXJ0
VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5j
ZS0+bV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOworICAgICAgICAgICAgaWYgKG9rKQorICAg
ICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KGxlbmd0
aCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJl
cGV0aXRpb24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVS
ZXBldGl0aW9uLCBzZXRNYXJxdWVlTG9vcENvdW50LCBtYXJxdWVlTG9vcENvdW50KQorREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sIHNldE1h
cnF1ZWVMb29wQ291bnQsIGluaXRpYWxNYXJxdWVlTG9vcENvdW50KQorREVGSU5FX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pCit7CisgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQorICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoLTEpOyAvLyAtMSBt
ZWFucyByZXBlYXQgZm9yZXZlci4KKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KHByaW1pdGl2ZVZhbHVl
LT5nZXRJbnRWYWx1ZSgpKTsKKyAgICB9Cit9CisKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlU3BlZWQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
cGVlZCwgc2V0TWFycXVlZVNwZWVkLCBtYXJxdWVlU3BlZWQpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQsIHNldE1hcnF1ZWVTcGVlZCwgaW5pdGlh
bE1hcnF1ZWVTcGVlZCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVl
ZCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlU2xvdzoKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0TWFycXVlZVNwZWVkKDUwMCk7IC8vIDUwMCBtc2VjLgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKKyAgICAgICAgICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDg1KTsgLy8gODVtc2VjLiBUaGUg
V2luSUUgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVGYXN0OgorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJx
dWVlU3BlZWQoMTApOyAvLyAxMG1zZWMuIFN1cGVyIGZhc3QuCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpCisgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDEwMDAgKiBwcmltaXRpdmVWYWx1ZS0+
Z2V0SW50VmFsdWUoKSk7CisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRp
dmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NUykKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVl
KCkpOworICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSAvLyBGb3Igc2Nyb2xsYW1vdW50IHN1cHBv
cnQuCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKHByaW1p
dGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICB9Cit9CisvLyBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZVN0eWxlLCBzZXRNYXJxdWVlQmVoYXZpb3IsIG1hcnF1ZWVCZWhhdmlvcikKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgc2V0TWFycXVlZUJl
aGF2aW9yLCBpbml0aWFsTWFycXVlZUJlaGF2aW9yKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgc2V0TWFycXVlZUJlaGF2aW9yKQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2sKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFzaykK
K3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xlYXJNYXNrTGF5ZXJzKCk7Cit9CitERUZJTkVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2spCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PmluaGVyaXRNYXNrTGF5ZXJzKCppbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFza0xheWVycygp
KTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFzaykKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lO
SEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgbWFzaywgTWFzaywgYXR0YWNo
bWVudCwgQXR0YWNobWVudCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIG1hc2ssIE1hc2ssIGF0dGFjaG1lbnQsIEF0dGFj
aG1lbnQpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRN
YXNrQXR0YWNobWVudCwgbWFzaywgTWFzaywgYXR0YWNobWVudCwgQXR0YWNobWVudCkKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc2V0TWFza0JveEltYWdlLCBtYXNrQm94SW1hZ2Up
CitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHNl
dE1hc2tCb3hJbWFnZSwgaW5pdGlhbE5pbmVQaWVjZUltYWdlKQorREVGSU5FX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0TWFza0JveEltYWdlKQoreworICAgIE5pbmVQaWVjZUltYWdlIGltYWdlOwor
ICAgIGluc3RhbmNlLT5tYXBOaW5lUGllY2VJbWFnZShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJ
bWFnZSwgdmFsdWUsIGltYWdlKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFza0JveElt
YWdlKGltYWdlKTsKK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcAorREVGSU5FX0hB
TkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgbWFzaywg
TWFzaywgY2xpcCwgQ2xpcCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0TWFza0NsaXAsIG1hc2ssIE1hc2ssIGNsaXAsIENsaXApCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgbWFzaywgTWFz
aywgY2xpcCwgQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3Np
dGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBtYXNrLCBNYXNr
LCBjb21wb3NpdGUsIENvbXBvc2l0ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29t
cG9zaXRlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZQorREVGSU5FX0hBTkRMRV9G
SUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIG1hc2ssIE1hc2ss
IGltYWdlLCBJbWFnZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0TWFza0ltYWdlLCBtYXNrLCBNYXNrLCBpbWFnZSwgSW1hZ2UpCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIG1hc2ssIE1h
c2ssIGltYWdlLCBJbWFnZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4s
IG1hc2ssIE1hc2ssIG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBtYXNrLCBNYXNrLCBvcmlnaW4sIE9y
aWdpbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tPcmlnaW4sIG1hc2ssIE1hc2ssIG9yaWdpbiwgT3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvbgorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RXTyhDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVFdP
KENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSkKK0RFRklORV9OVUxMX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblgKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWCwgbWFzaywgTWFzaywgeFBvc2l0aW9uLCBYUG9zaXRpb24pCitE
RUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvblgsIG1hc2ssIE1hc2ssIHhQb3NpdGlvbiwgWFBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9G
SUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgbWFzaywgTWFz
aywgeFBvc2l0aW9uLCBYUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uWQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25ZLCBtYXNrLCBNYXNrLCB5UG9zaXRpb24sIFlQb3NpdGlvbikKK0RFRklORV9I
QU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwg
bWFzaywgTWFzaywgeVBvc2l0aW9uLCBZUG9zaXRpb24pCitERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBtYXNrLCBNYXNrLCB5UG9z
aXRpb24sIFlQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0CitERUZJ
TkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCwgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSkK
K0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRZKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBtYXNrLCBNYXNrLCByZXBlYXRY
LCBSZXBlYXRYKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WCwgbWFzaywgTWFzaywgcmVwZWF0WCwgUmVwZWF0WCkKK0RFRklORV9I
QU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBtYXNr
LCBNYXNrLCByZXBlYXRYLCBSZXBlYXRYKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRZCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRZLCBtYXNrLCBNYXNrLCByZXBlYXRZLCBSZXBlYXRZKQorREVGSU5FX0hBTkRMRV9G
SUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgbWFzaywgTWFz
aywgcmVwZWF0WSwgUmVwZWF0WSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBtYXNrLCBNYXNrLCByZXBlYXRZLCBSZXBlYXRZKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNrLCBNYXNrLCBzaXplLCBTaXpl
KQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNr
U2l6ZSwgbWFzaywgTWFzaywgc2l6ZSwgU2l6ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNrLCBNYXNrLCBzaXplLCBTaXplKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9j
a3F1b3RlQ29sb3IsIHNldE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIG1hdGNoTmVh
cmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBzZXRNYXRjaE5lYXJlc3RN
YWlsQmxvY2txdW90ZUNvbG9yLCBpbml0aWFsTWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xv
cikKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWls
QmxvY2txdW90ZUNvbG9yLCBzZXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lO
SEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGgpCitERUZJTkVfVU5SRUFDSEFC
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCkKK0RFRklORV9VTlJF
QUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCkKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0CitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFD
SEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0KQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJM
RV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0CitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdE5ic3BNb2RlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRO
YnNwTW9kZSwgc2V0TkJTUE1vZGUsIG5ic3BNb2RlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIHNldE5CU1BNb2RlLCBpbml0aWFsTkJTUE1vZGUpCitE
RUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIHNldE5CU1BNb2Rl
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcgorREVGSU5FX1VOUkVBQ0hBQkxF
X0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXIpCitERUZJTkVfVU5SRUFDSEFC
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKK0RFRklORV9VTlJFQUNI
QUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRQYWRkaW5nQmVmb3JlCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRp
bmdFbmQKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0UGFkZGlu
Z0VuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGFkZGlu
Z0VuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdF
bmQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0CitERUZJTkVfVU5SRUFDSEFC
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydCkKK0RFRklORV9VTlJFQUNI
QUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorREVGSU5FX1VOUkVB
Q0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZSwgc2V0UGVyc3BlY3RpdmUsIHBlcnNwZWN0aXZlKQorREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUsIHNldFBlcnNwZWN0aXZl
LCBpbml0aWFsUGVyc3BlY3RpdmUpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRQZXJz
cGVjdGl2ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0UGVyc3BlY3RpdmUoMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBmbG9hdCBwZXJzcGVjdGl2ZVZhbHVlOworICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2
ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6
aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKKyAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxmbG9hdD4ocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5n
dGgoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUs
ICBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgICAgIGVsc2UgaWYg
KHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKKyAgICAgICAgICAgIC8v
IEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBw
eC4KKyAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0
YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCAgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpv
b20oKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlm
IChwZXJzcGVjdGl2ZVZhbHVlID49IDAuMGYpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVWYWx1ZSk7CisgICAgfQorfQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRf
VFdPKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4sIENTU1Byb3BlcnR5V2Via2l0
UGVyc3BlY3RpdmVPcmlnaW5YLCBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSkK
K0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZU9yaWdpbiwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIENTU1Byb3BlcnR5
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZU9yaWdpblgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0
aXZlT3JpZ2luWCwgc2V0UGVyc3BlY3RpdmVPcmlnaW5YLCBwZXJzcGVjdGl2ZU9yaWdpblgpCitE
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgs
IHNldFBlcnNwZWN0aXZlT3JpZ2luWCwgaW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWCkKK0RFRklO
RV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIHNldFBl
cnNwZWN0aXZlT3JpZ2luWCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWQorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZLCBzZXRQZXJzcGVjdGl2ZU9y
aWdpblksIHBlcnNwZWN0aXZlT3JpZ2luWSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgc2V0UGVyc3BlY3RpdmVPcmlnaW5ZLCBpbml0
aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgc2V0UGVyc3BlY3RpdmVPcmlnaW5ZLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJp
bmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBz
ZXRWaXN1YWxseU9yZGVyZWQsIHZpc3VhbGx5T3JkZXJlZCkKK0RFRklORV9IQU5ETEVfSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBzZXRWaXN1YWxseU9yZGVyZWQsIGluaXRp
YWxWaXN1YWxseU9yZGVyZWQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRl
cmluZykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
KQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFZpc3VhbGx5T3JkZXJlZChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVZpc3VhbCk7CisgICAgfQorfQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSwgc2V0VGV4dENvbWJpbmUsIHRleHRDb21iaW5lKQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUsIHNldFRl
eHRDb21iaW5lLCBpbml0aWFsVGV4dENvbWJpbmUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0VGV4dENvbWJpbmUsIHNldFRleHRDb21iaW5lKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0CitERUZJTkVfTlVMTF9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpCitERUZJTkVfTlVMTF9JTklUSUFM
KENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpCitERUZJTkVfTlVMTF9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcworREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpcykKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXMpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpcykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcgorREVGSU5F
X0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9y
LCBzZXRUZXh0RW1waGFzaXNDb2xvciwgdGV4dEVtcGhhc2lzQ29sb3IsIGNvbG9yKQorREVGSU5F
X0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3Is
IHNldFRleHRFbXBoYXNpc0NvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yLCBzZXRUZXh0RW1waGFzaXNDb2xvcikKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbgorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24sIHNldFRleHRFbXBoYXNp
c1Bvc2l0aW9uLCB0ZXh0RW1waGFzaXNQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBzZXRUZXh0RW1waGFzaXNQb3Np
dGlvbiwgaW5pdGlhbFRleHRFbXBoYXNpc1Bvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9WQUxVRShD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBzZXRUZXh0RW1waGFzaXNQb3Np
dGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZQorLy8gTk9URTog
dGhlIG9yaWdpbmFsIGNvZGUgd2FzIGJyb2tlbiBzbyBJIGhhdmUgY29udmVydGVkIHRoaXMgdG8g
bWF0Y2ggdGhlIGludGVudCBvZiB0aGUgb3JpZ2luYWwgY29kZQorREVGSU5FX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0VGV4dEVtcGhhc2lzRmlsbChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+dGV4dEVtcGhh
c2lzRmlsbCgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyayhp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+dGV4dEVtcGhhc2lzTWFyaygpKTsKKyAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhpbnN0YW5jZS0+bV9wYXJlbnRT
dHlsZS0+dGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldFRleHRFbXBoYXNpc0ZpbGwoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFzaXNGaWxs
KCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzTWFyaygpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNp
c0N1c3RvbU1hcmsoKSk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXNTdHlsZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpIHsKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0Zp
bGxGaWxsZWQpOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNp
c01hcmsoVGV4dEVtcGhhc2lzTWFya0N1c3RvbSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5n
VmFsdWUoKSk7CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVGaWxsZWQgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVPcGVuKSB7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lz
RmlsbCgqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFya0F1dG8pOworICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBo
YXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7CisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyaygqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20p
OworICAgICAgICB9CisgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAg
ICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1
ZSk7CisgICAgICAgIEFTU0VSVChsaXN0LT5sZW5ndGgoKSA9PSAyKTsKKyAgICAgICAgaWYgKGxp
c3QtPmxlbmd0aCgpICE9IDIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgICAgICAgIEFTU0VSVChsaXN0LT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKGkpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOworICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
PihsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICAgICAgICAgIGlmICh2YWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8fCB2YWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZU9wZW4pCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRF
bXBoYXNpc0ZpbGwoKnZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyaygqdmFsdWUpOworICAgICAgICB9
CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51
bGxBdG9tKTsKKyAgICB9Cit9CisKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9y
CitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxD
b2xvciwgc2V0VGV4dEZpbGxDb2xvciwgdGV4dEZpbGxDb2xvciwgY29sb3IpCitERUZJTkVfSEFO
RExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCBzZXRUZXh0
RmlsbENvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRGaWxsQ29sb3IsIHNldFRleHRGaWxsQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4
dFNlY3VyaXR5CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2Vj
dXJpdHksIHNldFRleHRTZWN1cml0eSwgdGV4dFNlY3VyaXR5KQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5LCBzZXRUZXh0U2VjdXJpdHksIGluaXRp
YWxUZXh0U2VjdXJpdHkpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4
dFNlY3VyaXR5LCBzZXRUZXh0U2VjdXJpdHkpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UpCitE
RUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSkKK0RFRklORV9O
VUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSkKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIHNldFRleHRTdHJva2VDb2xvciwgdGV4dFN0cm9r
ZUNvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTdHJva2VDb2xvciwgc2V0VGV4dFN0cm9rZUNvbG9yKQorREVGSU5FX0hBTkRMRV9W
QUxVRV9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgc2V0VGV4dFN0cm9r
ZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aAorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBzZXRUZXh0U3Ry
b2tlV2lkdGgsIHRleHRTdHJva2VXaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgc2V0VGV4dFN0cm9rZVdpZHRoLCBpbml0aWFsVGV4
dFN0cm9rZVdpZHRoKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdp
ZHRoKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBmbG9hdCB3aWR0aCA9IDA7CisgICAgICAgIHN3aXRj
aCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRo
aW46CisgICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06CisgICAgICAgIGNhc2UgQ1NTVmFsdWVU
aGljazogeworICAgICAgICAgICAgZG91YmxlIHJlc3VsdCA9IDEuMCAvIDQ4OworICAgICAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTWVkaXVtKQorICAg
ICAgICAgICAgICAgIHJlc3VsdCAqPSAzOworICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVUaGljaykKKyAgICAgICAgICAgICAgICByZXN1
bHQgKj0gNTsKKyAgICAgICAgICAgIHdpZHRoID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShy
ZXN1bHQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGlu
c3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0
YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB3aWR0aCA9IHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNl
LT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldFRleHRTdHJva2VXaWR0aCh3aWR0aCk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtLCBzZXRUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKK0RFRklORV9IQU5ETEVfSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgc2V0VHJhbnNmb3JtLCBpbml0aWFsVHJhbnNm
b3JtKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKQoreworICAgIFRy
YW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICBjcmVhdGVUcmFuc2Zvcm1PcGVyYXRp
b25zKHZhbHVlLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1l
bnRTdHlsZSwgb3BlcmF0aW9ucyk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRyYW5zZm9y
bShvcGVyYXRpb25zKTsKK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4K
K0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpbiwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLCBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWikK
K0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9USFJFRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpbiwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLCBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWikK
K0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIHNldFRyYW5zZm9ybU9yaWdpblgs
IHRyYW5zZm9ybU9yaWdpblgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5YLCBzZXRUcmFuc2Zvcm1PcmlnaW5YLCBpbml0aWFsVHJhbnNmb3Jt
T3JpZ2luWCkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1P
cmlnaW5YLCBzZXRUcmFuc2Zvcm1PcmlnaW5YLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWQorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgc2V0VHJhbnNm
b3JtT3JpZ2luWSwgdHJhbnNmb3JtT3JpZ2luWSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblksIHNldFRyYW5zZm9ybU9yaWdpblksIGluaXRp
YWxUcmFuc2Zvcm1PcmlnaW5ZKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybU9yaWdpblksIHNldFRyYW5zZm9ybU9yaWdpblksIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5a
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5a
LCBzZXRUcmFuc2Zvcm1PcmlnaW5aLCB0cmFuc2Zvcm1PcmlnaW5aKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgc2V0VHJhbnNmb3JtT3Jp
Z2luWiwgaW5pdGlhbFRyYW5zZm9ybU9yaWdpblopCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5aKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAoQ1NTUHJpbWl0
aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUo
KSkpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VHJhbnNmb3JtT3JpZ2luWihz
dGF0aWNfY2FzdDxmbG9hdD4ocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5n
dGgoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUp
KSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZSwgc2V0VHJh
bnNmb3JtU3R5bGUzRCwgdHJhbnNmb3JtU3R5bGUzRCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlLCBzZXRUcmFuc2Zvcm1TdHlsZTNELCBpbml0
aWFsVHJhbnNmb3JtU3R5bGUzRCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybVN0eWxlKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VHJh
bnNmb3JtU3R5bGUzRCgocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVQcmVz
ZXJ2ZTNkKSA/IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEIDogVHJhbnNmb3JtU3R5bGUzREZs
YXQpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uCitERUZJTkVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24pCit7CisgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPmluaGVyaXRUcmFuc2l0aW9ucyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+dHJhbnNp
dGlvbnMoKSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24p
Cit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFyVHJhbnNpdGlvbnMoKTsKK30KK0RFRklO
RV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbikKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uRGVsYXkKK0RFRklORV9UUkFOU0lUSU9OX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksIGRlbGF5LCBEZWxheSkKK0RFRklORV9UUkFOU0lU
SU9OX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksIGRlbGF5LCBEZWxh
eSkKK0RFRklORV9UUkFOU0lUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRl
bGF5LCBkZWxheSwgRGVsYXkpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0
aW9uCitERUZJTkVfVFJBTlNJVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlv
bkR1cmF0aW9uLCBkdXJhdGlvbiwgRHVyYXRpb24pCitERUZJTkVfVFJBTlNJVElPTl9JTklUSUFM
KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgRHVyYXRpb24p
CitERUZJTkVfVFJBTlNJVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJh
dGlvbiwgZHVyYXRpb24sIER1cmF0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRp
b25Qcm9wZXJ0eQorREVGSU5FX1RSQU5TSVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25Qcm9wZXJ0eSwgcHJvcGVydHksIFByb3BlcnR5KQorREVGSU5FX1RSQU5TSVRJT05f
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgcHJvcGVydHksIFBy
b3BlcnR5KQorREVGSU5FX1RSQU5TSVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0
aW9uUHJvcGVydHksIHByb3BlcnR5LCBQcm9wZXJ0eSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24KK0RFRklORV9UUkFOU0lUSU9OX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1bmN0aW9uLCBUaW1p
bmdGdW5jdGlvbikKK0RFRklORV9UUkFOU0lUSU9OX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbikK
K0RFRklORV9UUkFOU0lUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uLCB0aW1pbmdGdW5jdGlvbiwgVGltaW5nRnVuY3Rpb24pCisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0VXNlckRyYWcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dFVzZXJEcmFnLCBzZXRVc2VyRHJhZywgdXNlckRyYWcpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgc2V0VXNlckRyYWcsIGluaXRpYWxVc2VyRHJhZykK
K0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgc2V0VXNlckRy
YWcpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeQorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgc2V0VXNlck1vZGlmeSwgdXNlck1vZGlm
eSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIHNl
dFVzZXJNb2RpZnksIGluaXRpYWxVc2VyTW9kaWZ5KQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIHNldFVzZXJNb2RpZnkpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0VXNlclNlbGVjdAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
VXNlclNlbGVjdCwgc2V0VXNlclNlbGVjdCwgdXNlclNlbGVjdCkKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIHNldFVzZXJTZWxlY3QsIGluaXRpYWxV
c2VyU2VsZWN0KQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxl
Y3QsIHNldFVzZXJTZWxlY3QpCisKKy8vIENTU1Byb3BlcnR5Q2xpcFBhdGgKK0RFRklORV9JTkhF
UklUKENTU1Byb3BlcnR5Q2xpcCkKK3sKKyAgICBMZW5ndGggdG9wOworICAgIExlbmd0aCByaWdo
dDsKKyAgICBMZW5ndGggYm90dG9tOworICAgIExlbmd0aCBsZWZ0OworICAgIGJvb2wgaGFzQ2xp
cCA9IHRydWU7CisgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5oYXNDbGlwKCkpIHsK
KyAgICAgICAgdG9wID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmNsaXBUb3AoKTsKKyAgICAg
ICAgcmlnaHQgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y2xpcFJpZ2h0KCk7CisgICAgICAg
IGJvdHRvbSA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jbGlwQm90dG9tKCk7CisgICAgICAg
IGxlZnQgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y2xpcExlZnQoKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBoYXNDbGlwID0gZmFsc2U7CisgICAgICAgIHRvcCA9IHJpZ2h0ID0gYm90dG9t
ID0gbGVmdCA9IExlbmd0aCgpOworICAgIH0KKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q2xp
cCh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRI
YXNDbGlwKGhhc0NsaXApOworfQorCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUNsaXApCit7
CisgICAgTGVuZ3RoIGxlbmd0aCA9IExlbmd0aCgpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRDbGlwKGxlbmd0aCwgbGVuZ3RoLCBsZW5ndGgsIGxlbmd0aCk7CisgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEhhc0NsaXAoZmFsc2UpOworfQorCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlD
bGlwKQoreworICAgIExlbmd0aCB0b3A7CisgICAgTGVuZ3RoIHJpZ2h0OworICAgIExlbmd0aCBi
b3R0b207CisgICAgTGVuZ3RoIGxlZnQ7CisgICAgYm9vbCBoYXNDbGlwID0gdHJ1ZTsKKyAgICBm
bG9hdCB6b29tRmFjdG9yID0gaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKKyAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19SRUNUKSB7CisgICAgICAgICAgICBSZWN0KiByZWN0ID0gcHJp
bWl0aXZlVmFsdWUtPmdldFJlY3RWYWx1ZSgpOworICAgICAgICAgICAgaWYgKCFyZWN0KQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRvcCA9IENTU1N0eWxlU2VsZWN0b3I6
OmNvbnZlcnRUb0xlbmd0aChyZWN0LT50b3AoKSwgaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGlu
c3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgcmln
aHQgPSBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9MZW5ndGgocmVjdC0+cmlnaHQoKSwgaW5z
dGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21G
YWN0b3IpOworICAgICAgICAgICAgYm90dG9tID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRv
TGVuZ3RoKHJlY3QtPmJvdHRvbSgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2Ut
Pm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBsZWZ0ID0gQ1NT
U3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKHJlY3QtPmxlZnQoKSwgaW5zdGFuY2UtPm1f
c3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwor
ICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpICE9IENTU1ZhbHVl
QXV0bykgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRDbGlwKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CisgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNDbGlwKGhhc0NsaXApOworICAgIH0KK30KKworLy8gQ1NT
UHJvcGVydHlDbGlwUnVsZQorLy8gQ1NTUHJvcGVydHlNYXNrCisvLyBDU1NQcm9wZXJ0eUVuYWJs
ZUJhY2tncm91bmQKKy8vIENTU1Byb3BlcnR5RmlsdGVyCisvLyBDU1NQcm9wZXJ0eUZsb29kQ29s
b3IKKy8vIENTU1Byb3BlcnR5Rmxvb2RPcGFjaXR5CisvLyBDU1NQcm9wZXJ0eUxpZ2h0aW5nQ29s
b3IKKy8vIENTU1Byb3BlcnR5U3RvcENvbG9yCisvLyBDU1NQcm9wZXJ0eVN0b3BPcGFjaXR5Cisv
LyBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbgorLy8gQ1NTUHJvcGVydHlDb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzCisvLyBDU1NQcm9wZXJ0eUNvbG9yUHJvZmlsZQorLy8gQ1NTUHJvcGVy
dHlDb2xvclJlbmRlcmluZworLy8gQ1NTUHJvcGVydHlGaWxsCisvLyBDU1NQcm9wZXJ0eUZpbGxP
cGFjaXR5CisvLyBDU1NQcm9wZXJ0eUZpbGxSdWxlCisvLyBDU1NQcm9wZXJ0eUltYWdlUmVuZGVy
aW5nCisvLyBDU1NQcm9wZXJ0eU1hcmtlcgorLy8gQ1NTUHJvcGVydHlNYXJrZXJFbmQKKy8vIENT
U1Byb3BlcnR5TWFya2VyTWlkCisvLyBDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0CisvLyBDU1NQcm9w
ZXJ0eVNoYXBlUmVuZGVyaW5nCisvLyBDU1NQcm9wZXJ0eVN0cm9rZQorLy8gQ1NTUHJvcGVydHlT
dHJva2VEYXNoYXJyYXkKKy8vIENTU1Byb3BlcnR5U3Ryb2tlRGFzaG9mZnNldAorLy8gQ1NTUHJv
cGVydHlTdHJva2VMaW5lY2FwCisvLyBDU1NQcm9wZXJ0eVN0cm9rZUxpbmVqb2luCisvLyBDU1NQ
cm9wZXJ0eVN0cm9rZU1pdGVybGltaXQKKy8vIENTU1Byb3BlcnR5U3Ryb2tlT3BhY2l0eQorLy8g
Q1NTUHJvcGVydHlTdHJva2VXaWR0aAorLy8gQ1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZQor
Ly8gQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0CisvLyBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxp
bmUKKy8vIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwKKy8vIENTU1Byb3Bl
cnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsCisvLyBDU1NQcm9wZXJ0eUtlcm5pbmcKKy8vIENT
U1Byb3BlcnR5VGV4dEFuY2hvcgorLy8gQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3QKKy8vIENTU1By
b3BlcnR5V3JpdGluZ01vZGUKKy8vIENTU1Byb3BlcnR5V2Via2l0U3ZnU2hhZG93CisKKy8vIENT
U1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVn
aW9uLCBzZXREYXNoYm9hcmRSZWdpb25zLCBkYXNoYm9hcmRSZWdpb25zKQorREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uLCBzZXREYXNoYm9hcmRS
ZWdpb25zLCBpbml0aWFsRGFzaGJvYXJkUmVnaW9ucykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdERhc2hib2FyZFJlZ2lvbikKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkgeworICAgICAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbnMoUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9h
cmRSZWdpb25zKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
RGFzaGJvYXJkUmVnaW9uKiByZWdpb24gPSBwcmltaXRpdmVWYWx1ZS0+Z2V0RGFzaGJvYXJkUmVn
aW9uVmFsdWUoKTsKKyAgICAgICAgaWYgKCFyZWdpb24pCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgRGFzaGJvYXJkUmVnaW9uKiBmaXJzdCA9IHJlZ2lvbjsKKyAgICAgICAgd2hpbGUg
KHJlZ2lvbikgeworICAgICAgICAgICAgTGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChyZWdp
b24tPnRvcCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1l
bnRTdHlsZSk7CisgICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgocmVn
aW9uLT5yaWdodCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVs
ZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBMZW5ndGggYm90dG9tID0gY29udmVydFRvTGVuZ3Ro
KHJlZ2lvbi0+Ym90dG9tKCksIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9y
b290RWxlbWVudFN0eWxlKTsKKyAgICAgICAgICAgIExlbmd0aCBsZWZ0ID0gY29udmVydFRvTGVu
Z3RoKHJlZ2lvbi0+bGVmdCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1f
cm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQor
ICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5
bGVEYXNoYm9hcmRSZWdpb246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBi
b3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCisgICAgICAgICAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6UmVj
dGFuZ2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9u
ID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKKyAgICAgICAgICAgIHJlZ2lvbiA9IHJlZ2lvbi0+
bV9uZXh0LmdldCgpOworICAgICAgICB9CisgICAgICAgIGluc3RhbmNlLT5tX2VsZW1lbnQtPmRv
Y3VtZW50KCktPnNldEhhc0Rhc2hib2FyZFJlZ2lvbnModHJ1ZSk7CisgICAgfQorfQorI2Vsc2UK
K0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24pCitE
RUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uKQorREVG
SU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24pCisjZW5kaWYK
KworI2lmIEVOQUJMRShXQ1NTKQorLy8gQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcAorREVGSU5F
X0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcCwgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbikKKworLy8gQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3Bl
ZWQKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVk
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCkKKworLy8gQ1NTUHJvcGVydHlXYXBNYXJx
dWVlU3R5bGUKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2FwTWFycXVl
ZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlX
YXBNYXJxdWVlRGlyCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXYXBNYXJxdWVl
RGlyLCBzZXRNYXJxdWVlRGlyZWN0aW9uLCBtYXJxdWVlRGlyZWN0aW9uKQorREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5V2FwTWFycXVlZURpciwgc2V0TWFycXVlZURpcmVjdGlvbiwg
aW5pdGlhbE1hcnF1ZWVEaXJlY3Rpb24pCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXYXBNYXJx
dWVlRGlyKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsK
KyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMdHI6CisgICAgICAgICAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24oTVJJR0hUKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSdGw6CisgICAgICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24oTUxFRlQpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbigqcHJpbWl0aXZlVmFsdWUpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisv
LyBDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0CitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3Bl
cnR5V2FwSW5wdXRGb3JtYXQpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5V2FwSW5w
dXRGb3JtYXQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdCkKK3sKKyAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgaWYgKGluc3RhbmNlLT5tX2VsZW1lbnQtPmhhc1RhZ05hbWUoV2ViQ29y
ZTo6aW5wdXRUYWcpKSB7CisgICAgICAgICAgICBTdHJpbmcgbWFzayA9IHByaW1pdGl2ZVZhbHVl
LT5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KGluc3RhbmNlLT5tX2VsZW1lbnQpLT5zZXRXYXBJbnB1dEZvcm1hdChtYXNrKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKy8vIENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZAorREVGSU5F
X05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQpCitERUZJTkVfTlVMTF9J
TklUSUFMKENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZCkKK0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eVdhcElucHV0UmVxdWlyZWQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChpbnN0YW5jZS0+
bV9lbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKSB7CisgICAgICAgICAgICBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxl
bWVudCo+KGluc3RhbmNlLT5tX2VsZW1lbnQpOworICAgICAgICAgICAgYm9vbCByZXF1aXJlZCA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpID09ICJ0cnVlIjsKKyAgICAgICAgICAg
IGVsZW1lbnQtPnNldFJlcXVpcmVkKHJlcXVpcmVkKTsKKyAgICAgICAgfQorICAgIH0KK30KKyNl
bmRpZgorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShy
ZXZpc2lvbiA3NTg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDIzMyArMTI1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi0jZGVmaW5lIEhBTkRMRV9JTkhFUklU
KHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQpIHsgXAotICAgIG1fc3R5bGUtPnNldCMjUHJv
cChtX3BhcmVudFN0eWxlLT5wcm9wKCkpOyBcCi0gICAgcmV0dXJuOyBcCi19Ci0KLSNkZWZpbmUg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotSEFORExFX0lOSEVSSVQo
cHJvcCwgUHJvcCkgXAotaWYgKGlzSW5pdGlhbCkgeyBcCi0gICAgbV9zdHlsZS0+c2V0IyNQcm9w
KFJlbmRlclN0eWxlOjppbml0aWFsIyNQcm9wKCkpOyBcCi0gICAgcmV0dXJuOyBcCi19Ci0KLSNk
ZWZpbmUgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShwcm9wLCBQcm9wLCBW
YWx1ZSkgXAotSEFORExFX0lOSEVSSVQocHJvcCwgUHJvcCkgXAotaWYgKGlzSW5pdGlhbCkgeyBc
Ci0gICAgbV9zdHlsZS0+c2V0IyNQcm9wKFJlbmRlclN0eWxlOjppbml0aWFsIyNWYWx1ZSgpKTtc
Ci0gICAgcmV0dXJuO1wKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9B
TkRfUFJJTUlUSVZFKHByb3AsIFByb3ApIFwKLUhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBy
b3AsIFByb3ApIFwKLWlmIChwcmltaXRpdmVWYWx1ZSkgXAotICAgIG1fc3R5bGUtPnNldCMjUHJv
cCgqcHJpbWl0aXZlVmFsdWUpOwotCi0jZGVmaW5lIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShwcm9wLCBQcm9wLCBWYWx1ZSkgXAotSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShwcm9wLCBQcm9wLCBWYWx1ZSkgXAotaWYgKHBy
aW1pdGl2ZVZhbHVlKSBcCi0gICAgbV9zdHlsZS0+c2V0IyNQcm9wKCpwcmltaXRpdmVWYWx1ZSk7
Ci0KLSNkZWZpbmUgSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVF9BTkRfSU5JVElBTChsYXllclR5
cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAotaWYgKGlzSW5oZXJpdCkgeyBcCi0gICAgRmls
bExheWVyKiBjdXJyQ2hpbGQgPSBtX3N0eWxlLT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7
IFwKLSAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7IFwKLSAgICBjb25zdCBGaWxsTGF5ZXIq
IGN1cnJQYXJlbnQgPSBtX3BhcmVudFN0eWxlLT5sYXllclR5cGUjI0xheWVycygpOyBcCi0gICAg
d2hpbGUgKGN1cnJQYXJlbnQgJiYgY3VyclBhcmVudC0+aXMjI1Byb3AjI1NldCgpKSB7IFwKLSAg
ICAgICAgaWYgKCFjdXJyQ2hpbGQpIHsgXAotICAgICAgICAgICAgLyogTmVlZCB0byBtYWtlIGEg
bmV3IGxheWVyLiovIFwKLSAgICAgICAgICAgIGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoTGF5
ZXJUeXBlIyNGaWxsTGF5ZXIpOyBcCi0gICAgICAgICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3Vy
ckNoaWxkKTsgXAotICAgICAgICB9IFwKLSAgICAgICAgY3VyckNoaWxkLT5zZXQjI1Byb3AoY3Vy
clBhcmVudC0+cHJvcCgpKTsgXAotICAgICAgICBwcmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7IFwKLSAg
ICAgICAgY3VyckNoaWxkID0gcHJldkNoaWxkLT5uZXh0KCk7IFwKLSAgICAgICAgY3VyclBhcmVu
dCA9IGN1cnJQYXJlbnQtPm5leHQoKTsgXAotICAgIH0gXAotICAgIFwKLSAgICB3aGlsZSAoY3Vy
ckNoaWxkKSB7IFwKLSAgICAgICAgLyogUmVzZXQgYW55IHJlbWFpbmluZyBsYXllcnMgdG8gbm90
IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAotICAgICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQ
cm9wKCk7IFwKLSAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKLSAgICB9
IFwKLX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7IFwKLSAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9
IG1fc3R5bGUtPmFjY2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAotICAgIGN1cnJDaGlsZC0+
c2V0IyNQcm9wKEZpbGxMYXllcjo6aW5pdGlhbEZpbGwjI1Byb3AoTGF5ZXJUeXBlIyNGaWxsTGF5
ZXIpKTsgXAotICAgIGZvciAoY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IGN1cnJDaGls
ZDsgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCkpIFwKLSAgICAgICAgY3VyckNoaWxkLT5j
bGVhciMjUHJvcCgpOyBcCi19Ci0KLSNkZWZpbmUgSEFORExFX0ZJTExfTEFZRVJfVkFMVUUobGF5
ZXJUeXBlLCBMYXllclR5cGUsIHByb3AsIFByb3AsIHZhbHVlKSB7IFwKLUhBTkRMRV9GSUxMX0xB
WUVSX0lOSEVSSVRfQU5EX0lOSVRJQUwobGF5ZXJUeXBlLCBMYXllclR5cGUsIHByb3AsIFByb3Ap
IFwKLWlmIChpc0luaGVyaXQgfHwgaXNJbml0aWFsKSBcCi0gICAgcmV0dXJuOyBcCi1GaWxsTGF5
ZXIqIGN1cnJDaGlsZCA9IG1fc3R5bGUtPmFjY2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAot
RmlsbExheWVyKiBwcmV2Q2hpbGQgPSAwOyBcCi1pZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsg
XAotICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRp
bmcgbmV3IGxheWVycyBhcyBuZWVkZWQuICovIFwKLSAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlz
dCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsgXAotICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7IFwKLSAgICAgICAg
aWYgKCFjdXJyQ2hpbGQpIHsgXAotICAgICAgICAgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGxh
eWVyIHRvIGhvbGQgdGhpcyB2YWx1ZSAqLyBcCi0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBuZXcg
RmlsbExheWVyKExheWVyVHlwZSMjRmlsbExheWVyKTsgXAotICAgICAgICAgICAgcHJldkNoaWxk
LT5zZXROZXh0KGN1cnJDaGlsZCk7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIG1hcEZpbGwjI1By
b3AocHJvcGVydHksIGN1cnJDaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KGkpKTsgXAotICAgICAgICBwcmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7IFwKLSAgICAgICAgY3VyckNo
aWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKLSAgICB9IFwKLX0gZWxzZSB7IFwKLSAgICBtYXBG
aWxsIyNQcm9wKHByb3BlcnR5LCBjdXJyQ2hpbGQsIHZhbHVlKTsgXAotICAgIGN1cnJDaGlsZCA9
IGN1cnJDaGlsZC0+bmV4dCgpOyBcCi19IFwKLXdoaWxlIChjdXJyQ2hpbGQpIHsgXAotICAgIC8q
IFJlc2V0IGFsbCByZW1haW5pbmcgbGF5ZXJzIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQu
ICovIFwKLSAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQcm9wKCk7IFwKLSAgICBjdXJyQ2hpbGQgPSBj
dXJyQ2hpbGQtPm5leHQoKTsgXAotfSB9Ci0KLSNkZWZpbmUgSEFORExFX0JBQ0tHUk9VTkRfSU5I
RVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklU
X0FORF9JTklUSUFMKGJhY2tncm91bmQsIEJhY2tncm91bmQsIHByb3AsIFByb3ApCi0KLSNkZWZp
bmUgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUocHJvcCwgUHJvcCwgdmFsdWUpIFwKLUhBTkRMRV9G
SUxMX0xBWUVSX1ZBTFVFKGJhY2tncm91bmQsIEJhY2tncm91bmQsIHByb3AsIFByb3AsIHZhbHVl
KQotCi0jZGVmaW5lIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkg
XAotSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVF9BTkRfSU5JVElBTChtYXNrLCBNYXNrLCBwcm9w
LCBQcm9wKQotCi0jZGVmaW5lIEhBTkRMRV9NQVNLX1ZBTFVFKHByb3AsIFByb3AsIHZhbHVlKSBc
Ci1IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShtYXNrLCBNYXNrLCBwcm9wLCBQcm9wLCB2YWx1ZSkK
LQotI2RlZmluZSBIQU5ETEVfQU5JTUFUSU9OX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJv
cCkgXAotaWYgKGlzSW5oZXJpdCkgeyBcCi0gICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5
bGUtPmFjY2Vzc0FuaW1hdGlvbnMoKTsgXAotICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVu
dExpc3QgPSBtX3BhcmVudFN0eWxlLT5hbmltYXRpb25zKCk7IFwKLSAgICBzaXplX3QgaSA9IDAs
IHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDsgXAotICAg
IGZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYgcGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5pcyMj
UHJvcCMjU2V0KCk7ICsraSkgeyBcCi0gICAgICAgIGlmIChsaXN0LT5zaXplKCkgPD0gaSkgXAot
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgICAg
IGxpc3QtPmFuaW1hdGlvbihpKS0+c2V0IyNQcm9wKHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+
cHJvcCgpKTsgXAotICAgIH0gXAotICAgIFwKLSAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGFu
aW1hdGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAotICAgIGZvciAoIDsg
aSA8IGxpc3QtPnNpemUoKTsgKytpKSBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+Y2xl
YXIjI1Byb3AoKTsgXAotfSBlbHNlIGlmIChpc0luaXRpYWwpIHsgXAotICAgIEFuaW1hdGlvbkxp
c3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKLSAgICBpZiAobGlzdC0+
aXNFbXB0eSgpKSBcCi0gICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsg
XAotICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+c2V0IyNQcm9wKEFuaW1hdGlvbjo6aW5pdGlhbEFu
aW1hdGlvbiMjUHJvcCgpKTsgXAotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbGlzdC0+c2l6
ZSgpOyArK2kpIFwKLSAgICAgICAgbGlzdC0+YW5pbWF0aW9uKDApLT5jbGVhciMjUHJvcCgpOyBc
Ci19Ci0KLSNkZWZpbmUgSEFORExFX0FOSU1BVElPTl9WQUxVRShwcm9wLCBQcm9wLCB2YWx1ZSkg
eyBcCi1IQU5ETEVfQU5JTUFUSU9OX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAot
aWYgKGlzSW5oZXJpdCB8fCBpc0luaXRpYWwpIFwKLSAgICByZXR1cm47IFwKLUFuaW1hdGlvbkxp
c3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKLXNpemVfdCBjaGlsZElu
ZGV4ID0gMDsgXAotaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7IFwKLSAgICAvKiBXYWxrIGVh
Y2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGFuIGFuaW1hdGlvbiwgY3JlYXRpbmcgbmV3IGFuaW1h
dGlvbnMgYXMgbmVlZGVkLiAqLyBcCi0gICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0
aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKLSAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHZhbHVlTGlzdC0+bGVuZ3RoKCk7IGkrKykgeyBcCi0gICAgICAgIGlmIChjaGls
ZEluZGV4IDw9IGxpc3QtPnNpemUoKSkgXAotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1h
dGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgICAgIG1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmlt
YXRpb24oY2hpbGRJbmRleCksIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7
IFwKLSAgICAgICAgKytjaGlsZEluZGV4OyBcCi0gICAgfSBcCi19IGVsc2UgeyBcCi0gICAgaWYg
KGxpc3QtPmlzRW1wdHkoKSkgXAotICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVh
dGUoKSk7IFwKLSAgICBtYXBBbmltYXRpb24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5k
ZXgpLCB2YWx1ZSk7IFwKLSAgICBjaGlsZEluZGV4ID0gMTsgXAotfSBcCi1mb3IgKCA7IGNoaWxk
SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrY2hpbGRJbmRleCkgeyBcCi0gICAgLyogUmVzZXQgYWxs
IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwK
LSAgICBsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCktPmNsZWFyIyNQcm9wKCk7IFwKLX0gXAot
fQotCi0jZGVmaW5lIEhBTkRMRV9UUkFOU0lUSU9OX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwg
UHJvcCkgXAotaWYgKGlzSW5oZXJpdCkgeyBcCi0gICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1f
c3R5bGUtPmFjY2Vzc1RyYW5zaXRpb25zKCk7IFwKLSAgICBjb25zdCBBbmltYXRpb25MaXN0KiBw
YXJlbnRMaXN0ID0gbV9wYXJlbnRTdHlsZS0+dHJhbnNpdGlvbnMoKTsgXAotICAgIHNpemVfdCBp
ID0gMCwgcGFyZW50U2l6ZSA9IHBhcmVudExpc3QgPyBwYXJlbnRMaXN0LT5zaXplKCkgOiAwOyBc
Ci0gICAgZm9yICggOyBpIDwgcGFyZW50U2l6ZSAmJiBwYXJlbnRMaXN0LT5hbmltYXRpb24oaSkt
PmlzIyNQcm9wIyNTZXQoKTsgKytpKSB7IFwKLSAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBp
KSBcCi0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAg
ICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5zZXQjI1Byb3AocGFyZW50TGlzdC0+YW5pbWF0aW9u
KGkpLT5wcm9wKCkpOyBcCi0gICAgfSBcCi0gICAgXAotICAgIC8qIFJlc2V0IGFueSByZW1haW5p
bmcgdHJhbnNpdGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAotICAgIGZv
ciAoIDsgaSA8IGxpc3QtPnNpemUoKTsgKytpKSBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbihp
KS0+Y2xlYXIjI1Byb3AoKTsgXAotfSBlbHNlIGlmIChpc0luaXRpYWwpIHsgXAotICAgIEFuaW1h
dGlvbkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCi0gICAgaWYg
KGxpc3QtPmlzRW1wdHkoKSkgXAotICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVh
dGUoKSk7IFwKLSAgICBsaXN0LT5hbmltYXRpb24oMCktPnNldCMjUHJvcChBbmltYXRpb246Omlu
aXRpYWxBbmltYXRpb24jI1Byb3AoKSk7IFwKLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxp
c3QtPnNpemUoKTsgKytpKSBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+Y2xlYXIjI1By
b3AoKTsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKHByb3AsIFByb3As
IHZhbHVlKSB7IFwKLUhBTkRMRV9UUkFOU0lUSU9OX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwg
UHJvcCkgXAotaWYgKGlzSW5oZXJpdCB8fCBpc0luaXRpYWwpIFwKLSAgICByZXR1cm47IFwKLUFu
aW1hdGlvbkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCi1zaXpl
X3QgY2hpbGRJbmRleCA9IDA7IFwKLWlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCi0gICAg
LyogV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIHRyYW5zaXRpb24sIGNyZWF0aW5n
IG5ldyBhbmltYXRpb25zIGFzIG5lZWRlZC4gKi8gXAotICAgIENTU1ZhbHVlTGlzdCogdmFsdWVM
aXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOyBcCi0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsgXAotICAgICAg
ICBpZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5zaXplKCkpIFwKLSAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgICAgICBtYXBBbmltYXRpb24jI1Byb3Ao
bGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soaSkpOyBcCi0gICAgICAgICsrY2hpbGRJbmRleDsgXAotICAgIH0gXAotfSBlbHNlIHsg
XAotICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1h
dGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlv
bihjaGlsZEluZGV4KSwgdmFsdWUpOyBcCi0gICAgY2hpbGRJbmRleCA9IDE7IFwKLX0gXAotZm9y
ICggOyBjaGlsZEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsgXAotICAgIC8q
IFJlc2V0IGFsbCByZW1haW5pbmcgdHJhbnNpdGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5
IHNldC4gKi8gXAotICAgIGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KS0+Y2xlYXIjI1Byb3Ao
KTsgXAotfSBcCi19Ci0KLSNkZWZpbmUgSEFORExFX0lOSEVSSVRfQ09ORChwcm9wSUQsIHByb3As
IFByb3ApIFwKLWlmIChpZCA9PSBwcm9wSUQpIHsgXAotICAgIG1fc3R5bGUtPnNldCMjUHJvcCht
X3BhcmVudFN0eWxlLT5wcm9wKCkpOyBcCi0gICAgcmV0dXJuOyBcCi19Ci0gICAgCi0jZGVmaW5l
IEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9CQUNLVVAocHJvcElELCBwcm9wLCBwcm9wQWx0LCBQ
cm9wKSBcCi1pZiAoaWQgPT0gcHJvcElEKSB7IFwKLSAgICBpZiAobV9wYXJlbnRTdHlsZS0+cHJv
cCgpLmlzVmFsaWQoKSkgXAotICAgICAgICBtX3N0eWxlLT5zZXQjI1Byb3AobV9wYXJlbnRTdHls
ZS0+cHJvcCgpKTsgXAotICAgIGVsc2UgXAotICAgICAgICBtX3N0eWxlLT5zZXQjI1Byb3AobV9w
YXJlbnRTdHlsZS0+cHJvcEFsdCgpKTsgXAotICAgIHJldHVybjsgXAotfQotCi0jZGVmaW5lIEhB
TkRMRV9JTklUSUFMX0NPTkQocHJvcElELCBQcm9wKSBcCi1pZiAoaWQgPT0gcHJvcElEKSB7IFwK
LSAgICBtX3N0eWxlLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6OmluaXRpYWwjI1Byb3AoKSk7IFwK
LSAgICByZXR1cm47IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFM
VUUocHJvcElELCBQcm9wLCBWYWx1ZSkgXAotaWYgKGlkID09IHByb3BJRCkgeyBcCi0gICAgbV9z
dHlsZS0+c2V0IyNQcm9wKFJlbmRlclN0eWxlOjppbml0aWFsIyNWYWx1ZSgpKTsgXAotICAgIHJl
dHVybjsgXAotfQotCiBjbGFzcyBDU1NSdWxlRGF0YSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBw
dWJsaWM6CiAgICAgQ1NTUnVsZURhdGEodW5zaWduZWQgcG9zLCBDU1NTdHlsZVJ1bGUqIHIsIENT
U1NlbGVjdG9yKiBzZWwsIENTU1J1bGVEYXRhKiBwcmV2ID0gMCkKQEAgLTI5MzAsNyArMjcwMyw3
IEBAIHZvaWQgQ1NTUnVsZVNldDo6YWRkU3R5bGVSdWxlKENTU1N0eWxlUnUKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIHRoaXMgaXMgbW9zdGx5IGJvcmluZyBzdHVmZiBvbiBo
b3cgdG8gYXBwbHkgYSBjZXJ0YWluIHJ1bGUgdG8gdGhlIHJlbmRlcnN0eWxlLi4uCiAKLXN0YXRp
YyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVs
dGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCkKK0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252
ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHls
ZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29s
ICpvaykKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHRvbGVyYW50IG9mIGEgbnVsbCBzdHls
ZSB2YWx1ZS4gVGhlIG9ubHkgcGxhY2Ugc3R5bGUgaXMgdXNlZCBpcyBpbgogICAgIC8vIGxlbmd0
aCBtZWFzdXJlbWVudHMsIGxpa2UgJ2VtcycgYW5kICdweCcuIEFuZCBpbiB0aG9zZSBjYXNlcyBz
dHlsZSBpcyBvbmx5IHVzZWQKQEAgLTMwNjEsNyArMjgzNCw3IEBAIFN0cmluZyBDU1NTdHlsZVNl
bGVjdG9yOjpwYWdlTmFtZShpbnQgLyoKICAgICByZXR1cm4gIiI7CiB9CiAKLXN0YXRpYyB2b2lk
IGFwcGx5Q291bnRlckxpc3QoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NWYWx1ZUxpc3QqIGxpc3Qs
IGJvb2wgaXNSZXNldCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlDb3VudGVyTGlzdChS
ZW5kZXJTdHlsZSogc3R5bGUsIENTU1ZhbHVlTGlzdCogbGlzdCwgYm9vbCBpc1Jlc2V0KQogewog
ICAgIENvdW50ZXJEaXJlY3RpdmVNYXAmIG1hcCA9IHN0eWxlLT5hY2Nlc3NDb3VudGVyRGlyZWN0
aXZlcygpOwogICAgIHR5cGVkZWYgQ291bnRlckRpcmVjdGl2ZU1hcDo6aXRlcmF0b3IgSXRlcmF0
b3I7CkBAIC0zMTQ2LDI1ICsyOTE5LDYgQEAgaW5saW5lIGJvb2wgaXNWYWxpZFZpc2l0ZWRMaW5r
UHJvcGVydHkoaQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlk
LCBDU1NWYWx1ZSAqdmFsdWUpCiB7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gMDsKLSAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLQot
ICAgIGZsb2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICAv
LyBTVkcgaGFuZGxlcyB6b29taW5nIGluIGEgZGlmZmVyZW50IHdheSBjb21wYXJlZCB0byBDU1Mu
IFRoZSB3aG9sZSBkb2N1bWVudCBpcyBzY2FsZWQgaW5zdGVhZAotICAgIC8vIG9mIGVhY2ggaW5k
aXZpZHVhbCBsZW5ndGggdmFsdWUgaW4gdGhlIHJlbmRlciBzdHlsZSAvIHRyZWUuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoKigpCi0gICAgLy8gbXVsdGlwbGllcyBlYWNoIHJlc29s
dmVkIGxlbmd0aCB3aXRoIHRoZSB6b29tIG11bHRpcGxpZXIgLSBzbyBmb3IgU1ZHIHdlIG5lZWQg
dG8gZGlzYWJsZSB0aGF0LgotICAgIC8vIFRob3VnaCBhbGwgQ1NTIHZhbHVlcyB0aGF0IGNhbiBi
ZSBhcHBsaWVkIHRvIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50cyAod2lkdGgvaGVpZ2h0L2JvcmRl
ci9wYWRkaW5nLi4uKQotICAgIC8vIG5lZWQgdG8gcmVzcGVjdCB0aGUgc2NhbGluZy4gUmVuZGVy
Qm94ICh0aGUgcGFyZW50IGNsYXNzIG9mIFJlbmRlclNWR1Jvb3QpIGdyYWJzIHZhbHVlcyBsaWtl
Ci0gICAgLy8gd2lkdGgvaGVpZ2h0L2JvcmRlci9wYWRkaW5nLy4uLiBmcm9tIHRoZSBSZW5kZXJT
dHlsZSAtPiBmb3IgU1ZHIHRoZXNlIHZhbHVlcyB3b3VsZCBuZXZlciBzY2FsZSwKLSAgICAvLyBp
ZiB3ZSdkIHBhc3MgYSAxLjAgem9vbSBmYWN0b3IgZXZlcnlod2VyZS4gU28gd2Ugb25seSBwYXNz
IGEgem9vbSBmYWN0b3Igb2YgMS4wIGZvciBzcGVjaWZpYwotICAgIC8vIHByb3BlcnRpZXMgdGhh
dCBhcmUgTk9UIGFsbG93ZWQgdG8gc2NhbGUgd2l0aGluIGEgem9vbWVkIFNWRyBkb2N1bWVudCAo
bGV0dGVyL3dvcmQtc3BhY2luZy9mb250LXNpemUpLgotICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVz
ID0gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7Ci0KLSAgICBMZW5ndGgg
bDsKLSAgICBib29sIGFwcGx5ID0gZmFsc2U7Ci0KICAgICB1bnNpZ25lZCBzaG9ydCB2YWx1ZVR5
cGUgPSB2YWx1ZS0+Y3NzVmFsdWVUeXBlKCk7CiAKICAgICBib29sIGlzSW5oZXJpdCA9IG1fcGFy
ZW50Tm9kZSAmJiB2YWx1ZVR5cGUgPT0gQ1NTVmFsdWU6OkNTU19JTkhFUklUOwpAQCAtMzE3Niwy
Njk0ICsyOTMwLDQ4NCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50
CiAgICAgICAgIC8vIExpbWl0IHRoZSBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8g
b25seSB0aGUgb25lcyBob25vcmVkIGJ5IDp2aXNpdGVkLgogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAorCisjZGVmaW5lIEhBTkRMRV9DQVNFKFByb3BlcnR5KSBcCitjYXNlIFByb3BlcnR5
OiB7IFwKKyAgICBpZiAoaXNJbmhlcml0KSBcCisgICAgICAgIGhhbmRsZUluaGVyaXQjI1Byb3Bl
cnR5KHRoaXMpOyBcCisgICAgZWxzZSBpZiAoaXNJbml0aWFsKSBcCisgICAgICAgIGhhbmRsZUlu
aXRpYWwjI1Byb3BlcnR5KHRoaXMpOyBcCisgICAgZWxzZSBcCisgICAgICAgIGhhbmRsZVZhbHVl
IyNQcm9wZXJ0eSh0aGlzLCB2YWx1ZSk7IFwKKyAgICByZXR1cm47IFwKK30KKwogICAgIC8vIFdo
YXQgZm9sbG93cyBpcyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVydGllcyBpbnRvIHRo
ZWlyIGNvcnJlc3BvbmRpbmcgZnJvbnQtZW5kCiAgICAgLy8gUmVuZGVyU3R5bGUgdmFsdWVzLiAg
U2hvcnRoYW5kcyAoZS5nLiBib3JkZXIsIGJhY2tncm91bmQpIG9jY3VyIGluIHRoaXMgbGlzdCBh
cyB3ZWxsIGFuZAogICAgIC8vIGFyZSBvbmx5IGhpdCB3aGVuIG1hcHBpbmcgImluaGVyaXQiIG9y
ICJpbml0aWFsIiBpbnRvIGZyb250LWVuZCB2YWx1ZXMuCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGlkKTsKICAgICBzd2l0Y2ggKHByb3Bl
cnR5KSB7Ci0vLyBpZGVudCBvbmx5IHByb3BlcnRpZXMKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFj
a2dyb3VuZEF0dGFjaG1lbnQ6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKGF0dGFj
aG1lbnQsIEF0dGFjaG1lbnQsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDbGlwOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3Jv
dW5kQ2xpcDoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoY2xpcCwgQ2xpcCwgdmFs
dWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZENvbXBvc2l0ZToKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoY29tcG9zaXRlLCBD
b21wb3NpdGUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRPcmlnaW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmln
aW46Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKG9yaWdpbiwgT3JpZ2luLCB2YWx1
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6Ci0gICAgICAgIEhBTkRM
RV9CQUNLR1JPVU5EX1ZBTFVFKHNpemUsIFNpemUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50OgotICAgICAgICBIQU5ETEVf
TUFTS19WQUxVRShhdHRhY2htZW50LCBBdHRhY2htZW50LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKLSAgICAgICAgSEFORExFX01B
U0tfVkFMVUUoY2xpcCwgQ2xpcCwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZToKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUo
Y29tcG9zaXRlLCBDb21wb3NpdGUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW46Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKG9y
aWdpbiwgT3JpZ2luLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrU2l6ZToKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoc2l6ZSwgU2l6ZSwg
dmFsdWUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXApCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5QmFja2dyb3VuZE9yaWdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRPcmlnaW4pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza1Np
emUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxl
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlD
bGVhcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eURpcmVjdGlvbikKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eURpc3BsYXkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlFbXB0
eUNlbGxzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5RmxvYXQpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlGb250U3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250
VmFyaWFudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPdmVy
ZmxvdykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU92ZXJmbG93WCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eU92ZXJmbG93WSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBh
Z2VCcmVha0JlZm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVy
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5UG9zaXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlU
YWJsZUxheW91dCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVZpc2liaWxpdHkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXaGl0ZVNw
YWNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25YKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRYKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdFkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlDdXJzb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyTGVm
dENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RmlsbENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFj
a2dyb3VuZEltYWdlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdl
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0V2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlM
ZXR0ZXJTcGFjaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V29yZFNwYWNpbmcpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXb3JkQnJlYWspCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXb3JkV3JhcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE5ic3BN
b2RlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xv
cikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVJlc2l6ZSkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eU1heFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWluV2lkdGgp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVRvcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxlZnQpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlSaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvdHRv
bSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU1hcmdpblRvcCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWFy
Z2luQm90dG9tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWFyZ2luTGVmdCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZGRpbmdUb3ApCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlQYWRkaW5nUmlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlQYWRkaW5nQm90
dG9tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFkZGluZ0xlZnQpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlUZXh0SW5kZW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
TWF4SGVpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5SGVpZ2h0KQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5TWluSGVpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
VmVydGljYWxBbGlnbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnRTaXplKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5WkluZGV4KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2lkb3dzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3JwaGFucykKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlUZXh0QWxpZ24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlDbGlwKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5Q29udGVudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUNv
dW50ZXJJbmNyZW1lbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250RmFtaWx5KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHla
b29tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2spCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlC
b3JkZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlcldpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5Qm9yZGVyQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJUb3ApCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRl
ckxlZnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlNYXJnaW4pCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlQYWRkaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Rm9udCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxpc3RTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eU91dGxpbmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBcHBl
YXJhbmNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJSYWRpdXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJU
b3BMZWZ0UmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRS
YWRpdXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVz
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRl
eHRTaGFkb3cpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3hTaGFkb3cpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3cpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRCb3hSZWZsZWN0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3Bh
Y2l0eSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5U3JjKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VW5p
Y29kZVJhbmdlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNp
YmlsaXR5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRCb3hQYWNrKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94Rmxl
eCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eUJveFNpemluZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkNvdW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
R2FwKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uU3BhbikKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uQnJlYWtJbnNpZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5SdWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucykKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVJbmNyZW1lbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGly
ZWN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVRleHRPdmVyZmxvdykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNv
bGxhcHNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29s
bGFwc2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBz
ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2Up
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdEh5cGhlbnMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRIeXBo
ZW5hdGVDaGFyYWN0ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5h
dGVMb2NhbGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0UGVyc3BlY3RpdmVPcmlnaW5YKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
UGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXkp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24pCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbikKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvbkRlbGF5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvblByb3BlcnR5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UG9pbnRlckV2
ZW50cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbikK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVNpemUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlTcGVhaykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUludmFsaWQpCisKKyAgICAv
LyBEaXJlY3Rpb25hbCBwcm9wZXJ0aWVzIGFyZSByZXNvbHZlZCBieSByZXNvbHZlRGlyZWN0aW9u
QXdhcmVQcm9wZXJ0eSgpIGJlZm9yZSB0aGUgc3dpdGNoLgorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRW5kKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRo
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJCZWZvcmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmVDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRl
cikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpblN0YXJ0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQmVmb3JlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0
ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dExvZ2ljYWxXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxI
ZWlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGgp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodCkKKyAgICAvLyBlbmQgZGly
ZWN0aW9uYWwgcHJvcGVydGllcworCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250U3Ry
ZXRjaCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZ2UpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlRdW90ZXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRo
cm91Z2gpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcikK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5VGV4dE92ZXJsaW5lKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dE92ZXJs
aW5lQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9k
ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXMpCisKKyAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6
IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0V3JpdGluZ01vZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29t
YmluZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0
aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24pCisjaWYg
RU5BQkxFKFdDU1MpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdhcE1hcnF1ZWVEaXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXYXBJbnB1dEZv
cm1hdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQpCisjZW5k
aWYKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRyeSB0aGUgU1ZH
IHByb3BlcnRpZXMKKyAgICAgICAgYXBwbHlTVkdQcm9wZXJ0eShpZCwgdmFsdWUpOworI2VuZGlm
CisgICAgfQorfQorCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UGFnZVNpemVQcm9wZXJ0
eShDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgbV9zdHlsZS0+cmVzZXRQYWdlU2l6ZVR5cGUoKTsK
KyAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQogICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChib3JkZXJDb2xsYXBzZSwgQm9yZGVyQ29sbGFwc2UpCi0gICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUpCisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgTGVuZ3RoIHdpZHRoOworICAgIExlbmd0aCBoZWln
aHQ7CisgICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOworICAg
IHN3aXRjaCAodmFsdWVMaXN0LT5sZW5ndGgoKSkgeworICAgIGNhc2UgMjogeworICAgICAgICAv
LyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KKyAgICAgICAgcGFnZVNp
emVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOworICAgICAgICBpZiAoIXZhbHVlTGlzdC0+aXRl
bSgwKS0+aXNQcmltaXRpdmVWYWx1ZSgpIHx8ICF2YWx1ZUxpc3QtPml0ZW0oMSktPmlzUHJpbWl0
aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbGxhcHNl
OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckNvbGxhcHNlKHRydWUpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNlcGFyYXRlOgot
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckNvbGxhcHNlKGZhbHNlKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlTGlzdC0+aXRlbSgwKSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZTEgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+
aXRlbSgxKSk7CisgICAgICAgIGludCB0eXBlMCA9IHByaW1pdGl2ZVZhbHVlMC0+cHJpbWl0aXZl
VHlwZSgpOworICAgICAgICBpbnQgdHlwZTEgPSBwcmltaXRpdmVWYWx1ZTEtPnByaW1pdGl2ZVR5
cGUoKTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5
cGUwKSkgeworICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KKyAgICAgICAgICAgIGlmICghQ1NT
UHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZTEpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIHdpZHRoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlMC0+Y29t
cHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhl
ZCk7CisgICAgICAgICAgICBoZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUxLT5jb21wdXRl
TGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+IDxvcmllbnRhdGlv
bj4KKyAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvcmRlciBpcyBndWFyYW50ZWVkLiBTZWUgQ1NT
UGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIuCisgICAgICAgICAgICBpZiAoIXBhZ2VTaXplRnJv
bU5hbWUocHJpbWl0aXZlVmFsdWUwLCBwcmltaXRpdmVWYWx1ZTEsIHdpZHRoLCBoZWlnaHQpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoYm9yZGVyVG9wU3R5bGUsIEJvcmRl
clRvcFN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoYm9yZGVyUmlnaHRTdHlsZSwgQm9yZGVyUmlnaHRT
dHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FO
RF9QUklNSVRJVkVfV0lUSF9WQUxVRShib3JkZXJCb3R0b21TdHlsZSwgQm9yZGVyQm90dG9tU3R5
bGUsIEJvcmRlclN0eWxlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRTdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRV9XSVRIX1ZBTFVFKGJvcmRlckxlZnRTdHlsZSwgQm9yZGVyTGVmdFN0eWxlLCBCb3Jk
ZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5
bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUob3V0bGlu
ZVN0eWxlLCBPdXRsaW5lU3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVN0eWxlKERP
VFRFRCwgdHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0T3V0bGluZVN0eWxlKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKLSAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShjYXB0aW9uU2lkZSwgQ2FwdGlvblNpZGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Q2xlYXI6Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoY2xlYXIsIENsZWFyKQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eURpcmVjdGlvbjoKLSAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShkaXJlY3Rpb24sIERpcmVjdGlv
bikKLSAgICAgICAgaWYgKCFpc0luaGVyaXQgJiYgIWlzSW5pdGlhbCAmJiBtX2VsZW1lbnQgJiYg
bV9lbGVtZW50ID09IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCi0g
ICAgICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldERpcmVjdGlvblNldE9uRG9jdW1l
bnRFbGVtZW50KHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eURp
c3BsYXk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUo
ZGlzcGxheSwgRGlzcGxheSkKLSNpZiBFTkFCTEUoV0NTUykKLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVXYXBNYXJxdWVlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBXQVAg
TWFycXVlZSBzdHlsZQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WChPTUFS
UVVFRSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3ZlcmZsb3dZKE9NQVJRVUVFKTsK
LSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRXaGl0ZVNwYWNlKE5PV1JBUCk7Ci0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNTEVGVCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDg1KTsgLy8gTm9ybWFsIHNwZWVkCi0gICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudCgxKTsKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlQmVoYXZpb3IoTVNDUk9MTCk7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAobV9wYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
RGlzcGxheShtX3BhcmVudFN0eWxlLT5kaXNwbGF5KCkpOwotICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlzcGxheSgqcHJpbWl0aXZlVmFsdWUp
OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlzcGxh
eSgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGVtcHR5Q2VsbHMsIEVtcHR5Q2VsbHMpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoZmxvYXRpbmcsIEZsb2F0aW5nKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKLSAgICB7Ci0gICAgICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRp
b24oKTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRJdGFsaWMobV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkpOwot
ICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0SXRhbGljKGZhbHNlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1p
dGl2ZVZhbHVlKQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSAxOiB7CisgICAgICAg
IC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBwb3J0cmFpdCB8IGxhbmRzY2Fw
ZV0KKyAgICAgICAgaWYgKCF2YWx1ZUxpc3QtPml0ZW0oMCktPmlzUHJpbWl0aXZlVmFsdWUoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZUxpc3QtPml0ZW0o
MCkpOworICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7
CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkg
eworICAgICAgICAgICAgLy8gPGxlbmd0aD4KKyAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBB
R0VfU0laRV9SRVNPTFZFRDsKKyAgICAgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gTGVuZ3RoKHBy
aW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0
eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewot
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVPYmxpcXVlOgotICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBvYmxpcXVlIGlzIHRoZSBzYW1lIGFzIGl0YWxpYyBmb3IgdGhlIG1vbWVudC4uLgot
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVJdGFsaWM6Ci0gICAgICAgICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZUF1dG86CisgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FV
VE87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUG9y
dHJhaXQ6CisgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9fUE9S
VFJBSVQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
TGFuZHNjYXBlOgorICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRP
X0xBTkRTQ0FQRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4KKyAgICAgICAgICAgICAgICBwYWdlU2l6
ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7CisgICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6
ZUZyb21OYW1lKHByaW1pdGl2ZVZhbHVlLCAwLCB3aWR0aCwgaGVpZ2h0KSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmICht
X3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAg
IG1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgbV9zdHlsZS0+c2V0UGFnZVNpemVUeXBlKHBh
Z2VTaXplVHlwZSk7CisgICAgbV9zdHlsZS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwg
aGVpZ2h0KSk7CisgICAgcmV0dXJuOworfQogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50OgotICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1f
c3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAoaXNJbmhlcml0KSAKLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMobV9wYXJlbnRTdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkuc21hbGxDYXBzKCkpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0g
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBzKGZhbHNlKTsKLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGludCBpZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
OwotICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoZmFsc2UpOwotICAgICAgICAgICAgZWxzZSBp
ZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbENhcHMpCi0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldFNtYWxsQ2Fwcyh0cnVlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlw
dGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwot
ICAgICAgICByZXR1cm47Citib29sIENTU1N0eWxlU2VsZWN0b3I6OnBhZ2VTaXplRnJvbU5hbWUo
Q1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VP
cmllbnRhdGlvbiwgTGVuZ3RoJiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCit7CisgICAgc3RhdGlj
IGNvbnN0IExlbmd0aCBhNVdpZHRoID0gbW1MZW5ndGgoMTQ4KSwgYTVIZWlnaHQgPSBtbUxlbmd0
aCgyMTApOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTRXaWR0aCA9IG1tTGVuZ3RoKDIxMCks
IGE0SGVpZ2h0ID0gbW1MZW5ndGgoMjk3KTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGEzV2lk
dGggPSBtbUxlbmd0aCgyOTcpLCBhM0hlaWdodCA9IG1tTGVuZ3RoKDQyMCk7CisgICAgc3RhdGlj
IGNvbnN0IExlbmd0aCBiNVdpZHRoID0gbW1MZW5ndGgoMTc2KSwgYjVIZWlnaHQgPSBtbUxlbmd0
aCgyNTApOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYjRXaWR0aCA9IG1tTGVuZ3RoKDI1MCks
IGI0SGVpZ2h0ID0gbW1MZW5ndGgoMzUzKTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxldHRl
cldpZHRoID0gaW5jaExlbmd0aCg4LjUpLCBsZXR0ZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDExKTsK
KyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZ2FsV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxl
Z2FsSGVpZ2h0ID0gaW5jaExlbmd0aCgxNCk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZWRn
ZXJXaWR0aCA9IGluY2hMZW5ndGgoMTEpLCBsZWRnZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDE3KTsK
KworICAgIGlmICghcGFnZVNpemVOYW1lIHx8IHBhZ2VTaXplTmFtZS0+cHJpbWl0aXZlVHlwZSgp
ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHN3aXRjaCAocGFnZVNpemVOYW1lLT5nZXRJZGVudCgpKSB7CisgICAgY2FzZSBDU1NW
YWx1ZUE1OgorICAgICAgICB3aWR0aCA9IGE1V2lkdGg7CisgICAgICAgIGhlaWdodCA9IGE1SGVp
Z2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlQTQ6CisgICAgICAgIHdpZHRo
ID0gYTRXaWR0aDsKKyAgICAgICAgaGVpZ2h0ID0gYTRIZWlnaHQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTVmFsdWVBMzoKKyAgICAgICAgd2lkdGggPSBhM1dpZHRoOworICAgICAgICBo
ZWlnaHQgPSBhM0hlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUI1Ogor
ICAgICAgICB3aWR0aCA9IGI1V2lkdGg7CisgICAgICAgIGhlaWdodCA9IGI1SGVpZ2h0OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlQjQ6CisgICAgICAgIHdpZHRoID0gYjRXaWR0
aDsKKyAgICAgICAgaGVpZ2h0ID0gYjRIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q1NTVmFsdWVMZXR0ZXI6CisgICAgICAgIHdpZHRoID0gbGV0dGVyV2lkdGg7CisgICAgICAgIGhl
aWdodCA9IGxldHRlckhlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUxl
Z2FsOgorICAgICAgICB3aWR0aCA9IGxlZ2FsV2lkdGg7CisgICAgICAgIGhlaWdodCA9IGxlZ2Fs
SGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlTGVkZ2VyOgorICAgICAg
ICB3aWR0aCA9IGxlZGdlcldpZHRoOworICAgICAgICBoZWlnaHQgPSBsZWRnZXJIZWlnaHQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFdlaWdodDoKLSAgICB7Ci0gICAgICAgIEZvbnRE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsK
LSAgICAgICAgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRX
ZWlnaHQobV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpOwotICAgICAg
ICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2Vp
Z2h0KEZvbnRXZWlnaHROb3JtYWwpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlQm9sZGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dFdlaWdodChmb250RGVzY3JpcHRpb24uYm9sZGVyV2VpZ2h0KCkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaWdodGVy
OgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChmb250
RGVzY3JpcHRpb24ubGlnaHRlcldlaWdodCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQm9sZDoKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZTcwMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJvbGQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU0MDA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWU5MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0
KEZvbnRXZWlnaHQ5MDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU4MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ4MDApOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU2MDA6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWln
aHQ2MDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWU1MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ1MDApOwotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWUzMDA6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQzMDApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWUyMDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
V2VpZ2h0KEZvbnRXZWlnaHQyMDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWUxMDA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQxMDApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYg
KHBhZ2VPcmllbnRhdGlvbikgeworICAgICAgICBpZiAocGFnZU9yaWVudGF0aW9uLT5wcmltaXRp
dmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgc3dpdGNoIChwYWdlT3JpZW50YXRpb24tPmdldElkZW50KCkp
IHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKKyAgICAgICAgICAgIHN0ZDo6c3dh
cCh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1Zh
bHVlUG9ydHJhaXQ6CisgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1cm47
CiAgICAgfQotICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobGlzdFN0
eWxlUG9zaXRpb24sIExpc3RTdHlsZVBvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMX0FORF9QUklNSVRJVkUobGlzdFN0eWxlVHlwZSwgTGlzdFN0eWxlVHlwZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAgICB7Ci0gICAgICAg
IGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WChtX3Bh
cmVudFN0eWxlLT5vdmVyZmxvd1goKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxv
d1kobV9wYXJlbnRTdHlsZS0+b3ZlcmZsb3dZKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRPdmVyZmxvd1goUmVuZGVyU3R5bGU6OmluaXRpYWxPdmVyZmxvd1goKSk7Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1koUmVuZGVyU3R5bGU6OmluaXRpYWxPdmVy
Zmxvd1koKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAot
ICAgICAgICBFT3ZlcmZsb3cgbyA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworTGVuZ3RoIENTU1N0eWxlU2VsZWN0b3I6Om1tTGVuZ3RoKGRvdWJsZSBtbSkgY29uc3QK
K3sKKyAgICByZXR1cm4gTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobW0sIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTU0pLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCks
IG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKK30KKworTGVuZ3RoIENTU1N0eWxlU2VsZWN0
b3I6OmluY2hMZW5ndGgoZG91YmxlIGluY2gpIGNvbnN0Cit7CisgICAgcmV0dXJuIExlbmd0aChD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGluY2gsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU4p
LT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSks
IEZpeGVkKTsKK30KIAotICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1gobyk7Ci0gICAgICAg
IG1fc3R5bGUtPnNldE92ZXJmbG93WShvKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMX0FORF9QUklNSVRJVkUob3ZlcmZsb3dYLCBPdmVyZmxvd1gpCi0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG92ZXJmbG93WSwgT3ZlcmZsb3dZKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKHBhZ2VC
cmVha0JlZm9yZSwgUGFnZUJyZWFrQmVmb3JlLCBQYWdlQnJlYWspCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShwYWdlQnJlYWtBZnRlciwg
UGFnZUJyZWFrQWZ0ZXIsIFBhZ2VCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUxfV0lUSF9WQUxVRShwYWdlQnJlYWtJbnNpZGUsIFBhZ2VCcmVha0luc2lkZSwgUGFnZUJy
ZWFrKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBFUGFnZUJyZWFrIHBhZ2VCcmVhayA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAg
aWYgKHBhZ2VCcmVhayAhPSBQQkFMV0FZUykKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZ2VC
cmVha0luc2lkZShwYWdlQnJlYWspOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAK
LSAgICBjYXNlIENTU1Byb3BlcnR5UG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUocG9zaXRpb24sIFBvc2l0aW9uKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiB7Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKHRhYmxlTGF5b3V0LCBUYWJsZUxheW91dCkKLQotICAgICAgICBF
VGFibGVMYXlvdXQgbCA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAgaWYgKGwgPT0gVEFVVE8p
Ci0gICAgICAgICAgICBsID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJsZUxheW91dCgpOwotCi0g
ICAgICAgIG1fc3R5bGUtPnNldFRhYmxlTGF5b3V0KGwpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6IAotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHVuaWNvZGVCaWRpLCBVbmlj
b2RlQmlkaSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNm
b3JtOiAKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh0
ZXh0VHJhbnNmb3JtLCBUZXh0VHJhbnNmb3JtKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVZpc2liaWxpdHk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUodmlzaWJpbGl0eSwgVmlzaWJpbGl0eSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHdoaXRlU3BhY2UsIFdoaXRlU3BhY2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246Ci0gICAg
ICAgIEhBTkRMRV9CQUNLR1JPVU5EX0lOSEVSSVRfQU5EX0lOSVRJQUwoeFBvc2l0aW9uLCBYUG9z
aXRpb24pOwotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9JTkhFUklUX0FORF9JTklUSUFMKHlQ
b3NpdGlvbiwgWVBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUG9zaXRpb25YOiB7Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVF
KHhQb3NpdGlvbiwgWFBvc2l0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWTogewotICAgICAgICBIQU5ETEVf
QkFDS0dST1VORF9WQUxVRSh5UG9zaXRpb24sIFlQb3NpdGlvbiwgdmFsdWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjoKLSAg
ICAgICAgSEFORExFX01BU0tfSU5IRVJJVF9BTkRfSU5JVElBTCh4UG9zaXRpb24sIFhQb3NpdGlv
bik7Ci0gICAgICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwoeVBvc2l0aW9uLCBZ
UG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblg6IHsKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoeFBvc2l0aW9uLCBYUG9z
aXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb25ZOiB7Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKHlQb3Np
dGlvbiwgWVBvc2l0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRf
SU5IRVJJVF9BTkRfSU5JVElBTChyZXBlYXRYLCBSZXBlYXRYKTsKLSAgICAgICAgSEFORExFX0JB
Q0tHUk9VTkRfSU5IRVJJVF9BTkRfSU5JVElBTChyZXBlYXRZLCBSZXBlYXRZKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WDoKLSAgICAgICAg
SEFORExFX0JBQ0tHUk9VTkRfVkFMVUUocmVwZWF0WCwgUmVwZWF0WCwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk6Ci0gICAgICAg
IEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKHJlcGVhdFksIFJlcGVhdFksIHZhbHVlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6Ci0gICAgICAg
IEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwocmVwZWF0WCwgUmVwZWF0WCk7Ci0gICAg
ICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwocmVwZWF0WSwgUmVwZWF0WSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFg6Ci0g
ICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKHJlcGVhdFgsIFJlcGVhdFgsIHZhbHVlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZOgotICAgICAg
ICBIQU5ETEVfTUFTS19WQUxVRShyZXBlYXRZLCBSZXBlYXRZLCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOiB7Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJTcGFj
aW5nKG1fcGFyZW50U3R5bGUtPmhvcml6b250YWxCb3JkZXJTcGFjaW5nKCkpOwotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKG1fcGFyZW50U3R5bGUtPnZlcnRp
Y2FsQm9yZGVyU3BhY2luZygpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRp
YWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKDAp
OwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKDApOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKGhvcml6b250YWxCb3JkZXJTcGFjaW5nLCBIb3Jpem9udGFsQm9yZGVyU3BhY2luZykK
LSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgbV9zdHlsZS0+
c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzogewot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEJvcmRlclNwYWNpbmcs
IFZlcnRpY2FsQm9yZGVyU3BhY2luZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFj
dG9yKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6Ci0g
ICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvciht
X3BhcmVudFN0eWxlLT5jdXJzb3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDdXJzb3JM
aXN0KG1fcGFyZW50U3R5bGUtPmN1cnNvcnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgbV9zdHlsZS0+Y2xlYXJDdXJzb3JMaXN0KCk7Ci0gICAgICAgIGlmIChp
c0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6
aW5pdGlhbEN1cnNvcigpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCog
bGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgICAgIGlu
dCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcihD
VVJTT1JfQVVUTyk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKGkpOwotICAgICAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAg
ICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAg
ICAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVl
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdl
ID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQo
bV9lbGVtZW50KSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFsbG93ZWQg
dG8gc2hhcmUgc3R5bGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5hZGRDdXJzb3IoY2Fj
aGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q3Vyc29yLCBpbWFnZSksIGltYWdlLT5o
b3RTcG90KCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBpbnQg
dHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UICYmIG1fc3R5bGUtPmN1cnNvcigp
ICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0v
LyBjb2xvcnMgfHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKLSAgICAgICAg
Ly8gSWYgdGhlICdjdXJyZW50Q29sb3InIGtleXdvcmQgaXMgc2V0IG9uIHRoZSAnY29sb3InIHBy
b3BlcnR5IGl0c2VsZiwKLSAgICAgICAgLy8gaXQgaXMgdHJlYXRlZCBhcyAnY29sb3I6aW5oZXJp
dCcgYXQgcGFyc2UgdGltZQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpCi0gICAgICAgICAgICBp
c0luaGVyaXQgPSB0cnVlOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xv
cjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dEZpbGxDb2xvcjogewotICAgICAgICBDb2xvciBjb2w7Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsIGJhY2tncm91bmRDb2xvciwgQmFja2dyb3VuZENvbG9yKQotICAgICAg
ICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlclRv
cENvbG9yLCBib3JkZXJUb3BDb2xvciwgY29sb3IsIEJvcmRlclRvcENvbG9yKQotICAgICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUNvbG9yLCBib3JkZXJCb3R0b21Db2xvciwgY29sb3IsIEJvcmRlckJvdHRvbUNvbG9yKQotICAg
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0Q29sb3IsIGJvcmRlclJpZ2h0Q29sb3IsIGNvbG9yLCBCb3JkZXJSaWdodENvbG9yKQot
ICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJv
cmRlckxlZnRDb2xvciwgYm9yZGVyTGVmdENvbG9yLCBjb2xvciwgQm9yZGVyTGVmdENvbG9yKQot
ICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvciwg
Q29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1By
b3BlcnR5T3V0bGluZUNvbG9yLCBvdXRsaW5lQ29sb3IsIGNvbG9yLCBPdXRsaW5lQ29sb3IpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZUNvbG9yLCBjb2x1bW5SdWxlQ29sb3IsIGNvbG9yLCBDb2x1bW5SdWxlQ29s
b3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCB0ZXh0U3Ryb2tlQ29sb3IsIGNvbG9yLCBUZXh0U3Ry
b2tlQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIHRleHRFbXBoYXNpc0NvbG9yLCBjb2xv
ciwgVGV4dEVtcGhhc2lzQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJ
VEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwgdGV4dEZpbGxDb2xvciwg
Y29sb3IsIFRleHRGaWxsQ29sb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgLy8gVGhlIGJvcmRlci9vdXRsaW5l
IGNvbG9ycyB3aWxsIGp1c3QgbWFwIHRvIHRoZSBpbnZhbGlkIGNvbG9yIHxjb2x8IGFib3ZlLiAg
VGhpcyB3aWxsIGhhdmUgdGhlCi0gICAgICAgICAgICAvLyBlZmZlY3Qgb2YgZm9yY2luZyB0aGUg
dXNlIG9mIHRoZSBjdXJyZW50Q29sb3Igd2hlbiBpdCBjb21lcyB0aW1lIHRvIGRyYXcgdGhlIGJv
cmRlcnMgKGFuZCBvZgotICAgICAgICAgICAgLy8gbm90IHBhaW50aW5nIHRoZSBiYWNrZ3JvdW5k
IHNpbmNlIHRoZSBjb2xvciB3b24ndCBiZSB2YWxpZCkuCi0gICAgICAgICAgICBpZiAoaWQgPT0g
Q1NTUHJvcGVydHlDb2xvcikKLSAgICAgICAgICAgICAgICBjb2wgPSBSZW5kZXJTdHlsZTo6aW5p
dGlhbENvbG9yKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNvbCA9IGdldENv
bG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJhY2tncm91bmRDb2xvcihjb2wpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29s
b3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZUNvbG9yKGNvbCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVDb2xvcihjb2wpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0U3Ryb2tlQ29sb3IoY29sKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDb2xvcihj
b2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RmlsbENvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEZpbGxDb2xvcihjb2wp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCi0vLyB1cmkgfHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kSW1hZ2U6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKGltYWdlLCBJ
bWFnZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFza0ltYWdlOgotICAgICAgICBIQU5ETEVfTUFTS19WQUxVRShpbWFnZSwgSW1hZ2UsIHZhbHVl
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgot
ICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobGlzdFN0eWxlSW1hZ2Us
IExpc3RTdHlsZUltYWdlKQotICAgICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVJbWFnZShzdHls
ZUltYWdlKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIHZhbHVlKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLS8vIGxlbmd0aAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0
aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKLSAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRX
aWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGg6Ci0gICAgewotICAgICAgICBpZiAoaXNJbmhlcml0
KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyVG9w
V2lkdGgsIGJvcmRlclRvcFdpZHRoLCBCb3JkZXJUb3BXaWR0aCkKLSAgICAgICAgICAgIEhBTkRM
RV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBib3JkZXJSaWdodFdp
ZHRoLCBCb3JkZXJSaWdodFdpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBib3JkZXJCb3R0b21XaWR0aCwgQm9yZGVyQm90
dG9tV2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFdpZHRoLCBib3JkZXJMZWZ0V2lkdGgsIEJvcmRlckxlZnRXaWR0aCkKLSAgICAgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIG91dGxpbmVX
aWR0aCwgT3V0bGluZVdpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgY29sdW1uUnVsZVdpZHRoLCBDb2x1bW5SdWxl
V2lkdGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAo
aXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUo
Q1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQm9yZGVyVG9wV2lkdGgsIEJvcmRlcldpZHRoKQot
ICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRXaWR0aCwgQm9yZGVyUmlnaHRXaWR0aCwgQm9yZGVyV2lkdGgpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21X
aWR0aCwgQm9yZGVyQm90dG9tV2lkdGgsIEJvcmRlcldpZHRoKQotICAgICAgICAgICAgSEFORExF
X0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBCb3Jk
ZXJMZWZ0V2lkdGgsIEJvcmRlcldpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09O
RF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBPdXRsaW5lV2lkdGgsIEJvcmRl
cldpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDb2x1bW5SdWxlV2lkdGgsIEJvcmRlcldpZHRo
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgd2lkdGggPSAzOwot
ICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNh
c2UgQ1NTVmFsdWVUaGluOgotICAgICAgICAgICAgd2lkdGggPSAxOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06Ci0gICAgICAgICAgICB3aWR0aCA9IDM7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaWNrOgotICAgICAg
ICAgICAgd2lkdGggPSA1OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFs
dWVJbnZhbGlkOgotICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aFNob3J0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh3aWR0aCA8IDApIHJldHVybjsKLSAgICAgICAgc3dpdGNo
IChpZCkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGg6Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGg6Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodFdpZHRoKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldEJvcmRlckxlZnRXaWR0aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aDoKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldE91dGxpbmVXaWR0aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aDoKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldENvbHVtblJ1bGVXaWR0aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6IHsK
LSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAoaXNJbmhlcml0KSAKLSAgICAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLmZvbnRTbW9vdGhpbmcoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKEF1dG9TbW9vdGhpbmcpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaW50IGlkID0gcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCk7Ci0gICAgICAgICAgICBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmc7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86
Ci0gICAgICAgICAgICAgICAgICAgIHNtb290aGluZyA9IEF1dG9TbW9vdGhpbmc7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgot
ICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmcgPSBOb1Ntb290aGluZzsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUFudGlhbGlhc2Vk
OgotICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmcgPSBBbnRpYWxpYXNlZDsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1YnBpeGVs
QW50aWFsaWFzZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNtb290aGluZyA9IFN1YnBpeGVsQW50
aWFsaWFzZWQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgICAgICAgICBzbW9vdGhpbmcgPSBBdXRvU21vb3RoaW5nOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoc21vb3RoaW5nKTsK
LSAgICAgICAgfQotICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnRE
ZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKLSAgICBj
YXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6Ci0gICAgewotICAgICAgICAKLSAgICAgICAgaWYg
KGlzSW5oZXJpdCkgewotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0
eUxldHRlclNwYWNpbmcsIGxldHRlclNwYWNpbmcsIExldHRlclNwYWNpbmcpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIHdvcmRTcGFjaW5n
LCBXb3JkU3BhY2luZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lU
SF9WQUxVRShDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIExldHRlclNwYWNpbmcsIExldHRlcldv
cmRTcGFjaW5nKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENT
U1Byb3BlcnR5V29yZFNwYWNpbmcsIFdvcmRTcGFjaW5nLCBMZXR0ZXJXb3JkU3BhY2luZykKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaW50IHdpZHRo
ID0gMDsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKSB7Ci0gICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB1c2VTVkdab29tUnVsZXMg
PyAxLjBmIDogem9vbUZhY3Rvcik7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChpZCkgewot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldExldHRlclNwYWNpbmcod2lkdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFdv
cmRTcGFjaW5nKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLy8gIyMj
IG5lZWRzIHRoZSBkZWZpbml0aW9ucyBpbiByZW5kZXJzdHlsZQotICAgICAgICBkZWZhdWx0OiBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdvcmRCcmVhazoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5E
X1BSSU1JVElWRSh3b3JkQnJlYWssIFdvcmRCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUxfQU5EX1BSSU1JVElWRSh3b3JkV3JhcCwgV29yZFdyYXApCi0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobmJzcE1vZGUsIE5CU1BNb2RlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhazoKLSAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShraHRtbExpbmVCcmVhaywgS0hU
TUxMaW5lQnJlYWspCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShtYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9y
LCBNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOgotICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUwocmVzaXplLCBSZXNpemUpCi0KLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBFUmVzaXplIHIg
PSBSRVNJWkVfTk9ORTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IG1f
Y2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpKQotICAgICAgICAgICAgICAgIHIgPSBzZXR0
aW5ncy0+dGV4dEFyZWFzQXJlUmVzaXphYmxlKCkgPyBSRVNJWkVfQk9USCA6IFJFU0laRV9OT05F
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHIgPSAqcHJpbWl0aXZlVmFsdWU7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgbV9zdHlsZS0+c2V0UmVzaXplKHIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIAotICAgIC8vIGxlbmd0aCwgcGVyY2VudAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXhXaWR0aDoKLSAgICAgICAgLy8gK25vbmUgK2luaGVyaXQKLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkK
LSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICBjYXNlIENTU1Byb3BlcnR5VG9wOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlSaWdodDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5TWluV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRvcDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpbkJvdHRvbToKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVmdDoKLSAgICAgICAgLy8g
K2luaGVyaXQgK2F1dG8KLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5V2lkdGggfHwgaWQg
PT0gQ1NTUHJvcGVydHlNaW5XaWR0aCB8fCBpZCA9PSBDU1NQcm9wZXJ0eU1heFdpZHRoKSB7Ci0g
ICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVJbnRyaW5zaWMpIHsKLSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKElu
dHJpbnNpYyk7Ci0gICAgICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVNaW5JbnRyaW5zaWMpIHsKLSAgICAgICAgICAgICAgICBsID0g
TGVuZ3RoKE1pbkludHJpbnNpYyk7Ci0gICAgICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChpZCAhPSBDU1NQcm9wZXJ0eU1heFdp
ZHRoICYmIHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlQXV0bykKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5UGFkZGluZ1RvcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgotICAgIGNh
c2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
TGVmdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDoKLSAgICAgICAgLy8gK2luaGVy
aXQKLSAgICB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9J
TkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXhXaWR0aCwgbWF4V2lkdGgsIE1heFdpZHRoKQotICAg
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvdHRvbSwgYm90dG9tLCBC
b3R0b20pCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5VG9wLCB0
b3AsIFRvcCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlMZWZ0
LCBsZWZ0LCBMZWZ0KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0
eVJpZ2h0LCByaWdodCwgUmlnaHQpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENT
U1Byb3BlcnR5V2lkdGgsIHdpZHRoLCBXaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklU
X0NPTkQoQ1NTUHJvcGVydHlNaW5XaWR0aCwgbWluV2lkdGgsIE1pbldpZHRoKQotICAgICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIHBhZGRpbmdUb3As
IFBhZGRpbmdUb3ApCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5
UGFkZGluZ1JpZ2h0LCBwYWRkaW5nUmlnaHQsIFBhZGRpbmdSaWdodCkKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBwYWRkaW5nQm90dG9t
LCBQYWRkaW5nQm90dG9tKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9w
ZXJ0eVBhZGRpbmdMZWZ0LCBwYWRkaW5nTGVmdCwgUGFkZGluZ0xlZnQpCi0gICAgICAgICAgICBI
QU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBtYXJnaW5Ub3AsIE1hcmdp
blRvcCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXJnaW5S
aWdodCwgbWFyZ2luUmlnaHQsIE1hcmdpblJpZ2h0KQotICAgICAgICAgICAgSEFORExFX0lOSEVS
SVRfQ09ORChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgbWFyZ2luQm90dG9tLCBNYXJnaW5Cb3R0
b20pCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TWFyZ2luTGVm
dCwgbWFyZ2luTGVmdCwgTWFyZ2luTGVmdCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NP
TkQoQ1NTUHJvcGVydHlUZXh0SW5kZW50LCB0ZXh0SW5kZW50LCBUZXh0SW5kZW50KQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewot
ICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWF4
V2lkdGgsIE1heFdpZHRoLCBNYXhTaXplKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09O
RF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm90dG9tLCBCb3R0b20sIE9mZnNldCkKLSAgICAgICAg
ICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVRvcCwgVG9wLCBP
ZmZzZXQpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJv
cGVydHlMZWZ0LCBMZWZ0LCBPZmZzZXQpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05E
X1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlSaWdodCwgUmlnaHQsIE9mZnNldCkKLSAgICAgICAgICAg
IEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVdpZHRoLCBXaWR0aCwg
U2l6ZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9w
ZXJ0eU1pbldpZHRoLCBNaW5XaWR0aCwgTWluU2l6ZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTklU
SUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIFBhZGRpbmdUb3AsIFBh
ZGRpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJv
cGVydHlQYWRkaW5nUmlnaHQsIFBhZGRpbmdSaWdodCwgUGFkZGluZykKLSAgICAgICAgICAgIEhB
TkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sIFBh
ZGRpbmdCb3R0b20sIFBhZGRpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJ
VEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgUGFkZGluZ0xlZnQsIFBhZGRpbmcpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJn
aW5Ub3AsIE1hcmdpblRvcCwgTWFyZ2luKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09O
RF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIE1hcmdpblJpZ2h0LCBNYXJnaW4p
Ci0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlN
YXJnaW5Cb3R0b20sIE1hcmdpbkJvdHRvbSwgTWFyZ2luKQotICAgICAgICAgICAgSEFORExFX0lO
SVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgTWFyZ2luTGVmdCwg
TWFyZ2luKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORChDU1NQcm9wZXJ0eVRleHRJ
bmRlbnQsIFRleHRJbmRlbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gCi0KLSAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmICFhcHBseSkgewotICAgICAgICAgICAgaW50IHR5
cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAgICAgaWYgKENT
U1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgICAg
IC8vIEhhbmRsZSBvdXIgcXVpcmt5IG1hcmdpbiB1bml0cyBpZiB3ZSBoYXZlIHRoZW0uCi0gICAg
ICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZv
ckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZS0+aXNRdWlya1ZhbHVl
KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpCi0gICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAgICB9Ci0gICAg
ICAgIGlmICghYXBwbHkpIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dE1heFdpZHRoKGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvdHRvbToKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3R0b20obCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5VG9w
OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFRvcChsKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgotICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldExlZnQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Umln
aHQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2lkdGg6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0V2lkdGgobCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6Ci0g
ICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWluV2lkdGgobCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nVG9wKGwpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodDoKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nUmlnaHQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nQm90dG9tKGwpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0OgotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldFBhZGRpbmdMZWZ0KGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRvcDoKLSAgICAgICAgICAgICAgICBt
X3N0eWxlLT5zZXRNYXJnaW5Ub3AobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQ6Ci0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0TWFyZ2luUmlnaHQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tOgotICAgICAgICAgICAgICAgIG1fc3R5bGUt
PnNldE1hcmdpbkJvdHRvbShsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dE1hcmdpbkxlZnQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dEluZGVudDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0
SW5kZW50KGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6Ci0gICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUp
IHsKLSAgICAgICAgICAgIGwgPSBMZW5ndGgodW5kZWZpbmVkTGVuZ3RoLCBGaXhlZCk7Ci0gICAg
ICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5SGVp
Z2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6Ci0gICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludHJpbnNp
YykgewotICAgICAgICAgICAgbCA9IExlbmd0aChJbnRyaW5zaWMpOwotICAgICAgICAgICAgYXBw
bHkgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTWluSW50cmluc2ljKSB7Ci0gICAgICAgICAg
ICBsID0gTGVuZ3RoKE1pbkludHJpbnNpYyk7Ci0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoaWQgIT0gQ1NTUHJvcGVydHlNYXhIZWlnaHQgJiYgcHJpbWl0aXZl
VmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAg
ICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhIZWlnaHQs
IE1heEhlaWdodCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlI
ZWlnaHQsIGhlaWdodCwgSGVpZ2h0KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChD
U1NQcm9wZXJ0eU1pbkhlaWdodCwgbWluSGVpZ2h0LCBNaW5IZWlnaHQpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAg
SEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBNYXhI
ZWlnaHQsIE1heFNpemUpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFM
VUUoQ1NTUHJvcGVydHlIZWlnaHQsIEhlaWdodCwgU2l6ZSkKLSAgICAgICAgICAgIEhBTkRMRV9J
TklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgTWluSGVpZ2h0LCBN
aW5TaXplKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlICYmICFhcHBseSkgewotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlw
ZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAoQ1NT
UHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICAgICAg
bCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgICAg
ICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAg
ICAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgp
LCBQZXJjZW50KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFwcGx5KQot
ICAgICAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXhIZWlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1heEhlaWdodChs
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUhlaWdodDoKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGVpZ2h0KGwp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1By
b3BlcnR5TWluSGVpZ2h0OgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNaW5IZWln
aHQobCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodmVydGljYWxBbGlnbiwgVmVydGljYWxBbGlnbikK
LSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgRVZlcnRpY2Fs
QWxpZ24gYWxpZ247Ci0KLSAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRvcDoKLSAgICAgICAgICAgICAg
ICAgICAgYWxpZ24gPSBUT1A7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVC
b3R0b206Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gQk9UVE9NOyBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlTWlkZGxlOgotICAgICAgICAgICAgICAgICAgICBhbGln
biA9IE1JRERMRTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUJhc2VsaW5l
OgotICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IEJBU0VMSU5FOyBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlVGV4dEJvdHRvbToKLSAgICAgICAgICAgICAgICAgICAgYWxp
Z24gPSBURVhUX0JPVFRPTTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRl
eHRUb3A6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gVEVYVF9UT1A7IGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdWI6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWdu
ID0gU1VCOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3VwZXI6Ci0gICAg
ICAgICAgICAgICAgICAgIGFsaWduID0gU1VQRVI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVXZWJraXRCYXNlbGluZU1pZGRsZToKLSAgICAgICAgICAgICAgICAgICAgYWxp
Z24gPSBCQVNFTElORV9NSURETEU7IGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBtX3N0
eWxlLT5zZXRWZXJ0aWNhbEFsaWduKGFsaWduKTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpOwotICAgICAgICAgIExlbmd0aCBsOwotICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVW
YWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOwotICAgICAgICAgIGVsc2UgaWYgKHR5cGUg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgbCA9IExl
bmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0KLSAgICAg
ICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKExFTkdUSCk7Ci0gICAgICAgICAgbV9zdHls
ZS0+c2V0VmVydGljYWxBbGlnbkxlbmd0aChsKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47
Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6Ci0gICAgewotICAgICAgICBGb250RGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0g
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsKLSAgICAgICAgZmxvYXQg
b2xkU2l6ZSA9IDA7Ci0gICAgICAgIGZsb2F0IHNpemUgPSAwOwotICAgICAgICAKLSAgICAgICAg
Ym9vbCBwYXJlbnRJc0Fic29sdXRlU2l6ZSA9IGZhbHNlOwotICAgICAgICBpZiAobV9wYXJlbnRO
b2RlKSB7Ci0gICAgICAgICAgICBvbGRTaXplID0gbV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOwotICAgICAgICAgICAgcGFyZW50SXNBYnNvbHV0ZVNpemUg
PSBtX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5pc0Fic29sdXRlU2l6ZSgpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgc2l6ZSA9IG9s
ZFNpemU7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnROb2RlKQotICAgICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShtX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRp
b24oKS5rZXl3b3JkU2l6ZSgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAg
ICAgICAgICAgIHNpemUgPSBmb250U2l6ZUZvcktleXdvcmQobV9jaGVja2VyLm1fZG9jdW1lbnQs
IENTU1ZhbHVlTWVkaXVtLCBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpKTsK
LSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShDU1NWYWx1ZU1lZGl1
bSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAvLyBLZXl3b3JkcyBhcmUgYmVpbmcgdXNl
ZC4KLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlWHhTbWFsbDoKLSAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlWFNtYWxsOgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFsbDoKLSAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVMYXJnZToKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlWExhcmdlOgotICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVYeExhcmdlOgotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVXZWJraXRYeHhMYXJnZToKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IGZvbnRT
aXplRm9yS2V5d29yZChtX2NoZWNrZXIubV9kb2N1bWVudCwgcHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCksIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOwotICAgICAgICAg
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlcjoKLSAgICAgICAgICAg
ICAgICAgICAgc2l6ZSA9IGxhcmdlckZvbnRTaXplKG9sZFNpemUsIG1fY2hlY2tlci5tX2RvY3Vt
ZW50LT5pblF1aXJrc01vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFsbGVyOgotICAgICAgICAgICAgICAgICAgICBzaXpl
ID0gc21hbGxlckZvbnRTaXplKG9sZFNpemUsIG1fY2hlY2tlci5tX2RvY3VtZW50LT5pblF1aXJr
c01vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHBhcmVudElzQWJzb2x1
dGVTaXplICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUxhcmdlciB8fAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVNtYWxsZXIpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29sdXRl
U2l6ZSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0
eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICE9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRU1TICYmIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTICYmCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgIT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19SRU1TKSk7Ci0gICAgICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6Omlz
VW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQobV9wYXJlbnRTdHlsZSwgbV9yb290RWxlbWVudFN0eWxl
LCB0cnVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgICAgIHNpemUgPSAocHJpbWl0aXZlVmFsdWUt
PmdldEZsb2F0VmFsdWUoKSAqIG9sZFNpemUpIC8gMTAwLjBmOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzaXplIDwg
MCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBzZXRGb250U2l6ZShmb250RGVzY3Jp
cHRpb24sIHNpemUpOwotICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5WkluZGV4OiB7Ci0gICAgICAg
IGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChtX3BhcmVudFN0eWxlLT5oYXNBdXRv
WkluZGV4KCkpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b1pJbmRleCgpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFpJbmRleChtX3Bh
cmVudFN0eWxlLT56SW5kZXgoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxz
ZSBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
QXV0bykgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b1pJbmRleCgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBGSVhNRTogU2hv
dWxkIGNsYW1wIGFsbCBzb3J0cyBvZiBvdGhlciBpbnRlZ2VyIHByb3BlcnRpZXMgdG9vLgotICAg
ICAgICBjb25zdCBkb3VibGUgbWluSW50QXNEb3VibGUgPSBJTlRfTUlOOwotICAgICAgICBjb25z
dCBkb3VibGUgbWF4SW50QXNEb3VibGUgPSBJTlRfTUFYOwotICAgICAgICBtX3N0eWxlLT5zZXRa
SW5kZXgoc3RhdGljX2Nhc3Q8aW50PihtYXgobWluSW50QXNEb3VibGUsIG1pbihwcmltaXRpdmVW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgbWF4SW50QXNEb3VibGUpKSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXaWRvd3M6Ci0gICAgewotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh3aWRvd3MsIFdpZG93cykKLSAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBt
X3N0eWxlLT5zZXRXaWRvd3MocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5T3JwaGFuczoK
LSAgICB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG9ycGhhbnMsIE9ycGhh
bnMpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1p
dGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0T3JwaGFucyhwcmltaXRpdmVWYWx1ZS0+Z2V0
SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAgICAgICAKLQotLy8gbGVuZ3Ro
LCBwZXJjZW50LCBudW1iZXIKLSAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdodDoKLSAgICB7
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGxpbmVIZWlnaHQsIExpbmVIZWln
aHQpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0OwotICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgo
LTEwMC4wLCBQZXJjZW50KTsKLSAgICAgICAgZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6Omlz
VW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKLSAgICAgICAgICAgIGRvdWJsZSBtdWx0aXBsaWVyID0g
em9vbUZhY3RvcjsKLSAgICAgICAgICAgIGlmIChtX3N0eWxlLT50ZXh0U2l6ZUFkanVzdCgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fY2hlY2tlci5tX2RvY3VtZW50
LT5mcmFtZSgpKQotICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9IGZyYW1lLT50ZXh0
Wm9vbUZhY3RvcigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGluZUhlaWdodCA9IExl
bmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBt
X3Jvb3RFbGVtZW50U3R5bGUsICBtdWx0aXBsaWVyKSwgRml4ZWQpOwotICAgICAgICB9IGVsc2Ug
aWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAg
ICAgbGluZUhlaWdodCA9IExlbmd0aCgobV9zdHlsZS0+Zm9udFNpemUoKSAqIHByaW1pdGl2ZVZh
bHVlLT5nZXRJbnRWYWx1ZSgpKSAvIDEwMCwgRml4ZWQpOwotICAgICAgICBlbHNlIGlmICh0eXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgbGluZUhlaWdo
dCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSAqIDEwMC4wLCBQZXJj
ZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxl
LT5zZXRMaW5lSGVpZ2h0KGxpbmVIZWlnaHQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0v
LyBzdHJpbmcKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduOgotICAgIHsKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dEFsaWduLCBUZXh0QWxpZ24pCi0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGludCBp
ZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOwotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFs
dWVTdGFydCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRBbGlnbihtX3N0eWxlLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQpOwotICAgICAgICBlbHNlIGlmIChp
ZCA9PSBDU1NWYWx1ZUVuZCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRBbGlnbihtX3N0
eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSSUdIVCA6IExFRlQpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0QWxpZ24oKnByaW1pdGl2ZVZhbHVlKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotLy8gcmVjdAotICAgIGNhc2UgQ1NTUHJvcGVydHlD
bGlwOgotICAgIHsKLSAgICAgICAgTGVuZ3RoIHRvcDsKLSAgICAgICAgTGVuZ3RoIHJpZ2h0Owot
ICAgICAgICBMZW5ndGggYm90dG9tOwotICAgICAgICBMZW5ndGggbGVmdDsKLSAgICAgICAgYm9v
bCBoYXNDbGlwID0gdHJ1ZTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAg
aWYgKG1fcGFyZW50U3R5bGUtPmhhc0NsaXAoKSkgewotICAgICAgICAgICAgICAgIHRvcCA9IG1f
cGFyZW50U3R5bGUtPmNsaXBUb3AoKTsKLSAgICAgICAgICAgICAgICByaWdodCA9IG1fcGFyZW50
U3R5bGUtPmNsaXBSaWdodCgpOwotICAgICAgICAgICAgICAgIGJvdHRvbSA9IG1fcGFyZW50U3R5
bGUtPmNsaXBCb3R0b20oKTsKLSAgICAgICAgICAgICAgICBsZWZ0ID0gbV9wYXJlbnRTdHlsZS0+
Y2xpcExlZnQoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaGFzQ2xp
cCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHRvcCA9IHJpZ2h0ID0gYm90dG9tID0gbGVmdCA9
IExlbmd0aCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkg
ewotICAgICAgICAgICAgaGFzQ2xpcCA9IGZhbHNlOwotICAgICAgICAgICAgdG9wID0gcmlnaHQg
PSBib3R0b20gPSBsZWZ0ID0gTGVuZ3RoKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXByaW1pdGl2
ZVZhbHVlKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0
aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JFQ1Qp
IHsKLSAgICAgICAgICAgIFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UmVjdFZhbHVl
KCk7Ci0gICAgICAgICAgICBpZiAoIXJlY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgdG9wID0gY29udmVydFRvTGVuZ3RoKHJlY3QtPnRvcCgpLCBzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgcmlnaHQgPSBjb252ZXJ0
VG9MZW5ndGgocmVjdC0+cmlnaHQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29t
RmFjdG9yKTsKLSAgICAgICAgICAgIGJvdHRvbSA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT5ib3R0
b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAg
ICAgIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+bGVmdCgpLCBzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUtPnNldENsaXAodG9wLCByaWdodCwgYm90dG9tLCBs
ZWZ0KTsKLSAgICAgICAgbV9zdHlsZS0+c2V0SGFzQ2xpcChoYXNDbGlwKTsKLSAgICAKLSAgICAg
ICAgLy8gcmVjdCwgaWRlbnQKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotLy8gbGlzdHMKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoKLSAgICAgICAgLy8gbGlzdCBvZiBzdHJpbmcsIHVy
aSwgY291bnRlciwgYXR0ciwgaQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEluIENTUzMsIGl0
IHdpbGwgYmUgcG9zc2libGUgdG8gaW5oZXJpdCBjb250ZW50LiAgSW4gQ1NTMiBpdCBpcyBub3Qu
ICBUaGlzCi0gICAgICAgIC8vIG5vdGUgaXMgYSByZW1pbmRlciB0aGF0IGV2ZW50dWFsbHkgImlu
aGVyaXQiIG5lZWRzIHRvIGJlIHN1cHBvcnRlZC4KLQotICAgICAgICBpZiAoaXNJbml0aWFsKSB7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5jbGVhckNvbnRlbnQoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBz
dGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgICAgIGludCBsZW4gPSBsaXN0
LT5sZW5ndGgoKTsKLQotICAgICAgICBib29sIGRpZFNldCA9IGZhbHNlOwotICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9
IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+
aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRD
b250ZW50KHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqPihpdGVtKS0+Z2VuZXJh
dGVkSW1hZ2UoKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0
aXZlVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1
ZS0+cHJpbWl0aXZlVHlwZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1NUUklORzoKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29udGVu
dChjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBkaWRTZXQpOwotICAgICAg
ICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQVRUUjogewotICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2FuIGEgbmFtZXNwYWNlIGJlIHNwZWNpZmllZCBm
b3IgYW4gYXR0cihmb28pPwotICAgICAgICAgICAgICAgICAgICBpZiAobV9zdHlsZS0+c3R5bGVU
eXBlKCkgPT0gTk9QU0VVRE8pCi0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRV
bmlxdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9wYXJlbnRTdHlsZS0+c2V0VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIFF1YWxp
ZmllZE5hbWUgYXR0cihudWxsQXRvbSwgY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmlt
cGwoKSwgbnVsbEF0b20pOwotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb250ZW50
KG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKGF0dHIpLmltcGwoKSwgZGlkU2V0KTsKLSAgICAgICAg
ICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0
ZXIgdGhlIGZhY3QgdGhhdCB0aGUgYXR0cmlidXRlIHZhbHVlIGFmZmVjdHMgdGhlIHN0eWxlCi0g
ICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0b3JBdHRycy5hZGQoYXR0ci5sb2NhbE5hbWUoKS5p
bXBsKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTogewotICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNvbnRlbnRWYWx1ZS0+aXNJbWFnZVZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
Q29udGVudChjYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDb250ZW50LCBzdGF0
aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4oY29udGVudFZhbHVlKSksIGRpZFNldCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfQ09VTlRFUjogewotICAgICAgICAgICAgICAgICAgICBDb3VudGVyKiBjb3VudGVyVmFs
dWUgPSBjb250ZW50VmFsdWUtPmdldENvdW50ZXJWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAg
ICBPd25QdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIgPSBhZG9wdFB0cihuZXcgQ291bnRlckNv
bnRlbnQoY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAoRUxpc3RTdHlsZVR5cGUpY291bnRlclZhbHVlLT5saXN0U3R5bGVOdW1iZXIoKSwgY291bnRl
clZhbHVlLT5zZXBhcmF0b3IoKSkpOwotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRD
b250ZW50KGNvdW50ZXIucmVsZWFzZSgpLCBkaWRTZXQpOwotICAgICAgICAgICAgICAgICAgICBk
aWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBpZiAoIWRpZFNldCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmNsZWFyQ29udGVu
dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50
ZXJJbmNyZW1lbnQ6Ci0gICAgICAgIGFwcGx5Q291bnRlckxpc3Qoc3R5bGUoKSwgdmFsdWUtPmlz
VmFsdWVMaXN0KCkgPyBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSkgOiAwLCBmYWxz
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlclJlc2V0Ogot
ICAgICAgICBhcHBseUNvdW50ZXJMaXN0KHN0eWxlKCksIHZhbHVlLT5pc1ZhbHVlTGlzdCgpID8g
c3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpIDogMCwgdHJ1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250RmFtaWx5OiB7Ci0gICAgICAgIC8vIGxp
c3Qgb2Ygc3RyaW5ncyBhbmQgaWRzCi0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIEZvbnREZXNjcmlwdGlvbiBwYXJlbnRGb250RGVzY3JpcHRpb24gPSBtX3BhcmVudFN0eWxl
LT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KHBhcmVudEZvbnREZXNjcmlwdGlvbi5nZW5lcmlj
RmFtaWx5KCkpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlseShwYXJlbnRG
b250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0SXNTcGVjaWZpZWRGb250KHBhcmVudEZvbnREZXNjcmlwdGlvbi5pc1NwZWNpZmllZEZv
bnQoKSk7Ci0gICAgICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnRE
ZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAg
ICAgRm9udERlc2NyaXB0aW9uIGluaXRpYWxEZXNjID0gRm9udERlc2NyaXB0aW9uKCk7Ci0gICAg
ICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCB0aGUgc2l6ZSB0
byBhY2NvdW50IGZvciB0aGUgZ2VuZXJpYyBmYW1pbHkgY2hhbmdlIGZyb20gbW9ub3NwYWNlCi0g
ICAgICAgICAgICAvLyB0byBub24tbW9ub3NwYWNlLgotICAgICAgICAgICAgaWYgKGZvbnREZXNj
cmlwdGlvbi5rZXl3b3JkU2l6ZSgpICYmIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRT
aXplKCkpCi0gICAgICAgICAgICAgICAgc2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBmb250
U2l6ZUZvcktleXdvcmQobV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlWHhTbWFsbCArIGZv
bnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwgZmFsc2UpKTsKLSAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KGluaXRpYWxEZXNjLmdlbmVyaWNGYW1pbHko
KSk7Ci0gICAgICAgICAgICBpZiAoIWluaXRpYWxEZXNjLmZpcnN0RmFtaWx5KCkuZmFtaWx5SXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbHkoaW5pdGlh
bERlc2MuZmlyc3RGYW1pbHkoKSk7Ci0gICAgICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgbV9mb250RGlydHkg
PSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCk7Ci0gICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVl
TGlzdCo+KHZhbHVlKTsKLSAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotICAgICAg
ICBGb250RmFtaWx5JiBmaXJzdEZhbWlseSA9IGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgp
OwotICAgICAgICBGb250RmFtaWx5KiBjdXJyRmFtaWx5ID0gMDsKLSAgICAgICAgCi0gICAgICAg
IC8vIEJlZm9yZSBtYXBwaW5nIGluIGEgbmV3IGZvbnQtZmFtaWx5IHByb3BlcnR5LCB3ZSBzaG91
bGQgcmVzZXQgdGhlIGdlbmVyaWMgZmFtaWx5LgotICAgICAgICBib29sIG9sZEZhbWlseVVzZWRG
aXhlZERlZmF1bHRTaXplID0gZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKTsK
LSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9u
OjpOb0ZhbWlseSk7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewot
ICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KGkpOwotICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVu
dFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKLSAgICAgICAg
ICAgIEF0b21pY1N0cmluZyBmYWNlOwotICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0g
bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICBpZiAoY29udGVu
dFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcp
IHsKLSAgICAgICAgICAgICAgICBpZiAoY29udGVudFZhbHVlLT5pc0ZvbnRGYW1pbHlWYWx1ZSgp
KQotICAgICAgICAgICAgICAgICAgICBmYWNlID0gc3RhdGljX2Nhc3Q8Rm9udEZhbWlseVZhbHVl
Kj4oY29udGVudFZhbHVlKS0+ZmFtaWx5TmFtZSgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChj
b250ZW50VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lE
RU5UICYmIHNldHRpbmdzKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChjb250ZW50VmFsdWUt
PmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJv
ZHk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9u
dEZhbWlseSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2Ug
PSAiLXdlYmtpdC1zZXJpZiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlNlcmlmRmFtaWx5KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlU2Fuc1NlcmlmOgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LXNh
bnMtc2VyaWYiOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdl
bmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpTYW5zU2VyaWZGYW1pbHkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVD
dXJzaXZlOgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LWN1cnNpdmUi
OwotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1p
bHkoRm9udERlc2NyaXB0aW9uOjpDdXJzaXZlRmFtaWx5KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRmFudGFzeToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1mYW50YXN5IjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNj
cmlwdGlvbjo6RmFudGFzeUZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU1vbm9zcGFjZToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1tb25vc3BhY2UiOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9u
OjpNb25vc3BhY2VGYW1pbHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWZhY2UuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJyRmFtaWx5KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIEZpbGxpbmcgaW4gdGhlIGZpcnN0IGZhbWlseS4KLSAgICAgICAgICAgICAg
ICAgICAgZmlyc3RGYW1pbHkuc2V0RmFtaWx5KGZhY2UpOwotICAgICAgICAgICAgICAgICAgICBm
aXJzdEZhbWlseS5hcHBlbmRGYW1pbHkoMCk7IC8vIFJlbW92ZSBhbnkgaW5oZXJpdGVkIGZhbWls
eS1mYWxsYmFjayBsaXN0LgotICAgICAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0gJmZpcnN0
RmFtaWx5OwotICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNTcGVjaWZp
ZWRGb250KGZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkgPT0gRm9udERlc2NyaXB0aW9u
OjpOb0ZhbWlseSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNoYXJlZEZvbnRGYW1pbHk6
OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAgICAgICBuZXdGYW1pbHktPnNldEZhbWlseShmYWNl
KTsKLSAgICAgICAgICAgICAgICAgICAgY3VyckZhbWlseS0+YXBwZW5kRmFtaWx5KG5ld0ZhbWls
eSk7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
V2UgY2FuJ3QgY2FsbCB1c2VGaXhlZERlZmF1bHRTaXplKCkgdW50aWwgYWxsIG5ldyBmb250IGZh
bWlsaWVzIGhhdmUgYmVlbiBhZGRlZAotICAgICAgICAvLyBJZiBjdXJyRmFtaWx5IGlzIG5vbi16
ZXJvIHRoZW4gd2Ugc2V0IGF0IGxlYXN0IG9uZSBmYW1pbHkgb24gdGhpcyBkZXNjcmlwdGlvbi4K
LSAgICAgICAgaWYgKGN1cnJGYW1pbHkpIHsKLSAgICAgICAgICAgIGlmIChmb250RGVzY3JpcHRp
b24ua2V5d29yZFNpemUoKSAmJiBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgp
ICE9IG9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXplKQotICAgICAgICAgICAgICAgIHNldEZv
bnRTaXplKGZvbnREZXNjcmlwdGlvbiwgZm9udFNpemVGb3JLZXl3b3JkKG1fY2hlY2tlci5tX2Rv
Y3VtZW50LCBDU1NWYWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAt
IDEsICFvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkpOwotCi0gICAgICAgICAgICBpZiAo
bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAg
ICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uOiB7Ci0gICAgICAgIC8vIGxp
c3Qgb2YgaWRlbnQKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dERlY29y
YXRpb24sIFRleHREZWNvcmF0aW9uKQotICAgICAgICBpbnQgdCA9IFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dERlY29yYXRpb24oKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgLy8g
ZG8gbm90aGluZwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCF2YWx1ZS0+aXNW
YWx1ZUxpc3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBDU1NWYWx1
ZUxpc3QgKmxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgICAg
ICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIENTU1ZhbHVl
ICppdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwotICAgICAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5v
bmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ID0gVEROT05FOyBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVVuZGVybGluZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHQgfD0gVU5ERVJMSU5FOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZU92ZXJsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgdCB8PSBPVkVSTElORTsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5lVGhyb3VnaDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHQgfD0gTElORV9USFJPVUdIOyBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUJsaW5rOgotICAgICAgICAgICAgICAgICAgICAgICAgdCB8
PSBCTElOSzsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgbV9zdHlsZS0+c2V0VGV4dERlY29yYXRpb24odCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Wm9vbToKLSAgICB7Ci0g
ICAgICAgIC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdCBiZWZvcmUgd2UgZG8gYW55dGhpbmcu
ICBUaGlzIGFsbG93cyB0aGUgc2V0Wm9vbSBtZXRob2QgdG8gYWNjdXJhdGVseSBjb21wdXRlIGEg
bmV3Ci0gICAgICAgIC8vIHpvb20gaW4gZWZmZWN0LgotICAgICAgICBtX3N0eWxlLT5zZXRFZmZl
Y3RpdmVab29tKG1fcGFyZW50U3R5bGUgPyBtX3BhcmVudFN0eWxlLT5lZmZlY3RpdmVab29tKCkg
OiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAgICAgIAotICAgICAgICAvLyBOb3cg
d2UgY2FuIGhhbmRsZSBpbmhlcml0IGFuZCBpbml0aWFsLgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTCh6b29tLCBab29tKQotICAgICAgICAKLSAgICAgICAgLy8gSGFuZGxlIG5v
cm1hbC9yZXNldCwgbnVtYmVycyBhbmQgcGVyY2VudGFnZXMuCi0gICAgICAgIGludCB0eXBlID0g
cHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAgICAgIGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlUmVzZXQpIHsKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7
Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVEb2N1bWVudCkgewotICAgICAgICAgICAgZmxvYXQgZG9jWm9vbSA9IG1fY2hlY2tlci5tX2Rv
Y3VtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLT56b29tKCk7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRFZmZlY3RpdmVab29tKGRvY1pvb20pOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Wm9v
bShkb2Nab29tKTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSkgewotICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRG
bG9hdFZhbHVlKCkpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Wm9vbShwcmltaXRpdmVW
YWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwLjBmKTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7Ci0gICAgICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRab29tKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0vLyBzaG9ydGhhbmQgcHJvcGVydGllcwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
OgotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5jbGVhckJh
Y2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJhY2tncm91bmRDb2xv
cihDb2xvcigpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaGVyaXQpIHsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPmluaGVyaXRCYWNrZ3JvdW5kTGF5ZXJzKCptX3BhcmVudFN0eWxl
LT5iYWNrZ3JvdW5kTGF5ZXJzKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0QmFja2dyb3Vu
ZENvbG9yKG1fcGFyZW50U3R5bGUtPmJhY2tncm91bmRDb2xvcigpKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6Ci0gICAgICAgIGlm
IChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5jbGVhck1hc2tMYXllcnMoKTsKLSAg
ICAgICAgZWxzZSBpZiAoaXNJbmhlcml0KQotICAgICAgICAgICAgbV9zdHlsZS0+aW5oZXJpdE1h
c2tMYXllcnMoKm1fcGFyZW50U3R5bGUtPm1hc2tMYXllcnMoKSk7Ci0gICAgICAgIHJldHVybjsK
LQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKLSAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyQ29sb3I6Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUJvcmRlciB8
fCBpZCA9PSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wQ29s
b3IobV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wQ29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0
eWxlLT5ib3JkZXJUb3BDb2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3IobV9wYXJlbnRTdHlsZS0+Ym9y
ZGVyQm90dG9tQ29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21D
b2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Qm9yZGVyTGVmdENvbG9yKG1fcGFyZW50U3R5bGUtPmJvcmRlckxlZnRDb2xvcigpLmlz
VmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJvcmRlckxlZnRDb2xvcigpIDogbV9wYXJlbnRTdHls
ZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRDb2xv
cihtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodENvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRT
dHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENvbG9yKENvbG9yKCkpOyAvLyBSZXNldCB0byBpbnZh
bGlkIGNvbG9yIHNvIGN1cnJlbnRDb2xvciBpcyB1c2VkIGluc3RlYWQuCi0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3IoQ29sb3IoKSk7Ci0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9yKENvbG9yKCkpOwotICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0Q29sb3IoQ29sb3IoKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5Qm9yZGVyIHx8IGlkID09IENT
U1Byb3BlcnR5Qm9yZGVyU3R5bGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0luaGVy
aXQpIHsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BTdHlsZShtX3BhcmVu
dFN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRC
b3JkZXJCb3R0b21TdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21TdHlsZSgpKTsKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0U3R5bGUobV9wYXJlbnRTdHlsZS0+
Ym9yZGVyTGVmdFN0eWxlKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJp
Z2h0U3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRTdHlsZSgpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldEJvcmRlclRvcFN0eWxlKFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUo
KSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tU3R5bGUoUmVuZGVy
U3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRCb3JkZXJMZWZ0U3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSgpKTsKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodFN0eWxlKFJlbmRlclN0eWxlOjpp
bml0aWFsQm9yZGVyU3R5bGUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGlkID09IENTU1Byb3BlcnR5Qm9yZGVyIHx8IGlkID09IENTU1Byb3BlcnR5Qm9yZGVyV2lk
dGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BX
aWR0aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aCht
X3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkp
OwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgobV9wYXJlbnRT
dHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRv
cFdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgoKSk7Ci0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tV2lkdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3Jk
ZXJXaWR0aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgo
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJSaWdodFdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgo
KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJUb3A6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENvbG9yKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcENv
bG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wQ29sb3IoKSA6IG1fcGFy
ZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wU3R5
bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wU3R5bGUoKSk7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRCb3JkZXJUb3BXaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxl
LT5yZXNldEJvcmRlclRvcCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0OgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJSaWdodENvbG9yKG1fcGFyZW50U3R5bGUtPmJvcmRlclJpZ2h0Q29sb3Io
KS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodENvbG9yKCkgOiBtX3BhcmVu
dFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0U3R5
bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRTdHlsZSgpKTsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgp
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBt
X3N0eWxlLT5yZXNldEJvcmRlclJpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21Db2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJC
b3R0b21Db2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbUNvbG9y
KCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJv
cmRlckJvdHRvbVN0eWxlKG1fcGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbVN0eWxlKCkpOwotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tV2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9y
ZGVyQm90dG9tV2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFs
KQotICAgICAgICAgICAgbV9zdHlsZS0+cmVzZXRCb3JkZXJCb3R0b20oKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0OgotICAgICAgICBpZiAoaXNJbmhl
cml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0Q29sb3IobV9wYXJlbnRT
dHlsZS0+Ym9yZGVyTGVmdENvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVy
TGVmdENvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldEJvcmRlckxlZnRTdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0U3R5bGUoKSk7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgobV9wYXJlbnRTdHlsZS0+
Ym9yZGVyTGVmdFdpZHRoKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlh
bCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0Qm9yZGVyTGVmdCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkg
ewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luVG9wKG1fcGFyZW50U3R5bGUtPm1hcmdp
blRvcCgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpbkJvdHRvbShtX3BhcmVudFN0
eWxlLT5tYXJnaW5Cb3R0b20oKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5MZWZ0
KG1fcGFyZW50U3R5bGUtPm1hcmdpbkxlZnQoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRN
YXJnaW5SaWdodChtX3BhcmVudFN0eWxlLT5tYXJnaW5SaWdodCgpKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5yZXNldE1hcmdp
bigpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6Ci0gICAg
ICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdUb3Ao
bV9wYXJlbnRTdHlsZS0+cGFkZGluZ1RvcCgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBh
ZGRpbmdCb3R0b20obV9wYXJlbnRTdHlsZS0+cGFkZGluZ0JvdHRvbSgpKTsKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldFBhZGRpbmdMZWZ0KG1fcGFyZW50U3R5bGUtPnBhZGRpbmdMZWZ0KCkpOwot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ1JpZ2h0KG1fcGFyZW50U3R5bGUtPnBhZGRp
bmdSaWdodCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAg
ICAgICAgICBtX3N0eWxlLT5yZXNldFBhZGRpbmcoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlGb250OgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAg
ICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9wYXJlbnRTdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KG1fcGFyZW50
U3R5bGUtPmxpbmVIZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7
Ci0gICAgICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlw
dGlvbikpCi0gICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICB9IGVs
c2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9j
aGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2V0dGlu
Z3MpOyAvLyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRvY3VtZW50IHNo
b3VsZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdzCi0gICAgICAg
ICAgICBpZiAoIXNldHRpbmdzKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Ci0gICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlN0YW5kYXJkRmFtaWx5KTsK
LSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5m
b250UmVuZGVyaW5nTW9kZSgpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQ
cmludGVyRm9udChtX2NoZWNrZXIubV9kb2N1bWVudC0+cHJpbnRpbmcoKSk7Ci0gICAgICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5kYXJkRm9udEZhbWlseSA9IG1fY2hlY2tlci5tX2Rv
Y3VtZW50LT5zZXR0aW5ncygpLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKLSAgICAgICAgICAgIGlm
ICghc3RhbmRhcmRGb250RmFtaWx5LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLnNldEZhbWlseShzdGFuZGFyZEZvbnRGYW1pbHkpOwot
ICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLmFwcGVuZEZhbWls
eSgwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3
b3JkU2l6ZShDU1NWYWx1ZU1lZGl1bSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwotICAgICAgICAg
ICAgc2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdvcmQobV9jaGVj
a2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlTWVkaXVtLCBmYWxzZSkpOwotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7Ci0g
ICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7Ci0gICAgICAgICAgICBpZiAobV9zdHls
ZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAg
bV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFs
TGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIG1fbGluZUhlaWdodFZhbHVlID0gMDsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAg
ICAgICAgICAgIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uKTsKLQotICAgICAgICAgICAgLy8g
RG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4gIElmIG5vdCwg
ZG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBmb250LgotICAgICAgICAgICAgaWYgKGZvbnREZXNj
cmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoZSByZW5kZXJpbmcgbW9kZSBhbmQgcHJpbnRlciBmb250IHNldHRpbmdzIGFyZSB1cGRhdGVk
LgotICAgICAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fY2hlY2tlci5tX2RvY3Vt
ZW50LT5zZXR0aW5ncygpOwotICAgICAgICAgICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElm
IHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5
cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKLSAgICAgICAgICAgICAgICBp
ZiAoIXNldHRpbmdzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJp
bmdNb2RlKCkpOwotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVy
Rm9udChtX2NoZWNrZXIubV9kb2N1bWVudC0+cHJpbnRpbmcoKSk7Ci0gICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBmYWN0b3IuCi0gICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lm
aWVkU2l6ZShtX2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0
aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVz
ZVNWR1pvb21SdWxlcykpOwotICAgICAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVz
Y3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgbV9mb250RGly
dHkgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc0Zv
bnRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBGb250VmFsdWUgKmZvbnQgPSBzdGF0aWNfY2FzdDxG
b250VmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoIWZvbnQtPnN0eWxlIHx8ICFmb250
LT52YXJpYW50IHx8ICFmb250LT53ZWlnaHQgfHwKLSAgICAgICAgICAgICAgICAgIWZvbnQtPnNp
emUgfHwgIWZvbnQtPmxpbmVIZWlnaHQgfHwgIWZvbnQtPmZhbWlseSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxl
LCBmb250LT5zdHlsZS5nZXQoKSk7Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQsIGZvbnQtPnZhcmlhbnQuZ2V0KCkpOwotICAgICAgICAgICAgYXBwbHlQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGZvbnQtPndlaWdodC5nZXQoKSk7Ci0gICAg
ICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIGZvbnQtPnNpemUuZ2V0
KCkpOwotCi0gICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IGZvbnQtPmxpbmVIZWlnaHQu
Z2V0KCk7Ci0KLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5
LCBmb250LT5mYW1pbHkuZ2V0KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICAg
ICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKLSAgICAgICAgaWYgKGlzSW5oZXJp
dCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlVHlwZShtX3BhcmVudFN0eWxl
LT5saXN0U3R5bGVUeXBlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlSW1h
Z2UobV9wYXJlbnRTdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKSk7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRMaXN0U3R5bGVQb3NpdGlvbihtX3BhcmVudFN0eWxlLT5saXN0U3R5bGVQb3NpdGlvbigp
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldExpc3RTdHlsZVR5cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVU
eXBlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlSW1hZ2UoUmVuZGVyU3R5
bGU6OmluaXRpYWxMaXN0U3R5bGVJbWFnZSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExp
c3RTdHlsZVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5l
OgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRs
aW5lV2lkdGgobV9wYXJlbnRTdHlsZS0+b3V0bGluZVdpZHRoKCkpOwotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0T3V0bGluZUNvbG9yKG1fcGFyZW50U3R5bGUtPm91dGxpbmVDb2xvcigpLmlzVmFs
aWQoKSA/IG1fcGFyZW50U3R5bGUtPm91dGxpbmVDb2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29s
b3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lU3R5bGUobV9wYXJlbnRTdHls
ZS0+b3V0bGluZVN0eWxlKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlh
bCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0T3V0bGluZSgpOwotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBDU1MzIFByb3BlcnRpZXMKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBw
ZWFyYW5jZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChhcHBlYXJhbmNl
LCBBcHBlYXJhbmNlKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRBcHBlYXJhbmNlKCpwcmltaXRpdmVWYWx1ZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZTogewotICAg
ICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlLCBCb3JkZXJJbWFnZSkKLSAg
ICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1h
Z2UsIG1hc2tCb3hJbWFnZSwgTWFza0JveEltYWdlKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxf
Q09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIEJvcmRlckltYWdl
LCBOaW5lUGllY2VJbWFnZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgTWFza0JveEltYWdlLCBOaW5lUGll
Y2VJbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIE5pbmVQ
aWVjZUltYWdlIGltYWdlOwotICAgICAgICBtYXBOaW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgdmFs
dWUsIGltYWdlKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckltYWdlKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVySW1hZ2UoaW1hZ2Up
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXNrQm94SW1hZ2UoaW1h
Z2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clJhZGl1czoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzOgotICAgICAg
ICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BMZWZ0
UmFkaXVzKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKSk7Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhtX3BhcmVudFN0eWxlLT5ib3JkZXJU
b3BSaWdodFJhZGl1cygpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbUxl
ZnRSYWRpdXMobV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpKTsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKG1fcGFyZW50U3R5bGUt
PmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0
Qm9yZGVyUmFkaXVzKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
Ly8gRmFsbCB0aHJvdWdoCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21SaWdodFJhZGl1czogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywg
Ym9yZGVyVG9wTGVmdFJhZGl1cywgQm9yZGVyVG9wTGVmdFJhZGl1cykKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgYm9yZGVy
VG9wUmlnaHRSYWRpdXMsIEJvcmRlclRvcFJpZ2h0UmFkaXVzKQotICAgICAgICAgICAgSEFORExF
X0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIGJvcmRlckJv
dHRvbUxlZnRSYWRpdXMsIEJvcmRlckJvdHRvbUxlZnRSYWRpdXMpCi0gICAgICAgICAgICBIQU5E
TEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIGJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzLCBCb3JkZXJCb3R0b21SaWdodFJhZGl1cykKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewot
ICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wTGVmdFJhZGl1cywgQm9yZGVyVG9wTGVmdFJhZGl1cywgQm9yZGVyUmFkaXVzKQotICAg
ICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVy
VG9wUmlnaHRSYWRpdXMsIEJvcmRlclRvcFJpZ2h0UmFkaXVzLCBCb3JkZXJSYWRpdXMpCi0gICAg
ICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21MZWZ0UmFkaXVzLCBCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBCb3JkZXJSYWRpdXMpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21SaWdodFJhZGl1cywgQm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIEJvcmRlclJhZGl1
cykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUGFpciogcGFpciA9IHBy
aW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKLSAgICAgICAgaWYgKCFwYWlyIHx8ICFwYWly
LT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBMZW5ndGggcmFkaXVzV2lkdGg7Ci0gICAgICAgIExlbmd0aCByYWRpdXNIZWlnaHQ7Ci0g
ICAgICAgIGlmIChwYWlyLT5maXJzdCgpLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgo
cGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVuZ3RoKG1heChpbnRNaW5Gb3JMZW5ndGgsIG1p
bihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSkpLCBGaXhlZCk7Ci0gICAgICAgIGlm
IChwYWlyLT5zZWNvbmQoKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0aChwYWlyLT5z
ZWNvbmQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0aChtYXgoaW50TWluRm9yTGVuZ3RoLCBtaW4oaW50
TWF4Rm9yTGVuZ3RoLCBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBt
X3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKSksIEZpeGVkKTsKLSAgICAgICAgaW50IHdp
ZHRoID0gcmFkaXVzV2lkdGgucmF3VmFsdWUoKTsKLSAgICAgICAgaW50IGhlaWdodCA9IHJhZGl1
c0hlaWdodC5yYXdWYWx1ZSgpOwotICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDAp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh3aWR0aCA9PSAwKQotICAgICAgICAg
ICAgcmFkaXVzSGVpZ2h0ID0gcmFkaXVzV2lkdGg7IC8vIE51bGwgb3V0IHRoZSBvdGhlciB2YWx1
ZS4KLSAgICAgICAgZWxzZSBpZiAoaGVpZ2h0ID09IDApCi0gICAgICAgICAgICByYWRpdXNXaWR0
aCA9IHJhZGl1c0hlaWdodDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgotCi0gICAgICAg
IExlbmd0aFNpemUgc2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsKLSAgICAgICAgc3dp
dGNoIChpZCkgewotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXM6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhzaXpl
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJUb3BSaWdodFJhZGl1czoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJU
b3BSaWdodFJhZGl1cyhzaXplKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzOgotICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoc2l6ZSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRS
YWRpdXM6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRp
dXMoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJhZGl1cyhzaXplKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKG91dGxpbmVPZmZzZXQsIE91dGxpbmVPZmZzZXQpCi0gICAgICAgIG1fc3R5bGUt
PnNldE91dGxpbmVPZmZzZXQocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZzogewotICAgICAgICBGb250RGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAg
IGlmIChpc0luaGVyaXQpIAotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFRleHRSZW5k
ZXJpbmdNb2RlKG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnRleHRSZW5kZXJpbmdN
b2RlKCkpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0VGV4dFJlbmRlcmluZ01vZGUoQXV0b1RleHRSZW5kZXJpbmcpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFRleHRSZW5kZXJpbmdN
b2RlKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGly
dHkgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0U2hhZG93OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3hTaGFkb3c6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveFNoYWRvdzogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAg
ICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQotICAgICAgICAgICAgICAg
IHJldHVybiBtX3N0eWxlLT5zZXRUZXh0U2hhZG93KG1fcGFyZW50U3R5bGUtPnRleHRTaGFkb3co
KSA/IG5ldyBTaGFkb3dEYXRhKCptX3BhcmVudFN0eWxlLT50ZXh0U2hhZG93KCkpIDogMCk7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9zdHlsZS0+c2V0Qm94U2hhZG93KG1fcGFyZW50U3R5bGUtPmJv
eFNoYWRvdygpID8gbmV3IFNoYWRvd0RhdGEoKm1fcGFyZW50U3R5bGUtPmJveFNoYWRvdygpKSA6
IDApOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUp
IC8vIGluaXRpYWwgfCBub25lCi0gICAgICAgICAgICByZXR1cm4gaWQgPT0gQ1NTUHJvcGVydHlU
ZXh0U2hhZG93ID8gbV9zdHlsZS0+c2V0VGV4dFNoYWRvdygwKSA6IG1fc3R5bGUtPnNldEJveFNo
YWRvdygwKTsKLQotICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIENTU1ZhbHVlTGlzdCAqbGlzdCA9IHN0YXRpY19jYXN0PENT
U1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwot
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBDU1NW
YWx1ZSogY3VyclZhbHVlID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKLSAgICAg
ICAgICAgIGlmICghY3VyclZhbHVlLT5pc1NoYWRvd1ZhbHVlKCkpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBTaGFkb3dWYWx1ZSogaXRlbSA9IHN0YXRpY19jYXN0PFNo
YWRvd1ZhbHVlKj4obGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7Ci0gICAgICAgICAg
ICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVu
dFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGludCB5ID0gaXRlbS0+eS0+Y29tcHV0
ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAg
ICAgICAgICAgaW50IGJsdXIgPSBpdGVtLT5ibHVyID8gaXRlbS0+Ymx1ci0+Y29tcHV0ZUxlbmd0
aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpIDogMDsKLSAgICAg
ICAgICAgIGludCBzcHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVtLT5zcHJlYWQtPmNvbXB1dGVM
ZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSA6IDA7Ci0g
ICAgICAgICAgICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IGl0ZW0tPnN0eWxlICYmIGl0ZW0t
PnN0eWxlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5zZXQgPyBJbnNldCA6IE5vcm1hbDsKLSAg
ICAgICAgICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgaWYgKGl0ZW0tPmNvbG9yKQotICAg
ICAgICAgICAgICAgIGNvbG9yID0gZ2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+Y29s
b3IuZ2V0KCkpOwotICAgICAgICAgICAgU2hhZG93RGF0YSogc2hhZG93RGF0YSA9IG5ldyBTaGFk
b3dEYXRhKHgsIHksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIGlkID09IENTU1Byb3BlcnR5
V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3Bh
cmVudCk7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQotICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRTaGFkb3coc2hhZG93RGF0YSwgaSAhPSAwKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3hTaGFkb3co
c2hhZG93RGF0YSwgaSAhPSAwKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0OiB7Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKGJveFJlZmxlY3QsIEJveFJlZmxlY3QpCi0gICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZSkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm94UmVmbGVjdChSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJveFJlZmxlY3QoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghdmFsdWUtPmlzUmVmbGVjdFZhbHVlKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQ1NTUmVmbGVjdFZhbHVlKiByZWZsZWN0VmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NSZWZsZWN0VmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIFJlZlB0
cjxTdHlsZVJlZmxlY3Rpb24+IHJlZmxlY3Rpb24gPSBTdHlsZVJlZmxlY3Rpb246OmNyZWF0ZSgp
OwotICAgICAgICByZWZsZWN0aW9uLT5zZXREaXJlY3Rpb24ocmVmbGVjdFZhbHVlLT5kaXJlY3Rp
b24oKSk7Ci0gICAgICAgIGlmIChyZWZsZWN0VmFsdWUtPm9mZnNldCgpKSB7Ci0gICAgICAgICAg
ICBpbnQgdHlwZSA9IHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPnByaW1pdGl2ZVR5cGUoKTsKLSAg
ICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkK
LSAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVuZ3RoKHJlZmxlY3RWYWx1
ZS0+b2Zmc2V0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVuZ3RoKHJlZmxlY3RW
YWx1ZS0+b2Zmc2V0KCktPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290
RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpKTsKLSAgICAgICAgfQotICAgICAgICBO
aW5lUGllY2VJbWFnZSBtYXNrOwotICAgICAgICBtYXBOaW5lUGllY2VJbWFnZShwcm9wZXJ0eSwg
cmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2spOwotICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNr
KG1hc2spOwotICAgICAgICAKLSAgICAgICAgbV9zdHlsZS0+c2V0Qm94UmVmbGVjdChyZWZsZWN0
aW9uLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eU9wYWNpdHk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG9wYWNpdHks
IE9wYWNpdHkpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUt
PnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAg
ICAgICAgIHJldHVybjsgLy8gRXJyb3IgY2FzZS4KLSAgICAgICAgLy8gQ2xhbXAgb3BhY2l0eSB0
byB0aGUgcmFuZ2UgMC0xCi0gICAgICAgIG1fc3R5bGUtPnNldE9wYWNpdHkobWluKDEuMGYsIG1h
eCgwLjBmLCBwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgotICAgIHsKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94QWxpZ24sIEJveEFsaWduKQotICAgICAgICBp
ZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBFQm94QWxp
Z25tZW50IGJveEFsaWdubWVudCA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAgaWYgKGJveEFs
aWdubWVudCAhPSBCSlVTVElGWSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJveEFsaWduKGJv
eEFsaWdubWVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVNyYzogLy8gT25seSB1c2VkIGluIEBmb250LWZhY2UgcnVsZXMuCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZVJhbmdlOiAvLyBPbmx5IHVzZWQgaW4gQGZvbnQt
ZmFjZSBydWxlcy4KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
YWNrZmFjZVZpc2liaWxpdHk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJh
Y2tmYWNlVmlzaWJpbGl0eSwgQmFja2ZhY2VWaXNpYmlsaXR5KQotICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCYWNrZmFjZVZpc2liaWxpdHkoKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVmlzaWJsZSkgPyBCYWNrZmFjZVZp
c2liaWxpdHlWaXNpYmxlIDogQmFja2ZhY2VWaXNpYmlsaXR5SGlkZGVuKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb246Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoYm94RGlyZWN0aW9uLCBCb3hE
aXJlY3Rpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94
TGluZXM6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUo
Ym94TGluZXMsIEJveExpbmVzKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveE9yaWVudDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5E
X1BSSU1JVElWRShib3hPcmllbnQsIEJveE9yaWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgotICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwoYm94UGFjaywgQm94UGFjaykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRUJveEFsaWdubWVudCBib3hQYWNr
ID0gKnByaW1pdGl2ZVZhbHVlOwotICAgICAgICBpZiAoYm94UGFjayAhPSBCU1RSRVRDSCAmJiBi
b3hQYWNrICE9IEJCQVNFTElORSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJveFBhY2soYm94
UGFjayk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveEZsZXg6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJveEZsZXgsIEJv
eEZsZXgpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAg
ICAgIHJldHVybjsgLy8gRXJyb3IgY2FzZS4KLSAgICAgICAgbV9zdHlsZS0+c2V0Qm94RmxleChw
cmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXA6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKGJveEZsZXhHcm91cCwgQm94RmxleEdyb3VwKQotICAgICAgICBpZiAoIXBy
aW1pdGl2ZVZhbHVlIHx8IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAgICByZXR1cm47IC8vIEVycm9yIGNh
c2UuCi0gICAgICAgIG1fc3R5bGUtPnNldEJveEZsZXhHcm91cCgodW5zaWduZWQgaW50KShwcmlt
aXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cDoKLSAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwoYm94T3JkaW5hbEdyb3VwLCBCb3hPcmRpbmFsR3JvdXApCi0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAgIHJldHVybjsgLy8g
RXJyb3IgY2FzZS4KLSAgICAgICAgbV9zdHlsZS0+c2V0Qm94T3JkaW5hbEdyb3VwKCh1bnNpZ25l
ZCBpbnQpKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2l6aW5nOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChib3hTaXppbmcsIEJveFNpemluZykKLSAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ29udGVudEJveCkKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldEJveFNpemluZyhDT05URU5UX0JPWCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldEJveFNpemluZyhCT1JERVJfQk9YKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudDogewotICAgICAgICBpZiAoaXNJbmhlcml0
KSB7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRTdHlsZS0+aGFzQXV0b0NvbHVtbkNvdW50KCkp
Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbkNvdW50KCk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uQ291bnQobV9w
YXJlbnRTdHlsZS0+Y29sdW1uQ291bnQoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0gZWxzZSBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlQXV0bykgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbkNvdW50
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHlsZS0+c2V0
Q29sdW1uQ291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHByaW1pdGl2ZVZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkdhcDogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAg
ICAgICAgICBpZiAobV9wYXJlbnRTdHlsZS0+aGFzTm9ybWFsQ29sdW1uR2FwKCkpCi0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uR2FwKG1fcGFyZW50U3R5bGUt
PmNvbHVtbkdhcCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChp
c0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwp
IHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc05vcm1hbENvbHVtbkdhcCgpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUtPnNldENvbHVtbkdhcChw
cmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRT
dHlsZSwgem9vbUZhY3RvcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKGNvbHVtblNwYW4sIENvbHVtblNwYW4pCi0gICAgICAgIG1fc3R5bGUtPnNldENvbHVt
blNwYW4ocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBbGwpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aDog
ewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRTdHls
ZS0+aGFzQXV0b0NvbHVtbldpZHRoKCkpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFz
QXV0b0NvbHVtbldpZHRoKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Q29sdW1uV2lkdGgobV9wYXJlbnRTdHlsZS0+Y29sdW1uV2lkdGgoKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
UnVsZVN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlU
SVZFX1dJVEhfVkFMVUUoY29sdW1uUnVsZVN0eWxlLCBDb2x1bW5SdWxlU3R5bGUsIEJvcmRlclN0
eWxlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJy
ZWFrQmVmb3JlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlU
SVZFX1dJVEhfVkFMVUUoY29sdW1uQnJlYWtCZWZvcmUsIENvbHVtbkJyZWFrQmVmb3JlLCBQYWdl
QnJlYWspCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
QnJlYWtBZnRlcjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1J
VElWRV9XSVRIX1ZBTFVFKGNvbHVtbkJyZWFrQWZ0ZXIsIENvbHVtbkJyZWFrQWZ0ZXIsIFBhZ2VC
cmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5C
cmVha0luc2lkZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZB
TFVFKGNvbHVtbkJyZWFrSW5zaWRlLCBDb2x1bW5CcmVha0luc2lkZSwgUGFnZUJyZWFrKQotICAg
ICAgICBFUGFnZUJyZWFrIHBiID0gKnByaW1pdGl2ZVZhbHVlOwotICAgICAgICBpZiAocGIgIT0g
UEJBTFdBWVMpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5CcmVha0luc2lkZShwYik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRDb2x1bW5SdWxlQ29sb3IobV9wYXJlbnRTdHlsZS0+Y29sdW1uUnVsZUNvbG9yKCkuaXNWYWxp
ZCgpID8gbV9wYXJlbnRTdHlsZS0+Y29sdW1uUnVsZUNvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5j
b2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVTdHlsZShtX3BhcmVu
dFN0eWxlLT5jb2x1bW5SdWxlU3R5bGUoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1
bW5SdWxlV2lkdGgobV9wYXJlbnRTdHlsZS0+Y29sdW1uUnVsZVdpZHRoKCkpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0
Q29sdW1uUnVsZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbnM6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChtX3Bh
cmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uV2lkdGgoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRDb2x1bW5XaWR0aChtX3BhcmVudFN0eWxlLT5jb2x1bW5XaWR0aCgp
KTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtbkNvdW50KG1fcGFyZW50U3R5bGUtPmNv
bHVtbkNvdW50KCkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkNvdW50KCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZToKLSAgICAgICAgaWYgKHZhbHVlVHlwZSAhPSBDU1NWYWx1ZTo6Q1NTX0lOSEVSSVQgfHwgIW1f
cGFyZW50Tm9kZSkgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9u
KG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVEaXJlY3Rpb24oKSk7Ci0gICAgICAgIG1fc3R5bGUtPnNl
dE1hcnF1ZWVJbmNyZW1lbnQobV9wYXJlbnRTdHlsZS0+bWFycXVlZUluY3JlbWVudCgpKTsKLSAg
ICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVTcGVl
ZCgpKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudChtX3BhcmVudFN0eWxl
LT5tYXJxdWVlTG9vcENvdW50KCkpOwotICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlQmVoYXZp
b3IobV9wYXJlbnRTdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkpOwotICAgICAgICByZXR1cm47Ci0j
aWYgRU5BQkxFKFdDU1MpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wOgotI2Vu
ZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uOiB7Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1hcnF1ZWVMb29wQ291bnQsIE1hcnF1ZWVM
b29wQ291bnQpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUlu
ZmluaXRlKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudCgtMSk7IC8v
IC0xIG1lYW5zIHJlcGVhdCBmb3JldmVyLgotICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudChwcmltaXRpdmVWYWx1ZS0+Z2V0
SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFdDU1MpCi0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZDoKLSNlbmRpZgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQ6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwobWFycXVlZVNwZWVkLCBNYXJxdWVlU3BlZWQpICAgICAgCi0gICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbG93OgotICAg
ICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoNTAwKTsgLy8gNTAwIG1z
ZWMuCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVOb3JtYWw6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVl
ZCg4NSk7IC8vIDg1bXNlYy4gVGhlIFdpbklFIGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVGYXN0OgotICAgICAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoMTApOyAvLyAxMG1zZWMuIFN1cGVyIGZh
c3QuCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNw
ZWVkKDEwMDAgKiBwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19NUykKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZChwcmltaXRpdmVW
YWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5w
cmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIC8vIEZvciBz
Y3JvbGxhbW91bnQgc3VwcG9ydC4KLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVl
ZChwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQ6IHsKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZUluY3JlbWVudCwgTWFycXVlZUluY3Jl
bWVudCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVNtYWxsOgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVl
SW5jcmVtZW50KExlbmd0aCgxLCBGaXhlZCkpOyAvLyAxcHguCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoKDYsIEZpeGVkKSk7
IC8vIDZweC4gVGhlIFdpbklFIGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKLSAgICAgICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChMZW5ndGgoMzYsIEZpeGVkKSk7IC8vIDM2cHgu
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7Ci0gICAgICAgICAgICBM
ZW5ndGggbCA9IGNvbnZlcnRUb0xlbmd0aChwcmltaXRpdmVWYWx1ZSwgc3R5bGUoKSwgbV9yb290
RWxlbWVudFN0eWxlLCAxLCAmb2spOwotICAgICAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQobCk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoV0NTUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Fw
TWFycXVlZVN0eWxlOgotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
dHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSht
YXJxdWVlQmVoYXZpb3IsIE1hcnF1ZWVCZWhhdmlvcikgICAgICAKLSAgICAgICAgcmV0dXJuOwot
I2lmIEVOQUJMRShXQ1NTKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyOgotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlRGlyZWN0aW9uLCBNYXJxdWVl
RGlyZWN0aW9uKQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMdHI6Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNUklHSFQpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVJ0bDoKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1MRUZUKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVl
ZURpcmVjdGlvbigqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSNlbmRpZgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG1hcnF1ZWVEaXJlY3Rpb24sIE1hcnF1ZWVEaXJl
Y3Rpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRy
YWc6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodXNl
ckRyYWcsIFVzZXJEcmFnKSAgICAgIAotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFVzZXJNb2RpZnk6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUodXNlck1vZGlmeSwgVXNlck1vZGlmeSkgICAgICAKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHVzZXJTZWxlY3QsIFVzZXJTZWxl
Y3QpICAgICAgCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3Zl
cmZsb3c6IHsKLSAgICAgICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyBzdXBwb3J0ZWQgYnkgV2luSUUs
IGFuZCBzbyB3ZSBsZWF2ZSBvZmYgdGhlICItd2Via2l0LSIgaW4gb3JkZXIgdG8KLSAgICAgICAg
Ly8gd29yayB3aXRoIFdpbklFLXNwZWNpZmljIHBhZ2VzIHRoYXQgdXNlIHRoZSBwcm9wZXJ0eS4K
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dE92ZXJmbG93LCBUZXh0T3Zl
cmZsb3cpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRUZXh0
T3ZlcmZsb3cocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVFbGxpcHNpcyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkNvbGxhcHNlOiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKG1fcGFyZW50U3R5bGUtPm1hcmdpbkJlZm9yZUNv
bGxhcHNlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZSht
X3BhcmVudFN0eWxlLT5tYXJnaW5BZnRlckNvbGxhcHNlKCkpOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luQmVm
b3JlQ29sbGFwc2UoTUNPTExBUFNFKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpbkFm
dGVyQ29sbGFwc2UoTUNPTExBUFNFKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZToKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShtYXJnaW5CZWZvcmVDb2xsYXBzZSwg
TWFyZ2luQmVmb3JlQ29sbGFwc2UpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQm90dG9tQ29sbGFwc2U6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUobWFyZ2luQWZ0ZXJDb2xsYXBzZSwgTWFyZ2luQWZ0ZXJDb2xsYXBzZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6IHsK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobGluZUNsYW1wLCBMaW5lQ2xhbXAp
Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAg
aWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRMaW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUocHJpbWl0aXZlVmFsdWUtPmdldElu
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgTGluZUNsYW1wTGluZUNvdW50
KSk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJD
RU5UQUdFKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVl
KHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UpLCBMaW5lQ2xhbXBQZXJjZW50YWdlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodDogewotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChoaWdobGlnaHQsIEhpZ2hsaWdodCk7Ci0gICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRIaWdobGlnaHQobnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRIaWdobGlnaHQocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5z
OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGh5cGhlbnMsIEh5cGhlbnMp
OwotICAgICAgICBtX3N0eWxlLT5zZXRIeXBoZW5zKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJh
Y3RlcjogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChoeXBoZW5hdGlvblN0
cmluZywgSHlwaGVuYXRpb25TdHJpbmcpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SHlwaGVu
YXRpb25TdHJpbmcobnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRIeXBoZW5hdGlvblN0cmluZyhwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bmF0ZUxvY2FsZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChoeXBoZW5h
dGlvbkxvY2FsZSwgSHlwaGVuYXRpb25Mb2NhbGUpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
SHlwaGVuYXRpb25Mb2NhbGUobnVsbEF0b20pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRIeXBoZW5hdGlvbkxvY2FsZShwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFs
dWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckZpdDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3JkZXJG
aXQsIEJvcmRlckZpdCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUJvcmRlcikKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckZpdChCb3Jk
ZXJGaXRCb3JkZXIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3Jk
ZXJGaXQoQm9yZGVyRml0TGluZXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDogewotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTCh0ZXh0U2l6ZUFkanVzdCwgVGV4dFNpemVBZGp1c3QpCi0gICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSByZXR1cm47
Ci0gICAgICAgIG1fc3R5bGUtPnNldFRleHRTaXplQWRqdXN0KHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlQXV0byk7Ci0gICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3Vy
aXR5OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHRl
eHRTZWN1cml0eSwgVGV4dFNlY3VyaXR5KQotICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFCTEUo
REFTSEJPQVJEX1NVUFBPUlQpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJl
Z2lvbjogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChkYXNoYm9hcmRSZWdp
b25zLCBEYXNoYm9hcmRSZWdpb25zKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldERhc2hib2FyZFJl
Z2lvbnMoUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRSZWdpb25zKCkpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgRGFzaGJvYXJkUmVnaW9uICpyZWdpb24gPSBw
cmltaXRpdmVWYWx1ZS0+Z2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsKLSAgICAgICAgaWYgKCFy
ZWdpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgRGFzaGJv
YXJkUmVnaW9uICpmaXJzdCA9IHJlZ2lvbjsKLSAgICAgICAgd2hpbGUgKHJlZ2lvbikgewotICAg
ICAgICAgICAgTGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPnRvcCgpLCBzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29u
dmVydFRvTGVuZ3RoKHJlZ2lvbi0+cmlnaHQoKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
KTsKLSAgICAgICAgICAgIExlbmd0aCBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5i
b3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIExlbmd0
aCBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+bGVmdCgpLCBzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUpOwotICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdp
b246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJl
Z2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZWdp
b24tPm1faXNSZWN0YW5nbGUpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGFzaGJvYXJk
UmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwg
dG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUp
OwotICAgICAgICAgICAgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0SGFzRGFzaGJvYXJk
UmVnaW9ucyh0cnVlKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYg
ICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodmlzdWFsbHlPcmRlcmVkLCBWaXN1YWxseU9yZGVy
ZWQpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRWaXN1YWxs
eU9yZGVyZWQocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVWaXN1YWwpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0
aDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0U3Ryb2tlV2lkdGgs
IFRleHRTdHJva2VXaWR0aCkKLSAgICAgICAgZmxvYXQgd2lkdGggPSAwOwotICAgICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1Zh
bHVlVGhpbjoKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06Ci0gICAgICAgICAgICBj
YXNlIENTU1ZhbHVlVGhpY2s6IHsKLSAgICAgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gMS4w
IC8gNDg7Ci0gICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlTWVkaXVtKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKj0gMzsKLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZVRoaWNrKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgKj0gNTsKLSAgICAgICAgICAgICAg
ICB3aWR0aCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocmVzdWx0LCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0VNUyktPmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB3aWR0aCA9IHByaW1pdGl2
ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBt
X3N0eWxlLT5zZXRUZXh0U3Ryb2tlV2lkdGgod2lkdGgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06IHsKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtLCBUcmFuc2Zvcm0pOwotICAgICAgICBUcmFu
c2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7Ci0gICAgICAgIGNyZWF0ZVRyYW5zZm9ybU9wZXJh
dGlvbnModmFsdWUsIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgb3BlcmF0aW9ucyk7Ci0g
ICAgICAgIG1fc3R5bGUtPnNldFRyYW5zZm9ybShvcGVyYXRpb25zKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOgotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1PcmlnaW5YLCBUcmFuc2Zv
cm1PcmlnaW5YKQotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1P
cmlnaW5ZLCBUcmFuc2Zvcm1PcmlnaW5ZKQotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTCh0cmFuc2Zvcm1PcmlnaW5aLCBUcmFuc2Zvcm1PcmlnaW5aKQotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblg6IHsKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWCwgVHJhbnNmb3JtT3Jp
Z2luWCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBl
TGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29t
cHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21G
YWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1
ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtT3JpZ2luWChsKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1Pcmln
aW5ZOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5zZm9ybU9yaWdp
blksIFRyYW5zZm9ybU9yaWdpblkpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIExlbmd0aCBsOwotICAgICAgICBpbnQgdHlwZSA9IHBy
aW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChDU1NQcmltaXRpdmVW
YWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOwotICAgICAgICBlbHNlIGlmICh0eXBlID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIGwgPSBMZW5n
dGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFRyYW5zZm9ybU9y
aWdpblkobCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtT3JpZ2luWjogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TCh0cmFuc2Zvcm1PcmlnaW5aLCBUcmFuc2Zvcm1PcmlnaW5aKQotICAgICAgICBpZiAoIXByaW1p
dGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmbG9hdCBmOwotICAgICAg
ICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlm
IChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAg
IGYgPSBzdGF0aWNfY2FzdDxmbG9hdD4ocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtT3JpZ2luWihm
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1TdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3Jt
U3R5bGUzRCwgVHJhbnNmb3JtU3R5bGUzRCkKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtU3R5bGUzRCgocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKSA/IFRyYW5zZm9ybVN0eWxlM0RQcmVz
ZXJ2ZTNEIDogVHJhbnNmb3JtU3R5bGUzREZsYXQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKHBlcnNwZWN0aXZlLCBQZXJzcGVjdGl2ZSkKLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkg
ewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGVyc3BlY3RpdmUoMCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFs
dWU7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsK
LSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQot
ICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihwcmltaXRp
dmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikgewotICAgICAgICAgICAgLy8gRm9yIGJhY2t3YXJkIGNvbXBh
dGliaWxpdHksIHRyZWF0IHZhbHVlbGVzcyBudW1iZXJzIGFzIHB4LgotICAgICAgICAgICAgcGVy
c3BlY3RpdmVWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocHJpbWl0aXZlVmFsdWUt
PmdldERvdWJsZVZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5jb21wdXRlTGVu
Z3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHBlcnNwZWN0aXZl
VmFsdWUgPj0gMC4wZikKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBlcnNwZWN0aXZlKHBlcnNw
ZWN0aXZlVmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwocGVyc3BlY3RpdmVPcmlnaW5YLCBQZXJzcGVjdGl2ZU9yaWdpblgpCi0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlT3JpZ2luWSwgUGVyc3BlY3RpdmVP
cmlnaW5ZKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNw
ZWN0aXZlT3JpZ2luWDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwZXJz
cGVjdGl2ZU9yaWdpblgsIFBlcnNwZWN0aXZlT3JpZ2luWCkKLSAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAg
IGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYg
KENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAg
bCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgIGVs
c2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAg
ICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+
c2V0UGVyc3BlY3RpdmVPcmlnaW5YKGwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk6IHsKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmVPcmlnaW5ZLCBQZXJzcGVjdGl2ZU9yaWdp
blkpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIExlbmd0aCBsOwotICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxl
bmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFj
dG9yKSwgRml4ZWQpOwotICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUt
PmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFBlcnNwZWN0aXZlT3JpZ2luWShsKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgot
ICAgICAgICBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+Y2xlYXJBbmltYXRp
b25zKCk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAgIG1fc3R5bGUt
PmluaGVyaXRBbmltYXRpb25zKG1fcGFyZW50U3R5bGUtPmFuaW1hdGlvbnMoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXk6Ci0gICAg
ICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZGVsYXksIERlbGF5LCB2YWx1ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb246Ci0g
ICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZGlyZWN0aW9uLCBEaXJlY3Rpb24sIHZhbHVl
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1
cmF0aW9uOgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGR1cmF0aW9uLCBEdXJhdGlv
biwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRmlsbE1vZGU6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZmlsbE1vZGUs
IEZpbGxNb2RlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudDoKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9W
QUxVRShpdGVyYXRpb25Db3VudCwgSXRlcmF0aW9uQ291bnQsIHZhbHVlKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWU6Ci0gICAgICAgIEhB
TkRMRV9BTklNQVRJT05fVkFMVUUobmFtZSwgTmFtZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlOgotICAgICAgICBI
QU5ETEVfQU5JTUFUSU9OX1ZBTFVFKHBsYXlTdGF0ZSwgUGxheVN0YXRlLCB2YWx1ZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5j
dGlvbjoKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRSh0aW1pbmdGdW5jdGlvbiwgVGlt
aW5nRnVuY3Rpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb246Ci0gICAgICAgIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBt
X3N0eWxlLT5jbGVhclRyYW5zaXRpb25zKCk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkK
LSAgICAgICAgICAgIG1fc3R5bGUtPmluaGVyaXRUcmFuc2l0aW9ucyhtX3BhcmVudFN0eWxlLT50
cmFuc2l0aW9ucygpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2l0aW9uRGVsYXk6Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKGRlbGF5
LCBEZWxheSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvbkR1cmF0aW9uOgotICAgICAgICBIQU5ETEVfVFJBTlNJVElPTl9WQUxVRShk
dXJhdGlvbiwgRHVyYXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eToKLSAgICAgICAgSEFORExFX1RSQU5TSVRJ
T05fVkFMVUUocHJvcGVydHksIFByb3BlcnR5LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAg
IEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbiwg
dmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50
czoKLSAgICB7Ci0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNjU2MTA3Nz4gV29yayBhcm91bmQgdGhlIFN0b2NrcyB3aWRnZXQncyBtaXN1
c2Ugb2YgdGhlCi0gICAgICAgIC8vIHBvaW50ZXItZXZlbnRzIHByb3BlcnR5IGJ5IG5vdCBhcHBs
eWluZyBpdCBpbiBEYXNoYm9hcmQuCi0gICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fY2hl
Y2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOwotICAgICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0
dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
cG9pbnRlckV2ZW50cywgUG9pbnRlckV2ZW50cykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0UG9pbnRlckV2ZW50
cygqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIAot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sb3JTcGFjZShtX3BhcmVudFN0eWxlLT5jb2xvclNw
YWNlKCkpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRDb2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sb3JTcGFjZSgqcHJpbWl0aXZlVmFsdWUpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5U2l6ZToKLSAgICAg
ICAgYXBwbHlQYWdlU2l6ZVByb3BlcnR5KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwoc3BlYWssIFNwZWFrKTsKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0U3BlYWsoKnByaW1pdGl2ZVZhbHVl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUlu
dmFsaWQ6Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIERpcmVjdGlvbmFsIHByb3BlcnRpZXMg
YXJlIHJlc29sdmVkIGJ5IHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KCkgYmVmb3JlIHRo
ZSBzd2l0Y2guCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckVuZFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRX
aWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQ6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmVXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3I6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckFmdGVyV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVu
ZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQ6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UGFkZGluZ0JlZm9yZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVy
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGg6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1p
bkxvZ2ljYWxXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdo
dDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0
Y2g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVF1b3Rl
czoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0TGluZVRocm91Z2hDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVU
aHJvdWdoTW9kZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0T3ZlcmxpbmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5l
V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVy
bGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKLSAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRGb250U2l6ZURlbHRhOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOgotICAgICAgICByZXR1cm47Ci0j
aWYgRU5BQkxFKFdDU1MpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0OgotICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgbV9lbGVtZW50LT5oYXNUYWdOYW1lKFdlYkNvcmU6
OmlucHV0VGFnKSkgewotICAgICAgICAgICAgU3RyaW5nIG1hc2sgPSBwcmltaXRpdmVWYWx1ZS0+
Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1l
bnQqPihtX2VsZW1lbnQpLT5zZXRXYXBJbnB1dEZvcm1hdChtYXNrKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZDoKLSAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIG1fZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1l
bnQoKSkgewotICAgICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihtX2VsZW1lbnQpOwotICAgICAgICAg
ICAgYm9vbCByZXF1aXJlZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpID09ICJ0
cnVlIjsKLSAgICAgICAgICAgIGVsZW1lbnQtPnNldFJlcXVpcmVkKHJlcXVpcmVkKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm47Ci0jZW5kaWYgCi0KLSAgICAvLyBDU1MgVGV4dCBMYXlvdXQg
TW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRXcml0aW5nTW9kZTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9BTkRfUFJJTUlUSVZFKHdyaXRpbmdNb2RlLCBXcml0aW5nTW9kZSkKLSAgICAgICAgaWYg
KCFpc0luaGVyaXQgJiYgIWlzSW5pdGlhbCAmJiBtX2VsZW1lbnQgJiYgbV9lbGVtZW50ID09IG1f
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCi0gICAgICAgICAgICBtX2Vs
ZW1lbnQtPmRvY3VtZW50KCktPnNldFdyaXRpbmdNb2RlU2V0T25Eb2N1bWVudEVsZW1lbnQodHJ1
ZSk7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5m
b250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9u
KG1fc3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsIDogVmVydGlj
YWwpOwotICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlw
dGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmU6Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodGV4dENvbWJpbmUsIFRl
eHRDb21iaW5lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzUG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUodGV4dEVtcGhhc2lzUG9zaXRpb24sIFRleHRFbXBoYXNpc1Bvc2l0aW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRFbXBoYXNp
c0ZpbGwsIFRleHRFbXBoYXNpc0ZpbGwpCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKHRleHRFbXBoYXNpc01hcmssIFRleHRFbXBoYXNpc01hcmspCi0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKHRleHRFbXBoYXNpc0N1c3RvbU1hcmssIFRleHRFbXBoYXNpc0N1
c3RvbU1hcmspCi0gICAgICAgIGlmIChpc0luaGVyaXQgfHwgaXNJbml0aWFsKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAg
ICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFs
dWUpOwotICAgICAgICAgICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpID09IDIpOwotICAgICAgICAg
ICAgaWYgKGxpc3QtPmxlbmd0aCgpICE9IDIpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICAgICAg
ICAgIEFTU0VSVChsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpOwotICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4obGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhp
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmls
bGVkIHx8IHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikKLSAgICAgICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqdmFsdWUpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFy
aygqdmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVt
cGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1w
aGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpOwotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQ3VzdG9tKTsKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsocHJpbWl0aXZlVmFsdWUtPmdldFN0
cmluZ1ZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7Ci0KLSAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikgewotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQXV0byk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRl
eHRFbXBoYXNpc0ZpbGxGaWxsZWQpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhh
c2lzTWFyaygqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuOwot
Ci0jaWYgRU5BQkxFKFNWRykKLSAgICBkZWZhdWx0OgotICAgICAgICAvLyBUcnkgdGhlIFNWRyBw
cm9wZXJ0aWVzCi0gICAgICAgIGFwcGx5U1ZHUHJvcGVydHkoaWQsIHZhbHVlKTsKLSNlbmRpZgot
ICAgIH0KLX0KLQotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHko
Q1NTVmFsdWUqIHZhbHVlKQotewotICAgIG1fc3R5bGUtPnJlc2V0UGFnZVNpemVUeXBlKCk7Ci0g
ICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIENTU1Zh
bHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwot
ICAgIExlbmd0aCB3aWR0aDsKLSAgICBMZW5ndGggaGVpZ2h0OwotICAgIFBhZ2VTaXplVHlwZSBw
YWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUTzsKLSAgICBzd2l0Y2ggKHZhbHVlTGlzdC0+bGVu
Z3RoKCkpIHsKLSAgICBjYXNlIDI6IHsKLSAgICAgICAgLy8gPGxlbmd0aD57Mn0gfCA8cGFnZS1z
aXplPiA8b3JpZW50YXRpb24+Ci0gICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNP
TFZFRDsKLSAgICAgICAgaWYgKCF2YWx1ZUxpc3QtPml0ZW0oMCktPmlzUHJpbWl0aXZlVmFsdWUo
KSB8fCAhdmFsdWVMaXN0LT5pdGVtKDEpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTAgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgwKSk7Ci0gICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTEgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgxKSk7Ci0gICAgICAgIGludCB0eXBlMCA9
IHByaW1pdGl2ZVZhbHVlMC0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpbnQgdHlwZTEgPSBw
cmltaXRpdmVWYWx1ZTEtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2
ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUwKSkgewotICAgICAgICAgICAgLy8gPGxlbmd0
aD57Mn0KLSAgICAgICAgICAgIGlmICghQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5n
dGgodHlwZTEpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdpZHRoID0g
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlMC0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7Ci0gICAgICAgICAgICBoZWlnaHQgPSBMZW5n
dGgocHJpbWl0aXZlVmFsdWUxLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IC8vIDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KLSAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBv
cmRlciBpcyBndWFyYW50ZWVkLiBTZWUgQ1NTUGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIuCi0g
ICAgICAgICAgICBpZiAoIXBhZ2VTaXplRnJvbU5hbWUocHJpbWl0aXZlVmFsdWUwLCBwcmltaXRp
dmVWYWx1ZTEsIHdpZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSAxOiB7Ci0gICAgICAgIC8vIDxs
ZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBwb3J0cmFpdCB8IGxhbmRzY2FwZV0KLSAg
ICAgICAgaWYgKCF2YWx1ZUxpc3QtPml0ZW0oMCktPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZUxpc3QtPml0ZW0oMCkpOwot
ICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAg
ICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgewotICAg
ICAgICAgICAgLy8gPGxlbmd0aD4KLSAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0la
RV9SRVNPTFZFRDsKLSAgICAgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2
ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRT
dHlsZSksIEZpeGVkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh0eXBlICE9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0g
UEFHRV9TSVpFX0FVVE87Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IENTU1ZhbHVlUG9ydHJhaXQ6Ci0gICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9T
SVpFX0FVVE9fUE9SVFJBSVQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIENTU1ZhbHVlTGFuZHNjYXBlOgotICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBB
R0VfU0laRV9BVVRPX0xBTkRTQ0FQRTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4KLSAgICAgICAgICAg
ICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7Ci0gICAgICAgICAgICAgICAg
aWYgKCFwYWdlU2l6ZUZyb21OYW1lKHByaW1pdGl2ZVZhbHVlLCAwLCB3aWR0aCwgaGVpZ2h0KSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIG1fc3R5bGUtPnNldFBhZ2VTaXplVHlwZShwYWdlU2l6ZVR5cGUpOwotICAgIG1fc3R5
bGUtPnNldFBhZ2VTaXplKExlbmd0aFNpemUod2lkdGgsIGhlaWdodCkpOwotICAgIHJldHVybjsK
LX0KLQotYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpwYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2
ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3JpZW50YXRpb24s
IExlbmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KQotewotICAgIHN0YXRpYyBjb25zdCBMZW5n
dGggYTVXaWR0aCA9IG1tTGVuZ3RoKDE0OCksIGE1SGVpZ2h0ID0gbW1MZW5ndGgoMjEwKTsKLSAg
ICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE0V2lkdGggPSBtbUxlbmd0aCgyMTApLCBhNEhlaWdodCA9
IG1tTGVuZ3RoKDI5Nyk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBhM1dpZHRoID0gbW1MZW5n
dGgoMjk3KSwgYTNIZWlnaHQgPSBtbUxlbmd0aCg0MjApOwotICAgIHN0YXRpYyBjb25zdCBMZW5n
dGggYjVXaWR0aCA9IG1tTGVuZ3RoKDE3NiksIGI1SGVpZ2h0ID0gbW1MZW5ndGgoMjUwKTsKLSAg
ICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI0V2lkdGggPSBtbUxlbmd0aCgyNTApLCBiNEhlaWdodCA9
IG1tTGVuZ3RoKDM1Myk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZXR0ZXJXaWR0aCA9IGlu
Y2hMZW5ndGgoOC41KSwgbGV0dGVySGVpZ2h0ID0gaW5jaExlbmd0aCgxMSk7Ci0gICAgc3RhdGlj
IGNvbnN0IExlbmd0aCBsZWdhbFdpZHRoID0gaW5jaExlbmd0aCg4LjUpLCBsZWdhbEhlaWdodCA9
IGluY2hMZW5ndGgoMTQpOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGVkZ2VyV2lkdGggPSBp
bmNoTGVuZ3RoKDExKSwgbGVkZ2VySGVpZ2h0ID0gaW5jaExlbmd0aCgxNyk7Ci0KLSAgICBpZiAo
IXBhZ2VTaXplTmFtZSB8fCBwYWdlU2l6ZU5hbWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0
Y2ggKHBhZ2VTaXplTmFtZS0+Z2V0SWRlbnQoKSkgewotICAgIGNhc2UgQ1NTVmFsdWVBNToKLSAg
ICAgICAgd2lkdGggPSBhNVdpZHRoOwotICAgICAgICBoZWlnaHQgPSBhNUhlaWdodDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUE0OgotICAgICAgICB3aWR0aCA9IGE0V2lkdGg7
Ci0gICAgICAgIGhlaWdodCA9IGE0SGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U1ZhbHVlQTM6Ci0gICAgICAgIHdpZHRoID0gYTNXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gYTNI
ZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVCNToKLSAgICAgICAgd2lk
dGggPSBiNVdpZHRoOwotICAgICAgICBoZWlnaHQgPSBiNUhlaWdodDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NWYWx1ZUI0OgotICAgICAgICB3aWR0aCA9IGI0V2lkdGg7Ci0gICAgICAg
IGhlaWdodCA9IGI0SGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlTGV0
dGVyOgotICAgICAgICB3aWR0aCA9IGxldHRlcldpZHRoOwotICAgICAgICBoZWlnaHQgPSBsZXR0
ZXJIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVMZWdhbDoKLSAgICAg
ICAgd2lkdGggPSBsZWdhbFdpZHRoOwotICAgICAgICBoZWlnaHQgPSBsZWdhbEhlaWdodDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUxlZGdlcjoKLSAgICAgICAgd2lkdGggPSBs
ZWRnZXJXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gbGVkZ2VySGVpZ2h0OwotICAgICAgICBicmVh
azsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYg
KHBhZ2VPcmllbnRhdGlvbikgewotICAgICAgICBpZiAocGFnZU9yaWVudGF0aW9uLT5wcmltaXRp
dmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgc3dpdGNoIChwYWdlT3JpZW50YXRpb24tPmdldElkZW50KCkp
IHsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKLSAgICAgICAgICAgIHN0ZDo6c3dh
cCh3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Zh
bHVlUG9ydHJhaXQ6Ci0gICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUxlbmd0aCBDU1NTdHlsZVNlbGVj
dG9yOjptbUxlbmd0aChkb3VibGUgbW0pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIExlbmd0aChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1tLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NKS0+Y29t
cHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhl
ZCk7Ci19Ci0KLUxlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjppbmNoTGVuZ3RoKGRvdWJsZSBpbmNo
KSBjb25zdAotewotICAgIHJldHVybiBMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShp
bmNoLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOKS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0
aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7Ci19Ci0KLXZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6bWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBs
YXllciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVUeXBlKCkg
PT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMKSB7Ci0gICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50
KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50KGxheWVyLT50eXBlKCkpKTsKK3ZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmlsbExh
eWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+Y3NzVmFsdWVU
eXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMKSB7CisgICAgICAgIGxheWVyLT5zZXRBdHRh
Y2htZW50KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50KGxheWVyLT50eXBlKCkpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTkwNiw3ICszNDUwLDcgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKAogICAgICAgICBsYXllci0+c2V0Q29tcG9z
aXRlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUobGF5ZXItPnR5cGUoKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU5OTksOSArMzU0Myw5IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHIKICAgICAgICAgbGF5ZXItPnNldFNpemVU
eXBlKENvdmVyKTsKICAgICBlbHNlCiAgICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShTaXplTGVu
Z3RoKTsKLSAgICAKKwogICAgIExlbmd0aFNpemUgYiA9IEZpbGxMYXllcjo6aW5pdGlhbEZpbGxT
aXplTGVuZ3RoKGxheWVyLT50eXBlKCkpOwotICAgIAorCiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1
ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NTX0lOSVRJQUwgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVDb250YWluCiAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlQ292ZXIpIHsKICAgICAgICAgbGF5ZXItPnNldFNpemVMZW5ndGgo
Yik7CkBAIC02MDExLDE0ICszNTU1LDE0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmls
bFNpemUoQ1NTUHIKICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1
ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3QoKSk7CiAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHNlY29uZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
cGFpci0+c2Vjb25kKCkpOwotICAgIAorCiAgICAgTGVuZ3RoIGZpcnN0TGVuZ3RoLCBzZWNvbmRM
ZW5ndGg7CiAgICAgaW50IGZpcnN0VHlwZSA9IGZpcnN0LT5wcmltaXRpdmVUeXBlKCk7CiAgICAg
aW50IHNlY29uZFR5cGUgPSBzZWNvbmQtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAKKwogICAgIGZs
b2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7CiAKICAgICBpZiAoZmly
c3RUeXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTikKQEAgLTYwMzgsNyArMzU4
Miw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHIKICAgICAgICAg
c2Vjb25kTGVuZ3RoID0gTGVuZ3RoKHNlY29uZC0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
CiAgICAgZWxzZQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBiLnNldFdpZHRoKGZpcnN0
TGVuZ3RoKTsKICAgICBiLnNldEhlaWdodChzZWNvbmRMZW5ndGgpOwogICAgIGxheWVyLT5zZXRT
aXplTGVuZ3RoKGIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShy
ZXZpc2lvbiA3NTg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsOCBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBzZXRGb250U2l6ZShGb250RGVzY3JpcHRpb24mLCBmbG9hdCBzaXplKTsK
ICAgICAgICAgc3RhdGljIGZsb2F0IGdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKERv
Y3VtZW50KiwgUmVuZGVyU3R5bGUqLCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCBzcGVjaWZp
ZWRTaXplLCBib29sIHVzZVNWR1pvb21SdWxlcyk7Ci0KKyAgICAgICAgc3RhdGljIExlbmd0aCBj
b252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgYXBwbHlDb3VudGVyTGlzdChSZW5kZXJTdHlsZSosIENTU1ZhbHVl
TGlzdCosIGJvb2wgaXNSZXNldCk7CiAgICAgcHVibGljOgogICAgICAgICBDb2xvciBnZXRDb2xv
ckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSopIGNvbnN0OwogCkBAIC0zMTMs
NiArMzE0LDkgQEAgcHVibGljOgogICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBt
X3NlbGVjdG9yQXR0cnM7CiAgICAgICAgIFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bio+IG1fYWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHM7CiAgICAgICAgIFZlY3RvcjxNZWRp
YVF1ZXJ5UmVzdWx0Kj4gbV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzOworCisv
LyBwdWxsIGluIGF1dG8tZ2VuZXJhdGVkIGFwcGx5IHByb3BlcnR5IHByb3RvdHlwZXMKKyNpbmNs
dWRlICJDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCIKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShyZXZpc2lvbiA3NTg5NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDMgKzEz
OCw1MyBAQCBFT0YKIGNsb3NlIEhFQURFUjsKIAogc3lzdGVtKCJncGVyZiAtLWtleS1wb3NpdGlv
bnM9XCIqXCIgLUQgLW4gLXMgMiBDU1NQcm9wZXJ0eU5hbWVzLmdwZXJmID4gQ1NTUHJvcGVydHlO
YW1lcy5jcHAiKSA9PSAwIHx8IGRpZSAiY2FsbGluZyBncGVyZiBmYWlsZWQ6ICQ/IjsKKworCitv
cGVuIEFQUExZX0hFQURFUiwgIj5DU1NTdHlsZUFwcGx5UHJvcGVydHkuaCIgfHwgZGllICJDb3Vs
ZCBub3Qgb3BlbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCBmb3Igd3JpdGluZyI7CitwcmludCBB
UFBMWV9IRUFERVIgPDwgIkVPRiI7CisvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5l
cmF0ZWQgZnJvbSBDU1NQcm9wZXJ0eU5hbWVzLmluIGJ5IG1ha2Vwcm9wLCBkbyBub3QgZWRpdCAq
LworCitzdGF0aWMgdm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHlJbnZhbGlkKENTU1N0eWxl
U2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRpYWxDU1NQcm9wZXJ0
eUludmFsaWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxl
VmFsdWVDU1NQcm9wZXJ0eUludmFsaWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1Zh
bHVlICp2YWx1ZSk7CisKK0VPRgorCitmb3JlYWNoIG15ICRuYW1lIChAbmFtZXMpIHsKKyAgbXkg
JGlkID0gJG5hbWU7CisgICRpZCA9fiBzLyheW14tXSl8LSguKS91YygkMXx8JDIpL2dlOworICBw
cmludCBBUFBMWV9IRUFERVIgInN0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRDU1NQcm9wZXJ0eSIg
LiAkaWQgLiAiKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTtcbiI7CisgIHByaW50IEFQUExZ
X0hFQURFUiAic3RhdGljIHZvaWQgaGFuZGxlSW5pdGlhbENTU1Byb3BlcnR5IiAuICRpZCAuICIo
Q1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpO1xuIjsKKyAgcHJpbnQgQVBQTFlfSEVBREVSICJz
dGF0aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5IiAuICRpZCAuICIoQ1NTU3R5bGVTZWxl
Y3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7XG5cbiI7Cit9CisKK3ByaW50IEFQUExZ
X0hFQURFUiA8PCAiRU9GIjsKKyNpZiBFTkFCTEUoV0NTUykKKy8vIEZJWE1FOiBXQ1NTIFByb3Bl
cnRpZXMgYXJlIG5vdCBhY3R1YWxseSBkZWZpbmVkIGluIENTU1Byb3BlcnR5LmluCitzdGF0aWMg
dm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcChDU1NTdHlsZVNlbGVj
dG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVydHlXYXBN
YXJxdWVlTG9vcChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5k
bGVWYWx1ZUNTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3AoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFu
Y2UsIENTU1ZhbHVlICp2YWx1ZSk7CisKK3N0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRDU1NQcm9w
ZXJ0eVdhcE1hcnF1ZWVTcGVlZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMg
dm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQoQ1NTU3R5bGVTZWxl
Y3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlVmFsdWVDU1NQcm9wZXJ0eVdhcE1h
cnF1ZWVTcGVlZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKTsK
Kworc3RhdGljIHZvaWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlKENT
U1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRpYWxDU1NQ
cm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZShDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0
aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpOworCitzdGF0aWMgdm9pZCBoYW5kbGVJ
bmhlcml0Q1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNl
KTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRpYWxDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIoQ1NT
U3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlVmFsdWVDU1NQcm9w
ZXJ0eVdhcE1hcnF1ZWVEaXIoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2
YWx1ZSk7CisKK3N0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRDU1NQcm9wZXJ0eVdhcElucHV0Rm9y
bWF0KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRp
YWxDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsK
K3N0YXRpYyB2b2lkIGhhbmRsZVZhbHVlQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdChDU1NTdHls
ZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKTsKKworc3RhdGljIHZvaWQgaGFu
ZGxlSW5oZXJpdENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZChDU1NTdHlsZVNlbGVjdG9yICpp
bnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVydHlXYXBJbnB1dFJl
cXVpcmVkKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZVZh
bHVlQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVpcmVkKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNl
LCBDU1NWYWx1ZSAqdmFsdWUpOworI2VuZGlmCitFT0YKKworY2xvc2UgQVBQTFlfSEVBREVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80885</attachid>
            <date>2011-02-01 21:44:10 -0800</date>
            <delta_ts>2011-02-02 21:29:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46592-20110202164406.patch</filename>
            <type>text/plain</type>
            <size>317718</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MzU5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMTkgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkgdG8gdXNlIHNlcGFyYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBjYXNlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTIKKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGxp
Y2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRFRklORV9WQUxVRSk6CisgICAg
ICAgIChXZWJDb3JlOjpERUZJTkVfSU5IRVJJVCk6CisgICAgICAgIChXZWJDb3JlOjpERUZJTkVf
SU5JVElBTCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oOgorCiAyMDExLTAyLTAxICBKYW1lcyBTaW1vbnNlbiAgPHNpbW9uamFtQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IEdlbnRpbGNvcmUuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA3NzM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY5OCw2ICsxNjk4LDcgQEAKIAkJN0VF
Njg0NzAxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVEMTJEMjZFMzgwMEU3OTQx
NSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzExMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVz
cG9uc2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RUU2ODQ1RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNw
cCAqLzsgfTsKIAkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZO
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VF
Njg0NzQxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwICovOyB9Owor
CQk4MEM1NTVFMzEyRjkxMUI3MDA4NjU2QkEgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwQzU1NUUyMTJG
OTExQjcwMDg2NTZCQSAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwICovOyB9OwogCQk4MUE3
MzI1RTEyMTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUE3MzI1RDEyMTAxODlCMDBGQzBEOUUgLyogSURC
Q3Vyc29yLmggKi87IH07CiAJCTgxQTczMjYwMTIxMDE4QTQwMEZDMEQ5RSAvKiBJREJDdXJzb3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMy
NUYxMjEwMThBNDAwRkMwRDlFIC8qIElEQkN1cnNvci5jcHAgKi87IH07CiAJCTgxQTczMjc4MTIx
MDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMyNzcxMjEwMTlFMTAwRkMwRDlFIC8q
IElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi87IH07CkBAIC04MTUyLDYgKzgxNTMsNyBAQAogCQk3
RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdFRTY4NDVFMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3Bv
bnNlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3Vy
Y2VSZXNwb25zZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0
NzQxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHA7IHBhdGgg
PSBjZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODBDNTU1RTIxMkY5MTFCNzAwODY1NkJBIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NTdHlsZUFwcGx5UHJvcGVy
dHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUE3MzI1RDEyMTAxODlCMDBG
QzBEOUUgLyogSURCQ3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QkN1cnNvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUE3MzI1RjEyMTAxOEE0
MDBGQzBEOUUgLyogSURCQ3Vyc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElEQkN1cnNvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxQTcz
Mjc3MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3JCYWNrZW5kSW1wbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTg1MzAsNiArMTg1MzIsNyBAQAogCQkJCUJDNjA0QTQyMERC
NTYzNEUwMDIwNDczOSAvKiBDU1NDYW52YXNWYWx1ZS5jcHAgKi8sCiAJCQkJQkM2MDQ5Q0IwREI1
NjBDMjAwMjA0NzM5IC8qIENTU0NhbnZhc1ZhbHVlLmggKi8sCiAJCQkJRTFFQkJCRDMwQUFDOUI4
NzAwMUZFOEUyIC8qIENTU0NoYXJzZXRSdWxlLmNwcCAqLywKKwkJCQk4MEM1NTVFMjEyRjkxMUI3
MDA4NjU2QkEgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCAqLywKIAkJCQlBODBFNkNDRjBB
MTk4OUNBMDA3RkI4QzUgLyogQ1NTQ2hhcnNldFJ1bGUuaCAqLywKIAkJCQk4NUM1NkNBQzBBQTg5
RjhFMDBEOTU3NTUgLyogQ1NTQ2hhcnNldFJ1bGUuaWRsICovLAogCQkJCUJDRUE0NzdDMDk3Q0FB
QzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwICovLApAQCAtMjUx
NzgsNiArMjUxODEsNyBAQAogCQkJCTBGM0RENDRGMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dC
bHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTQ0MTMzMTJGNzQ4RTIwMDlCODRCOCAvKiBS
ZW5kZXJDb21iaW5lVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDk0N0ZGRDEyRjgwQ0Qy
MDBBMEY2MzEgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgw
QzU1NUUzMTJGOTExQjcwMDg2NTZCQSAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5
UHJvcGVydHkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1MTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAo
QykgMjAwNC0yMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hh
bmtzLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNT
U1N0eWxlU2VsZWN0b3IuaCIKKworI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCisjaW5jbHVk
ZSAiQ3Vyc29yTGlzdC5oIgorI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKKyNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgi
CisjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
KyNpbmNsdWRlICJDb3VudGVyLmgiCisjaW5jbHVkZSAiRm9udEZhbWlseVZhbHVlLmgiCisjaW5j
bHVkZSAiRm9udFZhbHVlLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiUGFp
ci5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNp
bmNsdWRlICJTaGFkb3dWYWx1ZS5oIgorI2luY2x1ZGUgIlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIK
KworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRl
Z2llcy5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKKyNlbmRpZgorCisjaWYg
RU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgor
I2VuZGlmCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKKyNpbmNs
dWRlICJTVkdOYW1lcy5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoV01MKQorI2luY2x1ZGUgIldN
TE5hbWVzLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPHF3ZWJoaXN0
b3J5aW50ZXJmYWNlLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisjZGVmaW5lIERFRklORV9JTkhFUklUKFByb3BlcnR5KSB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1Byb3BlcnR5KENTU1N0eWxlU2VsZWN0b3Ig
Kmluc3RhbmNlKQorCisjZGVmaW5lIERFRklORV9JTklUSUFMKFByb3BlcnR5KSB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI1Byb3BlcnR5KENTU1N0eWxlU2VsZWN0b3IgKmlu
c3RhbmNlKQorCisjZGVmaW5lIERFRklORV9WQUxVRShQcm9wZXJ0eSkgdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjpoYW5kbGVWYWx1ZSMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2Us
IENTU1ZhbHVlICp2YWx1ZSkKKworI2RlZmluZSBERUZJTkVfSEFORExFX0lOSEVSSVQoUHJvcGVy
dHksIFNldHRlciwgR2V0dGVyKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0
dGVyKCkpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChQcm9w
ZXJ0eSwgU2V0dGVyLCBHZXR0ZXIsIEJhY2t1cCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkp
IFwKK3sgXAorICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0dGVyKCkuaXNWYWxp
ZCgpKSBcCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoaW5zdGFuY2UtPm1fcGFy
ZW50U3R5bGUtPkdldHRlcigpKTsgXAorICAgIGVsc2UgXAorICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+U2V0dGVyKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5CYWNrdXAoKSk7IFwKK30KKwor
I2RlZmluZSBERUZJTkVfSEFORExFX0lOSVRJQUwoUHJvcGVydHksIFNldHRlciwgR2V0dGVyKSBc
CitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PlNldHRlcihSZW5kZXJTdHlsZTo6R2V0dGVyKCkpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hB
TkRMRV9JTklUSUFMX0NPTE9SKFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9JTklUSUFMKFBy
b3BlcnR5KSBcCit7IFwKKyAgICBDb2xvciBjb2w7IFwKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
U2V0dGVyKGNvbCk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX1ZBTFVFKFByb3BlcnR5
LCBTZXR0ZXIpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsgXAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5TZXR0ZXIoKnApOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5F
X0hBTkRMRV9WQUxVRV9DT0xPUihQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJv
cGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsgXAorICAgICAgICBDb2xvciBjb2wgPSBpbnN0YW5jZS0+Z2V0Q29sb3JGcm9t
UHJpbWl0aXZlVmFsdWUocCk7IFwKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihj
b2wpOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lO
SEVSSVQoUHJvcGVydHksIGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCitERUZJ
TkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgRmlsbExheWVyKiBjdXJyQ2hpbGQgPSBp
bnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzIyNMYXllclR5cGUjI0xheWVycygpOyBcCisgICAgRmls
bExheWVyKiBwcmV2Q2hpbGQgPSAwOyBcCisgICAgY29uc3QgRmlsbExheWVyKiBjdXJyUGFyZW50
ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmxheWVyVHlwZSMjTGF5ZXJzKCk7IFwKKyAgICB3
aGlsZSAoY3VyclBhcmVudCAmJiBjdXJyUGFyZW50LT5pcyMjUHJvcCMjU2V0KCkpIHsgXAorICAg
ICAgICBpZiAoIWN1cnJDaGlsZCkgeyBcCisgICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBu
ZXcgbGF5ZXIuKi8gXAorICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihMYXll
clR5cGUjI0ZpbGxMYXllcik7IFwKKyAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJy
Q2hpbGQpOyBcCisgICAgICAgIH0gXAorICAgICAgICBjdXJyQ2hpbGQtPnNldCMjUHJvcChjdXJy
UGFyZW50LT5wcm9wKCkpOyBcCisgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsgXAorICAg
ICAgICBjdXJyQ2hpbGQgPSBwcmV2Q2hpbGQtPm5leHQoKTsgXAorICAgICAgICBjdXJyUGFyZW50
ID0gY3VyclBhcmVudC0+bmV4dCgpOyBcCisgICAgfSBcCisgICAgXAorICAgIHdoaWxlIChjdXJy
Q2hpbGQpIHsgXAorICAgICAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGxheWVycyB0byBub3Qg
aGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAgICAgIGN1cnJDaGlsZC0+Y2xlYXIjI1By
b3AoKTsgXAorICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAorICAgIH0g
XAorfQorCisjZGVmaW5lIERFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKFByb3BlcnR5
LCBsYXllclR5cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX0lOSVRJQUwoUHJv
cGVydHkpIFwKK3sgXAorICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gaW5zdGFuY2UtPm1fc3R5
bGUtPmFjY2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAorICAgIGN1cnJDaGlsZC0+c2V0IyNQ
cm9wKEZpbGxMYXllcjo6aW5pdGlhbEZpbGwjI1Byb3AoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpKTsg
XAorICAgIGZvciAoY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IGN1cnJDaGlsZDsgY3Vy
ckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCkpIFwKKyAgICAgICAgY3VyckNoaWxkLT5jbGVhciMj
UHJvcCgpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKFBy
b3BlcnR5LCBsYXllclR5cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX1ZBTFVF
KFByb3BlcnR5KSBcCit7IFwKKyAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IGluc3RhbmNlLT5t
X3N0eWxlLT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7IFwKKyAgICBGaWxsTGF5ZXIqIHBy
ZXZDaGlsZCA9IDA7IFwKKyAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsgXAorICAgICAg
ICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5l
dyBsYXllcnMgYXMgbmVlZGVkLiAqLyBcCisgICAgICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0
ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOyBcCisgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7IFwKKyAgICAg
ICAgICAgIGlmICghY3VyckNoaWxkKSB7IFwKKyAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIG1h
a2UgYSBuZXcgbGF5ZXIgdG8gaG9sZCB0aGlzIHZhbHVlICovIFwKKyAgICAgICAgICAgICAgICBj
dXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKExheWVyVHlwZSMjRmlsbExheWVyKTsgXAorICAgICAg
ICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOyBcCisgICAgICAgICAgICB9
IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tYXBGaWxsIyNQcm9wKFByb3BlcnR5LCBjdXJyQ2hp
bGQsIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKKyAgICAgICAgICAg
IHByZXZDaGlsZCA9IGN1cnJDaGlsZDsgXAorICAgICAgICAgICAgY3VyckNoaWxkID0gY3VyckNo
aWxkLT5uZXh0KCk7IFwKKyAgICAgICAgfSBcCisgICAgfSBlbHNlIHsgXAorICAgICAgICBpbnN0
YW5jZS0+bWFwRmlsbCMjUHJvcChQcm9wZXJ0eSwgY3VyckNoaWxkLCB2YWx1ZSk7IFwKKyAgICAg
ICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAgICB9IFwKKyAgICB3aGlsZSAo
Y3VyckNoaWxkKSB7IFwKKyAgICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBsYXllcnMgdG8g
bm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorICAgICAgICBjdXJyQ2hpbGQtPmNsZWFy
IyNQcm9wKCk7IFwKKyAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAg
ICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfTlVMTF9JTkhFUklUKFByb3BlcnR5KSBERUZJTkVf
SU5IRVJJVChQcm9wZXJ0eSkge1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJ
TkVfTlVMTF9JTklUSUFMKFByb3BlcnR5KSBERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkge1VOVVNF
RF9QQVJBTShpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJTkVfTlVMTF9WQUxVRShQcm9wZXJ0eSkg
REVGSU5FX1ZBTFVFKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgVU5VU0VEX1BB
UkFNKHZhbHVlKTt9CisKKyNkZWZpbmUgREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoUHJvcGVy
dHkpIERFRklORV9JTkhFUklUKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7fQorI2RlZmluZSBERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChQ
cm9wZXJ0eSkgREVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIHtVTlVTRURfUEFSQU0oaW5zdGFuY2Up
OyBBU1NFUlRfTk9UX1JFQUNIRUQoKTt9CisjZGVmaW5lIERFRklORV9VTlJFQUNIQUJMRV9WQUxV
RShQcm9wZXJ0eSkgREVGSU5FX1ZBTFVFKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNl
KTsgVU5VU0VEX1BBUkFNKHZhbHVlKTsgQVNTRVJUX05PVF9SRUFDSEVEKCk7fQorCisjZGVmaW5l
IERFRklORV9FUVVJVkFMRU5UX0lOSEVSSVQoUHJvcGVydHksIEVxdWl2YWxlbnQpIFwKK0RFRklO
RV9JTkhFUklUKFByb3BlcnR5KSB7Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRXF1
aXZhbGVudChpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9JTklUSUFMKFBy
b3BlcnR5LCBFcXVpdmFsZW50KSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkge0NTU1N0eWxl
U2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI0VxdWl2YWxlbnQoaW5zdGFuY2UpO30KKyNkZWZpbmUg
REVGSU5FX0VRVUlWQUxFTlRfVkFMVUUoUHJvcGVydHksIEVxdWl2YWxlbnQpIFwKK0RFRklORV9W
QUxVRShQcm9wZXJ0eSkge0NTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNFcXVpdmFsZW50
KGluc3RhbmNlLCB2YWx1ZSk7fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShQ
cm9wZXJ0eSwgRXF1aXZhbGVudCkgXAorREVGSU5FX0VRVUlWQUxFTlRfSU5IRVJJVChQcm9wZXJ0
eSwgRXF1aXZhbGVudCkgXAorREVGSU5FX0VRVUlWQUxFTlRfSU5JVElBTChQcm9wZXJ0eSwgRXF1
aXZhbGVudCkgXAorREVGSU5FX0VRVUlWQUxFTlRfVkFMVUUoUHJvcGVydHksIEVxdWl2YWxlbnQp
CisKKy8vIFhYWCBjb21iaW5lIEVYUEFORElORyBkZWZpbml0aW9ucz8KKyNkZWZpbmUgREVGSU5F
X0VYUEFORElOR19JTkhFUklUX1RXTyhQcm9wZXJ0eSwgRmlyc3QsIFNlY29uZCkgXAorREVGSU5F
X0lOSEVSSVQoUHJvcGVydHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUlu
aGVyaXQjI0ZpcnN0KGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUlu
aGVyaXQjI1NlY29uZChpbnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5H
X0lOSVRJQUxfVFdPKFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kKSBcCitERUZJTkVfSU5JVElBTChQ
cm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjRmly
c3QoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjU2Vj
b25kKGluc3RhbmNlKTsgXAorfQorCisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdfVkFMVUVfVFdP
KFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sg
XAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNGaXJzdChpbnN0YW5jZSwgdmFs
dWUpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWUjI1NlY29uZChpbnN0YW5j
ZSwgdmFsdWUpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVF
KFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kLCBUaGlyZCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVy
dHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI0ZpcnN0KGlu
c3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1NlY29uZChp
bnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0IyNUaGlyZChp
bnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVEhSRUUo
UHJvcGVydHksIEZpcnN0LCBTZWNvbmQsIFRoaXJkKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0
eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjRmlyc3QoaW5z
dGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjU2Vjb25kKGlu
c3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI1RoaXJkKGlu
c3RhbmNlKTsgXAorfQorCisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9GT1VSKFBy
b3BlcnR5LCBGaXJzdCwgU2Vjb25kLCBUaGlyZCwgRm91cnRoKSBcCitERUZJTkVfSU5IRVJJVChQ
cm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRmly
c3QoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjU2Vj
b25kKGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1Ro
aXJkKGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI0Zv
dXJ0aChpbnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxf
Rk9VUihQcm9wZXJ0eSwgRmlyc3QsIFNlY29uZCwgVGhpcmQsIEZvdXJ0aCkgXAorREVGSU5FX0lO
SVRJQUwoUHJvcGVydHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRp
YWwjI0ZpcnN0KGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRp
YWwjI1NlY29uZChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbml0
aWFsIyNUaGlyZChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbml0
aWFsIyNGb3VydGgoaW5zdGFuY2UpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX1NQQUNJTkdfVkFM
VUUoUHJvcGVydHksIFNldHRlcikgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7IFwKKyAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeyBcCisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7IFwKKyAg
ICAgICAgYm9vbCB1c2VTVkdab29tUnVsZXMgPSBpbnN0YW5jZS0+bV9lbGVtZW50ICYmIGluc3Rh
bmNlLT5tX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOyBcCisgICAgICAgIGludCB3aWR0aCA9IDA7
IFwKKyAgICAgICAgaWYgKHAtPmdldElkZW50KCkgIT0gQ1NTVmFsdWVOb3JtYWwpIFwKKyAgICAg
ICAgICAgIHdpZHRoID0gcC0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQo
KSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgdXNlU1ZHWm9vbVJ1bGVzID8gMS4wZiA6
IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpOyBcCisgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5TZXR0ZXIod2lkdGgpOyBcCisgICAgfSBcCit9CisjZGVmaW5lIERFRklORV9X
SURUSF9WQUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwK
K3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsgXAorICAgICAgICBzaG9ydCB3aWR0aCA9IDM7IFwKKyAgICAgICAgc3dpdGNoIChwLT5nZXRJ
ZGVudCgpKSB7IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaW46IFwKKyAgICAgICAgICAgIHdp
ZHRoID0gMTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU1l
ZGl1bTogXAorICAgICAgICAgICAgd2lkdGggPSAzOyBcCisgICAgICAgICAgICBicmVhazsgXAor
ICAgICAgICBjYXNlIENTU1ZhbHVlVGhpY2s6IFwKKyAgICAgICAgICAgIHdpZHRoID0gNTsgXAor
ICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6IFwKKyAg
ICAgICAgICAgIHdpZHRoID0gcC0+Y29tcHV0ZUxlbmd0aFNob3J0KGluc3RhbmNlLT5tX3N0eWxl
LmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+
ZWZmZWN0aXZlWm9vbSgpKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgZGVmYXVs
dDogXAorICAgICAgICAgICAgcmV0dXJuOyBcCisgICAgICAgIH0gXAorICAgICAgICBpZiAod2lk
dGggPj0gMCkgeyBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKHdpZHRo
KTsgXAorICAgICAgICB9IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfTEVOR1RIX1ZB
TFVFKFByb3BlcnR5LCBTZXR0ZXIsIE5vbmVFbmFibGVkLCBJbnRyaW5zaWNFbmFibGVkLCBNaW5J
bnRyaW5zaWNFbmFibGVkLCBBdXRvRW5hYmxlZCwgTm9uZVVuZGVmaW5lZCkgXAorREVGSU5FX1ZB
TFVFKFByb3BlcnR5KSBcCit7IFwKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eyBcCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAgIGlmIChOb25lRW5hYmxl
ZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIFwKKyAgICAg
ICAgICAgIGlmIChOb25lVW5kZWZpbmVkKSBcCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPlNldHRlcihMZW5ndGgodW5kZWZpbmVkTGVuZ3RoLCBGaXhlZCkpOyBcCisgICAgICAg
ICAgICBlbHNlIFwKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKExl
bmd0aCgpKTsgXAorICAgICAgICBlbHNlIGlmIChJbnRyaW5zaWNFbmFibGVkICYmIHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW50cmluc2ljKSBcCisgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKExlbmd0aChJbnRyaW5zaWMpKTsgXAorICAgICAgICBl
bHNlIGlmIChNaW5JbnRyaW5zaWNFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlTWluSW50cmluc2ljKSBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+U2V0dGVyKExlbmd0aChNaW5JbnRyaW5zaWMpKTsgXAorICAgICAgICBlbHNlIGlmIChBdXRv
RW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pIFwK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKCkpOyBcCisgICAg
ICAgIGVsc2UgeyBcCisgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCk7IFwKKyAgICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0
VHlwZUxlbmd0aCh0eXBlKSkgXAorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5T
ZXR0ZXIoTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKGlu
c3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0
YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSwgRml4ZWQsIHByaW1pdGl2ZVZhbHVlLT5p
c1F1aXJrVmFsdWUoKSkpOyBcCisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgXAorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQ
ZXJjZW50KSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX1JB
RElVU19WQUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwK
K3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7IFwKKyAgICAgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5n
ZXRQYWlyVmFsdWUoKTsgXAorICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwg
IXBhaXItPnNlY29uZCgpKSBcCisgICAgICAgICAgICByZXR1cm47IFwKKyAgICAgICAgTGVuZ3Ro
IHJhZGl1c1dpZHRoOyBcCisgICAgICAgIExlbmd0aCByYWRpdXNIZWlnaHQ7IFwKKyAgICAgICAg
aWYgKHBhaXItPmZpcnN0KCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BFUkNFTlRBR0UpIFwKKyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVuZ3RoKHBhaXIt
PmZpcnN0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOyBcCisgICAgICAgIGVsc2UgXAor
ICAgICAgICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgobWF4KGludE1pbkZvckxlbmd0aCwgbWlu
KGludE1heEZvckxlbmd0aCwgcGFpci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5j
ZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2Ut
Pm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkpKSwgRml4ZWQpOyBcCisgICAgICAgIGlmIChwYWly
LT5zZWNvbmQoKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSkgXAorICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKHBhaXItPnNlY29u
ZCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsgXAorICAgICAgICBlbHNlIFwKKyAgICAg
ICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0aChtYXgoaW50TWluRm9yTGVuZ3RoLCBtaW4oaW50
TWF4Rm9yTGVuZ3RoLCBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+
bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1f
c3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkpKSwgRml4ZWQpOyBcCisgICAgICAgIGludCB3aWR0aCA9
IHJhZGl1c1dpZHRoLnJhd1ZhbHVlKCk7IFwKKyAgICAgICAgaW50IGhlaWdodCA9IHJhZGl1c0hl
aWdodC5yYXdWYWx1ZSgpOyBcCisgICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkg
XAorICAgICAgICAgICAgcmV0dXJuOyBcCisgICAgICAgIGlmICghd2lkdGgpIFwKKyAgICAgICAg
ICAgIHJhZGl1c0hlaWdodCA9IHJhZGl1c1dpZHRoOyBcCisgICAgICAgIGVsc2UgaWYgKCFoZWln
aHQpIFwKKyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gcmFkaXVzSGVpZ2h0OyBcCisgICAgICAg
IExlbmd0aFNpemUgc2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsgXAorICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKHNpemUpOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUg
REVGSU5FX1NIQURPV19WQUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJv
cGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcigwKTsgXAorICAgIH0gZWxzZSBpZiAodmFs
dWUtPmlzVmFsdWVMaXN0KCkpIHsgXAorICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0
aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKKyAgICAgICAgaW50IGxlbiA9IGxpc3Qt
Pmxlbmd0aCgpOyBcCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsgXAor
ICAgICAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soaSk7IFwKKyAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1NoYWRvd1ZhbHVlKCkp
IFwKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgXAorICAgICAgICAgICAgU2hhZG93VmFsdWUq
IGl0ZW0gPSBzdGF0aWNfY2FzdDxTaGFkb3dWYWx1ZSo+KGxpc3QtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soaSkpOyBcCisgICAgICAgICAgICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVMZW5ndGhJ
bnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUs
IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpOyBcCisgICAgICAgICAgICBpbnQg
eSA9IGl0ZW0tPnktPmNvbXB1dGVMZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGlu
c3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVa
b29tKCkpOyBcCisgICAgICAgICAgICBpbnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVtLT5ibHVy
LT5jb21wdXRlTGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9y
b290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSA6IDA7
IFwKKyAgICAgICAgICAgIGludCBzcHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVtLT5zcHJlYWQt
PmNvbXB1dGVMZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jv
b3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpIDogMDsg
XAorICAgICAgICAgICAgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUgPSBpdGVtLT5zdHlsZSAmJiBp
dGVtLT5zdHlsZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluc2V0ID8gSW5zZXQgOiBOb3JtYWw7
IFwKKyAgICAgICAgICAgIENvbG9yIGNvbG9yOyBcCisgICAgICAgICAgICBpZiAoaXRlbS0+Y29s
b3IpIFwKKyAgICAgICAgICAgICAgICBjb2xvciA9IGluc3RhbmNlLT5nZXRDb2xvckZyb21Qcmlt
aXRpdmVWYWx1ZShpdGVtLT5jb2xvci5nZXQoKSk7IFwKKyAgICAgICAgICAgIFNoYWRvd0RhdGEq
IHNoYWRvd0RhdGEgPSBuZXcgU2hhZG93RGF0YSh4LCB5LCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0
eWxlLCBQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxp
ZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOyBcCisgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+U2V0dGVyKHNoYWRvd0RhdGEsICEhaSk7IFwKKyAgICAgICAgfSBcCisgICAg
fSBcCit9CisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKFByb3BlcnR5LCBwcm9w
LCBQcm9wKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgQW5pbWF0aW9u
TGlzdCogbGlzdCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKKyAg
ICBjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPmFuaW1hdGlvbnMoKTsgXAorICAgIHNpemVfdCBpID0gMCwgcGFyZW50U2l6ZSA9IHBhcmVu
dExpc3QgPyBwYXJlbnRMaXN0LT5zaXplKCkgOiAwOyBcCisgICAgZm9yICggOyBpIDwgcGFyZW50
U2l6ZSAmJiBwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPmlzIyNQcm9wIyNTZXQoKTsgKytpKSB7
IFwKKyAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBpKSBcCisgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkp
LT5zZXQjI1Byb3AocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5wcm9wKCkpOyBcCisgICAgfSBc
CisgICAgXAorICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2
ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgpOyAr
K2kpIFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5jbGVhciMjUHJvcCgpOyBcCit9CisK
KyNkZWZpbmUgREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKFByb3BlcnR5LCBwcm9wLCBQcm9wKSBc
CitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgQW5pbWF0aW9uTGlzdCogbGlz
dCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKKyAgICBpZiAobGlz
dC0+aXNFbXB0eSgpKSBcCisgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgp
KTsgXAorICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+c2V0IyNQcm9wKEFuaW1hdGlvbjo6aW5pdGlh
bEFuaW1hdGlvbiMjUHJvcCgpKTsgXAorICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbGlzdC0+
c2l6ZSgpOyArK2kpIFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKDApLT5jbGVhciMjUHJvcCgp
OyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVElPTl9WQUxVRShQcm9wZXJ0eSwgcHJvcCwg
UHJvcCkgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7IFwKKyAgICBBbmltYXRpb25MaXN0
KiBsaXN0ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2Vzc0FuaW1hdGlvbnMoKTsgXAorICAgIHNp
emVfdCBjaGlsZEluZGV4ID0gMDsgXAorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBc
CisgICAgICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYW4gYW5pbWF0aW9u
LCBjcmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKKyAgICAgICAgQ1NTVmFs
dWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgp
OyBpKyspIHsgXAorICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKSBc
CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisg
ICAgICAgICAgICBpbnN0YW5jZS0+bWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihj
aGlsZEluZGV4KSwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsgXAorICAg
ICAgICAgICAgKytjaGlsZEluZGV4OyBcCisgICAgICAgIH0gXAorICAgIH0gZWxzZSB7IFwKKyAg
ICAgICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkgXAorICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFu
aW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgICAgIGluc3RhbmNlLT5tYXBBbmltYXRpb24jI1By
b3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7IFwKKyAgICAgICAgY2hpbGRJ
bmRleCA9IDE7IFwKKyAgICB9IFwKKyAgICBmb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0LT5zaXpl
KCk7ICsrY2hpbGRJbmRleCkgeyBcCisgICAgICAgIC8qIFJlc2V0IGFsbCByZW1haW5pbmcgYW5p
bWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAgICAgIGxpc3Qt
PmFuaW1hdGlvbihjaGlsZEluZGV4KS0+Y2xlYXIjI1Byb3AoKTsgXAorICAgIH0gXAorfQorCisj
ZGVmaW5lIERFRklORV9UUkFOU0lUSU9OX0lOSEVSSVQoUHJvcGVydHksIHByb3AsIFByb3ApIFwK
K0RFRklORV9JTkhFUklUKFByb3BlcnR5KSBcCit7IFwKKyAgICBBbmltYXRpb25MaXN0KiBsaXN0
ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2Vzc1RyYW5zaXRpb25zKCk7IFwKKyAgICBjb25zdCBB
bmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPnRyYW5z
aXRpb25zKCk7IFwKKyAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8g
cGFyZW50TGlzdC0+c2l6ZSgpIDogMDsgXAorICAgIGZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYg
cGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5pcyMjUHJvcCMjU2V0KCk7ICsraSkgeyBcCisgICAg
ICAgIGlmIChsaXN0LT5zaXplKCkgPD0gaSkgXAorICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFu
aW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+c2V0IyNQ
cm9wKHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+cHJvcCgpKTsgXAorICAgIH0gXAorICAgIFwK
KyAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5vdCBoYXZlIHRoZSBw
cm9wZXJ0eSBzZXQuICovIFwKKyAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAor
ICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwKK30KKworI2RlZmlu
ZSBERUZJTkVfVFJBTlNJVElPTl9JTklUSUFMKFByb3BlcnR5LCBwcm9wLCBQcm9wKSBcCitERUZJ
TkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGlu
c3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCisgICAgaWYgKGxpc3QtPmlz
RW1wdHkoKSkgXAorICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwK
KyAgICBsaXN0LT5hbmltYXRpb24oMCktPnNldCMjUHJvcChBbmltYXRpb246OmluaXRpYWxBbmlt
YXRpb24jI1Byb3AoKSk7IFwKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUo
KTsgKytpKSBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+Y2xlYXIjI1Byb3AoKTsgXAor
fQorCisjZGVmaW5lIERFRklORV9UUkFOU0lUSU9OX1ZBTFVFKFByb3BlcnR5LCBwcm9wLCBQcm9w
KSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIEFuaW1hdGlvbkxpc3QqIGxp
c3QgPSBpbnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMoKTsgXAorICAgIHNpemVf
dCBjaGlsZEluZGV4ID0gMDsgXAorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCisg
ICAgICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSB0cmFuc2l0aW9uLCBj
cmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKKyAgICAgICAgQ1NTVmFsdWVM
aXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBp
KyspIHsgXAorICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKSBcCisg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAg
ICAgICAgICBpbnN0YW5jZS0+bWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGls
ZEluZGV4KSwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsgXAorICAgICAg
ICAgICAgKytjaGlsZEluZGV4OyBcCisgICAgICAgIH0gXAorICAgIH0gZWxzZSB7IFwKKyAgICAg
ICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkgXAorICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1h
dGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgICAgIGluc3RhbmNlLT5tYXBBbmltYXRpb24jI1Byb3Ao
bGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7IFwKKyAgICAgICAgY2hpbGRJbmRl
eCA9IDE7IFwKKyAgICB9IFwKKyAgICBmb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0LT5zaXplKCk7
ICsrY2hpbGRJbmRleCkgeyBcCisgICAgICAgIC8qIFJlc2V0IGFsbCByZW1haW5pbmcgdHJhbnNp
dGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorICAgICAgICBsaXN0LT5h
bmltYXRpb24oY2hpbGRJbmRleCktPmNsZWFyIyNQcm9wKCk7IFwKKyAgICB9IFwKK30KKworLy8g
Q1NTUHJvcGVydHlJbnZhbGlkCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5SW52YWxp
ZCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlJbnZhbGlkKQorREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlJbnZhbGlkKQorCisvLyBDU1NQcm9wZXJ0eUNvbG9yCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlDb2xvciwgc2V0Q29sb3IsIGNvbG9yKQorREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Q29sb3IsIHNldENvbG9yLCBpbml0aWFsQ29sb3Ip
CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlDb2xvcikKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocC0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKKyAgICAgICAgICAgIENTU1N0eWxlU2VsZWN0b3I6
OmhhbmRsZUluaGVyaXRDU1NQcm9wZXJ0eUNvbG9yKGluc3RhbmNlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbG9yKGluc3RhbmNlLT5nZXRDb2xv
ckZyb21QcmltaXRpdmVWYWx1ZShwKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eURpcmVj
dGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBzZXREaXJl
Y3Rpb24sIGRpcmVjdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eURpcmVj
dGlvbiwgc2V0RGlyZWN0aW9uLCBpbml0aWFsRGlyZWN0aW9uKQorREVGSU5FX1ZBTFVFKENTU1By
b3BlcnR5RGlyZWN0aW9uKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7
CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXREaXJlY3Rpb24o
KnApOworICAgIH0KKyAgICBpZiAoaW5zdGFuY2UtPm1fZWxlbWVudCAmJiBpbnN0YW5jZS0+bV9l
bGVtZW50ID09IGluc3RhbmNlLT5tX2VsZW1lbnQtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpKQorICAgICAgICBpbnN0YW5jZS0+bV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXREaXJlY3Rp
b25TZXRPbkRvY3VtZW50RWxlbWVudCh0cnVlKTsKK30KKworLy8gQ1NTUHJvcGVydHlEaXNwbGF5
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlEaXNwbGF5LCBzZXREaXNwbGF5LCBk
aXNwbGF5KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5RGlzcGxheSwgc2V0RGlz
cGxheSwgaW5pdGlhbERpc3BsYXkpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlEaXNwbGF5KQor
eworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisj
aWYgRU5BQkxFKFdDU1MpCisgICAgICAgIGlmIChwLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2Fw
TWFycXVlZSkgeworICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBXQVAgTWFycXVlZSBzdHlsZQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE92ZXJmbG93WChPTUFSUVVFRSk7Cisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3ZlcmZsb3dZKE9NQVJRVUVFKTsKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRXaGl0ZVNwYWNlKE5PV1JBUCk7CisgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNTEVGVCk7Cisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDg1KTsgLy8gTm9y
bWFsIHNwZWVkCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZUxvb3BD
b3VudCgxKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlQmVoYXZp
b3IoTVNDUk9MTCk7CisKKyAgICAgICAgICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZSkg
eworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXREaXNwbGF5KGluc3RhbmNl
LT5tX3BhcmVudFN0eWxlLT5kaXNwbGF5KCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXREaXNwbGF5KCpwKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5Rm9udAorREVGSU5F
X0lOSEVSSVQoQ1NTUHJvcGVydHlGb250KQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVz
Y3JpcHRpb24gPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Cisg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldExpbmVIZWlnaHQoaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPmxpbmVIZWlnaHQoKSk7CisgICAgaW5zdGFuY2UtPm1fbGluZUhlaWdodFZhbHVlID0gMDsK
KyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVGSU5F
X0lOSVRJQUwoQ1NTUHJvcGVydHlGb250KQoreworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGlu
c3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICBBU1NFUlQoc2V0
dGluZ3MpOyAvLyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRvY3VtZW50
IHNob3VsZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdzCisgICAg
aWYgKCFzZXR0aW5ncykKKyAgICAgICAgcmV0dXJuOworICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb247CisgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERl
c2NyaXB0aW9uOjpTdGFuZGFyZEZhbWlseSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRl
cmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOworICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRVc2VQcmludGVyRm9udChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnBy
aW50aW5nKCkpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5ID0g
aW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpLT5zdGFuZGFyZEZvbnRG
YW1pbHkoKTsKKyAgICBpZiAoIXN0YW5kYXJkRm9udEZhbWlseS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuc2V0RmFtaWx5KHN0YW5kYXJkRm9udEZh
bWlseSk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLmFwcGVuZEZhbWls
eSgwKTsKKyAgICB9CisgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKENTU1ZhbHVl
TWVkaXVtIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7CisgICAgaW5zdGFuY2UtPnNldEZvbnRTaXpl
KGZvbnREZXNjcmlwdGlvbiwgZm9udFNpemVGb3JLZXl3b3JkKGluc3RhbmNlLT5tX2NoZWNrZXIu
bV9kb2N1bWVudCwgQ1NTVmFsdWVNZWRpdW0sIGZhbHNlKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOworICAg
IGluc3RhbmNlLT5tX2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFu
Y2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUZvbnQp
Cit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisKKyAgICAgICAgYm9vbCB1c2VTVkdab29tUnVsZXMgPSBpbnN0YW5jZS0+
bV9lbGVtZW50ICYmIGluc3RhbmNlLT5tX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOworCisgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFs
TGluZUhlaWdodCgpKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fbGluZUhlaWdodFZhbHVlID0gMDsK
KworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAgICAgICBSZW5k
ZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5c3RlbUZvbnQocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCksIGZvbnREZXNjcmlwdGlvbik7CisKKyAgICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBz
ZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4gIElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0
aW5nIHRoZSBmb250LgorICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXpl
KCkpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcmVuZGVyaW5nIG1vZGUgYW5kIHBy
aW50ZXIgZm9udCBzZXR0aW5ncyBhcmUgdXBkYXRlZC4KKyAgICAgICAgICAgIFNldHRpbmdzKiBz
ZXR0aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAg
ICAgICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29s
dXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVz
IGhhdmUgc2V0dGluZ3MKKyAgICAgICAgICAgIGlmICghc2V0dGluZ3MpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUo
c2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldFVzZVByaW50ZXJGb250KGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+cHJp
bnRpbmcoKSk7CisKKyAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBmYWN0b3IuCisgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGdldENvbXB1dGVkU2l6ZUZy
b21TcGVjaWZpZWRTaXplKGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudCwgaW5zdGFuY2Ut
Pm1fc3R5bGUuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCBmb250RGVz
Y3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgpLCB1c2VTVkdab29tUnVsZXMpKTsKKyAgICAgICAgICAg
IGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlv
bikpCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzRm9udFZhbHVlKCkpIHsKKyAgICAgICAgRm9u
dFZhbHVlKiBmb250ID0gc3RhdGljX2Nhc3Q8Rm9udFZhbHVlKj4odmFsdWUpOworICAgICAgICBp
ZiAoIWZvbnQtPnN0eWxlIHx8ICFmb250LT52YXJpYW50IHx8ICFmb250LT53ZWlnaHQgfHwgIWZv
bnQtPnNpemUgfHwgIWZvbnQtPmxpbmVIZWlnaHQgfHwgIWZvbnQtPmZhbWlseSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWVDU1NQcm9w
ZXJ0eUZvbnRTdHlsZShpbnN0YW5jZSwgZm9udC0+c3R5bGUuZ2V0KCkpOworICAgICAgICBDU1NT
dHlsZVNlbGVjdG9yOjpoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5Rm9udFZhcmlhbnQoaW5zdGFuY2Us
IGZvbnQtPnZhcmlhbnQuZ2V0KCkpOworICAgICAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVW
YWx1ZUNTU1Byb3BlcnR5Rm9udFdlaWdodChpbnN0YW5jZSwgZm9udC0+d2VpZ2h0LmdldCgpKTsK
KyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWVDU1NQcm9wZXJ0eUZvbnRTaXpl
KGluc3RhbmNlLCBmb250LT5zaXplLmdldCgpKTsKKworICAgICAgICBpbnN0YW5jZS0+bV9saW5l
SGVpZ2h0VmFsdWUgPSBmb250LT5saW5lSGVpZ2h0LmdldCgpOworCisgICAgICAgIENTU1N0eWxl
U2VsZWN0b3I6OmhhbmRsZVZhbHVlQ1NTUHJvcGVydHlGb250RmFtaWx5KGluc3RhbmNlLCBmb250
LT5mYW1pbHkuZ2V0KCkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlGb250RmFtaWx5Cisv
LyBsaXN0IG9mIHN0cmluZ3MgYW5kIGlkcworREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlGb250
RmFtaWx5KQoreworICAgIEZvbnREZXNjcmlwdGlvbiBwYXJlbnRGb250RGVzY3JpcHRpb24gPSBp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgRm9udERlc2Ny
aXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRp
b24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShwYXJlbnRGb250RGVz
Y3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0RmFtaWx5
KHBhcmVudEZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpKTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0SXNTcGVjaWZpZWRGb250KHBhcmVudEZvbnREZXNjcmlwdGlvbi5pc1NwZWNpZmllZEZv
bnQoKSk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9u
dERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30K
K0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udEZhbWlseSkKK3sKKyAgICBGb250RGVzY3Jp
cHRpb24gaW5pdGlhbERlc2MgPSBGb250RGVzY3JpcHRpb24oKTsKKyAgICBGb250RGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
OworICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IHRoZSBzaXplIHRvIGFjY291bnQgZm9yIHRoZSBn
ZW5lcmljIGZhbWlseSBjaGFuZ2UgZnJvbSBtb25vc3BhY2UKKyAgICAvLyB0byBub24tbW9ub3Nw
YWNlLgorICAgIGlmIChmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBmb250RGVzY3Jp
cHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpKQorICAgICAgICBpbnN0YW5jZS0+c2V0Rm9udFNp
emUoZm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdvcmQoaW5zdGFuY2UtPm1fY2hlY2tl
ci5tX2RvY3VtZW50LCBDU1NWYWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24ua2V5d29yZFNp
emUoKSAtIDEsIGZhbHNlKSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHko
aW5pdGlhbERlc2MuZ2VuZXJpY0ZhbWlseSgpKTsKKyAgICBpZiAoIWluaXRpYWxEZXNjLmZpcnN0
RmFtaWx5KCkuZmFtaWx5SXNFbXB0eSgpKQorICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0RmFt
aWx5KGluaXRpYWxEZXNjLmZpcnN0RmFtaWx5KCkpOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNl
LT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlGb250RmFt
aWx5KQoreworICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCisgICAgICAgIHJldHVybjsK
KyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpOworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0
PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7Cisg
ICAgRm9udEZhbWlseSYgZmlyc3RGYW1pbHkgPSBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHko
KTsKKyAgICBGb250RmFtaWx5KiBjdXJyRmFtaWx5ID0gMDsKKworICAgIC8vIEJlZm9yZSBtYXBw
aW5nIGluIGEgbmV3IGZvbnQtZmFtaWx5IHByb3BlcnR5LCB3ZSBzaG91bGQgcmVzZXQgdGhlIGdl
bmVyaWMgZmFtaWx5LgorICAgIGJvb2wgb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUgPSBm
b250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpOworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6Tm9GYW1pbHkpOworCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxp
c3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CisgICAgICAgIGlmICghaXRlbS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0
ZW0pOworICAgICAgICBBdG9taWNTdHJpbmcgZmFjZTsKKyAgICAgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOworICAgICAg
ICBpZiAoY29udGVudFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TVFJJTkcpIHsKKyAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUtPmlzRm9udEZhbWls
eVZhbHVlKCkpCisgICAgICAgICAgICAgICAgZmFjZSA9IHN0YXRpY19jYXN0PEZvbnRGYW1pbHlW
YWx1ZSo+KGNvbnRlbnRWYWx1ZSktPmZhbWlseU5hbWUoKTsKKyAgICAgICAgfSBlbHNlIGlmIChj
b250ZW50VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lE
RU5UICYmIHNldHRpbmdzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0
SWRlbnQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJvZHk6CisgICAgICAg
ICAgICAgICAgZmFjZSA9IHNldHRpbmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoKKyAgICAgICAg
ICAgICAgICBmYWNlID0gIi13ZWJraXQtc2VyaWYiOworICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNhbnNTZXJp
ZjoKKyAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtc2Fucy1zZXJpZiI7CisgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9u
OjpTYW5zU2VyaWZGYW1pbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZUN1cnNpdmU6CisgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LWN1
cnNpdmUiOworICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5
KEZvbnREZXNjcmlwdGlvbjo6Q3Vyc2l2ZUZhbWlseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRmFudGFzeToKKyAgICAgICAgICAgICAgICBmYWNl
ID0gIi13ZWJraXQtZmFudGFzeSI7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpGYW50YXN5RmFtaWx5KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNb25vc3BhY2U6CisgICAg
ICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LW1vbm9zcGFjZSI7CisgICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpNb25vc3Bh
Y2VGYW1pbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFmYWNlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFj
dXJyRmFtaWx5KSB7CisgICAgICAgICAgICAgICAgLy8gRmlsbGluZyBpbiB0aGUgZmlyc3QgZmFt
aWx5LgorICAgICAgICAgICAgICAgIGZpcnN0RmFtaWx5LnNldEZhbWlseShmYWNlKTsKKyAgICAg
ICAgICAgICAgICBmaXJzdEZhbWlseS5hcHBlbmRGYW1pbHkoMCk7IC8vIFJlbW92ZSBhbnkgaW5o
ZXJpdGVkIGZhbWlseS1mYWxsYmFjayBsaXN0LgorICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkg
PSAmZmlyc3RGYW1pbHk7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzU3Bl
Y2lmaWVkRm9udChmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpID09IEZvbnREZXNjcmlw
dGlvbjo6Tm9GYW1pbHkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBS
ZWZQdHI8U2hhcmVkRm9udEZhbWlseT4gbmV3RmFtaWx5ID0gU2hhcmVkRm9udEZhbWlseTo6Y3Jl
YXRlKCk7CisgICAgICAgICAgICAgICAgbmV3RmFtaWx5LT5zZXRGYW1pbHkoZmFjZSk7CisgICAg
ICAgICAgICAgICAgY3VyckZhbWlseS0+YXBwZW5kRmFtaWx5KG5ld0ZhbWlseSk7CisgICAgICAg
ICAgICAgICAgY3VyckZhbWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIFdlIGNhbid0IGNhbGwgdXNlRml4ZWREZWZhdWx0U2l6
ZSgpIHVudGlsIGFsbCBuZXcgZm9udCBmYW1pbGllcyBoYXZlIGJlZW4gYWRkZWQKKyAgICAvLyBJ
ZiBjdXJyRmFtaWx5IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2V0IGF0IGxlYXN0IG9uZSBmYW1pbHkg
b24gdGhpcyBkZXNjcmlwdGlvbi4KKyAgICBpZiAoY3VyckZhbWlseSkgeworICAgICAgICBpZiAo
Zm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXplKCkgJiYgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVk
RGVmYXVsdFNpemUoKSAhPSBvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRTaXplRm9yS2V5
d29yZChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlWHhTbWFsbCArIGZv
bnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwgIW9sZEZhbWlseVVzZWRGaXhlZERlZmF1
bHRTaXplKSk7CisKKyAgICAgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3Jp
cHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0
eSA9IHRydWU7CisgICAgfQorICAgIHJldHVybjsKK30KKworLy8gQ1NTUHJvcGVydHlGb250U2l6
ZQorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlGb250U2l6ZSkKK3sKKyAgICBGb250RGVzY3Jp
cHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsKKyAgICBmbG9hdCBz
aXplID0gMDsKKworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnROb2RlKSB7CisgICAgICAgIHNp
emUgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVk
U2l6ZSgpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoaW5zdGFuY2Ut
Pm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmtleXdvcmRTaXplKCkpOworICAgIH0K
KworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5zdGFuY2UtPnNl
dEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgc2l6ZSk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFu
Y2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICByZXR1cm47Cit9CitERUZJTkVfSU5JVElBTChD
U1NQcm9wZXJ0eUZvbnRTaXplKQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2Ny
aXB0aW9uLnNldEtleXdvcmRTaXplKDApOworICAgIGZsb2F0IHNpemUgPSAwOworCisgICAgc2l6
ZSA9IENTU1N0eWxlU2VsZWN0b3I6OmZvbnRTaXplRm9yS2V5d29yZChpbnN0YW5jZS0+bV9jaGVj
a2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlTWVkaXVtLCBmb250RGVzY3JpcHRpb24udXNlRml4ZWRE
ZWZhdWx0U2l6ZSgpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoQ1NTVmFs
dWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKKworICAgIGlmIChzaXplIDwgMCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaW5zdGFuY2UtPnNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlv
biwgc2l6ZSk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsK
KyAgICByZXR1cm47Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlGb250U2l6ZSkKK3sKKyAg
ICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworCisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3Jp
cHRpb24uc2V0S2V5d29yZFNpemUoMCk7CisgICAgZmxvYXQgb2xkU2l6ZSA9IDA7CisgICAgZmxv
YXQgc2l6ZSA9IDA7CisKKyAgICBib29sIHBhcmVudElzQWJzb2x1dGVTaXplID0gZmFsc2U7Cisg
ICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudE5vZGUpIHsKKyAgICAgICAgb2xkU2l6ZSA9IGluc3Rh
bmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7Cisg
ICAgICAgIHBhcmVudElzQWJzb2x1dGVTaXplID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLmlzQWJzb2x1dGVTaXplKCk7CisgICAgfQorCisgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgIC8vIEtleXdvcmRzIGFyZSBiZWluZyB1
c2VkLgorICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAg
ICAgIGNhc2UgQ1NTVmFsdWVYeFNtYWxsOgorICAgICAgICBjYXNlIENTU1ZhbHVlWFNtYWxsOgor
ICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGw6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVhMYXJn
ZToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVh4TGFyZ2U6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRYeHhMYXJnZToKKyAgICAgICAgICAgIHNpemUgPSBmb250U2l6ZUZvcktleXdvcmQoaW5z
dGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwg
Zm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSk7CisgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBD
U1NWYWx1ZVh4U21hbGwgKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENT
U1ZhbHVlTGFyZ2VyOgorICAgICAgICAgICAgc2l6ZSA9IGluc3RhbmNlLT5sYXJnZXJGb250U2l6
ZShvbGRTaXplLCBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPmluUXVpcmtzTW9kZSgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGxlcjoKKyAg
ICAgICAgICAgIHNpemUgPSBpbnN0YW5jZS0+c21hbGxlckZvbnRTaXplKG9sZFNpemUsIGluc3Rh
bmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUocGFyZW50SXNBYnNv
bHV0ZVNpemUgJiYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTGFyZ2Vy
IHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlU21hbGxlcikpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5
cGUoKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHBhcmVudElz
QWJzb2x1dGVTaXplIHx8ICh0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSAmJiB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TICYmIHR5cGUgIT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FWFMgJiYgdHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JF
TVMpKTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5
cGUpKQorICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxv
YXQoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUsIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUs
IHRydWUpOworICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIHNpemUgPSAocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0
VmFsdWUoKSAqIG9sZFNpemUpIC8gMTAwLjBmOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpbnN0YW5jZS0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKKyAgICBpZiAo
aW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQor
ICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorCisKKy8vIENTU1Byb3Bl
cnR5Rm9udFN0eWxlCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRTdHlsZSkKK3sKKyAg
ICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoaW5zdGFuY2Ut
Pm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKTsKKworICAgIGlmIChp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisg
ICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJTkVfSU5JVElBTChD
U1NQcm9wZXJ0eUZvbnRTdHlsZSkKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOworCisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1f
Zm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUZvbnRTdHlsZSkK
K3sKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3Rh
bmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBzd2l0Y2ggKHAtPmdldElkZW50
KCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlT2JsaXF1ZToKKyAgICAvLyBGSVhNRTogb2JsaXF1ZSBp
cyB0aGUgc2FtZSBhcyBpdGFsaWMgZm9yIHRoZSBtb21lbnQuLi4KKyAgICBjYXNlIENTU1ZhbHVl
SXRhbGljOgorICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKHRydWUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0SXRhbGljKGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkg
PSB0cnVlOworfQorCisvLyBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50CitERUZJTkVfSU5IRVJJVChD
U1NQcm9wZXJ0eUZvbnRWYXJpYW50KQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3Jp
cHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERl
c2NyaXB0aW9uLnNldFNtYWxsQ2FwcyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuc21hbGxDYXBzKCkpOworCisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9u
dERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udFZhcmlhbnQp
Cit7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0
eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBz
KGZhbHNlKTsKKworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9u
KGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7
Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlGb250VmFyaWFudCkKK3sKKyAgICBpZiAoIXZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5m
b250RGVzY3JpcHRpb24oKTsKKyAgICBpbnQgaWQgPSBwLT5nZXRJZGVudCgpOworICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2Fw
cyhmYWxzZSk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbENhcHMpCisgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHModHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihm
b250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOwor
fQorCisvLyBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5
Rm9udFdlaWdodCkKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5z
dGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRXZWlnaHQoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLndlaWdo
dCgpKTsKKworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9
CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCit7CisgICAgRm9udERlc2Ny
aXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRp
b24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwor
CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklO
RV9WQUxVRShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCit7CisgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIEZvbnREZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCk7CisKKyAgICBzd2l0Y2ggKHAtPmdldElkZW50KCkpIHsKKyAgICBjYXNlIDA6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgQ1NTVmFsdWVCb2xkZXI6CisgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2NyaXB0aW9uLmJvbGRlcldlaWdo
dCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUxpZ2h0ZXI6CisgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2NyaXB0aW9uLmxpZ2h0ZXJXZWlnaHQo
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVCb2xkOgorICAgIGNhc2UgQ1NT
VmFsdWU3MDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJv
bGQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgIGNhc2Ug
Q1NTVmFsdWU0MDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdo
dE5vcm1hbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU5MDA6CisgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDkwMCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTVmFsdWU4MDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWln
aHQoRm9udFdlaWdodDgwMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU2MDA6
CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDYwMCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU1MDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRXZWlnaHQoRm9udFdlaWdodDUwMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWUzMDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDMw
MCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWUyMDA6CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDIwMCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTVmFsdWUxMDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFdlaWdodDEwMCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlv
bihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVl
OworfQorCisvLyBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcKK0RFRklORV9JTkhFUklUKENTU1By
b3BlcnR5VGV4dFJlbmRlcmluZykKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRUZXh0UmVuZGVyaW5nTW9kZShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCkudGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgaWYgKGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5z
dGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5
VGV4dFJlbmRlcmluZykKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0g
aW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRUZXh0UmVuZGVyaW5nTW9kZShBdXRvVGV4dFJlbmRlcmluZyk7CisgICAgaWYgKGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAg
ICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eVRleHRSZW5kZXJpbmcpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBm
b250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Cisg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRUZXh0UmVuZGVyaW5nTW9kZSgqcHJpbWl0aXZlVmFs
dWUpOworICAgICAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihm
b250RGVzY3JpcHRpb24pKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1
ZTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZworREVGSU5F
X0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKQoreworICAgIEZvbnREZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoaW5zdGFuY2UtPm1f
cGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7CisgICAgaWYg
KGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkK
KyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9JTklUSUFM
KENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZykKK3sKKyAgICBGb250RGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwor
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKEF1dG9TbW9vdGhpbmcpOworICAg
IGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlv
bikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJTkVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKQoreworICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBGb250
RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNj
cmlwdGlvbigpOworCisgICAgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nOworICAgIHN3aXRj
aCAocC0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICBzbW9v
dGhpbmcgPSBBdXRvU21vb3RoaW5nOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVl
Tm9uZToKKyAgICAgICAgc21vb3RoaW5nID0gTm9TbW9vdGhpbmc7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTVmFsdWVBbnRpYWxpYXNlZDoKKyAgICAgICAgc21vb3RoaW5nID0gQW50aWFs
aWFzZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVTdWJwaXhlbEFudGlhbGlh
c2VkOgorICAgICAgICBzbW9vdGhpbmcgPSBTdWJwaXhlbEFudGlhbGlhc2VkOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgc21vb3RoaW5nID0gQXV0b1Ntb290aGluZzsKKyAgICB9CisgICAgZm9udERlc2NyaXB0aW9u
LnNldEZvbnRTbW9vdGhpbmcoc21vb3RoaW5nKTsKKworICAgIGlmIChpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNl
LT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVB
ZGp1c3QKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRq
dXN0LCBzZXRUZXh0U2l6ZUFkanVzdCwgdGV4dFNpemVBZGp1c3QpCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwgc2V0VGV4dFNpemVBZGp1c3Qs
IGluaXRpYWxUZXh0U2l6ZUFkanVzdCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTaXplQWRqdXN0KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkpIHsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0U2l6ZUFk
anVzdChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pOworICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK30K
KworLy8gQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZQorLy8gQ1NTIFRleHQgTGF5b3V0IE1v
ZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlLCBzZXRXcml0aW5nTW9kZSwgd3JpdGlu
Z01vZGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9k
ZSwgc2V0V3JpdGluZ01vZGUsIGluaXRpYWxXcml0aW5nTW9kZSkKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0V3JpdGluZ01vZGUoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICB9CisgICAgaWYg
KGluc3RhbmNlLT5tX2VsZW1lbnQgJiYgaW5zdGFuY2UtPm1fZWxlbWVudCA9PSBpbnN0YW5jZS0+
bV9lbGVtZW50LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgaW5zdGFu
Y2UtPm1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0V3JpdGluZ01vZGVTZXRPbkRvY3VtZW50RWxl
bWVudCh0cnVlKTsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFu
Y2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRP
cmllbnRhdGlvbihpbnN0YW5jZS0+bV9zdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9u
dERpcnR5ID0gdHJ1ZTsKK30KKworLy8gQ1NTUHJvcGVydHlab29tCitERUZJTkVfSU5IRVJJVChD
U1NQcm9wZXJ0eVpvb20pCit7CisgICAgLy8gUmVzZXQgdGhlIHpvb20gaW4gZWZmZWN0IGJlZm9y
ZSB3ZSBkbyBhbnl0aGluZy4gVGhpcyBhbGxvd3MgdGhlIHNldFpvb20gbWV0aG9kIHRvIGFjY3Vy
YXRlbHkgY29tcHV0ZSBhIG5ldyB6b29tIGluIGVmZmVjdC4KKyAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0RWZmZWN0aXZlWm9vbShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZSA/IGluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT5lZmZlY3RpdmVab29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20o
KSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFpvb20oaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPnpvb20oKSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVpvb20pCit7CisgICAg
Ly8gUmVzZXQgdGhlIHpvb20gaW4gZWZmZWN0IGJlZm9yZSB3ZSBkbyBhbnl0aGluZy4gVGhpcyBh
bGxvd3MgdGhlIHNldFpvb20gbWV0aG9kIHRvIGFjY3VyYXRlbHkgY29tcHV0ZSBhIG5ldyB6b29t
IGluIGVmZmVjdC4KKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RWZmZWN0aXZlWm9vbShpbnN0
YW5jZS0+bV9wYXJlbnRTdHlsZSA/IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5lZmZlY3RpdmVa
b29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworfQorREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5Wm9vbSkKK3sKKyAgICAvLyBSZXNldCB0aGUgem9vbSBpbiBlZmZlY3QgYmVm
b3JlIHdlIGRvIGFueXRoaW5nLiBUaGlzIGFsbG93cyB0aGUgc2V0Wm9vbSBtZXRob2QgdG8gYWNj
dXJhdGVseSBjb21wdXRlIGEgbmV3IHpvb20gaW4gZWZmZWN0LgorICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRFZmZlY3RpdmVab29tKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlID8gaW5zdGFuY2Ut
Pm1fcGFyZW50U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA6IFJlbmRlclN0eWxlOjppbml0aWFsWm9v
bSgpKTsKKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworCisgICAgaW50IHR5cGUgPSBwcmlt
aXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAgIGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlUmVzZXQpIHsKKyAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwor
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpv
b20oKSk7CisgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZURvY3VtZW50KSB7CisgICAgICAgIGZsb2F0IGRvY1pvb20gPSBpbnN0YW5jZS0+bV9jaGVj
a2VyLm1fZG9jdW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnpvb20oKTsKKyAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oZG9jWm9vbSk7CisgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRab29tKGRvY1pvb20pOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIHsKKyAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0Wm9vbShwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwLjBmKTsKKyAgICB9
IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKKyAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsK
KyAgICB9CisKKyAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorCisvLyBDU1NQ
cm9wZXJ0eUxpbmVIZWlnaHQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxpbmVI
ZWlnaHQsIHNldExpbmVIZWlnaHQsIGxpbmVIZWlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBzZXRMaW5lSGVpZ2h0LCBpbml0aWFsTGluZUhlaWdodCkK
K0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpCit7CisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisKKyAgICAg
ICAgTGVuZ3RoIGxpbmVIZWlnaHQ7CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUt
PnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aCgtMTAw
LjAsIFBlcmNlbnQpOworICAgICAgICBlbHNlIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0
VHlwZUxlbmd0aCh0eXBlKSkgeworICAgICAgICAgICAgZG91YmxlIG11bHRpcGxpZXIgPSBpbnN0
YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworICAgICAgICAgICAgaWYgKGluc3RhbmNl
LT5tX3N0eWxlLT50ZXh0U2l6ZUFkanVzdCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+ZnJhbWUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgbXVsdGlwbGllciAqPSBmcmFtZS0+dGV4dFpvb21GYWN0b3IoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGlu
c3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsICBtdWx0aXBsaWVyKSwgRml4ZWQpOworICAgICAg
ICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQor
ICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aCgoaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnRT
aXplKCkgKiBwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKKyAg
ICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKKyAg
ICAgICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZh
bHVlKCkgKiAxMDAuMCwgUGVyY2VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldExpbmVIZWlnaHQobGluZUhlaWdodCk7
CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmQKK0RFRklORV9JTklUSUFMKENT
U1Byb3BlcnR5QmFja2dyb3VuZCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xlYXJCYWNr
Z3JvdW5kTGF5ZXJzKCk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJhY2tncm91bmRDb2xv
cihDb2xvcigpKTsKK30KK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZCkKK3sK
KyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+aW5oZXJpdEJhY2tncm91bmRMYXllcnMoKmluc3RhbmNl
LT5tX3BhcmVudFN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkpOworICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmJhY2tncm91
bmRDb2xvcigpKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZCkK
KworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudAorREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgYmFja2dyb3Vu
ZCwgQmFja2dyb3VuZCwgYXR0YWNobWVudCwgQXR0YWNobWVudCkKK0RFRklORV9IQU5ETEVfRklM
TF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIGJhY2tncm91
bmQsIEJhY2tncm91bmQsIGF0dGFjaG1lbnQsIEF0dGFjaG1lbnQpCitERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgYmFja2dyb3Vu
ZCwgQmFja2dyb3VuZCwgYXR0YWNobWVudCwgQXR0YWNobWVudCkKKworLy8gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ2xpcAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgY2xpcCwgQ2xpcCkKK0RF
RklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAs
IGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNsaXAsIENsaXApCitERUZJTkVfSEFORExFX0ZJTExf
TEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3VuZCwgQmFja2dy
b3VuZCwgY2xpcCwgQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgc2V0QmFja2dyb3Vu
ZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHNldEJhY2tncm91bmRDb2xvcikKK0RFRklORV9IQU5E
TEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHNldEJhY2tncm91bmRD
b2xvcikKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UKK0RFRklORV9IQU5ETEVfRklM
TF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBiYWNrZ3JvdW5kLCBC
YWNrZ3JvdW5kLCBpbWFnZSwgSW1hZ2UpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElB
TChDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgaW1h
Z2UsIEltYWdlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5QmFj
a2dyb3VuZEltYWdlLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBpbWFnZSwgSW1hZ2UpCisKKy8v
IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbgorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lO
SEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCBvcmlnaW4sIE9yaWdpbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1By
b3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgb3JpZ2luLCBP
cmlnaW4pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kT3JpZ2luLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBvcmlnaW4sIE9yaWdpbikKKworLy8g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24KK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9U
V08oQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKQorREVGSU5FX0VYUEFORElO
R19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkpCitERUZJ
TkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbikKKworLy8gQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJ
VChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIGJhY2tncm91bmQsIEJhY2tncm91bmQs
IHhQb3NpdGlvbiwgWFBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCB4
UG9zaXRpb24sIFhQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHhQb3Np
dGlvbiwgWFBvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkKK0RF
RklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgeVBvc2l0aW9uLCBZUG9zaXRpb24pCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blksIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHlQb3NpdGlvbiwgWVBvc2l0aW9uKQorREVGSU5F
X0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwg
YmFja2dyb3VuZCwgQmFja2dyb3VuZCwgeVBvc2l0aW9uLCBZUG9zaXRpb24pCisKKy8vIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdAorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RXTyhDU1NQ
cm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVFdP
KENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdCkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UmVwZWF0WCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0WCwgUmVwZWF0WCkKK0RFRklO
RV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgs
IGJhY2tncm91bmQsIEJhY2tncm91bmQsIHJlcGVhdFgsIFJlcGVhdFgpCitERUZJTkVfSEFORExF
X0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgYmFja2dyb3Vu
ZCwgQmFja2dyb3VuZCwgcmVwZWF0WCwgUmVwZWF0WCkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0WQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0WSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0WSwgUmVwZWF0
WSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdFksIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHJlcGVhdFksIFJlcGVhdFkpCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwg
YmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0WSwgUmVwZWF0WSkKKworLy8gQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kU2l6ZQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kU2l6ZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgc2l6ZSwgU2l6ZSkK
K0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZFNp
emUsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHNpemUsIFNpemUpCitERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSwgYmFja2dyb3VuZCwgQmFj
a2dyb3VuZCwgc2l6ZSwgU2l6ZSkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXIKK0RFRklORV9FWFBB
TkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eUJvcmRlciwgQ1NTUHJvcGVydHlCb3JkZXJT
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcikKK0RF
RklORV9FWFBBTkRJTkdfSU5JVElBTF9USFJFRShDU1NQcm9wZXJ0eUJvcmRlciwgQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJD
b2xvcikKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyKQorCisvLyBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbQorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoKQorREVGSU5F
X0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20pCit7CisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnJlc2V0Qm9yZGVyQm90dG9tKCk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbSkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcgorREVGSU5F
X0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBzZXRC
b3JkZXJCb3R0b21Db2xvciwgYm9yZGVyQm90dG9tQ29sb3IsIGNvbG9yKQorREVGSU5FX0hBTkRM
RV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIHNldEJvcmRlckJv
dHRvbUNvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbUNvbG9yLCBzZXRCb3JkZXJCb3R0b21Db2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21MZWZ0UmFkaXVzCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21MZWZ0UmFkaXVzLCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBib3JkZXJCb3R0b21M
ZWZ0UmFkaXVzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
TGVmdFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgaW5pdGlhbEJvcmRlclJhZGl1
cykKK0RFRklORV9SQURJVVNfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVz
LCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21SaWdodFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIGJvcmRlckJvdHRvbVJp
Z2h0UmFkaXVzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
UmlnaHRSYWRpdXMsIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBpbml0aWFsQm9yZGVyUmFk
aXVzKQorREVGSU5FX1JBRElVU19WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFk
aXVzLCBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cykKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
U3R5bGUsIHNldEJvcmRlckJvdHRvbVN0eWxlLCBib3JkZXJCb3R0b21TdHlsZSkKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBzZXRCb3JkZXJCb3R0
b21TdHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBzZXRCb3JkZXJCb3R0b21TdHlsZSkKKworLy8gQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21XaWR0aAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tV2lkdGgsIHNldEJvcmRlckJvdHRvbVdpZHRoLCBib3JkZXJCb3R0b21XaWR0
aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBz
ZXRCb3JkZXJCb3R0b21XaWR0aCwgaW5pdGlhbEJvcmRlcldpZHRoKQorREVGSU5FX1dJRFRIX1ZB
TFVFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIHNldEJvcmRlckJvdHRvbVdpZHRoKQor
CisvLyBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgc2V0Qm9yZGVyQ29sbGFwc2UsIGJvcmRlckNvbGxhcHNl
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsIHNldEJv
cmRlckNvbGxhcHNlLCBpbml0aWFsQm9yZGVyQ29sbGFwc2UpCitERUZJTkVfVkFMVUUoQ1NTUHJv
cGVydHlCb3JkZXJDb2xsYXBzZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgc3dpdGNoIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVlQ29sbGFwc2U6Cisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2UodHJ1ZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNlcGFyYXRlOgorICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJvcmRlckNvbGxhcHNlKGZhbHNlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eUJvcmRl
ckNvbG9yCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQcm9wZXJ0eUJvcmRlckNv
bG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29s
b3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENv
bG9yKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX0ZPVVIoQ1NTUHJvcGVydHlCb3JkZXJDb2xv
ciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9y
LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xv
cikKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpCisKKy8vIENTU1By
b3BlcnR5Qm9yZGVyTGVmdAorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCkKK0RFRklORV9JTklUSUFM
KENTU1Byb3BlcnR5Qm9yZGVyTGVmdCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRC
b3JkZXJMZWZ0KCk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckxlZnQp
CisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRf
QkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBzZXRCb3JkZXJMZWZ0Q29sb3IsIGJv
cmRlckxlZnRDb2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3IsIHNldEJvcmRlckxlZnRDb2xvcikKK0RFRklORV9IQU5ETEVf
VkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIHNldEJvcmRlckxlZnRDb2xv
cikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgc2V0Qm9yZGVyTGVmdFN0eWxlLCBib3JkZXJM
ZWZ0U3R5bGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5
bGUsIHNldEJvcmRlckxlZnRTdHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorREVGSU5FX0hBTkRM
RV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgc2V0Qm9yZGVyTGVmdFN0eWxlKQor
CisvLyBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBzZXRCb3JkZXJMZWZ0V2lkdGgsIGJvcmRlckxlZnRX
aWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwg
c2V0Qm9yZGVyTGVmdFdpZHRoLCBpbml0aWFsQm9yZGVyV2lkdGgpCitERUZJTkVfV0lEVEhfVkFM
VUUoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIHNldEJvcmRlckxlZnRXaWR0aCkKKworLy8g
Q1NTUHJvcGVydHlCb3JkZXJSYWRpdXMKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9GT1VSKENT
U1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIENT
U1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVm
dFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cykKK0RFRklORV9JTklU
SUFMKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5y
ZXNldEJvcmRlclJhZGl1cygpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3Jk
ZXJSYWRpdXMpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQKK0RFRklORV9FWFBBTkRJTkdf
SU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodFdpZHRoKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCkKK3sKKyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRCb3JkZXJSaWdodCgpOworfQorREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dENvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRDb2xvciwgc2V0Qm9yZGVyUmlnaHRDb2xvciwgYm9yZGVyUmlnaHRDb2xvciwgY29sb3IpCitE
RUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBz
ZXRCb3JkZXJSaWdodENvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0Q29sb3IsIHNldEJvcmRlclJpZ2h0Q29sb3IpCisKKy8vIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRTdHlsZSwgc2V0Qm9yZGVyUmlnaHRTdHlsZSwgYm9yZGVyUmlnaHRTdHlsZSkKK0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIHNldEJvcmRlclJp
Z2h0U3R5bGUsIGluaXRpYWxCb3JkZXJTdHlsZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFN0eWxlLCBzZXRCb3JkZXJSaWdodFN0eWxlKQorCisvLyBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0V2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0V2lkdGgsIHNldEJvcmRlclJpZ2h0V2lkdGgsIGJvcmRlclJpZ2h0V2lkdGgpCitE
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBzZXRCb3Jk
ZXJSaWdodFdpZHRoLCBpbml0aWFsQm9yZGVyV2lkdGgpCitERUZJTkVfV0lEVEhfVkFMVUUoQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBzZXRCb3JkZXJSaWdodFdpZHRoKQorCisvLyBDU1NQ
cm9wZXJ0eUJvcmRlclNwYWNpbmcKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJv
cGVydHlCb3JkZXJTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFj
aW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZykKK0RFRklORV9FWFBB
TkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRp
Y2FsU3BhY2luZykKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZykK
KworLy8gQ1NTUHJvcGVydHlCb3JkZXJTdHlsZQorREVGSU5FX0VYUEFORElOR19JTkhFUklUX0ZP
VVIoQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSkKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9GT1VS
KENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJv
cmRlclN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclRvcAorREVGSU5FX0VYUEFORElOR19J
TkhFUklUX1RIUkVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRo
KQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJUb3ApCit7CisgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnJlc2V0Qm9yZGVyVG9wKCk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9w
ZXJ0eUJvcmRlclRvcCkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcgorREVGSU5FX0hB
TkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBzZXRCb3JkZXJU
b3BDb2xvciwgYm9yZGVyVG9wQ29sb3IsIGNvbG9yKQorREVGSU5FX0hBTkRMRV9JTklUSUFMX0NP
TE9SKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIHNldEJvcmRlclRvcENvbG9yKQorREVGSU5F
X0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBzZXRCb3JkZXJU
b3BDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzCitERUZJTkVfSEFO
RExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBzZXRCb3JkZXJUb3BM
ZWZ0UmFkaXVzLCBib3JkZXJUb3BMZWZ0UmFkaXVzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cywgaW5p
dGlhbEJvcmRlclJhZGl1cykKK0RFRklORV9SQURJVVNfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJU
b3BMZWZ0UmFkaXVzLCBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKQorCisvLyBDU1NQcm9wZXJ0eUJv
cmRlclRvcFJpZ2h0UmFkaXVzCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BSaWdodFJhZGl1cywgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIGJvcmRlclRvcFJpZ2h0
UmFkaXVzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRS
YWRpdXMsIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzLCBpbml0aWFsQm9yZGVyUmFkaXVzKQorREVG
SU5FX1JBRElVU19WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBzZXRCb3Jk
ZXJUb3BSaWdodFJhZGl1cykKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZQorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIHNldEJvcmRlclRvcFN0
eWxlLCBib3JkZXJUb3BTdHlsZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJv
cmRlclRvcFN0eWxlLCBzZXRCb3JkZXJUb3BTdHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBzZXRCb3JkZXJUb3BT
dHlsZSkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aAorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIHNldEJvcmRlclRvcFdpZHRoLCBib3JkZXJU
b3BXaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRo
LCBzZXRCb3JkZXJUb3BXaWR0aCwgaW5pdGlhbEJvcmRlcldpZHRoKQorREVGSU5FX1dJRFRIX1ZB
TFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIHNldEJvcmRlclRvcFdpZHRoKQorCisvLyBD
U1NQcm9wZXJ0eUJvcmRlcldpZHRoCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQ
cm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFdpZHRoKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX0ZPVVIoQ1NTUHJv
cGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRXaWR0aCkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyV2lk
dGgpCisKKy8vIENTU1Byb3BlcnR5Qm90dG9tCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlCb3R0b20sIHNldEJvdHRvbSwgYm90dG9tKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5Qm90dG9tLCBzZXRCb3R0b20sIGluaXRpYWxPZmZzZXQpCitERUZJTkVfTEVOR1RI
X1ZBTFVFKENTU1Byb3BlcnR5Qm90dG9tLCBzZXRCb3R0b20sIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eUJveFNpemluZworREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5Qm94U2l6aW5nLCBzZXRCb3hTaXppbmcsIGJveFNpemluZykKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJveFNpemluZywgc2V0Qm94U2l6aW5nLCBp
bml0aWFsQm94U2l6aW5nKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Qm94U2l6aW5nKQorewor
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVDb250ZW50Qm94KQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFNpemlu
ZyhDT05URU5UX0JPWCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRCb3hTaXppbmcoQk9SREVSX0JPWCk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0
eUNhcHRpb25TaWRlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlDYXB0aW9uU2lk
ZSwgc2V0Q2FwdGlvblNpZGUsIGNhcHRpb25TaWRlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5Q2FwdGlvblNpZGUsIHNldENhcHRpb25TaWRlLCBpbml0aWFsQ2FwdGlvblNpZGUp
CitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIHNldENhcHRpb25T
aWRlKQorCisvLyBDU1NQcm9wZXJ0eUNsZWFyCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlDbGVhciwgc2V0Q2xlYXIsIGNsZWFyKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1By
b3BlcnR5Q2xlYXIsIHNldENsZWFyLCBpbml0aWFsQ2xlYXIpCitERUZJTkVfSEFORExFX1ZBTFVF
KENTU1Byb3BlcnR5Q2xlYXIsIHNldENsZWFyKQorCisvLyBDU1NQcm9wZXJ0eUNsaXAKKworLy8g
Q1NTUHJvcGVydHlDb250ZW50CisvLyBGSVhNRTogSW4gQ1NTMywgaXQgd2lsbCBiZSBwb3NzaWJs
ZSB0byBpbmhlcml0IGNvbnRlbnQuICBJbiBDU1MyIGl0IGlzIG5vdC4gIFRoaXMKKyAgICAvLyBu
b3RlIGlzIGEgcmVtaW5kZXIgdGhhdCBldmVudHVhbGx5ICJpbmhlcml0IiBuZWVkcyB0byBiZSBz
dXBwb3J0ZWQuCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5Q29udGVudCkKK0RFRklO
RV9JTklUSUFMKENTU1Byb3BlcnR5Q29udGVudCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
Y2xlYXJDb250ZW50KCk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlDb250ZW50KQorewor
ICAgIC8vIGxpc3Qgb2Ygc3RyaW5nLCB1cmksIGNvdW50ZXIsIGF0dHIsIGkKKyAgICBpZiAoIXZh
bHVlLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NWYWx1ZUxpc3Qq
IGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgaW50IGxlbiA9
IGxpc3QtPmxlbmd0aCgpOworCisgICAgYm9vbCBkaWRTZXQgPSBmYWxzZTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKKyAgICAgICAgaWYgKGl0ZW0tPmlzSW1hZ2VHZW5l
cmF0b3JWYWx1ZSgpKSB7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29udGVu
dChzdGF0aWNfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4oaXRlbSktPmdlbmVyYXRlZElt
YWdlKCksIGRpZFNldCk7CisgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgc3dpdGNoIChjb250ZW50
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSkgeworICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HOgorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbnRlbnQo
Y29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgZGlkU2V0KTsKKyAgICAgICAg
ICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0FUVFI6IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBDYW4gYSBu
YW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRyKGZvbyk/CisgICAgICAgICAgICBpZiAo
aW5zdGFuY2UtPm1fc3R5bGUtPnN0eWxlVHlwZSgpID09IE5PUFNFVURPKQorICAgICAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRVbmlxdWUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+c2V0VW5pcXVlKCk7CisgICAg
ICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20sIGNvbnRlbnRWYWx1ZS0+Z2V0U3Ry
aW5nVmFsdWUoKS5pbXBsKCksIG51bGxBdG9tKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRDb250ZW50KGluc3RhbmNlLT5tX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShhdHRyKS5p
bXBsKCksIGRpZFNldCk7CisgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAgICAgICAg
Ly8gcmVnaXN0ZXIgdGhlIGZhY3QgdGhhdCB0aGUgYXR0cmlidXRlIHZhbHVlIGFmZmVjdHMgdGhl
IHN0eWxlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zZWxlY3RvckF0dHJzLmFkZChhdHRyLmxv
Y2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJOiB7CisgICAgICAgICAgICBpZiAoIWNv
bnRlbnRWYWx1ZS0+aXNJbWFnZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29udGVudChpbnN0YW5jZS0+Y2FjaGVkT3JQ
ZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q29udGVudCwgc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VW
YWx1ZSo+KGNvbnRlbnRWYWx1ZSkpLCBkaWRTZXQpOworICAgICAgICAgICAgZGlkU2V0ID0gdHJ1
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19DT1VOVEVSOiB7CisgICAgICAgICAgICBDb3VudGVyKiBjb3VudGVyVmFs
dWUgPSBjb250ZW50VmFsdWUtPmdldENvdW50ZXJWYWx1ZSgpOworICAgICAgICAgICAgT3duUHRy
PENvdW50ZXJDb250ZW50PiBjb3VudGVyID0gYWRvcHRQdHIobmV3IENvdW50ZXJDb250ZW50KGNv
dW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLAorICAgICAgICAgICAgICAgIChFTGlzdFN0eWxlVHlw
ZSljb3VudGVyVmFsdWUtPmxpc3RTdHlsZU51bWJlcigpLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRv
cigpKSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29udGVudChjb3VudGVy
LnJlbGVhc2UoKSwgZGlkU2V0KTsKKyAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWRpZFNldCkKKyAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPmNsZWFyQ29udGVudCgpOworICAgIHJldHVybjsKK30KKworLy8gQ1NTUHJvcGVy
dHlDb3VudGVySW5jcmVtZW50CitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5Q291bnRl
ckluY3JlbWVudCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlDb3VudGVySW5jcmVt
ZW50KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCkKK3sKKyAgICBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseUNvdW50ZXJMaXN0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgp
LCB2YWx1ZS0+aXNWYWx1ZUxpc3QoKSA/IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVl
KSA6IDAsIGZhbHNlKTsKK30KKworLy8gQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQKK0RFRklORV9O
VUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQpCitERUZJTkVfTlVMTF9JTklUSUFM
KENTU1Byb3BlcnR5Q291bnRlclJlc2V0KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Q291bnRl
clJlc2V0KQoreworICAgIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxpc3QoaW5zdGFu
Y2UtPm1fc3R5bGUuZ2V0KCksIHZhbHVlLT5pc1ZhbHVlTGlzdCgpID8gc3RhdGljX2Nhc3Q8Q1NT
VmFsdWVMaXN0Kj4odmFsdWUpIDogMCwgdHJ1ZSk7Cit9CisKKy8vIENTU1Byb3BlcnR5Q3Vyc29y
CitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUN1cnNvcikKK3sKKyAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0Q3Vyc29yKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jdXJzb3IoKSk7CisgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvckxpc3QoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUt
PmN1cnNvcnMoKSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUN1cnNvcikKK3sKKyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xlYXJDdXJzb3JMaXN0KCk7CisgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKK30KK0RFRklO
RV9WQUxVRShDU1NQcm9wZXJ0eUN1cnNvcikKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xl
YXJDdXJzb3JMaXN0KCk7CisgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAg
IENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsK
KyAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBsZW47IGkrKykgeworICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKGkpOworICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KGl0ZW0pOworICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
UkkpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzQ3Vyc29ySW1hZ2VW
YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdl
ID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT51cGRhdGVJZlNWR0N1cnNvcklzVXNlZChpbnN0
YW5jZS0+bV9lbGVtZW50KSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFs
bG93ZWQgdG8gc2hhcmUgc3R5bGUuCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0VW5pcXVlKCk7CisgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5hZGRDdXJzb3IoaW5zdGFuY2UtPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9w
ZXJ0eUN1cnNvciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19J
REVOVCkKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q3Vyc29yKCpwcmlt
aXRpdmVWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW50IHR5cGUgPSBwLT5wcmltaXRp
dmVUeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURF
TlQgJiYgaW5zdGFuY2UtPm1fc3R5bGUtPmN1cnNvcigpICE9IEVDdXJzb3IoKnApKQorICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcigqcCk7CisgICAgfQorfQorCisvLyBD
U1NQcm9wZXJ0eUVtcHR5Q2VsbHMKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUVt
cHR5Q2VsbHMsIHNldEVtcHR5Q2VsbHMsIGVtcHR5Q2VsbHMpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBzZXRFbXB0eUNlbGxzLCBpbml0aWFsRW1wdHlDZWxs
cykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBzZXRFbXB0eUNl
bGxzKQorCisvLyBDU1NQcm9wZXJ0eUZsb2F0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlGbG9hdCwgc2V0RmxvYXRpbmcsIGZsb2F0aW5nKQorREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5RmxvYXQsIHNldEZsb2F0aW5nLCBpbml0aWFsRmxvYXRpbmcpCitERUZJTkVf
SEFORExFX1ZBTFVFKENTU1Byb3BlcnR5RmxvYXQsIHNldEZsb2F0aW5nKQorCisvLyBDU1NQcm9w
ZXJ0eUZvbnRTdHJldGNoCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5Rm9udFN0cmV0
Y2gpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gpCitERUZJTkVf
TlVMTF9WQUxVRShDU1NQcm9wZXJ0eUZvbnRTdHJldGNoKQorCisvLyBDU1NQcm9wZXJ0eUhlaWdo
dAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5SGVpZ2h0LCBzZXRIZWlnaHQsIGhl
aWdodCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUhlaWdodCwgc2V0SGVpZ2h0
LCBpbml0aWFsU2l6ZSkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlIZWlnaHQsIHNl
dEhlaWdodCwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0
eUxlZnQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxlZnQsIHNldExlZnQsIGxl
ZnQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlMZWZ0LCBzZXRMZWZ0LCBpbml0
aWFsT2Zmc2V0KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eUxlZnQsIHNldExlZnQs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eUxldHRl
clNwYWNpbmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcs
IHNldExldHRlclNwYWNpbmcsIGxldHRlclNwYWNpbmcpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLCBzZXRMZXR0ZXJTcGFjaW5nLCBpbml0aWFsTGV0dGVy
V29yZFNwYWNpbmcpCitERUZJTkVfU1BBQ0lOR19WQUxVRShDU1NQcm9wZXJ0eUxldHRlclNwYWNp
bmcsIHNldExldHRlclNwYWNpbmcpCisKKy8vIENTU1Byb3BlcnR5TGlzdFN0eWxlCitERUZJTkVf
RVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlMaXN0U3R5bGUsIENTU1Byb3BlcnR5
TGlzdFN0eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgQ1NTUHJvcGVydHlMaXN0
U3R5bGVQb3NpdGlvbikKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9USFJFRShDU1NQcm9wZXJ0
eUxpc3RTdHlsZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NQcm9wZXJ0eUxpc3RTdHls
ZUltYWdlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKQorREVGSU5FX05VTExfVkFMVUUo
Q1NTUHJvcGVydHlMaXN0U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCBzZXRMaXN0U3R5
bGVJbWFnZSwgbGlzdFN0eWxlSW1hZ2UpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlMaXN0U3R5bGVJbWFnZSwgc2V0TGlzdFN0eWxlSW1hZ2UsIGluaXRpYWxMaXN0U3R5bGVJbWFn
ZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlKQoreworICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRMaXN0U3R5bGVJbWFnZShpbnN0YW5jZS0+c3R5bGVJbWFnZShDU1NQ
cm9wZXJ0eUxpc3RTdHlsZUltYWdlLCB2YWx1ZSkpOworfQorCisvLyBDU1NQcm9wZXJ0eUxpc3RT
dHlsZVBvc2l0aW9uCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlMaXN0U3R5bGVQ
b3NpdGlvbiwgc2V0TGlzdFN0eWxlUG9zaXRpb24sIGxpc3RTdHlsZVBvc2l0aW9uKQorREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIHNldExpc3RTdHls
ZVBvc2l0aW9uLCBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24pCitERUZJTkVfSEFORExFX1ZBTFVF
KENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIHNldExpc3RTdHlsZVBvc2l0aW9uKQorCisv
LyBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVR5cGUsIHNldExpc3RTdHlsZVR5cGUsIGxpc3RTdHlsZVR5cGUpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBzZXRMaXN0U3R5bGVU
eXBlLCBpbml0aWFsTGlzdFN0eWxlVHlwZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVy
dHlMaXN0U3R5bGVUeXBlLCBzZXRMaXN0U3R5bGVUeXBlKQorCisvLyBDU1NQcm9wZXJ0eU1hcmdp
bgorREVGSU5FX0VYUEFORElOR19JTkhFUklUX0ZPVVIoQ1NTUHJvcGVydHlNYXJnaW4sIENTU1By
b3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NQcm9wZXJ0eU1hcmdp
bkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVy
dHlNYXJnaW4pCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0TWFyZ2luKCk7Cit9CitE
RUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpbikKKworLy8gQ1NTUHJvcGVydHlNYXJn
aW5Cb3R0b20KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwg
c2V0TWFyZ2luQm90dG9tLCBtYXJnaW5Cb3R0b20pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b20sIHNldE1hcmdpbkJvdHRvbSwgaW5pdGlhbE1hcmdpbikKK0RF
RklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIHNldE1hcmdpbkJvdHRv
bSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5TWFy
Z2luTGVmdAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgc2V0
TWFyZ2luTGVmdCwgbWFyZ2luTGVmdCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eU1hcmdpbkxlZnQsIHNldE1hcmdpbkxlZnQsIGluaXRpYWxNYXJnaW4pCitERUZJTkVfTEVOR1RI
X1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgc2V0TWFyZ2luTGVmdCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBzZXRNYXJnaW5SaWdodCwg
bWFyZ2luUmlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNYXJnaW5SaWdo
dCwgc2V0TWFyZ2luUmlnaHQsIGluaXRpYWxNYXJnaW4pCitERUZJTkVfTEVOR1RIX1ZBTFVFKENT
U1Byb3BlcnR5TWFyZ2luUmlnaHQsIHNldE1hcmdpblJpZ2h0LCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNYXJnaW5Ub3AKK0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eU1hcmdpblRvcCwgc2V0TWFyZ2luVG9wLCBtYXJnaW5Ub3ApCitE
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIHNldE1hcmdpblRvcCwg
aW5pdGlhbE1hcmdpbikKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5Ub3As
IHNldE1hcmdpblRvcCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENT
U1Byb3BlcnR5TWF4SGVpZ2h0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlNYXhI
ZWlnaHQsIHNldE1heEhlaWdodCwgbWF4SGVpZ2h0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5TWF4SGVpZ2h0LCBzZXRNYXhIZWlnaHQsIGluaXRpYWxNYXhTaXplKQorREVGSU5F
X0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1heEhlaWdodCwgc2V0TWF4SGVpZ2h0LCB0cnVlLCB0
cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkKKworLy8gQ1NTUHJvcGVydHlNYXhXaWR0aAorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWF4V2lkdGgsIHNldE1heFdpZHRoLCBtYXhXaWR0
aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1heFdpZHRoLCBzZXRNYXhXaWR0
aCwgaW5pdGlhbE1heFNpemUpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5TWF4V2lk
dGgsIHNldE1heFdpZHRoLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENT
U1Byb3BlcnR5TWluSGVpZ2h0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlNaW5I
ZWlnaHQsIHNldE1pbkhlaWdodCwgbWluSGVpZ2h0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5TWluSGVpZ2h0LCBzZXRNaW5IZWlnaHQsIGluaXRpYWxNaW5TaXplKQorREVGSU5F
X0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgc2V0TWluSGVpZ2h0LCBmYWxzZSwg
dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5TWluV2lkdGgKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1pbldpZHRoLCBzZXRNaW5XaWR0aCwgbWluV2lk
dGgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNaW5XaWR0aCwgc2V0TWluV2lk
dGgsIGluaXRpYWxNaW5TaXplKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1pbldp
ZHRoLCBzZXRNaW5XaWR0aCwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlKQorCisvLyBD
U1NQcm9wZXJ0eU9wYWNpdHkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU9wYWNp
dHksIHNldE9wYWNpdHksIG9wYWNpdHkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlPcGFjaXR5LCBzZXRPcGFjaXR5LCBpbml0aWFsT3BhY2l0eSkKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eU9wYWNpdHkpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAg
ICAgICAgLy8gQ2xhbXAgb3BhY2l0eSB0byB0aGUgcmFuZ2UgMC0xCisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0T3BhY2l0eShtaW4oMS4wZiwgbWF4KDAuMGYsIHByaW1pdGl2ZVZh
bHVlLT5nZXRGbG9hdFZhbHVlKCkpKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eU9ycGhh
bnMKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU9ycGhhbnMsIHNldE9ycGhhbnMs
IG9ycGhhbnMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlPcnBoYW5zLCBzZXRP
cnBoYW5zLCBpbml0aWFsT3JwaGFucykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eU9ycGhhbnMp
Cit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgp
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldE9ycGhhbnMocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOworICAg
IH0KK30KKworLy8gQ1NTUHJvcGVydHlPdXRsaW5lCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRf
VEhSRUUoQ1NTUHJvcGVydHlPdXRsaW5lLCBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgQ1NTUHJv
cGVydHlPdXRsaW5lQ29sb3IsIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlKQorREVGSU5FX0lOSVRJ
QUwoQ1NTUHJvcGVydHlPdXRsaW5lKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldE91
dGxpbmUoKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZSkKKworLy8g
Q1NTUHJvcGVydHlPdXRsaW5lQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NT
UHJvcGVydHlPdXRsaW5lQ29sb3IsIHNldE91dGxpbmVDb2xvciwgb3V0bGluZUNvbG9yLCBjb2xv
cikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwg
c2V0T3V0bGluZUNvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eU91
dGxpbmVDb2xvciwgc2V0T3V0bGluZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eU91dGxpbmVPZmZz
ZXQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQsIHNldE91
dGxpbmVPZmZzZXQsIG91dGxpbmVPZmZzZXQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlPdXRsaW5lT2Zmc2V0LCBzZXRPdXRsaW5lT2Zmc2V0LCBpbml0aWFsT3V0bGluZU9mZnNl
dCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQpCit7CisgICAgaWYgKHZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPdXRsaW5lT2Zmc2V0KHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9y
b290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSk7Cisg
ICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLCBzZXRPdXRsaW5lU3R5bGUsIG91dGxpbmVTdHls
ZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwgc2V0T3V0
bGluZVN0eWxlLCBpbml0aWFsQm9yZGVyU3R5bGUpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlP
dXRsaW5lU3R5bGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0T3V0bGluZVN0eWxlKERPVFRFRCwgdHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPdXRsaW5lU3R5bGUoKnByaW1pdGl2ZVZhbHVlKTsKKyAg
ICB9Cit9CisKKy8vIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIHNldE91dGxpbmVXaWR0aCwgb3V0bGluZVdpZHRo
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBzZXRPdXRs
aW5lV2lkdGgsIGluaXRpYWxCb3JkZXJXaWR0aCkKK0RFRklORV9XSURUSF9WQUxVRShDU1NQcm9w
ZXJ0eU91dGxpbmVXaWR0aCwgc2V0T3V0bGluZVdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eU92ZXJm
bG93CitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5T3ZlcmZsb3csIENT
U1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSkKK0RFRklORV9FWFBBTkRJ
TkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlPdmVyZmxvdywgQ1NTUHJvcGVydHlPdmVyZmxvd1ks
IENTU1Byb3BlcnR5T3ZlcmZsb3dZKQorREVGSU5FX0VYUEFORElOR19WQUxVRV9UV08oQ1NTUHJv
cGVydHlPdmVyZmxvdywgQ1NTUHJvcGVydHlPdmVyZmxvd1ksIENTU1Byb3BlcnR5T3ZlcmZsb3dZ
KQorCisvLyBDU1NQcm9wZXJ0eU92ZXJmbG93WAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5T3ZlcmZsb3dYLCBzZXRPdmVyZmxvd1gsIG92ZXJmbG93WCkKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eU92ZXJmbG93WCwgc2V0T3ZlcmZsb3dYLCBpbml0aWFsT3ZlcmZs
b3dYKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eU92ZXJmbG93WCwgc2V0T3ZlcmZs
b3dYKQorCisvLyBDU1NQcm9wZXJ0eU92ZXJmbG93WQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5T3ZlcmZsb3dZLCBzZXRPdmVyZmxvd1ksIG92ZXJmbG93WSkKK0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eU92ZXJmbG93WSwgc2V0T3ZlcmZsb3dZLCBpbml0aWFsT3Zl
cmZsb3dZKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eU92ZXJmbG93WSwgc2V0T3Zl
cmZsb3dZKQorCisvLyBDU1NQcm9wZXJ0eVBhZGRpbmcKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJ
VF9GT1VSKENTU1Byb3BlcnR5UGFkZGluZywgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBDU1NQcm9w
ZXJ0eVBhZGRpbmdSaWdodCwgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBh
ZGRpbmdMZWZ0KQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWRkaW5nKQoreworICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5yZXNldFBhZGRpbmcoKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENT
U1Byb3BlcnR5UGFkZGluZykKKworLy8gQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBzZXRQYWRkaW5nQm90dG9t
LCBwYWRkaW5nQm90dG9tKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UGFkZGlu
Z0JvdHRvbSwgc2V0UGFkZGluZ0JvdHRvbSwgaW5pdGlhbFBhZGRpbmcpCitERUZJTkVfTEVOR1RI
X1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgc2V0UGFkZGluZ0JvdHRvbSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgc2V0UGFkZGlu
Z0xlZnQsIHBhZGRpbmdMZWZ0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UGFk
ZGluZ0xlZnQsIHNldFBhZGRpbmdMZWZ0LCBpbml0aWFsUGFkZGluZykKK0RFRklORV9MRU5HVEhf
VkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgc2V0UGFkZGluZ0xlZnQsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgc2V0UGFkZGluZ1Jp
Z2h0LCBwYWRkaW5nUmlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWRk
aW5nUmlnaHQsIHNldFBhZGRpbmdSaWdodCwgaW5pdGlhbFBhZGRpbmcpCitERUZJTkVfTEVOR1RI
X1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBzZXRQYWRkaW5nUmlnaHQsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlQYWRkaW5nVG9wCitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBzZXRQYWRkaW5nVG9w
LCBwYWRkaW5nVG9wKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UGFkZGluZ1Rv
cCwgc2V0UGFkZGluZ1RvcCwgaW5pdGlhbFBhZGRpbmcpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENT
U1Byb3BlcnR5UGFkZGluZ1RvcCwgc2V0UGFkZGluZ1RvcCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVBhZ2UKK0RFRklORV9OVUxMX0lOSEVSSVQo
Q1NTUHJvcGVydHlQYWdlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVBhZ2UpCitE
RUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVBhZ2UpCisKKy8vIENTU1Byb3BlcnR5UGFnZUJy
ZWFrQWZ0ZXIKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVy
LCBzZXRQYWdlQnJlYWtBZnRlciwgcGFnZUJyZWFrQWZ0ZXIpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlciwgc2V0UGFnZUJyZWFrQWZ0ZXIsIGluaXRpYWxQ
YWdlQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXIs
IHNldFBhZ2VCcmVha0FmdGVyKQorCisvLyBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZQorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlLCBzZXRQYWdlQnJl
YWtCZWZvcmUsIHBhZ2VCcmVha0JlZm9yZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVBhZ2VCcmVha0JlZm9yZSwgc2V0UGFnZUJyZWFrQmVmb3JlLCBpbml0aWFsUGFnZUJyZWFr
KQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSwgc2V0UGFn
ZUJyZWFrQmVmb3JlKQorCisvLyBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZQorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlLCBzZXRQYWdlQnJlYWtJbnNp
ZGUsIHBhZ2VCcmVha0luc2lkZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBh
Z2VCcmVha0luc2lkZSwgc2V0UGFnZUJyZWFrSW5zaWRlLCBpbml0aWFsUGFnZUJyZWFrKQorREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKQoreworICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAg
ICBFUGFnZUJyZWFrIHBhZ2VCcmVhayA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAgICAgaWYgKHBh
Z2VCcmVhayAhPSBQQkFMV0FZUykKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRQ
YWdlQnJlYWtJbnNpZGUocGFnZUJyZWFrKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5UG9p
bnRlckV2ZW50cworI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKy8vIDxyZGFyOi8vcHJv
YmxlbS82NTYxMDc3PiBXb3JrIGFyb3VuZCB0aGUgU3RvY2tzIHdpZGdldCdzIG1pc3VzZSBvZiB0
aGUKKy8vIHBvaW50ZXItZXZlbnRzIHByb3BlcnR5IGJ5IG5vdCBhcHBseWluZyBpdCBpbiBEYXNo
Ym9hcmQuCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpCit7CisgICAg
U2V0dGluZ3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0
aW5ncygpOworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRQb2ludGVyRXZlbnRzKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5wb2ludGVy
RXZlbnRzKCkpOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzKQor
eworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVu
dC0+c2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnVzZXNEYXNoYm9h
cmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhSZW5kZXJTdHlsZTo6aW5pdGlhbFBvaW50
ZXJFdmVudHMoKSk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzKQor
eworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVu
dC0+c2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnVzZXNEYXNoYm9h
cmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsK
KyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFBvaW50ZXJFdmVudHMoKnByaW1pdGl2ZVZh
bHVlKTsKKyAgICB9Cit9CisjZWxzZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
UG9pbnRlckV2ZW50cywgc2V0UG9pbnRlckV2ZW50cywgcG9pbnRlckV2ZW50cykKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMsIHNldFBvaW50ZXJFdmVudHMs
IGluaXRpYWxQb2ludGVyRXZlbnRzKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVBv
aW50ZXJFdmVudHMsIHNldFBvaW50ZXJFdmVudHMpCisjZW5kaWYKKworLy8gQ1NTUHJvcGVydHlQ
b3NpdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UG9zaXRpb24sIHNldFBv
c2l0aW9uLCBwb3NpdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBvc2l0
aW9uLCBzZXRQb3NpdGlvbiwgaW5pdGlhbFBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9WQUxVRShD
U1NQcm9wZXJ0eVBvc2l0aW9uLCBzZXRQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlRdW90ZXMK
K0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlRdW90ZXMpCitERUZJTkVfTlVMTF9JTklU
SUFMKENTU1Byb3BlcnR5UXVvdGVzKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlRdW90
ZXMpCisKKy8vIENTU1Byb3BlcnR5UmVzaXplCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlSZXNpemUsIHNldFJlc2l6ZSwgcmVzaXplKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5UmVzaXplLCBzZXRSZXNpemUsIGluaXRpYWxSZXNpemUpCitERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlSZXNpemUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgRVJlc2l6ZSByZXN1bHQgPSBSRVNJWkVfTk9O
RTsKKyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUF1dG8pIHsKKyAgICAgICAgICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gaW5zdGFu
Y2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpKQorICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBzZXR0aW5ncy0+dGV4dEFyZWFzQXJlUmVzaXphYmxlKCkgPyBSRVNJWkVfQk9U
SCA6IFJFU0laRV9OT05FOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gKnByaW1pdGl2ZVZhbHVlOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dFJlc2l6ZShyZXN1bHQpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVJp
Z2h0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlSaWdodCwgc2V0UmlnaHQsIHJp
Z2h0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UmlnaHQsIHNldFJpZ2h0LCBp
bml0aWFsT2Zmc2V0KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVJpZ2h0LCBzZXRS
aWdodCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5
U2l6ZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVNpemUpCitERUZJTkVfTlVMTF9J
TklUSUFMKENTU1Byb3BlcnR5U2l6ZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVNpemUpCit7
CisgICAgaW5zdGFuY2UtPmFwcGx5UGFnZVNpemVQcm9wZXJ0eSh2YWx1ZSk7Cit9CisKKy8vIENT
U1Byb3BlcnR5U3JjCisvLyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KK0RFRklORV9O
VUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlTcmMpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3Bl
cnR5U3JjKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlTcmMpCisKKy8vIENTU1Byb3Bl
cnR5U3BlYWsKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVNwZWFrLCBzZXRTcGVh
aywgc3BlYWspCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlTcGVhaywgc2V0U3Bl
YWssIGluaXRpYWxTcGVhaykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlTcGVhaywg
c2V0U3BlYWspCisKKy8vIENTU1Byb3BlcnR5VGFibGVMYXlvdXQKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0LCBzZXRUYWJsZUxheW91dCwgdGFibGVMYXlvdXQp
CitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlUYWJsZUxheW91dCwgc2V0VGFibGVM
YXlvdXQsIGluaXRpYWxUYWJsZUxheW91dCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVRhYmxl
TGF5b3V0KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBFVGFibGVMYXlvdXQgbGF5b3V0ID0gKnByaW1p
dGl2ZVZhbHVlOworICAgICAgICBpZiAobGF5b3V0ID09IFRBVVRPKQorICAgICAgICAgICAgbGF5
b3V0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJsZUxheW91dCgpOworICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0VGFibGVMYXlvdXQobGF5b3V0KTsKKyAgICB9Cit9CisKKy8vIENTU1By
b3BlcnR5VGV4dEFsaWduCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0QWxp
Z24sIHNldFRleHRBbGlnbiwgdGV4dEFsaWduKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1By
b3BlcnR5VGV4dEFsaWduLCBzZXRUZXh0QWxpZ24sIGluaXRpYWxUZXh0QWxpZ24pCitERUZJTkVf
VkFMVUUoQ1NTUHJvcGVydHlUZXh0QWxpZ24pCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGludCBpZCA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVT
dGFydCkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0QWxpZ24oaW5zdGFu
Y2UtPm1fc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IExFRlQgOiBSSUdIVCk7Cisg
ICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlRW5kKQorICAgICAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldFRleHRBbGlnbihpbnN0YW5jZS0+bV9zdHlsZS0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpID8gUklHSFQgOiBMRUZUKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFRleHRBbGlnbigqcHJpbWl0aXZlVmFsdWUpOworICAgIH0KK30K
KworLy8gQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHNldFRleHREZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlv
bikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCBzZXRU
ZXh0RGVjb3JhdGlvbiwgaW5pdGlhbFRleHREZWNvcmF0aW9uKQorREVGSU5FX1ZBTFVFKENTU1By
b3BlcnR5VGV4dERlY29yYXRpb24pCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICBDU1NWYWx1ZUxp
c3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgICAgIGlu
dCB0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbigpOworICAgICAgICBpbnQg
bGVuID0gbGlzdC0+bGVuZ3RoKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBp
KyspIHsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayhpKTsKKyAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsK
KyAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICAgICAgICAgIHQgPSBURE5PTkU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVW5kZXJsaW5l
OgorICAgICAgICAgICAgICAgIHQgfD0gVU5ERVJMSU5FOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU92ZXJsaW5lOgorICAgICAgICAgICAgICAgIHQg
fD0gT1ZFUkxJTkU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlTGluZVRocm91Z2g6CisgICAgICAgICAgICAgICAgdCB8PSBMSU5FX1RIUk9VR0g7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQmxpbms6Cisg
ICAgICAgICAgICAgICAgdCB8PSBCTElOSzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RGVjb3JhdGlvbih0
KTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5VGV4dEluZGVudAorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5VGV4dEluZGVudCwgc2V0VGV4dEluZGVudCwgdGV4dEluZGVudCkK
K0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRJbmRlbnQsIHNldFRleHRJbmRl
bnQsIGluaXRpYWxUZXh0SW5kZW50KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVRl
eHRJbmRlbnQsIHNldFRleHRJbmRlbnQsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2gKK0RFRklORV9OVUxMX0lOSEVSSVQo
Q1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2gpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3Bl
cnR5VGV4dExpbmVUaHJvdWdoKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2gpCisKKy8vIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3IKK0RFRklORV9O
VUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcikKK0RFRklORV9OVUxM
X0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcikKK0RFRklORV9OVUxMX1ZB
TFVFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoTW9kZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRMaW5l
VGhyb3VnaE1vZGUpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dExpbmVUaHJv
dWdoTW9kZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9k
ZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZQorREVGSU5FX05VTExfSU5I
RVJJVChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlKQorREVGSU5FX05VTExfSU5JVElB
TChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlKQorREVGSU5FX05VTExfVkFMVUUoQ1NT
UHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0TGluZVRo
cm91Z2hXaWR0aAorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3Vn
aFdpZHRoKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdp
ZHRoKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aCkK
KworLy8gQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3cKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVRleHRPdmVyZmxvdywgc2V0VGV4dE92ZXJmbG93LCB0ZXh0T3ZlcmZsb3cpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3csIHNldFRleHRPdmVyZmxv
dywgaW5pdGlhbFRleHRPdmVyZmxvdykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVRleHRPdmVy
ZmxvdykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
KQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRPdmVyZmxvdyhwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUVsbGlwc2lzKTsKKyAgICB9Cit9CisKKy8v
IENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRPdmVybGlu
ZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lKQorCisvLyBDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZUNvbG9yCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lQ29sb3IpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dE92
ZXJsaW5lQ29sb3IpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNv
bG9yKQorCisvLyBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGUKK0RFRklORV9OVUxMX0lOSEVS
SVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZU1vZGUpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRl
eHRPdmVybGluZU1vZGUpCisKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUKK0RFRklO
RV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSkKK0RFRklORV9OVUxM
X0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSkKK0RFRklORV9OVUxMX1ZBTFVF
KENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJs
aW5lV2lkdGgKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0
aCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aCkKK0RF
RklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpCisKKy8vIENTU1By
b3BlcnR5VGV4dFNoYWRvdworREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0U2hhZG93KQor
eworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0U2hhZG93KGluc3RhbmNlLT5tX3BhcmVu
dFN0eWxlLT50ZXh0U2hhZG93KCkgPyBuZXcgU2hhZG93RGF0YSgqaW5zdGFuY2UtPm1fcGFyZW50
U3R5bGUtPnRleHRTaGFkb3coKSkgOiAwKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5
VGV4dFNoYWRvdykKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dFNoYWRvdygwKTsK
K30KK0RFRklORV9TSEFET1dfVkFMVUUoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBzZXRUZXh0U2hh
ZG93KQorCisvLyBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0KK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIHNldFRleHRUcmFuc2Zvcm0sIHRleHRUcmFuc2Zv
cm0pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtLCBzZXRU
ZXh0VHJhbnNmb3JtLCBpbml0aWFsVGV4dFRyYW5zZm9ybSkKK0RFRklORV9IQU5ETEVfVkFMVUUo
Q1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtLCBzZXRUZXh0VHJhbnNmb3JtKQorCisvLyBDU1NQcm9w
ZXJ0eVRleHRVbmRlcmxpbmUKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCitE
RUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCisKKy8vIENTU1Byb3Bl
cnR5VGV4dFVuZGVybGluZUNvbG9yCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZUNvbG9yKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRVbmRl
cmxpbmVDb2xvcikKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNv
bG9yKQorCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlCitERUZJTkVfTlVMTF9JTkhF
UklUKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUpCitERUZJTkVfTlVMTF9JTklUSUFMKENT
U1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVNb2RlKQorCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZQor
REVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSkKK0RFRklO
RV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGUpCitERUZJTkVfTlVM
TF9WQUxVRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlU
ZXh0VW5kZXJsaW5lV2lkdGgKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lV2lkdGgpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZVdpZHRoKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgp
CisKKy8vIENTU1Byb3BlcnR5VG9wCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlU
b3AsIHNldFRvcCwgdG9wKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VG9wLCBz
ZXRUb3AsIGluaXRpYWxPZmZzZXQpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5VG9w
LCBzZXRUb3AsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9w
ZXJ0eVVuaWNvZGVCaWRpCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlVbmljb2Rl
QmlkaSwgc2V0VW5pY29kZUJpZGksIHVuaWNvZGVCaWRpKQorREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHNldFVuaWNvZGVCaWRpLCBpbml0aWFsVW5pY29kZUJp
ZGkpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHNldFVuaWNv
ZGVCaWRpKQorCisvLyBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZQorLy8gT25seSB1c2VkIGluIEBm
b250LWZhY2UgcnVsZXMuCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VW5pY29kZVJh
bmdlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZSkKK0RFRklO
RV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VW5pY29kZVJhbmdlKQorCisvLyBDU1NQcm9wZXJ0eVZl
cnRpY2FsQWxpZ24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVZlcnRpY2FsQWxp
Z24sIHNldFZlcnRpY2FsQWxpZ24sIHZlcnRpY2FsQWxpZ24pCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBzZXRWZXJ0aWNhbEFsaWduLCBpbml0aWFsVmVy
dGljYWxBbGlnbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pCit7Cisg
ICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAg
ICAgICAgRVZlcnRpY2FsQWxpZ24gYWxpZ247CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVG9wOgorICAg
ICAgICAgICAgICAgIGFsaWduID0gVE9QOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUJvdHRvbToKKyAgICAgICAgICAgICAgICBhbGlnbiA9IEJPVFRP
TTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNaWRk
bGU6CisgICAgICAgICAgICAgICAgYWxpZ24gPSBNSURETEU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQmFzZWxpbmU6CisgICAgICAgICAgICAgICAg
YWxpZ24gPSBCQVNFTElORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVUZXh0Qm90dG9tOgorICAgICAgICAgICAgICAgIGFsaWduID0gVEVYVF9CT1RU
T007CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVGV4
dFRvcDoKKyAgICAgICAgICAgICAgICBhbGlnbiA9IFRFWFRfVE9QOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1YjoKKyAgICAgICAgICAgICAgICBh
bGlnbiA9IFNVQjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVTdXBlcjoKKyAgICAgICAgICAgICAgICBhbGlnbiA9IFNVUEVSOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJhc2VsaW5lTWlkZGxl
OgorICAgICAgICAgICAgICAgIGFsaWduID0gQkFTRUxJTkVfTUlERExFOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VmVydGlj
YWxBbGlnbihhbGlnbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQgdHlwZSA9
IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICBMZW5ndGggbGVu
Z3RoOworICAgICAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3Ro
KHR5cGUpKQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFu
Y2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20o
KSksIEZpeGVkKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmlt
aXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0VmVydGljYWxBbGlnbihMRU5HVEgpOworICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFZlcnRpY2FsQWxpZ25MZW5ndGgobGVuZ3RoKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlWaXNpYmlsaXR5CitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBzZXRWaXNpYmlsaXR5LCB2aXNpYmlsaXR5KQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgc2V0VmlzaWJpbGl0
eSwgaW5pdGlhbFZpc2liaWxpdHkpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Vmlz
aWJpbGl0eSwgc2V0VmlzaWJpbGl0eSkKKworLy8gQ1NTUHJvcGVydHlXaGl0ZVNwYWNlCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBzZXRXaGl0ZVNwYWNlLCB3
aGl0ZVNwYWNlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2hpdGVTcGFjZSwg
c2V0V2hpdGVTcGFjZSwgaW5pdGlhbFdoaXRlU3BhY2UpCitERUZJTkVfSEFORExFX1ZBTFVFKENT
U1Byb3BlcnR5V2hpdGVTcGFjZSwgc2V0V2hpdGVTcGFjZSkKKworLy8gQ1NTUHJvcGVydHlXaWRv
d3MKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdpZG93cywgc2V0V2lkb3dzLCB3
aWRvd3MpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXaWRvd3MsIHNldFdpZG93
cywgaW5pdGlhbFdpZG93cykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdpZG93cykKK3sKKyAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0V2lkb3dzKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICB9Cit9CisK
Ky8vIENTU1Byb3BlcnR5V2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdp
ZHRoLCBzZXRXaWR0aCwgd2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
aWR0aCwgc2V0V2lkdGgsIGluaXRpYWxTaXplKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9w
ZXJ0eVdpZHRoLCBzZXRXaWR0aCwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlKQorCisv
LyBDU1NQcm9wZXJ0eVdvcmRCcmVhaworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
V29yZEJyZWFrLCBzZXRXb3JkQnJlYWssIHdvcmRCcmVhaykKK0RFRklORV9IQU5ETEVfSU5JVElB
TChDU1NQcm9wZXJ0eVdvcmRCcmVhaywgc2V0V29yZEJyZWFrLCBpbml0aWFsV29yZEJyZWFrKQor
REVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdvcmRCcmVhaywgc2V0V29yZEJyZWFrKQor
CisvLyBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlXb3JkU3BhY2luZywgc2V0V29yZFNwYWNpbmcsIHdvcmRTcGFjaW5nKQorREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIHNldFdvcmRTcGFjaW5nLCBpbml0
aWFsTGV0dGVyV29yZFNwYWNpbmcpCitERUZJTkVfU1BBQ0lOR19WQUxVRShDU1NQcm9wZXJ0eVdv
cmRTcGFjaW5nLCBzZXRXb3JkU3BhY2luZykKKworLy8gQ1NTUHJvcGVydHlXb3JkV3JhcAorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V29yZFdyYXAsIHNldFdvcmRXcmFwLCB3b3Jk
V3JhcCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdvcmRXcmFwLCBzZXRXb3Jk
V3JhcCwgaW5pdGlhbFdvcmRXcmFwKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdv
cmRXcmFwLCBzZXRXb3JkV3JhcCkKKworLy8gQ1NTUHJvcGVydHlaSW5kZXgKK0RFRklORV9JTkhF
UklUKENTU1Byb3BlcnR5WkluZGV4KQoreworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHls
ZS0+aGFzQXV0b1pJbmRleCgpKQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0
b1pJbmRleCgpOworICAgIGVsc2UKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFpJbmRl
eChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+ekluZGV4KCkpOworfQorREVGSU5FX0lOSVRJQUwo
Q1NTUHJvcGVydHlaSW5kZXgpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9a
SW5kZXgoKTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVpJbmRleCkKK3sKKyAgICBpZiAo
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsK
KyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvWkluZGV4KCk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBjbGFtcCBhbGwgc29ydHMg
b2Ygb3RoZXIgaW50ZWdlciBwcm9wZXJ0aWVzIHRvby4KKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRaSW5kZXgoY2xhbXBUb0ludGVnZXIocHJpbWl0aXZlVmFsdWUtPmdldERvdWJs
ZVZhbHVlKCkpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb24KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQorewor
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckFuaW1hdGlvbnMoKTsKK30KK0RFRklORV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5pbmhlcml0QW5pbWF0aW9ucyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+YW5pbWF0aW9ucygp
KTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5CitERUZJTkVfQU5JTUFUSU9OX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgZGVsYXksIERlbGF5KQorREVGSU5F
X0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIGRlbGF5
LCBEZWxheSkKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25EZWxheSwgZGVsYXksIERlbGF5KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRp
cmVjdGlvbgorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uRGlyZWN0aW9uLCBkaXJlY3Rpb24sIERpcmVjdGlvbikKK0RFRklORV9BTklNQVRJT05fSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwgZGlyZWN0aW9uLCBEaXJl
Y3Rpb24pCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
RGlyZWN0aW9uLCBkaXJlY3Rpb24sIERpcmVjdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EdXJhdGlvbgorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKK0RFRklORV9BTklNQVRJ
T05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwg
RHVyYXRpb24pCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25GaWxsTW9kZQorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRmlsbE1vZGUsIGZpbGxNb2RlLCBGaWxsTW9kZSkKK0RFRklORV9BTklNQVRJ
T05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCBmaWxsTW9kZSwg
RmlsbE1vZGUpCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uRmlsbE1vZGUsIGZpbGxNb2RlLCBGaWxsTW9kZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25JdGVyYXRpb25Db3VudAorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIGl0ZXJhdGlvbkNvdW50LCBJdGVyYXRp
b25Db3VudCkKK0RFRklORV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkl0ZXJhdGlvbkNvdW50LCBpdGVyYXRpb25Db3VudCwgSXRlcmF0aW9uQ291bnQpCitERUZJ
TkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291
bnQsIGl0ZXJhdGlvbkNvdW50LCBJdGVyYXRpb25Db3VudCkKKworLy8gQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25OYW1lCitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25OYW1lLCBuYW1lLCBOYW1lKQorREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgbmFtZSwgTmFtZSkKK0RFRklORV9BTklNQVRJ
T05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLCBuYW1lLCBOYW1lKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZQorREVGSU5FX0FOSU1BVElPTl9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlLCBwbGF5U3RhdGUsIFBs
YXlTdGF0ZSkKK0RFRklORV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvblBsYXlTdGF0ZSwgcGxheVN0YXRlLCBQbGF5U3RhdGUpCitERUZJTkVfQU5JTUFUSU9OX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlLCBwbGF5U3RhdGUsIFBsYXlT
dGF0ZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbgorREVG
SU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVu
Y3Rpb24sIHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbikKK0RFRklORV9BTklNQVRJT05f
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCB0aW1pbmdG
dW5jdGlvbiwgVGltaW5nRnVuY3Rpb24pCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdG
dW5jdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlCitERUZJTkVfSEFORExF
X0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBzZXRBcHBlYXJhbmNlLCBhcHBl
YXJhbmNlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5j
ZSwgc2V0QXBwZWFyYW5jZSwgaW5pdGlhbEFwcGVhcmFuY2UpCitERUZJTkVfSEFORExFX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgc2V0QXBwZWFyYW5jZSkKKworLy8gQ1NTUHJv
cGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwgc2V0QmFja2ZhY2VWaXNpYmlsaXR5LCBi
YWNrZmFjZVZpc2liaWxpdHkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZmFjZVZpc2liaWxpdHksIHNldEJhY2tmYWNlVmlzaWJpbGl0eSwgaW5pdGlhbEJhY2tm
YWNlVmlzaWJpbGl0eSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlz
aWJpbGl0eSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJhY2tm
YWNlVmlzaWJpbGl0eSgocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVWaXNp
YmxlKSA/IEJhY2tmYWNlVmlzaWJpbGl0eVZpc2libGUgOiBCYWNrZmFjZVZpc2liaWxpdHlIaWRk
ZW4pOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcAorREVG
SU5FX0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCwg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3Jv
dW5kQ29tcG9zaXRlCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNvbXBv
c2l0ZSwgQ29tcG9zaXRlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBj
b21wb3NpdGUsIENvbXBvc2l0ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tncm91bmQsIEJhY2tncm91bmQs
IGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRP
cmlnaW4KK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0QmFja2dy
b3VuZE9yaWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tncm91bmRTaXplCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcikKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyQ29sb3IKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQWZ0ZXJDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXJTdHlsZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJBZnRlclN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlclN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJBZnRlcldpZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckFmdGVyV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmUpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZSkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcgorREVG
SU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xv
cikKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVm
b3JlQ29sb3IpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZQor
REVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVT
dHlsZSkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlU3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0
aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmVXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQmVmb3JlV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJCZWZvcmVXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQKK0RF
RklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kKQorREVG
SU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQpCitERUZJ
TkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQpCisKKy8vIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklU
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yKQorREVGSU5FX1VOUkVBQ0hBQkxF
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRW5kU3R5bGUKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRW5kV2lkdGgKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckVuZFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRW5kV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRml0CitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQsIHNldEJvcmRl
ckZpdCwgYm9yZGVyRml0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRml0LCBzZXRCb3JkZXJGaXQsIGluaXRpYWxCb3JkZXJGaXQpCitERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUJvcmRlcikKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRCb3JkZXJGaXQoQm9yZGVyRml0Qm9yZGVyKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJvcmRlckZpdChCb3JkZXJG
aXRMaW5lcyk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJI
b3Jpem9udGFsU3BhY2luZywgc2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsIGhvcml6b250YWxC
b3JkZXJTcGFjaW5nKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySG9yaXpvbnRhbFNwYWNpbmcsIHNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nLCBpbml0aWFs
SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgZmxvYXQgem9vbUZh
Y3RvciA9IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7CisgICAgICAgIHNob3J0
IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KGluc3RhbmNlLT5t
X3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsK
KyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKHNw
YWNpbmcpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZQorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIHNldEJvcmRl
ckltYWdlLCBib3JkZXJJbWFnZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckltYWdlLCBzZXRCb3JkZXJJbWFnZSwgaW5pdGlhbE5pbmVQaWVjZUltYWdlKQor
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UpCit7CisgICAgTmluZVBp
ZWNlSW1hZ2UgaW1hZ2U7CisgICAgaW5zdGFuY2UtPm1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVySW1hZ2UsIHZhbHVlLCBpbWFnZSk7CisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldEJvcmRlckltYWdlKGltYWdlKTsKK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJSYWRpdXMKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyUmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykKKworLy8gQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJTdGFydAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJTdGFydCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJTdGFydCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yCitE
RUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29s
b3IpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0Q29sb3IpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUKK0RF
RklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHls
ZSkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3Rh
cnRTdHlsZSkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clN0YXJ0U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aAorREVG
SU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRo
KQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
U3RhcnRXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcK
K0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3Bh
Y2luZywgc2V0VmVydGljYWxCb3JkZXJTcGFjaW5nLCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcpCitE
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmcsIHNldFZlcnRpY2FsQm9yZGVyU3BhY2luZywgaW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2lu
ZykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZykK
K3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IGluc3RhbmNlLT5tX3N0eWxl
LT5lZmZlY3RpdmVab29tKCk7CisgICAgICAgIHNob3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1
ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhzcGFjaW5nKTsKKyAgICB9Cit9CisKKy8vIENT
U1Byb3BlcnR5V2Via2l0Qm94QWxpZ24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdEJveEFsaWduLCBzZXRCb3hBbGlnbiwgYm94QWxpZ24pCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbiwgc2V0Qm94QWxpZ24sIGluaXRpYWxCb3hB
bGlnbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduKQoreworICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgICAgICBFQm94QWxpZ25tZW50IGJveEFsaWdubWVudCA9ICpwcmltaXRpdmVWYWx1ZTsK
KyAgICAgICAgaWYgKGJveEFsaWdubWVudCAhPSBCSlVTVElGWSkKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRCb3hBbGlnbihib3hBbGlnbm1lbnQpOworICAgICAgICByZXR1cm47
CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbgorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBzZXRCb3hEaXJlY3Rp
b24sIGJveERpcmVjdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dEJveERpcmVjdGlvbiwgc2V0Qm94RGlyZWN0aW9uLCBpbml0aWFsQm94RGlyZWN0aW9uKQorREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbiwgc2V0Qm94RGly
ZWN0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgsIHNldEJveEZsZXgsIGJveEZsZXgpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4LCBzZXRCb3hGbGV4LCBp
bml0aWFsQm94RmxleCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgpCit7
CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEJveEZsZXgocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSk7CisgICAg
fQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cAorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwLCBzZXRCb3hGbGV4R3JvdXAsIGJv
eEZsZXhHcm91cCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveEZs
ZXhHcm91cCwgc2V0Qm94RmxleEdyb3VwLCBpbml0aWFsQm94RmxleEdyb3VwKQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwKQoreworICAgIGlmICh2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUikKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hGbGV4R3Jv
dXAoKHVuc2lnbmVkIGludCkocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpKTsKKyAg
ICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzLCBzZXRCb3hMaW5lcywgYm94TGluZXMpCitE
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcywgc2V0Qm94TGlu
ZXMsIGluaXRpYWxCb3hMaW5lcykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRCb3hMaW5lcywgc2V0Qm94TGluZXMpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5h
bEdyb3VwCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFs
R3JvdXAsIHNldEJveE9yZGluYWxHcm91cCwgYm94T3JkaW5hbEdyb3VwKQorREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwLCBzZXRCb3hPcmRpbmFs
R3JvdXAsIGluaXRpYWxCb3hPcmRpbmFsR3JvdXApCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRCb3hPcmRpbmFsR3JvdXApCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveE9yZGluYWxHcm91cCgodW5zaWdu
ZWQgaW50KShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOworICAgIH0KK30KKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdEJveE9yaWVudCwgc2V0Qm94T3JpZW50LCBib3hPcmllbnQpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIHNldEJveE9yaWVudCwg
aW5pdGlhbEJveE9yaWVudCkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRC
b3hPcmllbnQsIHNldEJveE9yaWVudCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrCitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBzZXRCb3hQYWNr
LCBib3hQYWNrKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm94UGFj
aywgc2V0Qm94UGFjaywgaW5pdGlhbEJveFBhY2spCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRCb3hQYWNrKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBFQm94QWxpZ25tZW50IGJveFBhY2sg
PSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAgIGlmIChib3hQYWNrICE9IEJTVFJFVENIICYmIGJv
eFBhY2sgIT0gQkJBU0VMSU5FKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJv
eFBhY2soYm94UGFjayk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxl
Y3QKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QsIHNl
dEJveFJlZmxlY3QsIGJveFJlZmxlY3QpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRCb3hSZWZsZWN0LCBzZXRCb3hSZWZsZWN0LCBpbml0aWFsQm94UmVmbGVjdCkKK0RF
RklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QpCit7CisgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJv
eFJlZmxlY3QoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hSZWZsZWN0KCkpOworICAgIH0gZWxzZSBp
ZiAodmFsdWUtPmlzUmVmbGVjdFZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUmVmbGVjdFZhbHVlKiBy
ZWZsZWN0VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NSZWZsZWN0VmFsdWUqPih2YWx1ZSk7CisgICAg
ICAgIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IHJlZmxlY3Rpb24gPSBTdHlsZVJlZmxlY3Rpb246
OmNyZWF0ZSgpOworICAgICAgICByZWZsZWN0aW9uLT5zZXREaXJlY3Rpb24ocmVmbGVjdFZhbHVl
LT5kaXJlY3Rpb24oKSk7CisgICAgICAgIGlmIChyZWZsZWN0VmFsdWUtPm9mZnNldCgpKSB7Cisg
ICAgICAgICAgICBpbnQgdHlwZSA9IHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPnByaW1pdGl2ZVR5
cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSkKKyAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVuZ3RoKHJl
ZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVuZ3Ro
KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoaW5zdGFu
Y2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNl
LT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpLCBGaXhlZCkpOworICAgICAgICB9CisgICAgICAg
IE5pbmVQaWVjZUltYWdlIG1hc2s7CisgICAgICAgIGluc3RhbmNlLT5tYXBOaW5lUGllY2VJbWFn
ZShDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QsIHJlZmxlY3RWYWx1ZS0+bWFzaygpLCBtYXNr
KTsKKyAgICAgICAgcmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsKKyAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldEJveFJlZmxlY3QocmVmbGVjdGlvbi5yZWxlYXNlKCkpOworICAgIH0KK30K
KworLy8gQ1NTUHJvcGVydHlCb3hTaGFkb3cKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Qm94
U2hhZG93KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hTaGFkb3coaW5zdGFuY2Ut
Pm1fcGFyZW50U3R5bGUtPmJveFNoYWRvdygpID8gbmV3IFNoYWRvd0RhdGEoKmluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT5ib3hTaGFkb3coKSkgOiAwKTsKK30KK0RFRklORV9JTklUSUFMKENTU1By
b3BlcnR5Qm94U2hhZG93KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hTaGFkb3co
MCk7Cit9CitERUZJTkVfU0hBRE9XX1ZBTFVFKENTU1Byb3BlcnR5Qm94U2hhZG93LCBzZXRCb3hT
aGFkb3cpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93CitERUZJTkVfRVFVSVZBTEVO
VF9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBDU1NQcm9wZXJ0eUJveFNoYWRv
dykKK0RFRklORV9FUVVJVkFMRU5UX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3cs
IENTU1Byb3BlcnR5Qm94U2hhZG93KQorREVGSU5FX1NIQURPV19WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdEJveFNoYWRvdywgc2V0Qm94U2hhZG93KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbG9y
Q29ycmVjdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sb3JD
b3JyZWN0aW9uLCBzZXRDb2xvclNwYWNlLCBjb2xvclNwYWNlKQorREVGSU5FX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb24pCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7Cit9CitERUZJTkVfSEFORExFX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uLCBzZXRDb2xvclNwYWNlKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIHNldENvbHVtbkJyZWFrQWZ0ZXIs
IGNvbHVtbkJyZWFrQWZ0ZXIpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5CcmVha0FmdGVyLCBzZXRDb2x1bW5CcmVha0FmdGVyLCBpbml0aWFsUGFnZUJyZWFr
KQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIs
IHNldENvbHVtbkJyZWFrQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtC
ZWZvcmUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFr
QmVmb3JlLCBzZXRDb2x1bW5CcmVha0JlZm9yZSwgY29sdW1uQnJlYWtCZWZvcmUpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgc2V0Q29s
dW1uQnJlYWtCZWZvcmUsIGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUsIHNldENvbHVtbkJyZWFrQmVmb3JlKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSwgc2V0Q29sdW1uQnJlYWtJ
bnNpZGUsIGNvbHVtbkJyZWFrSW5zaWRlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUsIHNldENvbHVtbkJyZWFrSW5zaWRlLCBpbml0aWFs
UGFnZUJyZWFrKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNp
ZGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIEVQYWdlQnJlYWsgcGIgPSAqcHJpbWl0aXZlVmFsdWU7
CisgICAgICAgIGlmIChwYiAhPSBQQkFMV0FZUykKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRDb2x1bW5CcmVha0luc2lkZShwYik7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkNvdW50CitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkNvdW50KQoreworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+aGFzQXV0b0NvbHVt
bkNvdW50KCkpCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uQ291
bnQoKTsKKyAgICBlbHNlCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5Db3Vu
dChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291bnQoKSk7Cit9CitERUZJTkVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50KQoreworICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRIYXNBdXRvQ29sdW1uQ291bnQoKTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkNvdW50KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEhhc0F1dG9Db2x1bW5Db3VudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29sdW1uQ291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
c2hvcnQ+KHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7CisgICAgfQorfQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5HYXApCit7CisgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5oYXNO
b3JtYWxDb2x1bW5HYXAoKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc05vcm1h
bENvbHVtbkdhcCgpOworICAgIGVsc2UKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENv
bHVtbkdhcChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uR2FwKCkpOworfQorREVGSU5F
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXApCit7CisgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEhhc05vcm1hbENvbHVtbkdhcCgpOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uR2FwKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5HYXAocHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGhGbG9hdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVs
ZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkpOworICAgIH0K
K30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlCitERUZJTkVfRVhQQU5ESU5HX0lO
SEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGVDb2xvciwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldENvbHVtblJ1
bGUoKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZSkK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IKK0RFRklORV9IQU5ETEVfSU5I
RVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsIHNldENvbHVtblJ1
bGVDb2xvciwgY29sdW1uUnVsZUNvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9D
T0xPUihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgc2V0Q29sdW1uUnVsZUNvbG9y
KQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVD
b2xvciwgc2V0Q29sdW1uUnVsZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZVN0eWxlLCBzZXRDb2x1bW5SdWxlU3R5bGUsIGNvbHVtblJ1bGVTdHlsZSkKK0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSwgc2V0Q29sdW1uUnVs
ZVN0eWxlLCBpbml0aWFsQm9yZGVyU3R5bGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLCBzZXRDb2x1bW5SdWxlU3R5bGUpCisKKy8vIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIHNldENvbHVtblJ1bGVXaWR0aCwgY29sdW1uUnVs
ZVdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZVdpZHRoLCBzZXRDb2x1bW5SdWxlV2lkdGgsIGluaXRpYWxCb3JkZXJXaWR0aCkKK0RFRklORV9X
SURUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgc2V0Q29sdW1uUnVs
ZVdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4KK0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4sIHNldENvbHVtblNwYW4sIGNvbHVt
blNwYW4pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFu
LCBzZXRDb2x1bW5TcGFuLCBpbml0aWFsQ29sdW1uU3BhbikKK0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtblNwYW4pCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRDb2x1bW5TcGFuKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
QWxsKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgKK0RFRklO
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgpCit7CisgICAgaWYgKGluc3Rh
bmNlLT5tX3BhcmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uV2lkdGgoKSkKKyAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOworICAgIGVsc2UKKyAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbldpZHRoKGluc3RhbmNlLT5tX3BhcmVudFN0eWxl
LT5jb2x1bW5XaWR0aCgpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uV2lkdGgpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0
aCgpOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgpCit7Cisg
ICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUF1dG8pCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldp
ZHRoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRD
b2x1bW5XaWR0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGluc3RhbmNlLT5t
X3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9z
dHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbnMKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucykKK3sKKyAg
ICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmhhc0F1dG9Db2x1bW5XaWR0aCgpKQorICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7CisgICAgZWxz
ZQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgoaW5zdGFuY2UtPm1f
cGFyZW50U3R5bGUtPmNvbHVtbldpZHRoKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRD
b2x1bW5Db3VudChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291bnQoKSk7Cit9CitE
RUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMpCit7CisgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkNvdW50KCkpOworfQor
REVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRGb250U2l6ZURlbHRhKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dEZvbnRTaXplRGVsdGEpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRT
aXplRGVsdGEpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0CitERUZJTkVfSEFORExF
X0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQsIHNldEhpZ2hsaWdodCwgaGlnaGxp
Z2h0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0LCBz
ZXRIaWdobGlnaHQsIGluaXRpYWxIaWdobGlnaHQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRIaWdobGlnaHQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0SGlnaGxpZ2h0KG51bGxBdG9tKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEhpZ2hsaWdodChwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFs
dWUoKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3Rl
cgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFj
dGVyLCBzZXRIeXBoZW5hdGlvblN0cmluZywgaHlwaGVuYXRpb25TdHJpbmcpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIsIHNldEh5cGhl
bmF0aW9uU3RyaW5nLCBpbml0aWFsSHlwaGVuYXRpb25TdHJpbmcpCitERUZJTkVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpCit7CisgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25TdHJpbmcobnVsbEF0b20pOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25T
dHJpbmcocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOworICAgIH0KK30KKworLy8g
Q1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMb2NhbGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZSwgc2V0SHlwaGVuYXRpb25Mb2NhbGUsIGh5
cGhlbmF0aW9uTG9jYWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
SHlwaGVuYXRlTG9jYWxlLCBzZXRIeXBoZW5hdGlvbkxvY2FsZSwgaW5pdGlhbEh5cGhlbmF0aW9u
TG9jYWxlKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9jYWxlKQor
eworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVBdXRvKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEh5cGhlbmF0aW9u
TG9jYWxlKG51bGxBdG9tKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEh5cGhlbmF0aW9uTG9jYWxlKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1
ZSgpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0SHlwaGVucworREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0SHlwaGVucywgc2V0SHlwaGVucywgaHlwaGVu
cykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMsIHNldEh5
cGhlbnMsIGluaXRpYWxIeXBoZW5zKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdEh5cGhlbnMsIHNldEh5cGhlbnMpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFr
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIHNldEtI
VE1MTGluZUJyZWFrLCBraHRtbExpbmVCcmVhaykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgc2V0S0hUTUxMaW5lQnJlYWssIGluaXRpYWxLSFRNTExp
bmVCcmVhaykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWss
IHNldEtIVE1MTGluZUJyZWFrKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcAorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wLCBzZXRMaW5lQ2xh
bXAsIGxpbmVDbGFtcCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdExp
bmVDbGFtcCwgc2V0TGluZUNsYW1wLCBpbml0aWFsTGluZUNsYW1wKQorREVGSU5FX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0TGluZUNsYW1wKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnQgdHlwZSA9
IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZShwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBMaW5lQ2xhbXBMaW5lQ291bnQpKTsK
KyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGluZUNsYW1wKExpbmVDbGFt
cFZhbHVlKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpLCBMaW5lQ2xhbXBQZXJjZW50YWdlKSk7CisgICAgfQorfQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShD
U1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRMb2dp
Y2FsSGVpZ2h0CitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdExv
Z2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dExvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRMb2dpY2FsSGVpZ2h0KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFw
c2UKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29s
bGFwc2UsIHNldE1hcmdpbkFmdGVyQ29sbGFwc2UsIG1hcmdpbkFmdGVyQ29sbGFwc2UpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBz
ZXRNYXJnaW5BZnRlckNvbGxhcHNlLCBpbml0aWFsTWFyZ2luQWZ0ZXJDb2xsYXBzZSkKK0RFRklO
RV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBzZXRN
YXJnaW5BZnRlckNvbGxhcHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNv
bGxhcHNlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZv
cmVDb2xsYXBzZSwgc2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIG1hcmdpbkJlZm9yZUNvbGxhcHNl
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29s
bGFwc2UsIHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBpbml0aWFsTWFyZ2luQmVmb3JlQ29sbGFw
c2UpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29s
bGFwc2UsIHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkJvdHRvbUNvbGxhcHNlCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVy
Q29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UKK0RFRklO
RV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2Us
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQ29sbGFwc2UKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQ29sbGFwc2UpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcmdpbkJlZm9yZUNv
bGxhcHNlKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSgpKTsK
KyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShpbnN0YW5jZS0+
bV9wYXJlbnRTdHlsZS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSgpKTsKK30KK0RFRklORV9JTklUSUFM
KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKE1DT0xMQVBTRSk7CisgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldE1hcmdpbkFmdGVyQ29sbGFwc2UoTUNPTExBUFNFKTsKK30KK0RFRklORV9OVUxM
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQWZ0ZXIKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQWZ0ZXIpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkFmdGVyKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlCitE
RUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZSkK
K0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3Jl
KQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3Jl
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZAorREVGSU5FX1VOUkVBQ0hBQkxFX0lO
SEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5TdGFydAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5TdGFydCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luU3RhcnQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5TdGFydCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlCitERUZJTkVfTlVMTF9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSkKK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZURpcmVj
dGlvbihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFycXVlZURpcmVjdGlvbigpKTsKKyAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChpbnN0YW5jZS0+bV9wYXJlbnRT
dHlsZS0+bWFycXVlZUluY3JlbWVudCgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFy
cXVlZVNwZWVkKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJxdWVlU3BlZWQoKSk7CisgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoaW5zdGFuY2UtPm1fcGFyZW50
U3R5bGUtPm1hcnF1ZWVMb29wQ291bnQoKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1h
cnF1ZWVCZWhhdmlvcihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkp
OworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlKQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIHNldE1hcnF1ZWVEaXJlY3Rpb24sIG1h
cnF1ZWVEaXJlY3Rpb24pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlRGlyZWN0aW9uLCBzZXRNYXJxdWVlRGlyZWN0aW9uLCBpbml0aWFsTWFycXVlZURpcmVj
dGlvbikKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0
aW9uLCBzZXRNYXJxdWVlRGlyZWN0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJ
bmNyZW1lbnQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJ
bmNyZW1lbnQsIHNldE1hcnF1ZWVJbmNyZW1lbnQsIG1hcnF1ZWVJbmNyZW1lbnQpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LCBzZXRNYXJx
dWVlSW5jcmVtZW50LCBpbml0aWFsTWFycXVlZUluY3JlbWVudCkKK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFsbDoKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgxLCBGaXhl
ZCkpOyAvLyAxcHguCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU5v
cm1hbDoKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50
KExlbmd0aCg2LCBGaXhlZCkpOyAvLyA2cHguIFRoZSBXaW5JRSBkZWZhdWx0LgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgzNiwgRml4ZWQpKTsgLy8g
MzZweC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgIExlbmd0aCBsZW5ndGggPSBj
b252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBp
bnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOworICAgICAgICAgICAgaWYgKG9r
KQorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50
KGxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZVJlcGV0aXRpb24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVSZXBldGl0aW9uLCBzZXRNYXJxdWVlTG9vcENvdW50LCBtYXJxdWVlTG9vcENvdW50KQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24s
IHNldE1hcnF1ZWVMb29wQ291bnQsIGluaXRpYWxNYXJxdWVlTG9vcENvdW50KQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pCit7CisgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoLTEpOyAv
LyAtMSBtZWFucyByZXBlYXQgZm9yZXZlci4KKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KHByaW1pdGl2
ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICB9Cit9CisKKworLy8gQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3BlZWQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTcGVlZCwgc2V0TWFycXVlZVNwZWVkLCBtYXJxdWVlU3BlZWQpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQsIHNldE1hcnF1ZWVTcGVlZCwg
aW5pdGlhbE1hcnF1ZWVTcGVlZCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVTcGVlZCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2xvdzoKKyAgICAgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDUwMCk7IC8vIDUwMCBtc2VjLgorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKKyAgICAgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDg1KTsgLy8gODVtc2Vj
LiBUaGUgV2luSUUgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVGYXN0OgorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRNYXJxdWVlU3BlZWQoMTApOyAvLyAxMG1zZWMuIFN1cGVyIGZhc3QuCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1MpCisgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDEwMDAgKiBwcmltaXRpdmVW
YWx1ZS0+Z2V0SW50VmFsdWUoKSk7CisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5w
cmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NUykKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQocHJpbWl0aXZlVmFsdWUtPmdldElu
dFZhbHVlKCkpOworICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlw
ZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSAvLyBGb3Igc2Nyb2xsYW1vdW50
IHN1cHBvcnQuCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVk
KHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICB9Cit9CisvLyBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVN0eWxlLCBzZXRNYXJxdWVlQmVoYXZpb3IsIG1hcnF1ZWVCZWhhdmlvcikKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgc2V0TWFy
cXVlZUJlaGF2aW9yLCBpbml0aWFsTWFycXVlZUJlaGF2aW9yKQorREVGSU5FX0hBTkRMRV9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgc2V0TWFycXVlZUJlaGF2aW9yKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2sKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
TWFzaykKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xlYXJNYXNrTGF5ZXJzKCk7Cit9CitE
RUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2spCit7CisgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPmluaGVyaXRNYXNrTGF5ZXJzKCppbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFza0xh
eWVycygpKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFzaykKKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudAorREVGSU5FX0hBTkRMRV9GSUxMX0xB
WUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgbWFzaywgTWFzaywg
YXR0YWNobWVudCwgQXR0YWNobWVudCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFM
KENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIG1hc2ssIE1hc2ssIGF0dGFjaG1lbnQs
IEF0dGFjaG1lbnQpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrQXR0YWNobWVudCwgbWFzaywgTWFzaywgYXR0YWNobWVudCwgQXR0YWNobWVudCkK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc2V0TWFza0JveEltYWdlLCBtYXNrQm94
SW1hZ2UpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1h
Z2UsIHNldE1hc2tCb3hJbWFnZSwgaW5pdGlhbE5pbmVQaWVjZUltYWdlKQorREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlKQoreworICAgIE5pbmVQaWVjZUltYWdlIGlt
YWdlOworICAgIGluc3RhbmNlLT5tYXBOaW5lUGllY2VJbWFnZShDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tCb3hJbWFnZSwgdmFsdWUsIGltYWdlKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFz
a0JveEltYWdlKGltYWdlKTsKK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcAorREVG
SU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwg
bWFzaywgTWFzaywgY2xpcCwgQ2xpcCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFM
KENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIG1hc2ssIE1hc2ssIGNsaXAsIENsaXApCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgbWFz
aywgTWFzaywgY2xpcCwgQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRl
CitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
b21wb3NpdGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorREVGSU5FX0hBTkRM
RV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBtYXNr
LCBNYXNrLCBjb21wb3NpdGUsIENvbXBvc2l0ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0
ZSwgQ29tcG9zaXRlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZQorREVGSU5FX0hB
TkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIG1hc2ss
IE1hc2ssIGltYWdlLCBJbWFnZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBtYXNrLCBNYXNrLCBpbWFnZSwgSW1hZ2UpCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIG1h
c2ssIE1hc2ssIGltYWdlLCBJbWFnZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
CitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tP
cmlnaW4sIG1hc2ssIE1hc2ssIG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hBTkRMRV9GSUxMX0xB
WUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBtYXNrLCBNYXNrLCBvcmln
aW4sIE9yaWdpbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tPcmlnaW4sIG1hc2ssIE1hc2ssIG9yaWdpbiwgT3JpZ2luKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbgorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RXTyhDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Y
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJ
QUxfVFdPKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSkKK0RFRklORV9OVUxM
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblgKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgbWFzaywgTWFzaywgeFBvc2l0aW9uLCBYUG9zaXRp
b24pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvblgsIG1hc2ssIE1hc2ssIHhQb3NpdGlvbiwgWFBvc2l0aW9uKQorREVGSU5FX0hB
TkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgbWFz
aywgTWFzaywgeFBvc2l0aW9uLCBYUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25ZLCBtYXNrLCBNYXNrLCB5UG9zaXRpb24sIFlQb3NpdGlvbikKK0RF
RklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uWSwgbWFzaywgTWFzaywgeVBvc2l0aW9uLCBZUG9zaXRpb24pCitERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBtYXNrLCBNYXNr
LCB5UG9zaXRpb24sIFlQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
CitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0WSkKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlXZWJraXRNYXNr
UmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRZKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYCitERUZJTkVfSEFORExFX0ZJTExf
TEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBtYXNrLCBNYXNrLCBy
ZXBlYXRYLCBSZXBlYXRYKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRNYXNrUmVwZWF0WCwgbWFzaywgTWFzaywgcmVwZWF0WCwgUmVwZWF0WCkKK0RF
RklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRY
LCBtYXNrLCBNYXNrLCByZXBlYXRYLCBSZXBlYXRYKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRZCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRZLCBtYXNrLCBNYXNrLCByZXBlYXRZLCBSZXBlYXRZKQorREVGSU5FX0hB
TkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgbWFz
aywgTWFzaywgcmVwZWF0WSwgUmVwZWF0WSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBtYXNrLCBNYXNrLCByZXBlYXRZLCBSZXBl
YXRZKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplCitERUZJTkVfSEFORExFX0ZJTExf
TEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNrLCBNYXNrLCBzaXpl
LCBTaXplKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrU2l6ZSwgbWFzaywgTWFzaywgc2l6ZSwgU2l6ZSkKK0RFRklORV9IQU5ETEVfRklMTF9M
QVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNrLCBNYXNrLCBzaXplLCBT
aXplKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29s
b3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1h
aWxCbG9ja3F1b3RlQ29sb3IsIHNldE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIG1h
dGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBzZXRNYXRjaE5l
YXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBpbml0aWFsTWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVv
dGVDb2xvcikKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJl
c3RNYWlsQmxvY2txdW90ZUNvbG9yLCBzZXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9y
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aAorREVGSU5FX1VOUkVBQ0hB
QkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGgpCitERUZJTkVfVU5S
RUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCkKK0RFRklO
RV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCkKKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0CitERUZJTkVfVU5SRUFDSEFCTEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFD
SEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQpCitERUZJTkVf
VU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0KQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lO
SEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGgpCitERUZJTkVfVU5SRUFDSEFC
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKK0RFRklORV9VTlJF
QUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0CitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFD
SEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdE5ic3BNb2RlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXROYnNwTW9kZSwgc2V0TkJTUE1vZGUsIG5ic3BNb2RlKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIHNldE5CU1BNb2RlLCBpbml0aWFsTkJTUE1v
ZGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIHNldE5C
U1BNb2RlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcgorREVGSU5FX1VOUkVB
Q0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXIpCitERUZJTkVfVU5S
RUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKK0RFRklORV9V
TlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dFBhZGRpbmdFbmQKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
UGFkZGluZ0VuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
UGFkZGluZ0VuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBh
ZGRpbmdFbmQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0CitERUZJTkVfVU5S
RUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydCkKK0RFRklORV9V
TlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorREVGSU5F
X1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRQZXJzcGVjdGl2ZSwgc2V0UGVyc3BlY3RpdmUsIHBlcnNwZWN0aXZlKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUsIHNldFBlcnNw
ZWN0aXZlLCBpbml0aWFsUGVyc3BlY3RpdmUpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewor
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0UGVyc3BlY3RpdmUoMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBmbG9hdCBwZXJzcGVjdGl2ZVZhbHVlOworICAgICAgICBpbnQgdHlwZSA9IHBy
aW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVW
YWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKKyAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4ocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGgoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50
U3R5bGUsICBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgICAgIGVs
c2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKKyAgICAgICAg
ICAgIC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVy
cyBhcyBweC4KKyAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgp
LCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCAgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVj
dGl2ZVpvb20oKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChwZXJzcGVjdGl2ZVZhbHVlID49IDAuMGYpCisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVWYWx1ZSk7CisgICAgfQorfQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luCitERUZJTkVfRVhQQU5ESU5HX0lO
SEVSSVRfVFdPKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4sIENTU1Byb3BlcnR5
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YLCBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3Jp
Z2luWSkKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlXZWJraXRQZXJz
cGVjdGl2ZU9yaWdpbiwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIENTU1By
b3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBl
cnNwZWN0aXZlT3JpZ2luWCwgc2V0UGVyc3BlY3RpdmVPcmlnaW5YLCBwZXJzcGVjdGl2ZU9yaWdp
blgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9y
aWdpblgsIHNldFBlcnNwZWN0aXZlT3JpZ2luWCwgaW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWCkK
K0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgs
IHNldFBlcnNwZWN0aXZlT3JpZ2luWCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWQorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZLCBzZXRQZXJzcGVj
dGl2ZU9yaWdpblksIHBlcnNwZWN0aXZlT3JpZ2luWSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgc2V0UGVyc3BlY3RpdmVPcmlnaW5Z
LCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgc2V0UGVyc3BlY3RpdmVPcmlnaW5ZLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UnRs
T3JkZXJpbmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVy
aW5nLCBzZXRWaXN1YWxseU9yZGVyZWQsIHZpc3VhbGx5T3JkZXJlZCkKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBzZXRWaXN1YWxseU9yZGVyZWQs
IGluaXRpYWxWaXN1YWxseU9yZGVyZWQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRS
dGxPcmRlcmluZykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFZpc3VhbGx5T3JkZXJl
ZChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVZpc3VhbCk7CisgICAgfQor
fQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSwgc2V0VGV4dENvbWJpbmUsIHRleHRDb21i
aW5lKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUs
IHNldFRleHRDb21iaW5lLCBpbml0aWFsVGV4dENvbWJpbmUpCitERUZJTkVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRUZXh0Q29tYmluZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4
dENvbWJpbmUoKnApOworICAgIH0KKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPmhhc1RleHRD
b21iaW5lKCkpCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRVbmlxdWUoKTsgLy8gVGhl
IHN0eWxlIGNvdWxkIGJlIG1vZGlmaWVkIGluIFJlbmRlckNvbWJpbmVUZXh0IGRlcGVuZGluZyBv
biB0ZXh0IG1ldHJpY3MuCit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
VGV4dERlY29yYXRpb25zSW5FZmZlY3QpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhh
c2lzCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzKQor
REVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcykKK0RFRklO
RV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQ
KENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIHNldFRleHRFbXBoYXNpc0NvbG9y
LCB0ZXh0RW1waGFzaXNDb2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1Io
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgc2V0VGV4dEVtcGhhc2lzQ29sb3Ip
CitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
Q29sb3IsIHNldFRleHRFbXBoYXNpc0NvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc1Bvc2l0aW9uCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXNQb3NpdGlvbiwgc2V0VGV4dEVtcGhhc2lzUG9zaXRpb24sIHRleHRFbXBoYXNp
c1Bvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzUG9zaXRpb24sIHNldFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBpbml0aWFsVGV4dEVtcGhh
c2lzUG9zaXRpb24pCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzUG9zaXRpb24sIHNldFRleHRFbXBoYXNpc1Bvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlCisvLyBOT1RFOiB0aGUgb3JpZ2luYWwgY29kZSB3YXMg
YnJva2VuIHNvIEkgaGF2ZSBjb252ZXJ0ZWQgdGhpcyB0byBtYXRjaCB0aGUgaW50ZW50IG9mIHRo
ZSBvcmlnaW5hbCBjb2RlCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpc1N0eWxlKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxs
KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50ZXh0RW1waGFzaXNGaWxsKCkpOworICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKGluc3RhbmNlLT5tX3BhcmVudFN0eWxl
LT50ZXh0RW1waGFzaXNNYXJrKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1w
aGFzaXNDdXN0b21NYXJrKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50ZXh0RW1waGFzaXNDdXN0
b21NYXJrKCkpOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXNTdHlsZSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbChS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwoKSk7CisgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldFRleHRFbXBoYXNpc01hcmsoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RW1waGFz
aXNNYXJrKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21N
YXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKK30KK0RF
RklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKQoreworICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1NUUklORykgeworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7CisgICAgICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJr
Q3VzdG9tKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXND
dXN0b21NYXJrKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgfSBl
bHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8fCBw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU9wZW4pIHsKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKCpwcmltaXRpdmVWYWx1ZSk7
CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0
RW1waGFzaXNNYXJrQXV0byk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4
dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNG
aWxsRmlsbGVkKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFz
aXNNYXJrKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlz
dCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGxp
c3QtPmxlbmd0aCgpID09IDIpOworICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkgIT0gMikKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsr
aSkgeworICAgICAgICAgICAgQVNTRVJUKGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkt
PmlzUHJpbWl0aXZlVmFsdWUoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGxpc3QtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soaSkpOworICAgICAgICAgICAgaWYgKHZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlRmlsbGVkIHx8IHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikKKyAgICAgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqdmFsdWUpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRU
ZXh0RW1waGFzaXNNYXJrKCp2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20pOworICAgIH0KK30KKwor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCBzZXRUZXh0RmlsbENvbG9y
LCB0ZXh0RmlsbENvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IsIHNldFRleHRGaWxsQ29sb3IpCitERUZJTkVfSEFO
RExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwgc2V0VGV4dEZp
bGxDb2xvcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHkKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwgc2V0VGV4dFNlY3VyaXR5
LCB0ZXh0U2VjdXJpdHkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U2VjdXJpdHksIHNldFRleHRTZWN1cml0eSwgaW5pdGlhbFRleHRTZWN1cml0eSkKK0RFRklO
RV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksIHNldFRleHRTZWN1
cml0eSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlCitERUZJTkVfTlVMTF9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcgor
REVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VD
b2xvciwgc2V0VGV4dFN0cm9rZUNvbG9yLCB0ZXh0U3Ryb2tlQ29sb3IsIGNvbG9yKQorREVGSU5F
X0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBz
ZXRUZXh0U3Ryb2tlQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBzZXRUZXh0U3Ryb2tlQ29sb3IpCisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIHNldFRleHRTdHJva2VXaWR0aCwgdGV4dFN0cm9rZVdp
ZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdp
ZHRoLCBzZXRUZXh0U3Ryb2tlV2lkdGgsIGluaXRpYWxUZXh0U3Ryb2tlV2lkdGgpCitERUZJTkVf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgpCit7CisgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAg
ICAgIGZsb2F0IHdpZHRoID0gMDsKKyAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVlVGhpbjoKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZU1lZGl1bToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaWNrOiB7CisgICAgICAgICAgICBk
b3VibGUgcmVzdWx0ID0gMS4wIC8gNDg7CisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVNZWRpdW0pCisgICAgICAgICAgICAgICAgcmVzdWx0ICo9
IDM7CisgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZVRoaWNrKQorICAgICAgICAgICAgICAgIHJlc3VsdCAqPSA1OworICAgICAgICAgICAg
d2lkdGggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlc3VsdCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19FTVMpLT5jb21wdXRlTGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCks
IGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3Rp
dmVab29tKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9h
dChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwg
aW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dFN0cm9rZVdpZHRo
KHdpZHRoKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIHNldFRyYW5zZm9y
bSwgdHJhbnNmb3JtKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtLCBzZXRUcmFuc2Zvcm0sIGluaXRpYWxUcmFuc2Zvcm0pCitERUZJTkVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCit7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVy
YXRpb25zOworICAgIGNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnModmFsdWUsIGluc3RhbmNlLT5t
X3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBvcGVyYXRpb25zKTsK
KyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VHJhbnNmb3JtKG9wZXJhdGlvbnMpOworfQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbgorREVGSU5FX0VYUEFORElOR19JTkhF
UklUX1RIUkVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLCBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblgsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKQorREVGSU5FX0VYUEFORElOR19JTklU
SUFMX1RIUkVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLCBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblgsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKQorREVGSU5FX05VTExfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtT3JpZ2luWAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtT3JpZ2luWCwgc2V0VHJhbnNmb3JtT3JpZ2luWCwgdHJhbnNmb3JtT3JpZ2luWCkKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIHNl
dFRyYW5zZm9ybU9yaWdpblgsIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5YKQorREVGSU5FX0xFTkdU
SF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIHNldFRyYW5zZm9ybU9y
aWdpblgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBzZXRUcmFuc2Zvcm1PcmlnaW5ZLCB0cmFuc2Zvcm1P
cmlnaW5ZKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWSwgc2V0VHJhbnNmb3JtT3JpZ2luWSwgaW5pdGlhbFRyYW5zZm9ybU9yaWdpblkpCitE
RUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgc2V0
VHJhbnNmb3JtT3JpZ2luWSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbloKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblosIHNldFRyYW5zZm9ybU9yaWdpblos
IHRyYW5zZm9ybU9yaWdpblopCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aLCBzZXRUcmFuc2Zvcm1PcmlnaW5aLCBpbml0aWFsVHJhbnNmb3Jt
T3JpZ2luWikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblop
Cit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxl
bmd0aChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpKSkKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRUcmFuc2Zvcm1PcmlnaW5aKHN0YXRpY19jYXN0PGZsb2F0Pihwcmlt
aXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9zdHlsZS5n
ZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSkpKTsKKyAgICB9Cit9CisKKy8vIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlLCBzZXRUcmFuc2Zvcm1TdHlsZTNELCB0cmFuc2Zv
cm1TdHlsZTNEKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtU3R5bGUsIHNldFRyYW5zZm9ybVN0eWxlM0QsIGluaXRpYWxUcmFuc2Zvcm1TdHlsZTNEKQor
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUpCit7CisgICAgaWYg
KHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUcmFuc2Zvcm1TdHlsZTNEKChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpID8gVHJhbnNmb3JtU3R5
bGUzRFByZXNlcnZlM0QgOiBUcmFuc2Zvcm1TdHlsZTNERmxhdCk7CisgICAgfQorfQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24KK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvbikKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+aW5oZXJpdFRyYW5zaXRp
b25zKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50cmFuc2l0aW9ucygpKTsKK30KK0RFRklORV9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbikKK3sKKyAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+Y2xlYXJUcmFuc2l0aW9ucygpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxh
eQorREVGSU5FX1RSQU5TSVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25E
ZWxheSwgZGVsYXksIERlbGF5KQorREVGSU5FX1RSQU5TSVRJT05fSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb25EZWxheSwgZGVsYXksIERlbGF5KQorREVGSU5FX1RSQU5TSVRJT05f
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksIGRlbGF5LCBEZWxheSkKKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24KK0RFRklORV9UUkFOU0lUSU9O
X0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBE
dXJhdGlvbikKK0RFRklORV9UUkFOU0lUSU9OX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKK0RFRklORV9UUkFOU0lUSU9OX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgRHVyYXRp
b24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5CitERUZJTkVfVFJB
TlNJVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBwcm9w
ZXJ0eSwgUHJvcGVydHkpCitERUZJTkVfVFJBTlNJVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvblByb3BlcnR5LCBwcm9wZXJ0eSwgUHJvcGVydHkpCitERUZJTkVfVFJBTlNJ
VElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgcHJvcGVydHks
IFByb3BlcnR5KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlv
bgorREVGSU5FX1RSQU5TSVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25U
aW1pbmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uKQorREVGSU5FX1RS
QU5TSVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlv
biwgdGltaW5nRnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uKQorREVGSU5FX1RSQU5TSVRJT05fVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1bmN0
aW9uLCBUaW1pbmdGdW5jdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZworREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIHNldFVzZXJEcmFn
LCB1c2VyRHJhZykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJE
cmFnLCBzZXRVc2VyRHJhZywgaW5pdGlhbFVzZXJEcmFnKQorREVGSU5FX0hBTkRMRV9WQUxVRShD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBzZXRVc2VyRHJhZykKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRVc2VyTW9kaWZ5CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRV
c2VyTW9kaWZ5LCBzZXRVc2VyTW9kaWZ5LCB1c2VyTW9kaWZ5KQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgc2V0VXNlck1vZGlmeSwgaW5pdGlhbFVz
ZXJNb2RpZnkpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlm
eSwgc2V0VXNlck1vZGlmeSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0CitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBzZXRVc2VyU2Vs
ZWN0LCB1c2VyU2VsZWN0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
VXNlclNlbGVjdCwgc2V0VXNlclNlbGVjdCwgaW5pdGlhbFVzZXJTZWxlY3QpCitERUZJTkVfSEFO
RExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgc2V0VXNlclNlbGVjdCkKKwor
Ly8gQ1NTUHJvcGVydHlDbGlwUGF0aAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlDbGlwKQor
eworICAgIExlbmd0aCB0b3A7CisgICAgTGVuZ3RoIHJpZ2h0OworICAgIExlbmd0aCBib3R0b207
CisgICAgTGVuZ3RoIGxlZnQ7CisgICAgYm9vbCBoYXNDbGlwID0gdHJ1ZTsKKyAgICBpZiAoaW5z
dGFuY2UtPm1fcGFyZW50U3R5bGUtPmhhc0NsaXAoKSkgeworICAgICAgICB0b3AgPSBpbnN0YW5j
ZS0+bV9wYXJlbnRTdHlsZS0+Y2xpcFRvcCgpOworICAgICAgICByaWdodCA9IGluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT5jbGlwUmlnaHQoKTsKKyAgICAgICAgYm90dG9tID0gaW5zdGFuY2UtPm1f
cGFyZW50U3R5bGUtPmNsaXBCb3R0b20oKTsKKyAgICAgICAgbGVmdCA9IGluc3RhbmNlLT5tX3Bh
cmVudFN0eWxlLT5jbGlwTGVmdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGhhc0NsaXAgPSBm
YWxzZTsKKyAgICAgICAgdG9wID0gcmlnaHQgPSBib3R0b20gPSBsZWZ0ID0gTGVuZ3RoKCk7Cisg
ICAgfQorICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDbGlwKHRvcCwgcmlnaHQsIGJvdHRvbSwg
bGVmdCk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0NsaXAoaGFzQ2xpcCk7Cit9CisK
K0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Q2xpcCkKK3sKKyAgICBMZW5ndGggbGVuZ3RoID0g
TGVuZ3RoKCk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENsaXAobGVuZ3RoLCBsZW5ndGgs
IGxlbmd0aCwgbGVuZ3RoKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQ2xpcChmYWxz
ZSk7Cit9CisKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUNsaXApCit7CisgICAgTGVuZ3RoIHRv
cDsKKyAgICBMZW5ndGggcmlnaHQ7CisgICAgTGVuZ3RoIGJvdHRvbTsKKyAgICBMZW5ndGggbGVm
dDsKKyAgICBib29sIGhhc0NsaXAgPSB0cnVlOworICAgIGZsb2F0IHpvb21GYWN0b3IgPSBpbnN0
YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JF
Q1QpIHsKKyAgICAgICAgICAgIFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UmVjdFZh
bHVlKCk7CisgICAgICAgICAgICBpZiAoIXJlY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgdG9wID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKHJlY3Qt
PnRvcCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRT
dHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICByaWdodCA9IENTU1N0eWxlU2VsZWN0b3I6
OmNvbnZlcnRUb0xlbmd0aChyZWN0LT5yaWdodCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwg
aW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBi
b3R0b20gPSBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9MZW5ndGgocmVjdC0+Ym90dG9tKCks
IGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGxlZnQgPSBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0
VG9MZW5ndGgocmVjdC0+bGVmdCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2Ut
Pm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgIH0gZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKSB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENsaXAodG9w
LCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhh
c0NsaXAoaGFzQ2xpcCk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eUNsaXBSdWxlCisvLyBD
U1NQcm9wZXJ0eU1hc2sKKy8vIENTU1Byb3BlcnR5RW5hYmxlQmFja2dyb3VuZAorLy8gQ1NTUHJv
cGVydHlGaWx0ZXIKKy8vIENTU1Byb3BlcnR5Rmxvb2RDb2xvcgorLy8gQ1NTUHJvcGVydHlGbG9v
ZE9wYWNpdHkKKy8vIENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcgorLy8gQ1NTUHJvcGVydHlTdG9w
Q29sb3IKKy8vIENTU1Byb3BlcnR5U3RvcE9wYWNpdHkKKy8vIENTU1Byb3BlcnR5Q29sb3JJbnRl
cnBvbGF0aW9uCisvLyBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMKKy8vIENT
U1Byb3BlcnR5Q29sb3JQcm9maWxlCisvLyBDU1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nCisvLyBD
U1NQcm9wZXJ0eUZpbGwKKy8vIENTU1Byb3BlcnR5RmlsbE9wYWNpdHkKKy8vIENTU1Byb3BlcnR5
RmlsbFJ1bGUKKy8vIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmcKKy8vIENTU1Byb3BlcnR5TWFy
a2VyCisvLyBDU1NQcm9wZXJ0eU1hcmtlckVuZAorLy8gQ1NTUHJvcGVydHlNYXJrZXJNaWQKKy8v
IENTU1Byb3BlcnR5TWFya2VyU3RhcnQKKy8vIENTU1Byb3BlcnR5U2hhcGVSZW5kZXJpbmcKKy8v
IENTU1Byb3BlcnR5U3Ryb2tlCisvLyBDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJheQorLy8gQ1NT
UHJvcGVydHlTdHJva2VEYXNob2Zmc2V0CisvLyBDU1NQcm9wZXJ0eVN0cm9rZUxpbmVjYXAKKy8v
IENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW4KKy8vIENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJsaW1p
dAorLy8gQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5CisvLyBDU1NQcm9wZXJ0eVN0cm9rZVdpZHRo
CisvLyBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lCisvLyBDU1NQcm9wZXJ0eUJhc2VsaW5l
U2hpZnQKKy8vIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZQorLy8gQ1NTUHJvcGVydHlHbHlw
aE9yaWVudGF0aW9uSG9yaXpvbnRhbAorLy8gQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uVmVy
dGljYWwKKy8vIENTU1Byb3BlcnR5S2VybmluZworLy8gQ1NTUHJvcGVydHlUZXh0QW5jaG9yCisv
LyBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdAorLy8gQ1NTUHJvcGVydHlXcml0aW5nTW9kZQorLy8g
Q1NTUHJvcGVydHlXZWJraXRTdmdTaGFkb3cKKworLy8gQ1NTUHJvcGVydHlXZWJraXREYXNoYm9h
cmRSZWdpb24KKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24sIHNldERhc2hib2FyZFJlZ2lv
bnMsIGRhc2hib2FyZFJlZ2lvbnMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXREYXNoYm9hcmRSZWdpb24sIHNldERhc2hib2FyZFJlZ2lvbnMsIGluaXRpYWxEYXNoYm9h
cmRSZWdpb25zKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9u
KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVOb25lKSB7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RGFzaGJv
YXJkUmVnaW9ucyhSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lv
biA9IHByaW1pdGl2ZVZhbHVlLT5nZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOworICAgICAgICBp
ZiAoIXJlZ2lvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBEYXNoYm9hcmRSZWdp
b24qIGZpcnN0ID0gcmVnaW9uOworICAgICAgICB3aGlsZSAocmVnaW9uKSB7CisgICAgICAgICAg
ICBMZW5ndGggdG9wID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+dG9wKCksIGluc3RhbmNlLT5t
X3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlKTsKKyAgICAgICAgICAg
IExlbmd0aCByaWdodCA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPnJpZ2h0KCksIGluc3RhbmNl
LT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlKTsKKyAgICAgICAg
ICAgIExlbmd0aCBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5ib3R0b20oKSwgaW5z
dGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUpOworICAg
ICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5sZWZ0KCksIGlu
c3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlKTsKKyAg
ICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCisgICAgICAgICAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6Q2ly
Y2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9uID09
IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9p
c1JlY3RhbmdsZSkKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RGFzaGJv
YXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJl
bCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRy
dWUpOworICAgICAgICAgICAgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7CisgICAgICAg
IH0KKyAgICAgICAgaW5zdGFuY2UtPm1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0SGFzRGFzaGJv
YXJkUmVnaW9ucyh0cnVlKTsKKyAgICB9Cit9CisjZWxzZQorREVGSU5FX05VTExfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbikKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24pCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbikKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdDU1MpCisv
LyBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShD
U1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0
aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZAorREVGSU5FX0VRVUlWQUxFTlRf
UFJPUEVSVFkoQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQsIENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZVNwZWVkKQorCisvLyBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZQorREVGSU5FX0VRVUlW
QUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Vi
a2l0TWFycXVlZVN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIsIHNldE1hcnF1ZWVEaXJlY3Rp
b24sIG1hcnF1ZWVEaXJlY3Rpb24pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
YXBNYXJxdWVlRGlyLCBzZXRNYXJxdWVlRGlyZWN0aW9uLCBpbml0aWFsTWFycXVlZURpcmVjdGlv
bikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIpCit7CisgICAgaWYgKHZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZUx0cjoKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZURp
cmVjdGlvbihNUklHSFQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVJ0bDoKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFy
cXVlZURpcmVjdGlvbihNTEVGVCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVl
RGlyZWN0aW9uKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2FwSW5wdXRG
b3JtYXQKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdCkKK0RF
RklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdCkKK0RFRklORV9WQUxV
RShDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAoaW5z
dGFuY2UtPm1fZWxlbWVudC0+aGFzVGFnTmFtZShXZWJDb3JlOjppbnB1dFRhZykpIHsKKyAgICAg
ICAgICAgIFN0cmluZyBtYXNrID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oaW5zdGFuY2UtPm1fZWxl
bWVudCktPnNldFdhcElucHV0Rm9ybWF0KG1hc2spOworICAgICAgICB9CisgICAgfQorfQorLy8g
Q1NTUHJvcGVydHlXYXBJbnB1dFJlcXVpcmVkCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3Bl
cnR5V2FwSW5wdXRSZXF1aXJlZCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXYXBJ
bnB1dFJlcXVpcmVkKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZCkK
K3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKGluc3RhbmNlLT5tX2VsZW1lbnQtPmlzRm9ybUNvbnRy
b2xFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oaW5zdGFuY2UtPm1fZWxl
bWVudCk7CisgICAgICAgICAgICBib29sIHJlcXVpcmVkID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0
cmluZ1ZhbHVlKCkgPT0gInRydWUiOworICAgICAgICAgICAgZWxlbWVudC0+c2V0UmVxdWlyZWQo
cmVxdWlyZWQpOworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDc3MzU5KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjUsMjMzICsxMjUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLSNkZWZpbmUgSEFORExFX0lOSEVSSVQocHJvcCwgUHJvcCkgXAotaWYgKGlz
SW5oZXJpdCkgeyBcCi0gICAgbV9zdHlsZS0+c2V0IyNQcm9wKG1fcGFyZW50U3R5bGUtPnByb3Ao
KSk7IFwKLSAgICByZXR1cm47IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTChwcm9wLCBQcm9wKSBcCi1IQU5ETEVfSU5IRVJJVChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJ
bml0aWFsKSB7IFwKLSAgICBtX3N0eWxlLT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6OmluaXRpYWwj
I1Byb3AoKSk7IFwKLSAgICByZXR1cm47IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9XSVRIX1ZBTFVFKHByb3AsIFByb3AsIFZhbHVlKSBcCi1IQU5ETEVfSU5IRVJJ
VChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbml0aWFsKSB7IFwKLSAgICBtX3N0eWxlLT5zZXQjI1By
b3AoUmVuZGVyU3R5bGU6OmluaXRpYWwjI1ZhbHVlKCkpO1wKLSAgICByZXR1cm47XAotfQotCi0j
ZGVmaW5lIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUocHJvcCwgUHJv
cCkgXAotSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotaWYgKHByaW1p
dGl2ZVZhbHVlKSBcCi0gICAgbV9zdHlsZS0+c2V0IyNQcm9wKCpwcmltaXRpdmVWYWx1ZSk7Ci0K
LSNkZWZpbmUgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZB
TFVFKHByb3AsIFByb3AsIFZhbHVlKSBcCi1IQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9XSVRI
X1ZBTFVFKHByb3AsIFByb3AsIFZhbHVlKSBcCi1pZiAocHJpbWl0aXZlVmFsdWUpIFwKLSAgICBt
X3N0eWxlLT5zZXQjI1Byb3AoKnByaW1pdGl2ZVZhbHVlKTsKLQotI2RlZmluZSBIQU5ETEVfRklM
TF9MQVlFUl9JTkhFUklUX0FORF9JTklUSUFMKGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQ
cm9wKSBcCi1pZiAoaXNJbmhlcml0KSB7IFwKLSAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IG1f
c3R5bGUtPmFjY2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAotICAgIEZpbGxMYXllciogcHJl
dkNoaWxkID0gMDsgXAotICAgIGNvbnN0IEZpbGxMYXllciogY3VyclBhcmVudCA9IG1fcGFyZW50
U3R5bGUtPmxheWVyVHlwZSMjTGF5ZXJzKCk7IFwKLSAgICB3aGlsZSAoY3VyclBhcmVudCAmJiBj
dXJyUGFyZW50LT5pcyMjUHJvcCMjU2V0KCkpIHsgXAotICAgICAgICBpZiAoIWN1cnJDaGlsZCkg
eyBcCi0gICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIuKi8gXAotICAgICAg
ICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihMYXllclR5cGUjI0ZpbGxMYXllcik7IFwK
LSAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOyBcCi0gICAgICAgIH0g
XAotICAgICAgICBjdXJyQ2hpbGQtPnNldCMjUHJvcChjdXJyUGFyZW50LT5wcm9wKCkpOyBcCi0g
ICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsgXAotICAgICAgICBjdXJyQ2hpbGQgPSBwcmV2
Q2hpbGQtPm5leHQoKTsgXAotICAgICAgICBjdXJyUGFyZW50ID0gY3VyclBhcmVudC0+bmV4dCgp
OyBcCi0gICAgfSBcCi0gICAgXAotICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsgXAotICAgICAgICAv
KiBSZXNldCBhbnkgcmVtYWluaW5nIGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0
LiAqLyBcCi0gICAgICAgIGN1cnJDaGlsZC0+Y2xlYXIjI1Byb3AoKTsgXAotICAgICAgICBjdXJy
Q2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAotICAgIH0gXAotfSBlbHNlIGlmIChpc0luaXRp
YWwpIHsgXAotICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gbV9zdHlsZS0+YWNjZXNzIyNMYXll
clR5cGUjI0xheWVycygpOyBcCi0gICAgY3VyckNoaWxkLT5zZXQjI1Byb3AoRmlsbExheWVyOjpp
bml0aWFsRmlsbCMjUHJvcChMYXllclR5cGUjI0ZpbGxMYXllcikpOyBcCi0gICAgZm9yIChjdXJy
Q2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgY3VyckNoaWxkOyBjdXJyQ2hpbGQgPSBjdXJyQ2hp
bGQtPm5leHQoKSkgXAotICAgICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQcm9wKCk7IFwKLX0KLQot
I2RlZmluZSBIQU5ETEVfRklMTF9MQVlFUl9WQUxVRShsYXllclR5cGUsIExheWVyVHlwZSwgcHJv
cCwgUHJvcCwgdmFsdWUpIHsgXAotSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVF9BTkRfSU5JVElB
TChsYXllclR5cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAotaWYgKGlzSW5oZXJpdCB8fCBp
c0luaXRpYWwpIFwKLSAgICByZXR1cm47IFwKLUZpbGxMYXllciogY3VyckNoaWxkID0gbV9zdHls
ZS0+YWNjZXNzIyNMYXllclR5cGUjI0xheWVycygpOyBcCi1GaWxsTGF5ZXIqIHByZXZDaGlsZCA9
IDA7IFwKLWlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCi0gICAgLyogV2FsayBlYWNoIHZh
bHVlIGFuZCBwdXQgaXQgaW50byBhIGxheWVyLCBjcmVhdGluZyBuZXcgbGF5ZXJzIGFzIG5lZWRl
ZC4gKi8gXAotICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4odmFsdWUpOyBcCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1
ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsgXAotICAgICAgICBpZiAoIWN1cnJDaGlsZCkgeyBcCi0g
ICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIgdG8gaG9sZCB0aGlzIHZhbHVl
ICovIFwKLSAgICAgICAgICAgIGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoTGF5ZXJUeXBlIyNG
aWxsTGF5ZXIpOyBcCi0gICAgICAgICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3VyckNoaWxkKTsg
XAotICAgICAgICB9IFwKLSAgICAgICAgbWFwRmlsbCMjUHJvcChwcm9wZXJ0eSwgY3VyckNoaWxk
LCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOyBcCi0gICAgICAgIHByZXZD
aGlsZCA9IGN1cnJDaGlsZDsgXAotICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQo
KTsgXAotICAgIH0gXAotfSBlbHNlIHsgXAotICAgIG1hcEZpbGwjI1Byb3AocHJvcGVydHksIGN1
cnJDaGlsZCwgdmFsdWUpOyBcCi0gICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwK
LX0gXAotd2hpbGUgKGN1cnJDaGlsZCkgeyBcCi0gICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBs
YXllcnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAotICAgIGN1cnJDaGlsZC0+
Y2xlYXIjI1Byb3AoKTsgXAotICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOyBcCi19
IH0KLQotI2RlZmluZSBIQU5ETEVfQkFDS0dST1VORF9JTkhFUklUX0FORF9JTklUSUFMKHByb3As
IFByb3ApIFwKLUhBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVRfQU5EX0lOSVRJQUwoYmFja2dyb3Vu
ZCwgQmFja2dyb3VuZCwgcHJvcCwgUHJvcCkKLQotI2RlZmluZSBIQU5ETEVfQkFDS0dST1VORF9W
QUxVRShwcm9wLCBQcm9wLCB2YWx1ZSkgXAotSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgcHJvcCwgUHJvcCwgdmFsdWUpCi0KLSNkZWZpbmUgSEFORExFX01B
U0tfSU5IRVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1IQU5ETEVfRklMTF9MQVlFUl9J
TkhFUklUX0FORF9JTklUSUFMKG1hc2ssIE1hc2ssIHByb3AsIFByb3ApCi0KLSNkZWZpbmUgSEFO
RExFX01BU0tfVkFMVUUocHJvcCwgUHJvcCwgdmFsdWUpIFwKLUhBTkRMRV9GSUxMX0xBWUVSX1ZB
TFVFKG1hc2ssIE1hc2ssIHByb3AsIFByb3AsIHZhbHVlKQotCi0jZGVmaW5lIEhBTkRMRV9BTklN
QVRJT05fSU5IRVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0KSB7
IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygp
OyBcCi0gICAgY29uc3QgQW5pbWF0aW9uTGlzdCogcGFyZW50TGlzdCA9IG1fcGFyZW50U3R5bGUt
PmFuaW1hdGlvbnMoKTsgXAotICAgIHNpemVfdCBpID0gMCwgcGFyZW50U2l6ZSA9IHBhcmVudExp
c3QgPyBwYXJlbnRMaXN0LT5zaXplKCkgOiAwOyBcCi0gICAgZm9yICggOyBpIDwgcGFyZW50U2l6
ZSAmJiBwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPmlzIyNQcm9wIyNTZXQoKTsgKytpKSB7IFwK
LSAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBpKSBcCi0gICAgICAgICAgICBsaXN0LT5hcHBl
bmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5z
ZXQjI1Byb3AocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5wcm9wKCkpOyBcCi0gICAgfSBcCi0g
ICAgXAotICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0
aGUgcHJvcGVydHkgc2V0LiAqLyBcCi0gICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kp
IFwKLSAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5jbGVhciMjUHJvcCgpOyBcCi19IGVsc2Ug
aWYgKGlzSW5pdGlhbCkgeyBcCi0gICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5bGUtPmFj
Y2Vzc0FuaW1hdGlvbnMoKTsgXAotICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAg
bGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgbGlzdC0+YW5pbWF0aW9u
KDApLT5zZXQjI1Byb3AoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uIyNQcm9wKCkpOyBcCi0g
ICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBs
aXN0LT5hbmltYXRpb24oMCktPmNsZWFyIyNQcm9wKCk7IFwKLX0KLQotI2RlZmluZSBIQU5ETEVf
QU5JTUFUSU9OX1ZBTFVFKHByb3AsIFByb3AsIHZhbHVlKSB7IFwKLUhBTkRMRV9BTklNQVRJT05f
SU5IRVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0IHx8IGlzSW5p
dGlhbCkgXAotICAgIHJldHVybjsgXAotQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5bGUtPmFj
Y2Vzc0FuaW1hdGlvbnMoKTsgXAotc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBcCi1pZiAodmFsdWUt
PmlzVmFsdWVMaXN0KCkpIHsgXAotICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGlu
dG8gYW4gYW5pbWF0aW9uLCBjcmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwK
LSAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHZhbHVlKTsgXAotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5s
ZW5ndGgoKTsgaSsrKSB7IFwKLSAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgp
KSBcCi0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAg
ICAgICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgdmFs
dWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsgXAotICAgICAgICArK2NoaWxkSW5k
ZXg7IFwKLSAgICB9IFwKLX0gZWxzZSB7IFwKLSAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCi0g
ICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgIG1hcEFuaW1h
dGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVlKTsgXAotICAgIGNo
aWxkSW5kZXggPSAxOyBcCi19IFwKLWZvciAoIDsgY2hpbGRJbmRleCA8IGxpc3QtPnNpemUoKTsg
KytjaGlsZEluZGV4KSB7IFwKLSAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIGFuaW1hdGlvbnMg
dG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAotICAgIGxpc3QtPmFuaW1hdGlvbihj
aGlsZEluZGV4KS0+Y2xlYXIjI1Byb3AoKTsgXAotfSBcCi19Ci0KLSNkZWZpbmUgSEFORExFX1RS
QU5TSVRJT05fSU5IRVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0
KSB7IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlv
bnMoKTsgXAotICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudExpc3QgPSBtX3BhcmVudFN0
eWxlLT50cmFuc2l0aW9ucygpOyBcCi0gICAgc2l6ZV90IGkgPSAwLCBwYXJlbnRTaXplID0gcGFy
ZW50TGlzdCA/IHBhcmVudExpc3QtPnNpemUoKSA6IDA7IFwKLSAgICBmb3IgKCA7IGkgPCBwYXJl
bnRTaXplICYmIHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+aXMjI1Byb3AjI1NldCgpOyArK2kp
IHsgXAotICAgICAgICBpZiAobGlzdC0+c2l6ZSgpIDw9IGkpIFwKLSAgICAgICAgICAgIGxpc3Qt
PmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24o
aSktPnNldCMjUHJvcChwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPnByb3AoKSk7IFwKLSAgICB9
IFwKLSAgICBcCi0gICAgLyogUmVzZXQgYW55IHJlbWFpbmluZyB0cmFuc2l0aW9ucyB0byBub3Qg
aGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCi0gICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgp
OyArK2kpIFwKLSAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5jbGVhciMjUHJvcCgpOyBcCi19
IGVsc2UgaWYgKGlzSW5pdGlhbCkgeyBcCi0gICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5
bGUtPmFjY2Vzc1RyYW5zaXRpb25zKCk7IFwKLSAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCi0g
ICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgIGxpc3QtPmFu
aW1hdGlvbigwKS0+c2V0IyNQcm9wKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbiMjUHJvcCgp
KTsgXAotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwKLSAg
ICAgICAgbGlzdC0+YW5pbWF0aW9uKDApLT5jbGVhciMjUHJvcCgpOyBcCi19Ci0KLSNkZWZpbmUg
SEFORExFX1RSQU5TSVRJT05fVkFMVUUocHJvcCwgUHJvcCwgdmFsdWUpIHsgXAotSEFORExFX1RS
QU5TSVRJT05fSU5IRVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0
IHx8IGlzSW5pdGlhbCkgXAotICAgIHJldHVybjsgXAotQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1f
c3R5bGUtPmFjY2Vzc1RyYW5zaXRpb25zKCk7IFwKLXNpemVfdCBjaGlsZEluZGV4ID0gMDsgXAot
aWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7IFwKLSAgICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5k
IHB1dCBpdCBpbnRvIGEgdHJhbnNpdGlvbiwgY3JlYXRpbmcgbmV3IGFuaW1hdGlvbnMgYXMgbmVl
ZGVkLiAqLyBcCi0gICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NW
YWx1ZUxpc3QqPih2YWx1ZSk7IFwKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZh
bHVlTGlzdC0+bGVuZ3RoKCk7IGkrKykgeyBcCi0gICAgICAgIGlmIChjaGlsZEluZGV4IDw9IGxp
c3QtPnNpemUoKSkgXAotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRl
KCkpOyBcCi0gICAgICAgIG1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJ
bmRleCksIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKLSAgICAgICAg
KytjaGlsZEluZGV4OyBcCi0gICAgfSBcCi19IGVsc2UgeyBcCi0gICAgaWYgKGxpc3QtPmlzRW1w
dHkoKSkgXAotICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAg
ICBtYXBBbmltYXRpb24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7
IFwKLSAgICBjaGlsZEluZGV4ID0gMTsgXAotfSBcCi1mb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0
LT5zaXplKCk7ICsrY2hpbGRJbmRleCkgeyBcCi0gICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyB0
cmFuc2l0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCi0gICAgbGlzdC0+
YW5pbWF0aW9uKGNoaWxkSW5kZXgpLT5jbGVhciMjUHJvcCgpOyBcCi19IFwKLX0KLQotI2RlZmlu
ZSBIQU5ETEVfSU5IRVJJVF9DT05EKHByb3BJRCwgcHJvcCwgUHJvcCkgXAotaWYgKGlkID09IHBy
b3BJRCkgeyBcCi0gICAgbV9zdHlsZS0+c2V0IyNQcm9wKG1fcGFyZW50U3R5bGUtPnByb3AoKSk7
IFwKLSAgICByZXR1cm47IFwKLX0KLSAgICAKLSNkZWZpbmUgSEFORExFX0lOSEVSSVRfQ09ORF9X
SVRIX0JBQ0tVUChwcm9wSUQsIHByb3AsIHByb3BBbHQsIFByb3ApIFwKLWlmIChpZCA9PSBwcm9w
SUQpIHsgXAotICAgIGlmIChtX3BhcmVudFN0eWxlLT5wcm9wKCkuaXNWYWxpZCgpKSBcCi0gICAg
ICAgIG1fc3R5bGUtPnNldCMjUHJvcChtX3BhcmVudFN0eWxlLT5wcm9wKCkpOyBcCi0gICAgZWxz
ZSBcCi0gICAgICAgIG1fc3R5bGUtPnNldCMjUHJvcChtX3BhcmVudFN0eWxlLT5wcm9wQWx0KCkp
OyBcCi0gICAgcmV0dXJuOyBcCi19Ci0KLSNkZWZpbmUgSEFORExFX0lOSVRJQUxfQ09ORChwcm9w
SUQsIFByb3ApIFwKLWlmIChpZCA9PSBwcm9wSUQpIHsgXAotICAgIG1fc3R5bGUtPnNldCMjUHJv
cChSZW5kZXJTdHlsZTo6aW5pdGlhbCMjUHJvcCgpKTsgXAotICAgIHJldHVybjsgXAotfQotCi0j
ZGVmaW5lIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShwcm9wSUQsIFByb3AsIFZhbHVl
KSBcCi1pZiAoaWQgPT0gcHJvcElEKSB7IFwKLSAgICBtX3N0eWxlLT5zZXQjI1Byb3AoUmVuZGVy
U3R5bGU6OmluaXRpYWwjI1ZhbHVlKCkpOyBcCi0gICAgcmV0dXJuOyBcCi19Ci0KIGNsYXNzIENT
U1J1bGVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NSdWxlRGF0YSk7CiBwdWJs
aWM6CkBAIC00MTcsNyArMTkwLDcgQEAgY2xhc3MgQ1NTUnVsZVNldCB7CiBwdWJsaWM6CiAgICAg
Q1NTUnVsZVNldCgpOwogICAgIH5DU1NSdWxlU2V0KCk7Ci0gICAgCisKICAgICB0eXBlZGVmIEhh
c2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1J1bGVEYXRhTGlzdCo+IEF0b21SdWxlTWFwOwog
ICAgIAogICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCosIGNvbnN0IE1l
ZGlhUXVlcnlFdmFsdWF0b3ImLCBDU1NTdHlsZVNlbGVjdG9yKiA9IDApOwpAQCAtNDI3LDkgKzIw
MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFBhZ2VSdWxlKENTU1N0eWxlUnVsZSogcnVsZSwg
Q1NTU2VsZWN0b3IqIHNlbCk7CiAgICAgdm9pZCBhZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1w
bCoga2V5LCBBdG9tUnVsZU1hcCYgbWFwLAogICAgICAgICAgICAgICAgICAgICAgIENTU1N0eWxl
UnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbCk7Ci0gICAgCisKICAgICB2b2lkIGNvbGxlY3RJ
ZHNBbmRTaWJsaW5nUnVsZXMoSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGlkcywgT3duUHRy
PENTU1J1bGVTZXQ+JiBzaWJsaW5nUnVsZXMpIGNvbnN0OwotICAgIAorCiAgICAgQ1NTUnVsZURh
dGFMaXN0KiBnZXRJRFJ1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgeyByZXR1cm4gbV9pZFJ1
bGVzLmdldChrZXkpOyB9CiAgICAgQ1NTUnVsZURhdGFMaXN0KiBnZXRDbGFzc1J1bGVzKEF0b21p
Y1N0cmluZ0ltcGwqIGtleSkgeyByZXR1cm4gbV9jbGFzc1J1bGVzLmdldChrZXkpOyB9CiAgICAg
Q1NTUnVsZURhdGFMaXN0KiBnZXRUYWdSdWxlcyhBdG9taWNTdHJpbmdJbXBsKiBrZXkpIHsgcmV0
dXJuIG1fdGFnUnVsZXMuZ2V0KGtleSk7IH0KQEAgLTQ1Myw3ICsyMjYsNiBAQCBzdGF0aWMgQ1NT
UnVsZVNldCogZGVmYXVsdFF1aXJrc1N0eWxlOwogc3RhdGljIENTU1J1bGVTZXQqIGRlZmF1bHRQ
cmludFN0eWxlOwogc3RhdGljIENTU1J1bGVTZXQqIGRlZmF1bHRWaWV3U291cmNlU3R5bGU7CiBz
dGF0aWMgQ1NTU3R5bGVTaGVldCogc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQ7Ci0gICAgCiBzdGF0
aWMgQ1NTUnVsZVNldCogc2libGluZ1J1bGVzSW5EZWZhdWx0U3R5bGU7CiAKIFJlbmRlclN0eWxl
KiBDU1NTdHlsZVNlbGVjdG9yOjpzX3N0eWxlTm90WWV0QXZhaWxhYmxlOwpAQCAtNDkwLDcgKzI2
Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhc3NlcnROb1NpYmxpbmdSdWxlc0kKICAgICBBU1NF
UlQoIXNpYmxpbmdSdWxlc0luRGVmYXVsdFN0eWxlKTsKICNlbmRpZgogfQotICAgIAorCiBzdGF0
aWMgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgc2NyZWVuRXZhbCgpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yLCBzdGF0aWNTY3JlZW5FdmFs
LCAoInNjcmVlbiIpKTsKQEAgLTU3Niw3ICszNDgsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NT
dHlsZVNlbGVjdG9yKERvY3VtCiAgICAgICAgIGlmIChzaGVldC0+aXNDU1NTdHlsZVNoZWV0KCkg
JiYgIXNoZWV0LT5kaXNhYmxlZCgpKQogICAgICAgICAgICAgbV9hdXRob3JTdHlsZS0+YWRkUnVs
ZXNGcm9tU2hlZXQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHNoZWV0KSwgKm1fbWVkaXVt
LCB0aGlzKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBDb2xsZWN0IGFsbCBpZHMgYW5kIHJ1bGVz
IHVzaW5nIHNpYmxpbmcgc2VsZWN0b3JzICg6Zmlyc3QtY2hpbGQgYW5kIHNpbWlsYXIpCiAgICAg
Ly8gaW4gdGhlIGN1cnJlbnQgc2V0IG9mIHN0eWxlc2hlZXRzLiBTdHlsZSBzaGFyaW5nIGNvZGUg
dXNlcyB0aGlzIGluZm9ybWF0aW9uIHRvIHJlamVjdAogICAgIC8vIHNoYXJpbmcgY2FuZGlkYXRl
cy4KQEAgLTEwNDEsMTAgKzgxMywxMCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJl
U3R5bGVXaXRoCiAgICAgICAgICAgICAocy0+ZmFzdEdldEF0dHJpYnV0ZShsYW5nQXR0cikgPT0g
bV9lbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGxhbmdBdHRyKSkgJiYKICAgICAgICAgICAgIChz
LT5mYXN0R2V0QXR0cmlidXRlKHJlYWRvbmx5QXR0cikgPT0gbV9lbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKHJlYWRvbmx5QXR0cikpICYmCiAgICAgICAgICAgICAocy0+ZmFzdEdldEF0dHJpYnV0
ZShjZWxscGFkZGluZ0F0dHIpID09IG1fZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShjZWxscGFk
ZGluZ0F0dHIpKSkgewotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChzLT5oYXNJRCgp
ICYmIG1faWRzSW5SdWxlcy5jb250YWlucyhzLT5pZEZvclN0eWxlUmVzb2x1dGlvbigpLmltcGwo
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAKKwogICAgICAgICAg
ICAgYm9vbCBpc0NvbnRyb2wgPSBzLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpOwogICAgICAgICAg
ICAgaWYgKGlzQ29udHJvbCAhPSBtX2VsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTExNSw3ICs4ODcsNyBAQCBib29sIENT
U1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoCiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKIH0KLSAgICAKKwogaW5saW5lIE5vZGUqIENTU1N0eWxlU2VsZWN0b3I6OmZpbmRTaWJsaW5n
Rm9yU3R5bGVTaGFyaW5nKE5vZGUqIG5vZGUsIHVuc2lnbmVkJiBjb3VudCkgY29uc3QKIHsKICAg
ICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7CkBAIC0xMTQ0
LDcgKzkxNiw3IEBAIEFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGUqIENTU1N0eWxlU2VsZWMKICAg
ICBOb2RlKiBzaGFyZU5vZGUgPSBmaW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhtX3N0eWxlZEVs
ZW1lbnQtPnByZXZpb3VzU2libGluZygpLCBjb3VudCk7CiAgICAgaWYgKCFzaGFyZU5vZGUpIHsK
ICAgICAgICAgTm9kZSogY291c2luTGlzdCA9IGxvY2F0ZUNvdXNpbkxpc3QobV9zdHlsZWRFbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCkpOwotICAgICAgICBzaGFyZU5vZGUgPSBmaW5kU2libGluZ0Zv
clN0eWxlU2hhcmluZyhjb3VzaW5MaXN0LCBjb3VudCk7IAorICAgICAgICBzaGFyZU5vZGUgPSBm
aW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhjb3VzaW5MaXN0LCBjb3VudCk7CiAgICAgICAgIGlm
ICghc2hhcmVOb2RlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTMwNSw3ICsx
MDc3LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgICAg
ICBDU1NTdHlsZVNoZWV0KiBzdmdTaGVldCA9IHBhcnNlVUFTaGVldChzdmdVc2VyQWdlbnRTdHls
ZVNoZWV0LCBzaXplb2Yoc3ZnVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgICAgICBkZWZhdWx0
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN2Z1NoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgICAg
ICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsIHByaW50RXZh
bCgpKTsKLSAgICAgICAgYXNzZXJ0Tm9TaWJsaW5nUnVsZXNJbkRlZmF1bHRTdHlsZSgpOworICAg
ICAgICBhc3NlcnROb1NpYmxpbmdSdWxlc0luRGVmYXVsdFN0eWxlKCk7IAogICAgIH0KICNlbmRp
ZgogCkBAIC0xMzE3LDcgKzEwODksNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHls
ZVNlbGVjdG9yCiAgICAgICAgIENTU1N0eWxlU2hlZXQqIG1hdGhNTFNoZWV0ID0gcGFyc2VVQVNo
ZWV0KG1hdGhtbFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtYXRobWxVc2VyQWdlbnRTdHls
ZVNoZWV0KSk7CiAgICAgICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWF0aE1M
U2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChtYXRoTUxTaGVldCwgcHJpbnRFdmFsKCkpOwotICAgICAgICAvLyBUaGVyZSBh
cmUgc29tZSBzaWJsaW5nIHJ1bGVzIGhlcmUuCisgICAgICAgIC8vIFRoZXJlIGFyZSBzb21lIHNp
YmxpbmcgcnVsZXMgaGVyZS4gCiAgICAgICAgIGNvbGxlY3RTaWJsaW5nUnVsZXNJbkRlZmF1bHRT
dHlsZSgpOwogICAgIH0KICNlbmRpZgpAQCAtMTM5MCw3ICsxMTYyLDcgQEAgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIAorCiAgICAgICAgIC8vIDYuIENoZWNrIHRoZSBydWxlcyBp
biBhdXRob3Igc2hlZXRzIG5leHQuCiAgICAgICAgIGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0
eWxlcykKICAgICAgICAgICAgIG1hdGNoUnVsZXMobV9hdXRob3JTdHlsZS5nZXQoKSwgZmlyc3RB
dXRob3JSdWxlLCBsYXN0QXV0aG9yUnVsZSwgZmFsc2UpOwpAQCAtMzAxOSwxMSArMjc5MSwxMSBA
QCBzdGF0aWMgdm9pZCBjb2xsZWN0SWRzQW5kU2libGluZ1J1bGVzRnJvCiAgICAgICAgIGlmIChm
b3VuZFNpYmxpbmdTZWxlY3RvcikgewogICAgICAgICAgICAgaWYgKCFzaWJsaW5nUnVsZXMpCiAg
ICAgICAgICAgICAgICAgc2libGluZ1J1bGVzID0gYWRvcHRQdHIobmV3IENTU1J1bGVTZXQpOwot
ICAgICAgICAgICAgc2libGluZ1J1bGVzLT5hZGRSdWxlKGRhdGEtPnJ1bGUoKSwgZGF0YS0+c2Vs
ZWN0b3IoKSk7ICAgCisgICAgICAgICAgICBzaWJsaW5nUnVsZXMtPmFkZFJ1bGUoZGF0YS0+cnVs
ZSgpLCBkYXRhLT5zZWxlY3RvcigpKTsKICAgICAgICAgfQogICAgIH0KIH0KLQorIAogdm9pZCBD
U1NSdWxlU2V0Ojpjb2xsZWN0SWRzQW5kU2libGluZ1J1bGVzKEhhc2hTZXQ8QXRvbWljU3RyaW5n
SW1wbCo+JiBpZHMsIE93blB0cjxDU1NSdWxlU2V0PiYgc2libGluZ1J1bGVzKSBjb25zdAogewog
ICAgIEF0b21SdWxlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2lkUnVsZXMuZW5kKCk7CkBA
IC0zMDQ1LDcgKzI4MTcsNyBAQCB2b2lkIENTU1J1bGVTZXQ6OmNvbGxlY3RJZHNBbmRTaWJsaW5n
UnVsCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyB0aGlzIGlzIG1vc3RseSBi
b3Jpbmcgc3R1ZmYgb24gaG93IHRvIGFwcGx5IGEgY2VydGFpbiBydWxlIHRvIHRoZSByZW5kZXJz
dHlsZS4uLgogCi1zdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApCitMZW5ndGggQ1NTU3R5
bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUg
bXVsdGlwbGllciwgYm9vbCAqb2spCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0b2xlcmFu
dCBvZiBhIG51bGwgc3R5bGUgdmFsdWUuIFRoZSBvbmx5IHBsYWNlIHN0eWxlIGlzIHVzZWQgaXMg
aW4KICAgICAvLyBsZW5ndGggbWVhc3VyZW1lbnRzLCBsaWtlICdlbXMnIGFuZCAncHgnLiBBbmQg
aW4gdGhvc2UgY2FzZXMgc3R5bGUgaXMgb25seSB1c2VkCkBAIC0zMTc2LDcgKzI5NDgsNyBAQCBT
dHJpbmcgQ1NTU3R5bGVTZWxlY3Rvcjo6cGFnZU5hbWUoaW50IC8qCiAgICAgcmV0dXJuICIiOwog
fQogCi1zdGF0aWMgdm9pZCBhcHBseUNvdW50ZXJMaXN0KFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NT
VmFsdWVMaXN0KiBsaXN0LCBib29sIGlzUmVzZXQpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5Q291bnRlckxpc3QoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NWYWx1ZUxpc3QqIGxpc3QsIGJv
b2wgaXNSZXNldCkKIHsKICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBtYXAgPSBzdHlsZS0+YWNj
ZXNzQ291bnRlckRpcmVjdGl2ZXMoKTsKICAgICB0eXBlZGVmIENvdW50ZXJEaXJlY3RpdmVNYXA6
Oml0ZXJhdG9yIEl0ZXJhdG9yOwpAQCAtMzI2MSwyNSArMzAzMyw2IEBAIGlubGluZSBib29sIGlz
VmFsaWRWaXNpdGVkTGlua1Byb3BlcnR5KGkKIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogewotICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IDA7Ci0gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCi0gICAgICAgIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7Ci0KLSAgICBmbG9hdCB6b29tRmFjdG9yID0gbV9zdHlsZS0+ZWZmZWN0aXZl
Wm9vbSgpOwotCi0gICAgLy8gU1ZHIGhhbmRsZXMgem9vbWluZyBpbiBhIGRpZmZlcmVudCB3YXkg
Y29tcGFyZWQgdG8gQ1NTLiBUaGUgd2hvbGUgZG9jdW1lbnQgaXMgc2NhbGVkIGluc3RlYWQKLSAg
ICAvLyBvZiBlYWNoIGluZGl2aWR1YWwgbGVuZ3RoIHZhbHVlIGluIHRoZSByZW5kZXIgc3R5bGUg
LyB0cmVlLiBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aCooKQotICAgIC8vIG11bHRp
cGxpZXMgZWFjaCByZXNvbHZlZCBsZW5ndGggd2l0aCB0aGUgem9vbSBtdWx0aXBsaWVyIC0gc28g
Zm9yIFNWRyB3ZSBuZWVkIHRvIGRpc2FibGUgdGhhdC4KLSAgICAvLyBUaG91Z2ggYWxsIENTUyB2
YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVudHMgKHdp
ZHRoL2hlaWdodC9ib3JkZXIvcGFkZGluZy4uLikKLSAgICAvLyBuZWVkIHRvIHJlc3BlY3QgdGhl
IHNjYWxpbmcuIFJlbmRlckJveCAodGhlIHBhcmVudCBjbGFzcyBvZiBSZW5kZXJTVkdSb290KSBn
cmFicyB2YWx1ZXMgbGlrZQotICAgIC8vIHdpZHRoL2hlaWdodC9ib3JkZXIvcGFkZGluZy8uLi4g
ZnJvbSB0aGUgUmVuZGVyU3R5bGUgLT4gZm9yIFNWRyB0aGVzZSB2YWx1ZXMgd291bGQgbmV2ZXIg
c2NhbGUsCi0gICAgLy8gaWYgd2UnZCBwYXNzIGEgMS4wIHpvb20gZmFjdG9yIGV2ZXJ5aHdlcmUu
IFNvIHdlIG9ubHkgcGFzcyBhIHpvb20gZmFjdG9yIG9mIDEuMCBmb3Igc3BlY2lmaWMKLSAgICAv
LyBwcm9wZXJ0aWVzIHRoYXQgYXJlIE5PVCBhbGxvd2VkIHRvIHNjYWxlIHdpdGhpbiBhIHpvb21l
ZCBTVkcgZG9jdW1lbnQgKGxldHRlci93b3JkLXNwYWNpbmcvZm9udC1zaXplKS4KLSAgICBib29s
IHVzZVNWR1pvb21SdWxlcyA9IG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgp
OwotCi0gICAgTGVuZ3RoIGw7Ci0gICAgYm9vbCBhcHBseSA9IGZhbHNlOwotCiAgICAgdW5zaWdu
ZWQgc2hvcnQgdmFsdWVUeXBlID0gdmFsdWUtPmNzc1ZhbHVlVHlwZSgpOwogCiAgICAgYm9vbCBp
c0luaGVyaXQgPSBtX3BhcmVudE5vZGUgJiYgdmFsdWVUeXBlID09IENTU1ZhbHVlOjpDU1NfSU5I
RVJJVDsKQEAgLTMyOTEsMjYyNSArMzA0NCw0MTUgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjph
cHBseVByb3BlcnR5KGludAogICAgICAgICAvLyBMaW1pdCB0aGUgcHJvcGVydGllcyB0aGF0IGNh
biBiZSBhcHBsaWVkIHRvIG9ubHkgdGhlIG9uZXMgaG9ub3JlZCBieSA6dmlzaXRlZC4KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworI2RlZmluZSBIQU5ETEVfQ0FTRShQcm9wZXJ0eSkg
XAorY2FzZSBQcm9wZXJ0eTogeyBcCisgICAgaWYgKGlzSW5oZXJpdCkgXAorICAgICAgICBoYW5k
bGVJbmhlcml0IyNQcm9wZXJ0eSh0aGlzKTsgXAorICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgXAor
ICAgICAgICBoYW5kbGVJbml0aWFsIyNQcm9wZXJ0eSh0aGlzKTsgXAorICAgIGVsc2UgXAorICAg
ICAgICBoYW5kbGVWYWx1ZSMjUHJvcGVydHkodGhpcywgdmFsdWUpOyBcCisgICAgcmV0dXJuOyBc
Cit9CisKICAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBsaXN0IHRoYXQgbWFwcyB0aGUgQ1NTIHBy
b3BlcnRpZXMgaW50byB0aGVpciBjb3JyZXNwb25kaW5nIGZyb250LWVuZAogICAgIC8vIFJlbmRl
clN0eWxlIHZhbHVlcy4gIFNob3J0aGFuZHMgKGUuZy4gYm9yZGVyLCBiYWNrZ3JvdW5kKSBvY2N1
ciBpbiB0aGlzIGxpc3QgYXMgd2VsbCBhbmQKICAgICAvLyBhcmUgb25seSBoaXQgd2hlbiBtYXBw
aW5nICJpbmhlcml0IiBvciAiaW5pdGlhbCIgaW50byBmcm9udC1lbmQgdmFsdWVzLgogICAgIENT
U1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCk7CiAg
ICAgc3dpdGNoIChwcm9wZXJ0eSkgewotLy8gaWRlbnQgb25seSBwcm9wZXJ0aWVzCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50OgotICAgICAgICBIQU5ETEVfQkFDS0dS
T1VORF9WQUxVRShhdHRhY2htZW50LCBBdHRhY2htZW50LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcDoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QmFja2dyb3VuZENsaXA6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVF
KGNsaXAsIENsaXAsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGU6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZB
TFVFKGNvbXBvc2l0ZSwgQ29tcG9zaXRlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZ3JvdW5kT3JpZ2luOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShvcmln
aW4sIE9yaWdpbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXpl
OgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShzaXplLCBTaXplLCB2YWx1ZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudDoK
LSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoYXR0YWNobWVudCwgQXR0YWNobWVudCwgdmFsdWUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXA6Ci0g
ICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKGNsaXAsIENsaXAsIHZhbHVlKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGU6Ci0gICAgICAgIEhB
TkRMRV9NQVNLX1ZBTFVFKGNvbXBvc2l0ZSwgQ29tcG9zaXRlLCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luOgotICAgICAgICBIQU5E
TEVfTUFTS19WQUxVRShvcmlnaW4sIE9yaWdpbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1NpemU6Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZB
TFVFKHNpemUsIFNpemUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlckNvbGxhcHNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChi
b3JkZXJDb2xsYXBzZSwgQm9yZGVyQ29sbGFwc2UpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb2xsYXBzZToKLSAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZSh0cnVlKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXBhcmF0ZToKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZShmYWxzZSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZF
X1dJVEhfVkFMVUUoYm9yZGVyVG9wU3R5bGUsIEJvcmRlclRvcFN0eWxlLCBCb3JkZXJTdHlsZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlOgot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFM
VUUoYm9yZGVyUmlnaHRTdHlsZSwgQm9yZGVyUmlnaHRTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShi
b3JkZXJCb3R0b21TdHlsZSwgQm9yZGVyQm90dG9tU3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZToKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKGJvcmRl
ckxlZnRTdHlsZSwgQm9yZGVyTGVmdFN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUob3V0bGluZVN0eWxlLCBPdXRsaW5lU3R5bGUsIEJv
cmRlclN0eWxlKQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVN0eWxlKERPVFRFRCwgdHJ1ZSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVN0eWxlKCpwcmltaXRp
dmVWYWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlDYXB0aW9uU2lkZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRShjYXB0aW9uU2lkZSwgQ2FwdGlvblNpZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENTU1Byb3BlcnR5Q2xlYXI6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUoY2xlYXIsIENsZWFyKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eURpcmVjdGlvbjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxf
QU5EX1BSSU1JVElWRShkaXJlY3Rpb24sIERpcmVjdGlvbikKLSAgICAgICAgaWYgKCFpc0luaGVy
aXQgJiYgIWlzSW5pdGlhbCAmJiBtX2VsZW1lbnQgJiYgbV9lbGVtZW50ID09IG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCi0gICAgICAgICAgICBtX2VsZW1lbnQtPmRv
Y3VtZW50KCktPnNldERpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eURpc3BsYXk6Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoZGlzcGxheSwgRGlzcGxheSkKLSNpZiBF
TkFCTEUoV0NTUykKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVXYXBNYXJxdWVlKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBXQVAgTWFycXVlZSBzdHlsZQotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WChPTUFSUVVFRSk7Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0T3ZlcmZsb3dZKE9NQVJRVUVFKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRXaGl0ZVNwYWNlKE5PV1JBUCk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFy
cXVlZURpcmVjdGlvbihNTEVGVCk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVl
ZVNwZWVkKDg1KTsgLy8gTm9ybWFsIHNwZWVkCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
TWFycXVlZUxvb3BDb3VudCgxKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVl
QmVoYXZpb3IoTVNDUk9MTCk7CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
QXR0YWNobWVudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXApCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kU2l6ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tn
cm91bmRTaXplKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1l
bnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0TWFza1NpemUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBz
ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlDbGVhcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eURpcmVjdGlvbikK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eURpc3BsYXkpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlFbXB0eUNlbGxzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5RmxvYXQpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250U3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlGb250VmFyaWFudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnRXZWln
aHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbikKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlPdmVyZmxvdykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU92ZXJmbG93WCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU92ZXJmbG93WSkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBh
Z2VCcmVha0FmdGVyKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRl
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UG9zaXRpb24pCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlUYWJsZUxheW91dCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVZpc2liaWxpdHkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXaGl0ZVNwYWNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJTcGFj
aW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNw
YWNpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNw
YWNpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlDdXJzb3IpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcikKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZUNv
bG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5QmFja2dyb3VuZEltYWdlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0TWFza0ltYWdlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2Up
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21XaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V29y
ZFNwYWNpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXb3JkQnJlYWspCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXb3JkV3JhcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdE5ic3BNb2RlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TGluZUJy
ZWFrKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJs
b2NrcXVvdGVDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVJlc2l6ZSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU1heFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5TWluV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXaWR0aCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVRvcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxlZnQp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlSaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUJvdHRvbSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU1hcmdpblRvcCkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5TWFyZ2luQm90dG9tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZGRpbmdUb3ApCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlQYWRkaW5nQm90dG9tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFkZGluZ0xlZnQp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0SW5kZW50KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5TWF4SGVpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5SGVpZ2h0
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWluSGVpZ2h0KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZv
bnRTaXplKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5WkluZGV4KQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2lkb3dzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3JwaGFu
cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlUZXh0QWxpZ24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlDbGlw
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Q29udGVudCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlD
b3VudGVyUmVzZXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250RmFtaWx5KQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlab29tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2spCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlCb3JkZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJTdHls
ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlcldpZHRoKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlC
b3JkZXJUb3ApCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUJvcmRlckxlZnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlNYXJnaW4pCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlQYWRkaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5Rm9udCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxpc3RTdHlsZSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU91dGxpbmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRBcHBlYXJhbmNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySW1hZ2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2Up
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wUmlnaHRSYWRpdXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21MZWZ0UmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmln
aHRSYWRpdXMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0KQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZykKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVRleHRTaGFkb3cpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3hTaGFk
b3cpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3cpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0KQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5T3BhY2l0eSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveEFs
aWduKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5U3JjKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5VW5pY29kZVJhbmdlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
QmFja2ZhY2VWaXNpYmlsaXR5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94
RGlyZWN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0Qm94RmxleCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhH
cm91cCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJveFNpemluZykKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uR2FwKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
U3BhbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1ucykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbikKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VXNl
ckRyYWcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkNvbGxhcHNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQmVmb3JlQ29sbGFwc2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Ub3BDb2xsYXBzZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFm
dGVyQ29sbGFwc2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0
b21Db2xsYXBzZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRIeXBoZW5hdGVMb2NhbGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJGaXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVz
dCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtT3JpZ2luWCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9y
aWdpblkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5a
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRGVsYXkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25E
aXJlY3Rpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJh
dGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2Rl
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291
bnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5KQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5UG9pbnRlckV2ZW50cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbG9y
Q29ycmVjdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVNpemUpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlTcGVhaykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUludmFs
aWQpCiAKLSAgICAgICAgICAgICAgICBpZiAobV9wYXJlbnRTdHlsZSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0RGlzcGxheShtX3BhcmVudFN0eWxlLT5kaXNwbGF5KCkpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGlzcGxh
eSgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0RGlzcGxheSgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9CisgICAgLy8g
RGlyZWN0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVzb2x2ZWQgYnkgcmVzb2x2ZURpcmVjdGlvbkF3
YXJlUHJvcGVydHkoKSBiZWZvcmUgdGhlIHN3aXRjaC4KKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckVuZENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5k
U3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0KQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcikKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQmVmb3JlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQmVmb3JlQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXIp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5TdGFydCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkJlZm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVy
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0VuZCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRQYWRkaW5nQWZ0ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRM
b2dpY2FsV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVp
Z2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQpCisgICAgLy8gZW5kIGRpcmVj
dGlvbmFsIHByb3BlcnRpZXMKKworICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Rm9udFN0cmV0
Y2gpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlQYWdlKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5UXVvdGVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJv
dWdoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3IpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGUpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVRleHRPdmVybGluZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRPdmVybGlu
ZUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZSkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dFVuZGVy
bGluZUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGUpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzKQorCisgICAgLy8gQ1NTIFRleHQgTGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBW
ZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dFdyaXRpbmdNb2RlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJp
bmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlv
bikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uKQorI2lmIEVO
QUJMRShXQ1NTKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3ApCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXYXBNYXJxdWVlRGlyKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2FwSW5wdXRGb3Jt
YXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVpcmVkKQorI2VuZGlm
CisjaWYgRU5BQkxFKFNWRykKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBUcnkgdGhlIFNWRyBw
cm9wZXJ0aWVzCisgICAgICAgIGFwcGx5U1ZHUHJvcGVydHkoaWQsIHZhbHVlKTsKICNlbmRpZgot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHM6Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoZW1wdHlDZWxscywgRW1w
dHlDZWxscykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlGbG9hdDoKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShmbG9hdGluZywg
RmxvYXRpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxl
OgotICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAoaXNJbmhlcml0KQotICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhtX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRp
b24oKS5pdGFsaWMoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVPYmxpcXVlOgotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBv
YmxpcXVlIGlzIHRoZSBzYW1lIGFzIGl0YWxpYyBmb3IgdGhlIG1vbWVudC4uLgotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVJdGFsaWM6Ci0gICAgICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRJdGFsaWModHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkgPSB0
cnVlOwotICAgICAgICByZXR1cm47CiAgICAgfQorfQogCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50OgotICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAoaXNJbmhlcml0KSAK
LSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMobV9wYXJlbnRTdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuc21hbGxDYXBzKCkpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRp
YWwpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBzKGZhbHNlKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGludCBpZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpOwotICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoZmFsc2UpOwotICAgICAgICAgICAg
ZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbENhcHMpCi0gICAgICAgICAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldFNtYWxsQ2Fwcyh0cnVlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkgPSB0
cnVlOwordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkoQ1NTVmFs
dWUqIHZhbHVlKQoreworICAgIG1fc3R5bGUtPnJlc2V0UGFnZVNpemVUeXBlKCk7CisgICAgaWYg
KCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNh
c2UgQ1NTUHJvcGVydHlGb250V2VpZ2h0OgotICAgIHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9u
IGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBp
ZiAoaXNJbmhlcml0KQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChtX3Bh
cmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSk7Ci0gICAgICAgIGVsc2UgaWYg
KGlzSW5pdGlhbCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdl
aWdodE5vcm1hbCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkKKyAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVl
TGlzdCo+KHZhbHVlKTsKKyAgICBMZW5ndGggd2lkdGg7CisgICAgTGVuZ3RoIGhlaWdodDsKKyAg
ICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87CisgICAgc3dpdGNo
ICh2YWx1ZUxpc3QtPmxlbmd0aCgpKSB7CisgICAgY2FzZSAyOiB7CisgICAgICAgIC8vIDxsZW5n
dGg+ezJ9IHwgPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgorICAgICAgICBwYWdlU2l6ZVR5cGUg
PSBQQUdFX1NJWkVfUkVTT0xWRUQ7CisgICAgICAgIGlmICghdmFsdWVMaXN0LT5pdGVtKDApLT5p
c1ByaW1pdGl2ZVZhbHVlKCkgfHwgIXZhbHVlTGlzdC0+aXRlbSgxKS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZUxpc3Qt
Pml0ZW0oMCkpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUxID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZUxpc3QtPml0ZW0oMSkpOworICAg
ICAgICBpbnQgdHlwZTAgPSBwcmltaXRpdmVWYWx1ZTAtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAg
ICAgaW50IHR5cGUxID0gcHJpbWl0aXZlVmFsdWUxLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAg
IGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlMCkpIHsKKyAgICAg
ICAgICAgIC8vIDxsZW5ndGg+ezJ9CisgICAgICAgICAgICBpZiAoIUNTU1ByaW1pdGl2ZVZhbHVl
Ojppc1VuaXRUeXBlTGVuZ3RoKHR5cGUxKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB3aWR0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZTAtPmNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOworICAgICAgICAg
ICAgaGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlMS0+Y29tcHV0ZUxlbmd0aEludEZvckxl
bmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvLyA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+CisgICAgICAgICAg
ICAvLyBUaGUgdmFsdWUgb3JkZXIgaXMgZ3VhcmFudGVlZC4gU2VlIENTU1BhcnNlcjo6cGFyc2VT
aXplUGFyYW1ldGVyLgorICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKHByaW1pdGl2
ZVZhbHVlMCwgcHJpbWl0aXZlVmFsdWUxLCB3aWR0aCwgaGVpZ2h0KSkKICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsK
LSAgICAgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVCb2xkZXI6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KGZvbnREZXNjcmlwdGlvbi5ib2xkZXJX
ZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUxpZ2h0ZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0V2VpZ2h0KGZvbnREZXNjcmlwdGlvbi5saWdodGVyV2VpZ2h0KCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVCb2xkOgotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlNzAwOgotICAg
ICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0
Qm9sZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZTQwMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQo
Rm9udFdlaWdodE5vcm1hbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZTkwMDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDkwMCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZTgwMDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdl
aWdodDgwMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZTYwMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDYwMCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZTUwMDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDUwMCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZTMwMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRXZWlnaHQoRm9udFdlaWdodDMwMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZTIwMDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDIwMCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZTEwMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQo
Rm9udFdlaWdodDEwMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9u
dERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0eSA9
IHRydWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAK
LSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobGlzdFN0eWxlUG9zaXRpb24sIExpc3RT
dHlsZVBvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RT
dHlsZVR5cGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJ
VkUobGlzdFN0eWxlVHlwZSwgTGlzdFN0eWxlVHlwZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKLSAgICB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WChtX3BhcmVudFN0eWxlLT5vdmVyZmxv
d1goKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1kobV9wYXJlbnRTdHlsZS0+
b3ZlcmZsb3dZKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxv
d1goUmVuZGVyU3R5bGU6OmluaXRpYWxPdmVyZmxvd1goKSk7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRPdmVyZmxvd1koUmVuZGVyU3R5bGU6OmluaXRpYWxPdmVyZmxvd1koKSk7CisgICAgY2Fz
ZSAxOiB7CisgICAgICAgIC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBwb3J0
cmFpdCB8IGxhbmRzY2FwZV0KKyAgICAgICAgaWYgKCF2YWx1ZUxpc3QtPml0ZW0oMCktPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZUxpc3QtPml0ZW0oMCkpOworICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5w
cmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlw
ZUxlbmd0aCh0eXBlKSkgeworICAgICAgICAgICAgLy8gPGxlbmd0aD4KKyAgICAgICAgICAgIHBh
Z2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKKyAgICAgICAgICAgIHdpZHRoID0gaGVp
Z2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0
eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGlmICh0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgICAg
ICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUG9ydHJhaXQ6CisgICAgICAgICAgICAgICAg
cGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9fUE9SVFJBSVQ7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBlOgorICAgICAgICAgICAg
ICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPX0xBTkRTQ0FQRTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgLy8gPHBh
Z2Utc2l6ZT4KKyAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xW
RUQ7CisgICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKHByaW1pdGl2ZVZhbHVl
LCAwLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgRU92ZXJmbG93IG8gPSAq
cHJpbWl0aXZlVmFsdWU7Ci0KLSAgICAgICAgbV9zdHlsZS0+c2V0T3ZlcmZsb3dYKG8pOwotICAg
ICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1kobyk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
YnJlYWs7CiAgICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93WDoKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShvdmVyZmxvd1gsIE92ZXJm
bG93WCkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1k6Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUob3ZlcmZsb3dZ
LCBPdmVyZmxvd1kpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJy
ZWFrQmVmb3JlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlU
SVZFX1dJVEhfVkFMVUUocGFnZUJyZWFrQmVmb3JlLCBQYWdlQnJlYWtCZWZvcmUsIFBhZ2VCcmVh
aykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZB
TFVFKHBhZ2VCcmVha0FmdGVyLCBQYWdlQnJlYWtBZnRlciwgUGFnZUJyZWFrKQotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZTogewotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZBTFVFKHBhZ2VCcmVha0luc2lkZSwgUGFn
ZUJyZWFrSW5zaWRlLCBQYWdlQnJlYWspCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFrID0gKnByaW1p
dGl2ZVZhbHVlOwotICAgICAgICBpZiAocGFnZUJyZWFrICE9IFBCQUxXQVlTKQotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0UGFnZUJyZWFrSW5zaWRlKHBhZ2VCcmVhayk7CisgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVBv
c2l0aW9uOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZF
KHBvc2l0aW9uLCBQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlUYWJsZUxheW91dDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0YWJs
ZUxheW91dCwgVGFibGVMYXlvdXQpCisgICAgbV9zdHlsZS0+c2V0UGFnZVNpemVUeXBlKHBhZ2VT
aXplVHlwZSk7CisgICAgbV9zdHlsZS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVp
Z2h0KSk7CisgICAgcmV0dXJuOworfQogCi0gICAgICAgIEVUYWJsZUxheW91dCBsID0gKnByaW1p
dGl2ZVZhbHVlOwotICAgICAgICBpZiAobCA9PSBUQVVUTykKLSAgICAgICAgICAgIGwgPSBSZW5k
ZXJTdHlsZTo6aW5pdGlhbFRhYmxlTGF5b3V0KCk7Citib29sIENTU1N0eWxlU2VsZWN0b3I6OnBh
Z2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0
aXZlVmFsdWUqIHBhZ2VPcmllbnRhdGlvbiwgTGVuZ3RoJiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQp
Cit7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBhNVdpZHRoID0gbW1MZW5ndGgoMTQ4KSwgYTVI
ZWlnaHQgPSBtbUxlbmd0aCgyMTApOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTRXaWR0aCA9
IG1tTGVuZ3RoKDIxMCksIGE0SGVpZ2h0ID0gbW1MZW5ndGgoMjk3KTsKKyAgICBzdGF0aWMgY29u
c3QgTGVuZ3RoIGEzV2lkdGggPSBtbUxlbmd0aCgyOTcpLCBhM0hlaWdodCA9IG1tTGVuZ3RoKDQy
MCk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBiNVdpZHRoID0gbW1MZW5ndGgoMTc2KSwgYjVI
ZWlnaHQgPSBtbUxlbmd0aCgyNTApOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYjRXaWR0aCA9
IG1tTGVuZ3RoKDI1MCksIGI0SGVpZ2h0ID0gbW1MZW5ndGgoMzUzKTsKKyAgICBzdGF0aWMgY29u
c3QgTGVuZ3RoIGxldHRlcldpZHRoID0gaW5jaExlbmd0aCg4LjUpLCBsZXR0ZXJIZWlnaHQgPSBp
bmNoTGVuZ3RoKDExKTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZ2FsV2lkdGggPSBpbmNo
TGVuZ3RoKDguNSksIGxlZ2FsSGVpZ2h0ID0gaW5jaExlbmd0aCgxNCk7CisgICAgc3RhdGljIGNv
bnN0IExlbmd0aCBsZWRnZXJXaWR0aCA9IGluY2hMZW5ndGgoMTEpLCBsZWRnZXJIZWlnaHQgPSBp
bmNoTGVuZ3RoKDE3KTsKIAotICAgICAgICBtX3N0eWxlLT5zZXRUYWJsZUxheW91dChsKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpOiAKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElW
RSh1bmljb2RlQmlkaSwgVW5pY29kZUJpZGkpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFRyYW5zZm9ybTogCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMX0FORF9QUklNSVRJVkUodGV4dFRyYW5zZm9ybSwgVGV4dFRyYW5zZm9ybSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OgotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHZpc2liaWxpdHksIFZpc2liaWxpdHkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2hpdGVTcGFjZToKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh3aGl0ZVNwYWNlLCBX
aGl0ZVNwYWNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9JTkhFUklUX0FORF9JTklU
SUFMKHhQb3NpdGlvbiwgWFBvc2l0aW9uKTsKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfSU5I
RVJJVF9BTkRfSU5JVElBTCh5UG9zaXRpb24sIFlQb3NpdGlvbik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWDogewotICAgICAgICBIQU5E
TEVfQkFDS0dST1VORF9WQUxVRSh4UG9zaXRpb24sIFhQb3NpdGlvbiwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk6
IHsKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoeVBvc2l0aW9uLCBZUG9zaXRpb24s
IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwo
eFBvc2l0aW9uLCBYUG9zaXRpb24pOwotICAgICAgICBIQU5ETEVfTUFTS19JTkhFUklUX0FORF9J
TklUSUFMKHlQb3NpdGlvbiwgWVBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YOiB7Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZB
TFVFKHhQb3NpdGlvbiwgWFBvc2l0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWTogewotICAgICAgICBIQU5E
TEVfTUFTS19WQUxVRSh5UG9zaXRpb24sIFlQb3NpdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQ6Ci0gICAgICAg
IEhBTkRMRV9CQUNLR1JPVU5EX0lOSEVSSVRfQU5EX0lOSVRJQUwocmVwZWF0WCwgUmVwZWF0WCk7
Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX0lOSEVSSVRfQU5EX0lOSVRJQUwocmVwZWF0WSwg
UmVwZWF0WSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdFg6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKHJlcGVhdFgsIFJlcGVh
dFgsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRZOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShyZXBlYXRZLCBSZXBl
YXRZLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0OgotICAgICAgICBIQU5ETEVfTUFTS19JTkhFUklUX0FORF9JTklUSUFMKHJlcGVh
dFgsIFJlcGVhdFgpOwotICAgICAgICBIQU5ETEVfTUFTS19JTkhFUklUX0FORF9JTklUSUFMKHJl
cGVhdFksIFJlcGVhdFkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRYOgotICAgICAgICBIQU5ETEVfTUFTS19WQUxVRShyZXBlYXRYLCBSZXBl
YXRYLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0WToKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUocmVwZWF0WSwgUmVwZWF0WSwg
dmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2lu
ZzogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRI
b3Jpem9udGFsQm9yZGVyU3BhY2luZyhtX3BhcmVudFN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3Bh
Y2luZygpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyht
X3BhcmVudFN0eWxlLT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIb3Jpem9u
dGFsQm9yZGVyU3BhY2luZygwKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQm9y
ZGVyU3BhY2luZygwKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZzogewotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChob3Jpem9udGFsQm9yZGVyU3BhY2luZywgSG9yaXpv
bnRhbEJvcmRlclNwYWNpbmcpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIHNob3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29t
cHV0ZUxlbmd0aFNob3J0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7
Ci0gICAgICAgIG1fc3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJW
ZXJ0aWNhbFNwYWNpbmc6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodmVy
dGljYWxCb3JkZXJTcGFjaW5nLCBWZXJ0aWNhbEJvcmRlclNwYWNpbmcpCi0gICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNob3J0IHNwYWNp
bmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQm9y
ZGVyU3BhY2luZyhzcGFjaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENT
U1Byb3BlcnR5Q3Vyc29yOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRDdXJzb3IobV9wYXJlbnRTdHlsZS0+Y3Vyc29yKCkpOwotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Q3Vyc29yTGlzdChtX3BhcmVudFN0eWxlLT5jdXJzb3JzKCkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUtPmNsZWFyQ3Vyc29yTGlz
dCgpOwotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRD
dXJzb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDdXJzb3IoKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAg
ICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1
ZSk7Ci0gICAgICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRDdXJzb3IoQ1VSU09SX0FVVE8pOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlz
dC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0ZW0t
PmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGl0ZW0pOwotICAgICAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1VSSSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmlzQ3Vyc29ySW1hZ2VWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NDdXJz
b3JJbWFnZVZhbHVlKiBpbWFnZSA9IHN0YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFsdWUqPihw
cmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnVwZGF0
ZUlmU1ZHQ3Vyc29ySXNVc2VkKG1fZWxlbWVudCkpIC8vIEVsZW1lbnRzIHdpdGggU1ZHIGN1cnNv
cnMgYXJlIG5vdCBhbGxvd2VkIHRvIHNoYXJlIHN0eWxlLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldFVuaXF1ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9z
dHlsZS0+YWRkQ3Vyc29yKGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUN1cnNv
ciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lE
RU5UKQotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZh
bHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZSkg
ewotICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgp
OwotICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAm
JiBtX3N0eWxlLT5jdXJzb3IoKSAhPSBFQ3Vyc29yKCpwcmltaXRpdmVWYWx1ZSkpCi0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Q3Vyc29yKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotLy8gY29sb3JzIHx8IGluaGVyaXQKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Q29sb3I6Ci0gICAgICAgIC8vIElmIHRoZSAnY3VycmVudENvbG9yJyBrZXl3b3JkIGlzIHNl
dCBvbiB0aGUgJ2NvbG9yJyBwcm9wZXJ0eSBpdHNlbGYsCi0gICAgICAgIC8vIGl0IGlzIHRyZWF0
ZWQgYXMgJ2NvbG9yOmluaGVyaXQnIGF0IHBhcnNlIHRpbWUKLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ3VycmVudGNv
bG9yKQotICAgICAgICAgICAgaXNJbmhlcml0ID0gdHJ1ZTsKLSAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJv
a2VDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6IHsKLSAgICAgICAgQ29sb3Ig
Y29sOwotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9DT05EKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IsIEJhY2tn
cm91bmRDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9CQUNLVVAo
Q1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgYm9yZGVyVG9wQ29sb3IsIGNvbG9yLCBCb3JkZXJU
b3BDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9CQUNLVVAoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgYm9yZGVyQm90dG9tQ29sb3IsIGNvbG9yLCBCb3Jk
ZXJCb3R0b21Db2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9CQUNL
VVAoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBib3JkZXJSaWdodENvbG9yLCBjb2xvciwg
Qm9yZGVyUmlnaHRDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9C
QUNLVVAoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIGJvcmRlckxlZnRDb2xvciwgY29sb3Is
IEJvcmRlckxlZnRDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJv
cGVydHlDb2xvciwgY29sb3IsIENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09O
RF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwgb3V0bGluZUNvbG9yLCBjb2xv
ciwgT3V0bGluZUNvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JB
Q0tVUChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgY29sdW1uUnVsZUNvbG9yLCBj
b2xvciwgQ29sdW1uUnVsZUNvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9X
SVRIX0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgdGV4dFN0cm9rZUNv
bG9yLCBjb2xvciwgVGV4dFN0cm9rZUNvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRf
Q09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yLCB0ZXh0
RW1waGFzaXNDb2xvciwgY29sb3IsIFRleHRFbXBoYXNpc0NvbG9yKQotICAgICAgICAgICAgSEFO
RExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29s
b3IsIHRleHRGaWxsQ29sb3IsIGNvbG9yLCBUZXh0RmlsbENvbG9yKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIC8v
IFRoZSBib3JkZXIvb3V0bGluZSBjb2xvcnMgd2lsbCBqdXN0IG1hcCB0byB0aGUgaW52YWxpZCBj
b2xvciB8Y29sfCBhYm92ZS4gIFRoaXMgd2lsbCBoYXZlIHRoZQotICAgICAgICAgICAgLy8gZWZm
ZWN0IG9mIGZvcmNpbmcgdGhlIHVzZSBvZiB0aGUgY3VycmVudENvbG9yIHdoZW4gaXQgY29tZXMg
dGltZSB0byBkcmF3IHRoZSBib3JkZXJzIChhbmQgb2YKLSAgICAgICAgICAgIC8vIG5vdCBwYWlu
dGluZyB0aGUgYmFja2dyb3VuZCBzaW5jZSB0aGUgY29sb3Igd29uJ3QgYmUgdmFsaWQpLgotICAg
ICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5Q29sb3IpCi0gICAgICAgICAgICAgICAgY29s
ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBjb2wgPSBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShwcmltaXRpdmVWYWx1ZSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCYWNrZ3JvdW5k
Q29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BDb2xvcihj
b2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodENvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRDb2xvcihjb2wp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21Db2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbUNvbG9yKGNvbCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRDb2xvcihjb2wpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE91
dGxpbmVDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1
bW5SdWxlQ29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4
dFN0cm9rZUNvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
VGV4dEVtcGhhc2lzQ29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dFRleHRGaWxsQ29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotLy8gdXJpIHx8IGluaGVyaXQKLSAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlOgotICAgICAgICBIQU5ETEVfQkFDS0dS
T1VORF9WQUxVRShpbWFnZSwgSW1hZ2UsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZToKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUo
aW1hZ2UsIEltYWdlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlMaXN0U3R5bGVJbWFnZToKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKGxpc3RTdHlsZUltYWdlLCBMaXN0U3R5bGVJbWFnZSkKLSAgICAgICAgbV9zdHlsZS0+c2V0
TGlzdFN0eWxlSW1hZ2Uoc3R5bGVJbWFnZShDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCB2YWx1
ZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0vLyBsZW5ndGgKLSAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyVG9wV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lk
dGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0
aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoOgotICAgIHsKLSAg
ICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBib3JkZXJUb3BXaWR0aCwgQm9yZGVyVG9wV2lkdGgp
Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRX
aWR0aCwgYm9yZGVyUmlnaHRXaWR0aCwgQm9yZGVyUmlnaHRXaWR0aCkKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgYm9yZGVyQm90
dG9tV2lkdGgsIEJvcmRlckJvdHRvbVdpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRf
Q09ORChDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgYm9yZGVyTGVmdFdpZHRoLCBCb3JkZXJM
ZWZ0V2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoLCBvdXRsaW5lV2lkdGgsIE91dGxpbmVXaWR0aCkKLSAgICAgICAgICAgIEhBTkRM
RV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIGNvbHVtblJ1
bGVXaWR0aCwgQ29sdW1uUnVsZVdpZHRoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJ
QUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIEJvcmRlclRvcFdp
ZHRoLCBCb3JkZXJXaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9W
QUxVRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIEJvcmRlclJpZ2h0V2lkdGgsIEJvcmRl
cldpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIEJvcmRlckJvdHRvbVdpZHRoLCBCb3JkZXJXaWR0aCkK
LSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUJv
cmRlckxlZnRXaWR0aCwgQm9yZGVyTGVmdFdpZHRoLCBCb3JkZXJXaWR0aCkKLSAgICAgICAgICAg
IEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwg
T3V0bGluZVdpZHRoLCBCb3JkZXJXaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NP
TkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgQ29sdW1uUnVs
ZVdpZHRoLCBCb3JkZXJXaWR0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHNob3J0IHdpZHRoID0gMzsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSkgewotICAgICAgICBjYXNlIENTU1ZhbHVlVGhpbjoKLSAgICAgICAgICAgIHdpZHRoID0g
MTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgotICAg
ICAgICAgICAgd2lkdGggPSAzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NT
VmFsdWVUaGljazoKLSAgICAgICAgICAgIHdpZHRoID0gNTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKLSAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0
aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhTaG9ydChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUs
IHpvb21GYWN0b3IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAod2lkdGggPCAwKSByZXR1
cm47Ci0gICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgod2lkdGgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dFdpZHRoOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRXaWR0aCh3aWR0aCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tV2lkdGgod2lkdGgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
V2lkdGg6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgod2lkdGgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGg6
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lV2lkdGgod2lkdGgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGg6
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5SdWxlV2lkdGgod2lkdGgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRGb250U21vb3RoaW5nOiB7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkg
Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Rm9udFNtb290aGluZyhtX3BhcmVudFN0
eWxlLT5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwotICAgICAgICBlbHNlIGlm
IChpc0luaXRpYWwpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Rm9udFNtb290aGlu
ZyhBdXRvU21vb3RoaW5nKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1p
dGl2ZVZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGludCBpZCA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOwotICAgICAgICAgICAgRm9udFNtb290aGluZ01v
ZGUgc21vb3RoaW5nOwotICAgICAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmcgPSBBdXRv
U21vb3RoaW5nOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc21vb3RoaW5nID0gTm9TbW9v
dGhpbmc7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVBbnRpYWxpYXNlZDoKLSAgICAgICAgICAgICAgICAgICAgc21vb3RoaW5nID0gQW50
aWFsaWFzZWQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVTdWJwaXhlbEFudGlhbGlhc2VkOgotICAgICAgICAgICAgICAgICAgICBzbW9v
dGhpbmcgPSBTdWJwaXhlbEFudGlhbGlhc2VkOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAgICAgc21vb3RoaW5nID0gQXV0b1Ntb290aGlu
ZzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21v
b3RoaW5nKHNtb290aGluZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkg
PSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxl
dHRlclNwYWNpbmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgotICAgIHsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhF
UklUX0NPTkQoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLCBsZXR0ZXJTcGFjaW5nLCBMZXR0ZXJT
cGFjaW5nKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVdvcmRT
cGFjaW5nLCB3b3JkU3BhY2luZywgV29yZFNwYWNpbmcpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBIQU5E
TEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLCBMZXR0
ZXJTcGFjaW5nLCBMZXR0ZXJXb3JkU3BhY2luZykKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFM
X0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nLCBXb3JkU3BhY2luZywgTGV0
dGVyV29yZFNwYWNpbmcpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGludCB3aWR0aCA9IDA7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkgewotICAgICAgICAg
ICAgd2lkdGggPSAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3aWR0aCA9IHBy
aW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgdXNlU1ZHWm9vbVJ1bGVzID8gMS4wZiA6IHpvb21GYWN0b3IpOwotICAgICAgICB9Ci0gICAg
ICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMZXR0ZXJTcGFjaW5nKHdpZHRoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRXb3JkU3BhY2luZyh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIC8vICMjIyBuZWVkcyB0aGUgZGVmaW5pdGlvbnMgaW4gcmVuZGVyc3R5bGUK
LSAgICAgICAgZGVmYXVsdDogYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUod29yZEJyZWFrLCBXb3JkQnJlYWspCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFdyYXA6Ci0gICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUod29yZFdyYXAsIFdvcmRXcmFwKQot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlOgotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG5ic3BNb2RlLCBO
QlNQTW9kZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRMaW5l
QnJlYWs6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUo
a2h0bWxMaW5lQnJlYWssIEtIVE1MTGluZUJyZWFrKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3I6Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobWF0Y2hOZWFyZXN0
TWFpbEJsb2NrcXVvdGVDb2xvciwgTWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVJlc2l6ZToKLSAgICB7Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHJlc2l6ZSwgUmVzaXplKQotCi0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgRVJlc2l6ZSByID0gUkVTSVpFX05PTkU7Ci0gICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKLSAgICAgICAgICAgIGlmIChTZXR0
aW5ncyogc2V0dGluZ3MgPSBtX2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKSkKLSAgICAg
ICAgICAgICAgICByID0gc2V0dGluZ3MtPnRleHRBcmVhc0FyZVJlc2l6YWJsZSgpID8gUkVTSVpF
X0JPVEggOiBSRVNJWkVfTk9ORTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByID0gKnBy
aW1pdGl2ZVZhbHVlOwotICAgICAgICAgICAgCi0gICAgICAgIG1fc3R5bGUtPnNldFJlc2l6ZShy
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICAvLyBsZW5ndGgsIHBlcmNlbnQK
LSAgICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6Ci0gICAgICAgIC8vICtub25lICtpbmhlcml0
Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVRvcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKLSAgICBjYXNlIENTU1By
b3BlcnR5UmlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToKLSAgICBjYXNlIENTU1By
b3BlcnR5V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRoOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW5Ub3A6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OgotICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdp
bkxlZnQ6Ci0gICAgICAgIC8vICtpbmhlcml0ICthdXRvCi0gICAgICAgIGlmIChpZCA9PSBDU1NQ
cm9wZXJ0eVdpZHRoIHx8IGlkID09IENTU1Byb3BlcnR5TWluV2lkdGggfHwgaWQgPT0gQ1NTUHJv
cGVydHlNYXhXaWR0aCkgewotICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW50cmluc2ljKSB7Ci0gICAgICAgICAg
ICAgICAgbCA9IExlbmd0aChJbnRyaW5zaWMpOwotICAgICAgICAgICAgICAgIGFwcGx5ID0gdHJ1
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlICYm
IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTWluSW50cmluc2ljKSB7Ci0g
ICAgICAgICAgICAgICAgbCA9IExlbmd0aChNaW5JbnRyaW5zaWMpOwotICAgICAgICAgICAgICAg
IGFwcGx5ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoaWQg
IT0gQ1NTUHJvcGVydHlNYXhXaWR0aCAmJiBwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICBhcHBseSA9IHRydWU7
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdUb3A6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBh
ZGRpbmdSaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKLSAgICBjYXNl
IENTU1Byb3BlcnR5UGFkZGluZ0xlZnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6
Ci0gICAgICAgIC8vICtpbmhlcml0Ci0gICAgewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0g
ICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TWF4V2lkdGgsIG1heFdp
ZHRoLCBNYXhXaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVy
dHlCb3R0b20sIGJvdHRvbSwgQm90dG9tKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09O
RChDU1NQcm9wZXJ0eVRvcCwgdG9wLCBUb3ApCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9D
T05EKENTU1Byb3BlcnR5TGVmdCwgbGVmdCwgTGVmdCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhF
UklUX0NPTkQoQ1NTUHJvcGVydHlSaWdodCwgcmlnaHQsIFJpZ2h0KQotICAgICAgICAgICAgSEFO
RExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVdpZHRoLCB3aWR0aCwgV2lkdGgpCi0gICAgICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TWluV2lkdGgsIG1pbldpZHRoLCBN
aW5XaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlQYWRk
aW5nVG9wLCBwYWRkaW5nVG9wLCBQYWRkaW5nVG9wKQotICAgICAgICAgICAgSEFORExFX0lOSEVS
SVRfQ09ORChDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgcGFkZGluZ1JpZ2h0LCBQYWRkaW5nUmln
aHQpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5UGFkZGluZ0Jv
dHRvbSwgcGFkZGluZ0JvdHRvbSwgUGFkZGluZ0JvdHRvbSkKLSAgICAgICAgICAgIEhBTkRMRV9J
TkhFUklUX0NPTkQoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgcGFkZGluZ0xlZnQsIFBhZGRpbmdM
ZWZ0KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU1hcmdpblRv
cCwgbWFyZ2luVG9wLCBNYXJnaW5Ub3ApCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05E
KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIG1hcmdpblJpZ2h0LCBNYXJnaW5SaWdodCkKLSAgICAg
ICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIG1hcmdp
bkJvdHRvbSwgTWFyZ2luQm90dG9tKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChD
U1NQcm9wZXJ0eU1hcmdpbkxlZnQsIG1hcmdpbkxlZnQsIE1hcmdpbkxlZnQpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5VGV4dEluZGVudCwgdGV4dEluZGVudCwg
VGV4dEluZGVudCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9W
QUxVRShDU1NQcm9wZXJ0eU1heFdpZHRoLCBNYXhXaWR0aCwgTWF4U2l6ZSkKLSAgICAgICAgICAg
IEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUJvdHRvbSwgQm90dG9t
LCBPZmZzZXQpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NT
UHJvcGVydHlUb3AsIFRvcCwgT2Zmc2V0KQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09O
RF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TGVmdCwgTGVmdCwgT2Zmc2V0KQotICAgICAgICAgICAg
SEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5UmlnaHQsIFJpZ2h0LCBP
ZmZzZXQpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJv
cGVydHlXaWR0aCwgV2lkdGgsIFNpemUpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05E
X1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNaW5XaWR0aCwgTWluV2lkdGgsIE1pblNpemUpCi0gICAg
ICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5n
VG9wLCBQYWRkaW5nVG9wLCBQYWRkaW5nKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09O
RF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBQYWRkaW5nUmlnaHQsIFBhZGRp
bmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVy
dHlQYWRkaW5nQm90dG9tLCBQYWRkaW5nQm90dG9tLCBQYWRkaW5nKQotICAgICAgICAgICAgSEFO
RExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ0xlZnQsIFBhZGRp
bmdMZWZ0LCBQYWRkaW5nKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZB
TFVFKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBNYXJnaW5Ub3AsIE1hcmdpbikKLSAgICAgICAgICAg
IEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBN
YXJnaW5SaWdodCwgTWFyZ2luKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRI
X1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBNYXJnaW5Cb3R0b20sIE1hcmdpbikKLSAg
ICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdp
bkxlZnQsIE1hcmdpbkxlZnQsIE1hcmdpbikKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NP
TkQoQ1NTUHJvcGVydHlUZXh0SW5kZW50LCBUZXh0SW5kZW50KQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9IAotCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiAhYXBwbHkpIHsK
LSAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsK
LSAgICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBl
KSkKLSAgICAgICAgICAgICAgICAvLyBIYW5kbGUgb3VyIHF1aXJreSBtYXJnaW4gdW5pdHMgaWYg
d2UgaGF2ZSB0aGVtLgotICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUt
PmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKSwgRml4ZWQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWl0aXZl
VmFsdWUtPmlzUXVpcmtWYWx1ZSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgICAgIGwgPSBMZW5n
dGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWFwcGx5KSByZXR1cm47Ci0gICAgICAgIHN3aXRj
aCAoaWQpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXhXaWR0aChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206Ci0gICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Qm90dG9tKGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRvcDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRUb3AobCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGVm
dDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRMZWZ0KGwpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldFJpZ2h0KGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dFdpZHRoKGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1pbldpZHRoOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1pbldpZHRoKGwp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBh
ZGRpbmdUb3A6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ1RvcChsKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
UmlnaHQ6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ1JpZ2h0KGwpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdC
b3R0b206Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ0JvdHRvbShsKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5n
TGVmdDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nTGVmdChsKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Ub3A6
Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luVG9wKGwpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OgotICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpblJpZ2h0KGwpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbToKLSAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5Cb3R0b20obCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luTGVmdDoKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5MZWZ0KGwpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6Ci0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0VGV4dEluZGVudChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0
OgotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVOb25lKSB7Ci0gICAgICAgICAgICBsID0gTGVuZ3RoKHVuZGVmaW5lZExl
bmd0aCwgRml4ZWQpOwotICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAgICB9Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0Ogot
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVJbnRyaW5zaWMpIHsKLSAgICAgICAgICAgIGwgPSBMZW5ndGgoSW50cmluc2lj
KTsKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU1pbkludHJp
bnNpYykgewotICAgICAgICAgICAgbCA9IExlbmd0aChNaW5JbnRyaW5zaWMpOwotICAgICAgICAg
ICAgYXBwbHkgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGlkICE9IENTU1Byb3BlcnR5TWF4
SGVpZ2h0ICYmIHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICAgICAgaWYgKGlz
SW5oZXJpdCkgewotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU1h
eEhlaWdodCwgbWF4SGVpZ2h0LCBNYXhIZWlnaHQpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9DT05EKENTU1Byb3BlcnR5SGVpZ2h0LCBoZWlnaHQsIEhlaWdodCkKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNaW5IZWlnaHQsIG1pbkhlaWdodCwgTWluSGVp
Z2h0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luaXRp
YWwpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9w
ZXJ0eU1heEhlaWdodCwgTWF4SGVpZ2h0LCBNYXhTaXplKQotICAgICAgICAgICAgSEFORExFX0lO
SVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5SGVpZ2h0LCBIZWlnaHQsIFNpemUpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNaW5I
ZWlnaHQsIE1pbkhlaWdodCwgTWluU2l6ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiAhYXBwbHkpIHsKLSAgICAgICAgICAg
IHVuc2lnbmVkIHNob3J0IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwot
ICAgICAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUp
KQotICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwg
Rml4ZWQpOwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1
ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAgICB9Ci0g
ICAgICAgIGlmIChhcHBseSkKLSAgICAgICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5TWF4SGVpZ2h0OgotICAgICAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRNYXhIZWlnaHQobCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlIZWlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldEhlaWdodChsKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKLSAgICAgICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0TWluSGVpZ2h0KGwpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVZlcnRp
Y2FsQWxpZ246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHZlcnRpY2FsQWxp
Z24sIFZlcnRpY2FsQWxpZ24pCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewot
ICAgICAgICAgIEVWZXJ0aWNhbEFsaWduIGFsaWduOwotCi0gICAgICAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVU
b3A6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gVE9QOyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlQm90dG9tOgotICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IEJP
VFRPTTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU1pZGRsZToKLSAgICAg
ICAgICAgICAgICAgICAgYWxpZ24gPSBNSURETEU7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVCYXNlbGluZToKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBCQVNFTElO
RTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRleHRCb3R0b206Ci0gICAg
ICAgICAgICAgICAgICAgIGFsaWduID0gVEVYVF9CT1RUT007IGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVUZXh0VG9wOgotICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFRF
WFRfVE9QOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3ViOgotICAgICAg
ICAgICAgICAgICAgICBhbGlnbiA9IFNVQjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVN1cGVyOgotICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFNVUEVSOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0QmFzZWxpbmVNaWRkbGU6Ci0gICAg
ICAgICAgICAgICAgICAgIGFsaWduID0gQkFTRUxJTkVfTUlERExFOyBicmVhazsKLSAgICAgICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxBbGlnbihhbGlnbik7Ci0gICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0
aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgICBMZW5ndGggbDsKLSAgICAgICAg
ICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAg
ICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3Ro
KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvciksIEZpeGVkKTsKLSAgICAg
ICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkK
LSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCks
IFBlcmNlbnQpOwotCi0gICAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxBbGlnbihMRU5HVEgp
OwotICAgICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQWxpZ25MZW5ndGgobCk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTaXplOgotICAg
IHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpOwotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUo
MCk7Ci0gICAgICAgIGZsb2F0IG9sZFNpemUgPSAwOwotICAgICAgICBmbG9hdCBzaXplID0gMDsK
LSAgICAgICAgCi0gICAgICAgIGJvb2wgcGFyZW50SXNBYnNvbHV0ZVNpemUgPSBmYWxzZTsKLSAg
ICAgICAgaWYgKG1fcGFyZW50Tm9kZSkgewotICAgICAgICAgICAgb2xkU2l6ZSA9IG1fcGFyZW50
U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsKLSAgICAgICAgICAgIHBh
cmVudElzQWJzb2x1dGVTaXplID0gbV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXNB
YnNvbHV0ZVNpemUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAg
ICAgICAgICAgIHNpemUgPSBvbGRTaXplOwotICAgICAgICAgICAgaWYgKG1fcGFyZW50Tm9kZSkK
LSAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUobV9wYXJlbnRT
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkua2V5d29yZFNpemUoKSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBzaXplID0gZm9udFNpemVGb3JLZXl3b3JkKG1f
Y2hlY2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZU1lZGl1bSwgZm9udERlc2NyaXB0aW9uLnVzZUZp
eGVkRGVmYXVsdFNpemUoKSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29y
ZFNpemUoQ1NTVmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKLSAgICAgICAgfSBl
bHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgLy8gS2V5
d29yZHMgYXJlIGJlaW5nIHVzZWQuCi0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVh4U21hbGw6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVhTbWFsbDoKLSAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlU21hbGw6Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKLSAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFyZ2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVhMYXJnZToKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlWHhMYXJnZToKLSAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0WHh4TGFyZ2U6Ci0gICAgICAgICAgICAg
ICAgICAgIHNpemUgPSBmb250U2l6ZUZvcktleXdvcmQobV9jaGVja2VyLm1fZG9jdW1lbnQsIHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0
U2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRT
aXplKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVM
YXJnZXI6Ci0gICAgICAgICAgICAgICAgICAgIHNpemUgPSBsYXJnZXJGb250U2l6ZShvbGRTaXpl
LCBtX2NoZWNrZXIubV9kb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGxlcjoKLSAgICAg
ICAgICAgICAgICAgICAgc2l6ZSA9IHNtYWxsZXJGb250U2l6ZShvbGRTaXplLCBtX2NoZWNrZXIu
bV9kb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRl
U2l6ZShwYXJlbnRJc0Fic29sdXRlU2l6ZSAmJiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVMYXJnZXIgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVTbWFsbGVyKSk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNp
emUocGFyZW50SXNBYnNvbHV0ZVNpemUgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAodHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyAmJiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0VYUyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUykpOwotICAgICAgICAgICAgaWYgKENT
U1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgICAg
IHNpemUgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KG1fcGFyZW50U3R5bGUs
IG1fcm9vdEVsZW1lbnRTdHlsZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgICAgICBzaXpl
ID0gKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkgKiBvbGRTaXplKSAvIDEwMC4wZjsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc2V0
Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKLSAgICAgICAgaWYgKG1fc3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGly
dHkgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVpJbmRleDogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBpZiAobV9w
YXJlbnRTdHlsZS0+aGFzQXV0b1pJbmRleCgpKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEhhc0F1dG9aSW5kZXgoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRaSW5kZXgobV9wYXJlbnRTdHlsZS0+ekluZGV4KCkpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc0F1
dG9aSW5kZXgoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgLy8gRklYTUU6IFNob3VsZCBjbGFtcCBhbGwgc29ydHMgb2Ygb3RoZXIgaW50ZWdlciBw
cm9wZXJ0aWVzIHRvby4KLSAgICAgICAgbV9zdHlsZS0+c2V0WkluZGV4KGNsYW1wVG9JbnRlZ2Vy
KHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdpZG93czoKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKHdpZG93cywgV2lkb3dzKQotICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlIHx8IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUt
PnNldFdpZG93cyhwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5zOgotICAgIHsK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwob3JwaGFucywgT3JwaGFucykKLSAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlw
ZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBtX3N0eWxlLT5zZXRPcnBoYW5zKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1
ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0gICAgICAgIAotCi0vLyBsZW5ndGgsIHBlcmNl
bnQsIG51bWJlcgotICAgIGNhc2UgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OgotICAgIHsKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobGluZUhlaWdodCwgTGluZUhlaWdodCkKLSAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
TGVuZ3RoIGxpbmVIZWlnaHQ7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aCgtMTAwLjAs
IFBlcmNlbnQpOwotICAgICAgICBlbHNlIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlw
ZUxlbmd0aCh0eXBlKSkgewotICAgICAgICAgICAgZG91YmxlIG11bHRpcGxpZXIgPSB6b29tRmFj
dG9yOwotICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnRleHRTaXplQWRqdXN0KCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPmZyYW1l
KCkpCi0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gZnJhbWUtPnRleHRab29tRmFj
dG9yKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKHBy
aW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSwgIG11bHRpcGxpZXIpLCBGaXhlZCk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlw
ZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBsaW5l
SGVpZ2h0ID0gTGVuZ3RoKChtX3N0eWxlLT5mb250U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUtPmdl
dEludFZhbHVlKCkpIC8gMTAwLCBGaXhlZCk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpICogMTAwLjAsIFBlcmNlbnQpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldExp
bmVIZWlnaHQobGluZUhlaWdodCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLS8vIHN0cmlu
ZwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ246Ci0gICAgewotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0QWxpZ24sIFRleHRBbGlnbikKLSAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaW50IGlkID0gcHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCk7Ci0gICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0YXJ0
KQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEFsaWduKG1fc3R5bGUtPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSA/IExFRlQgOiBSSUdIVCk7Ci0gICAgICAgIGVsc2UgaWYgKGlkID09IENT
U1ZhbHVlRW5kKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEFsaWduKG1fc3R5bGUtPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IFJJR0hUIDogTEVGVCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRBbGlnbigqcHJpbWl0aXZlVmFsdWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0vLyByZWN0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6Ci0g
ICAgewotICAgICAgICBMZW5ndGggdG9wOwotICAgICAgICBMZW5ndGggcmlnaHQ7Ci0gICAgICAg
IExlbmd0aCBib3R0b207Ci0gICAgICAgIExlbmd0aCBsZWZ0OwotICAgICAgICBib29sIGhhc0Ns
aXAgPSB0cnVlOwotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBpZiAobV9w
YXJlbnRTdHlsZS0+aGFzQ2xpcCgpKSB7Ci0gICAgICAgICAgICAgICAgdG9wID0gbV9wYXJlbnRT
dHlsZS0+Y2xpcFRvcCgpOwotICAgICAgICAgICAgICAgIHJpZ2h0ID0gbV9wYXJlbnRTdHlsZS0+
Y2xpcFJpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgYm90dG9tID0gbV9wYXJlbnRTdHlsZS0+Y2xp
cEJvdHRvbSgpOwotICAgICAgICAgICAgICAgIGxlZnQgPSBtX3BhcmVudFN0eWxlLT5jbGlwTGVm
dCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBoYXNDbGlwID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgdG9wID0gcmlnaHQgPSBib3R0b20gPSBsZWZ0ID0gTGVuZ3Ro
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAg
ICAgICAgICBoYXNDbGlwID0gZmFsc2U7Ci0gICAgICAgICAgICB0b3AgPSByaWdodCA9IGJvdHRv
bSA9IGxlZnQgPSBMZW5ndGgoKTsKLSAgICAgICAgfSBlbHNlIGlmICghcHJpbWl0aXZlVmFsdWUp
IHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVDVCkgewotICAg
ICAgICAgICAgUmVjdCogcmVjdCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRSZWN0VmFsdWUoKTsKLSAg
ICAgICAgICAgIGlmICghcmVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB0b3AgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+dG9wKCksIHN0eWxlKCksIG1fcm9vdEVsZW1l
bnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICByaWdodCA9IGNvbnZlcnRUb0xlbmd0
aChyZWN0LT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3Ip
OwotICAgICAgICAgICAgYm90dG9tID0gY29udmVydFRvTGVuZ3RoKHJlY3QtPmJvdHRvbSgpLCBz
dHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgbGVm
dCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRT
dHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgbV9zdHlsZS0+c2V0Q2xpcCh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOwot
ICAgICAgICBtX3N0eWxlLT5zZXRIYXNDbGlwKGhhc0NsaXApOwotICAgIAotICAgICAgICAvLyBy
ZWN0LCBpZGVudAotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0vLyBsaXN0cwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb250ZW50OgotICAgICAgICAvLyBsaXN0IG9mIHN0cmluZywgdXJpLCBjb3Vu
dGVyLCBhdHRyLCBpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogSW4gQ1NTMywgaXQgd2lsbCBi
ZSBwb3NzaWJsZSB0byBpbmhlcml0IGNvbnRlbnQuICBJbiBDU1MyIGl0IGlzIG5vdC4gIFRoaXMK
LSAgICAgICAgLy8gbm90ZSBpcyBhIHJlbWluZGVyIHRoYXQgZXZlbnR1YWxseSAiaW5oZXJpdCIg
bmVlZHMgdG8gYmUgc3VwcG9ydGVkLgotCi0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPmNsZWFyQ29udGVudCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19j
YXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0
aCgpOwotCi0gICAgICAgIGJvb2wgZGlkU2V0ID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKLSAgICAgICAgICAgIGlmIChpdGVtLT5pc0ltYWdl
R2VuZXJhdG9yVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbnRlbnQo
c3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KGl0ZW0pLT5nZW5lcmF0ZWRJbWFn
ZSgpLCBkaWRTZXQpOwotICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPihpdGVtKTsKLSAgICAgICAgICAgIHN3aXRjaCAoY29udGVudFZhbHVlLT5wcmlt
aXRpdmVUeXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfU1RSSU5HOgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb250ZW50KGNvbnRl
bnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5pbXBsKCksIGRpZFNldCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19BVFRSOiB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBDYW4gYSBuYW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBh
dHRyKGZvbyk/Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zdHlsZVR5cGUoKSA9
PSBOT1BTRVVETykKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFVuaXF1ZSgp
OwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
cmVudFN0eWxlLT5zZXRVbmlxdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgUXVhbGlmaWVkTmFt
ZSBhdHRyKG51bGxBdG9tLCBjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBu
dWxsQXRvbSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbnRlbnQobV9lbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoYXR0cikuaW1wbCgpLCBkaWRTZXQpOwotICAgICAgICAgICAgICAg
ICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAvLyByZWdpc3RlciB0aGUg
ZmFjdCB0aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgYWZmZWN0cyB0aGUgc3R5bGUKLSAgICAgICAg
ICAgICAgICAgICAgbV9zZWxlY3RvckF0dHJzLmFkZChhdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJOiB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghY29udGVudFZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb250ZW50
KGNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUNvbnRlbnQsIHN0YXRpY19jYXN0
PENTU0ltYWdlVmFsdWUqPihjb250ZW50VmFsdWUpKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAg
ICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19D
T1VOVEVSOiB7Ci0gICAgICAgICAgICAgICAgICAgIENvdW50ZXIqIGNvdW50ZXJWYWx1ZSA9IGNv
bnRlbnRWYWx1ZS0+Z2V0Q291bnRlclZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIE93blB0
cjxDb3VudGVyQ29udGVudD4gY291bnRlciA9IGFkb3B0UHRyKG5ldyBDb3VudGVyQ29udGVudChj
b3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIChFTGlz
dFN0eWxlVHlwZSljb3VudGVyVmFsdWUtPmxpc3RTdHlsZU51bWJlcigpLCBjb3VudGVyVmFsdWUt
PnNlcGFyYXRvcigpKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbnRlbnQo
Y291bnRlci5yZWxlYXNlKCksIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgIGRpZFNldCA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGlmICghZGlkU2V0KQotICAgICAgICAgICAgbV9zdHlsZS0+Y2xlYXJDb250ZW50KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Q291bnRlckluY3Jl
bWVudDoKLSAgICAgICAgYXBwbHlDb3VudGVyTGlzdChzdHlsZSgpLCB2YWx1ZS0+aXNWYWx1ZUxp
c3QoKSA/IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKSA6IDAsIGZhbHNlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQ6Ci0gICAgICAg
IGFwcGx5Q291bnRlckxpc3Qoc3R5bGUoKSwgdmFsdWUtPmlzVmFsdWVMaXN0KCkgPyBzdGF0aWNf
Y2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSkgOiAwLCB0cnVlKTsKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRGYW1pbHk6IHsKLSAgICAgICAgLy8gbGlzdCBvZiBz
dHJpbmdzIGFuZCBpZHMKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgRm9u
dERlc2NyaXB0aW9uIHBhcmVudEZvbnREZXNjcmlwdGlvbiA9IG1fcGFyZW50U3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpOwotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldEdlbmVyaWNGYW1pbHkocGFyZW50Rm9udERlc2NyaXB0aW9uLmdlbmVyaWNGYW1pbHko
KSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0RmFtaWx5KHBhcmVudEZvbnREZXNj
cmlwdGlvbi5maXJzdEZhbWlseSgpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJ
c1NwZWNpZmllZEZvbnQocGFyZW50Rm9udERlc2NyaXB0aW9uLmlzU3BlY2lmaWVkRm9udCgpKTsK
LSAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKSkKLSAgICAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBGb250
RGVzY3JpcHRpb24gaW5pdGlhbERlc2MgPSBGb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRp
b24oKTsKLSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IHRoZSBzaXplIHRvIGFjY291
bnQgZm9yIHRoZSBnZW5lcmljIGZhbWlseSBjaGFuZ2UgZnJvbSBtb25vc3BhY2UKLSAgICAgICAg
ICAgIC8vIHRvIG5vbi1tb25vc3BhY2UuCi0gICAgICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9u
LmtleXdvcmRTaXplKCkgJiYgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSkK
LSAgICAgICAgICAgICAgICBzZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRTaXplRm9y
S2V5d29yZChtX2NoZWNrZXIubV9kb2N1bWVudCwgQ1NTVmFsdWVYeFNtYWxsICsgZm9udERlc2Ny
aXB0aW9uLmtleXdvcmRTaXplKCkgLSAxLCBmYWxzZSkpOwotICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoaW5pdGlhbERlc2MuZ2VuZXJpY0ZhbWlseSgpKTsKLSAg
ICAgICAgICAgIGlmICghaW5pdGlhbERlc2MuZmlyc3RGYW1pbHkoKS5mYW1pbHlJc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlseShpbml0aWFsRGVzYy5m
aXJzdEZhbWlseSgpKTsKLSAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRp
b24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICgh
dmFsdWUtPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEZvbnRE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsK
LSAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4o
dmFsdWUpOwotICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7Ci0gICAgICAgIEZvbnRG
YW1pbHkmIGZpcnN0RmFtaWx5ID0gZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCk7Ci0gICAg
ICAgIEZvbnRGYW1pbHkqIGN1cnJGYW1pbHkgPSAwOwotICAgICAgICAKLSAgICAgICAgLy8gQmVm
b3JlIG1hcHBpbmcgaW4gYSBuZXcgZm9udC1mYW1pbHkgcHJvcGVydHksIHdlIHNob3VsZCByZXNl
dCB0aGUgZ2VuZXJpYyBmYW1pbHkuCi0gICAgICAgIGJvb2wgb2xkRmFtaWx5VXNlZEZpeGVkRGVm
YXVsdFNpemUgPSBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpOwotICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246Ok5vRmFt
aWx5KTsKLQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAg
ICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0g
ICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwotICAgICAgICAgICAgQXRv
bWljU3RyaW5nIGZhY2U7Ci0gICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2NoZWNr
ZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKLSAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUt
PnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykgewotICAg
ICAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUtPmlzRm9udEZhbWlseVZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIGZhY2UgPSBzdGF0aWNfY2FzdDxGb250RmFtaWx5VmFsdWUqPihjb250
ZW50VmFsdWUpLT5mYW1pbHlOYW1lKCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRW
YWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQgJiYg
c2V0dGluZ3MpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRl
bnQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Qm9keToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZVNlcmlmOgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Vi
a2l0LXNlcmlmIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRH
ZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTYW5z
U2VyaWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtc2Fucy1zZXJp
ZiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0Zh
bWlseShGb250RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUN1cnNpdmU6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtY3Vyc2l2ZSI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250
RGVzY3JpcHRpb246OkN1cnNpdmVGYW1pbHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVGYW50YXN5OgotICAgICAgICAg
ICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LWZhbnRhc3kiOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9u
OjpGYW50YXN5RmFtaWx5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTW9ub3NwYWNlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgZmFjZSA9ICItd2Via2l0LW1vbm9zcGFjZSI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246Ok1vbm9z
cGFjZUZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghZmFjZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAoIWN1cnJGYW1pbHkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gRmlsbGluZyBpbiB0aGUgZmlyc3QgZmFtaWx5LgotICAgICAgICAgICAgICAgICAgICBm
aXJzdEZhbWlseS5zZXRGYW1pbHkoZmFjZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpcnN0RmFt
aWx5LmFwcGVuZEZhbWlseSgwKTsgLy8gUmVtb3ZlIGFueSBpbmhlcml0ZWQgZmFtaWx5LWZhbGxi
YWNrIGxpc3QuCi0gICAgICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSAmZmlyc3RGYW1pbHk7
Ci0gICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc1NwZWNpZmllZEZvbnQo
Zm9udERlc2NyaXB0aW9uLmdlbmVyaWNGYW1pbHkoKSA9PSBGb250RGVzY3JpcHRpb246Ok5vRmFt
aWx5KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkRm9udEZhbWlseT4gbmV3RmFtaWx5ID0gU2hhcmVkRm9udEZhbWlseTo6Y3JlYXRl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0ZhbWlseS0+c2V0RmFtaWx5KGZhY2UpOwotICAg
ICAgICAgICAgICAgICAgICBjdXJyRmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3RmFtaWx5KTsKLSAg
ICAgICAgICAgICAgICAgICAgY3VyckZhbWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBjYW4n
dCBjYWxsIHVzZUZpeGVkRGVmYXVsdFNpemUoKSB1bnRpbCBhbGwgbmV3IGZvbnQgZmFtaWxpZXMg
aGF2ZSBiZWVuIGFkZGVkCi0gICAgICAgIC8vIElmIGN1cnJGYW1pbHkgaXMgbm9uLXplcm8gdGhl
biB3ZSBzZXQgYXQgbGVhc3Qgb25lIGZhbWlseSBvbiB0aGlzIGRlc2NyaXB0aW9uLgotICAgICAg
ICBpZiAoY3VyckZhbWlseSkgewotICAgICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5rZXl3
b3JkU2l6ZSgpICYmIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkgIT0gb2xk
RmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUpCi0gICAgICAgICAgICAgICAgc2V0Rm9udFNpemUo
Zm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdvcmQobV9jaGVja2VyLm1fZG9jdW1lbnQs
IENTU1ZhbHVlWHhTbWFsbCArIGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwgIW9s
ZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXplKSk7Ci0KLSAgICAgICAgICAgIGlmIChtX3N0eWxl
LT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgICAgICBt
X2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246IHsKLSAgICAgICAgLy8gbGlzdCBvZiBp
ZGVudAotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0RGVjb3JhdGlvbiwg
VGV4dERlY29yYXRpb24pCi0gICAgICAgIGludCB0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0
RGVjb3JhdGlvbigpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7Ci0gICAgICAgICAgICAvLyBkbyBub3Ro
aW5nCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlz
dCgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCAq
bGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgICAgIGlu
dCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bGVuOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQ1NTVmFsdWUgKml0ZW0g
PSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgICAgIGlmICgh
aXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9uZToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHQgPSBURE5PTkU7IGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlVW5kZXJsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgdCB8
PSBVTkRFUkxJTkU7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlT3Zl
cmxpbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0IHw9IE9WRVJMSU5FOyBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmVUaHJvdWdoOgotICAgICAgICAgICAg
ICAgICAgICAgICAgdCB8PSBMSU5FX1RIUk9VR0g7IGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlQmxpbms6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0IHw9IEJMSU5L
OyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RGVjb3JhdGlvbih0KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgotICAgIHsKLSAgICAgICAg
Ly8gUmVzZXQgdGhlIHpvb20gaW4gZWZmZWN0IGJlZm9yZSB3ZSBkbyBhbnl0aGluZy4gIFRoaXMg
YWxsb3dzIHRoZSBzZXRab29tIG1ldGhvZCB0byBhY2N1cmF0ZWx5IGNvbXB1dGUgYSBuZXcKLSAg
ICAgICAgLy8gem9vbSBpbiBlZmZlY3QuCi0gICAgICAgIG1fc3R5bGUtPnNldEVmZmVjdGl2ZVpv
b20obV9wYXJlbnRTdHlsZSA/IG1fcGFyZW50U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA6IFJlbmRl
clN0eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICAgICAgCi0gICAgICAgIC8vIE5vdyB3ZSBjYW4g
aGFuZGxlIGluaGVyaXQgYW5kIGluaXRpYWwuCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKHpvb20sIFpvb20pCi0gICAgICAgIAotICAgICAgICAvLyBIYW5kbGUgbm9ybWFsL3Jl
c2V0LCBudW1iZXJzIGFuZCBwZXJjZW50YWdlcy4KLSAgICAgICAgaW50IHR5cGUgPSBwcmltaXRp
dmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRab29t
KFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVSZXNldCkgewotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0RWZmZWN0aXZlWm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZURvY3Vt
ZW50KSB7Ci0gICAgICAgICAgICBmbG9hdCBkb2Nab29tID0gbV9jaGVja2VyLm1fZG9jdW1lbnQt
PnJlbmRlcmVyKCktPnN0eWxlKCktPnpvb20oKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEVm
ZmVjdGl2ZVpvb20oZG9jWm9vbSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRab29tKGRvY1pv
b20pOwotICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
RVJDRU5UQUdFKSB7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFs
dWUoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRab29tKHByaW1pdGl2ZVZhbHVlLT5n
ZXRGbG9hdFZhbHVlKCkgLyAxMDAuMGYpOwotICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKLSAgICAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFpvb20o
cHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLS8vIHNo
b3J0aGFuZCBwcm9wZXJ0aWVzCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6Ci0gICAg
ICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPmNsZWFyQmFja2dyb3Vu
ZExheWVycygpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9y
KCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAg
ICAgbV9zdHlsZS0+aW5oZXJpdEJhY2tncm91bmRMYXllcnMoKm1fcGFyZW50U3R5bGUtPmJhY2tn
cm91bmRMYXllcnMoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
bV9wYXJlbnRTdHlsZS0+YmFja2dyb3VuZENvbG9yKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazoKLSAgICAgICAgaWYgKGlzSW5p
dGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmNsZWFyTWFza0xheWVycygpOwotICAgICAgICBl
bHNlIGlmIChpc0luaGVyaXQpCi0gICAgICAgICAgICBtX3N0eWxlLT5pbmhlcml0TWFza0xheWVy
cygqbV9wYXJlbnRTdHlsZS0+bWFza0xheWVycygpKTsKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJDb2xvcjoKLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5Qm9yZGVyIHx8IGlkID09
IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0lu
aGVyaXQpIHsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BDb2xvcihtX3Bh
cmVudFN0eWxlLT5ib3JkZXJUb3BDb2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJv
cmRlclRvcENvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21Db2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0
b21Db2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCkg
OiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRC
b3JkZXJMZWZ0Q29sb3IobV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdENvbG9yKCkuaXNWYWxpZCgp
ID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdENvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xv
cigpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodENvbG9yKG1fcGFy
ZW50U3R5bGUtPmJvcmRlclJpZ2h0Q29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5i
b3JkZXJSaWdodENvbG9yKCk6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Qm9yZGVyVG9wQ29sb3IoQ29sb3IoKSk7IC8vIFJlc2V0IHRvIGludmFsaWQgY29s
b3Igc28gY3VycmVudENvbG9yIGlzIHVzZWQgaW5zdGVhZC4KLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJCb3R0b21Db2xvcihDb2xvcigpKTsKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJMZWZ0Q29sb3IoQ29sb3IoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Qm9yZGVyUmlnaHRDb2xvcihDb2xvcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlCb3JkZXIgfHwgaWQgPT0gQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGlzSW5oZXJpdCkgewot
ICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFN0eWxlKG1fcGFyZW50U3R5bGUt
PmJvcmRlclRvcFN0eWxlKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJv
dHRvbVN0eWxlKG1fcGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbVN0eWxlKCkpOwotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRTdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJM
ZWZ0U3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRTdHls
ZShtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCkpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0Qm9yZGVyVG9wU3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSgpKTsKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21TdHlsZShSZW5kZXJTdHlsZTo6
aW5pdGlhbEJvcmRlclN0eWxlKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRl
ckxlZnRTdHlsZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlKCkpOwotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0U3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxC
b3JkZXJTdHlsZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoaWQg
PT0gQ1NTUHJvcGVydHlCb3JkZXIgfHwgaWQgPT0gQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcFdpZHRoKCkp
OwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVdpZHRoKG1fcGFyZW50
U3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEJvcmRlckxlZnRXaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRXaWR0aChtX3BhcmVudFN0eWxlLT5i
b3JkZXJSaWdodFdpZHRoKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
aXNJbml0aWFsKSB7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgo
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRo
KCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRXaWR0aChSZW5kZXJT
dHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEJvcmRlclJpZ2h0V2lkdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCgpKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclRvcDoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Qm9yZGVyVG9wQ29sb3IobV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wQ29sb3IoKS5p
c1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BDb2xvcigpIDogbV9wYXJlbnRTdHls
ZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BTdHlsZShtX3Bh
cmVudFN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJv
cmRlclRvcFdpZHRoKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcFdpZHRoKCkpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0
Qm9yZGVyVG9wKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHQ6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEJvcmRlclJpZ2h0Q29sb3IobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpLmlzVmFs
aWQoKSA/IG1fcGFyZW50U3R5bGUtPmJvcmRlclJpZ2h0Q29sb3IoKSA6IG1fcGFyZW50U3R5bGUt
PmNvbG9yKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRTdHlsZShtX3Bh
cmVudFN0eWxlLT5ib3JkZXJSaWdodFN0eWxlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
Qm9yZGVyUmlnaHRXaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUt
PnJlc2V0Qm9yZGVyUmlnaHQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b206Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldEJvcmRlckJvdHRvbUNvbG9yKG1fcGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbUNv
bG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90dG9tQ29sb3IoKSA6IG1f
cGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90
dG9tU3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90dG9tU3R5bGUoKSk7Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0
b21XaWR0aCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAg
ICAgICAgICBtX3N0eWxlLT5yZXNldEJvcmRlckJvdHRvbSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRDb2xvcihtX3BhcmVudFN0eWxlLT5i
b3JkZXJMZWZ0Q29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0Q29s
b3IoKSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
Qm9yZGVyTGVmdFN0eWxlKG1fcGFyZW50U3R5bGUtPmJvcmRlckxlZnRTdHlsZSgpKTsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRXaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJM
ZWZ0V2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAg
ICAgICAgICAgbV9zdHlsZS0+cmVzZXRCb3JkZXJMZWZ0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5Ub3AobV9wYXJlbnRTdHlsZS0+bWFyZ2luVG9wKCkp
OwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luQm90dG9tKG1fcGFyZW50U3R5bGUtPm1h
cmdpbkJvdHRvbSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpbkxlZnQobV9wYXJl
bnRTdHlsZS0+bWFyZ2luTGVmdCgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpblJp
Z2h0KG1fcGFyZW50U3R5bGUtPm1hcmdpblJpZ2h0KCkpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0TWFyZ2luKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZzoKLSAgICAgICAgaWYg
KGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ1RvcChtX3BhcmVu
dFN0eWxlLT5wYWRkaW5nVG9wKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFkZGluZ0Jv
dHRvbShtX3BhcmVudFN0eWxlLT5wYWRkaW5nQm90dG9tKCkpOwotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0UGFkZGluZ0xlZnQobV9wYXJlbnRTdHlsZS0+cGFkZGluZ0xlZnQoKSk7Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nUmlnaHQobV9wYXJlbnRTdHlsZS0+cGFkZGluZ1JpZ2h0
KCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAg
IG1fc3R5bGUtPnJlc2V0UGFkZGluZygpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eUZvbnQ6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEZvbnRE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRp
b24oKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpbmVIZWlnaHQobV9wYXJlbnRTdHlsZS0+
bGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIG1fbGluZUhlaWdodFZhbHVlID0gMDsKLSAgICAg
ICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkK
LSAgICAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAo
aXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2NoZWNrZXIu
bV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKLSAgICAgICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8v
IElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFs
d2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKLSAgICAgICAgICAgIGlm
ICghc2V0dGluZ3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgRm9udERl
c2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U3RhbmRhcmRGYW1pbHkpOwotICAgICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5k
ZXJpbmdNb2RlKCkpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFVzZVByaW50ZXJG
b250KG1fY2hlY2tlci5tX2RvY3VtZW50LT5wcmludGluZygpKTsKLSAgICAgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgc3RhbmRhcmRGb250RmFtaWx5ID0gbV9jaGVja2VyLm1fZG9jdW1lbnQt
PnNldHRpbmdzKCktPnN0YW5kYXJkRm9udEZhbWlseSgpOwotICAgICAgICAgICAgaWYgKCFzdGFu
ZGFyZEZvbnRGYW1pbHkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLmZpcnN0RmFtaWx5KCkuc2V0RmFtaWx5KHN0YW5kYXJkRm9udEZhbWlseSk7Ci0gICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuYXBwZW5kRmFtaWx5KDApOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXpl
KENTU1ZhbHVlTWVkaXVtIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7Ci0gICAgICAgICAgICBzZXRG
b250U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRTaXplRm9yS2V5d29yZChtX2NoZWNrZXIubV9k
b2N1bWVudCwgQ1NTVmFsdWVNZWRpdW0sIGZhbHNlKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKLSAgICAgICAg
ICAgIG1fbGluZUhlaWdodFZhbHVlID0gMDsKLSAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgICAgICBtX2ZvbnRE
aXJ0eSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUpIHsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVp
Z2h0KCkpOwotICAgICAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgICAgICAg
ICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOwotCi0gICAgICAgICAgICAvLyBEb3VibGUt
Y2hlY2sgYW5kIHNlZSBpZiB0aGUgdGhlbWUgZGlkIGFueXRoaW5nLiAgSWYgbm90LCBkb24ndCBi
b3RoZXIgdXBkYXRpbmcgdGhlIGZvbnQuCi0gICAgICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9u
LmlzQWJzb2x1dGVTaXplKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHJl
bmRlcmluZyBtb2RlIGFuZCBwcmludGVyIGZvbnQgc2V0dGluZ3MgYXJlIHVwZGF0ZWQuCi0gICAg
ICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnNl
dHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNldHRpbmdzKTsgLy8gSWYgd2UncmUg
ZG9pbmcgc3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBkb2N1bWVudCBzaG91bGQgYWx3YXlzIGJlIGlu
IGEgZnJhbWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5ncwotICAgICAgICAgICAgICAgIGlmICghc2V0
dGluZ3MpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9udFJlbmRlcmluZ01vZGUo
KSk7Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFVzZVByaW50ZXJGb250KG1f
Y2hlY2tlci5tX2RvY3VtZW50LT5wcmludGluZygpKTsKLSAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgLy8gSGFuZGxlIHRoZSB6b29tIGZhY3Rvci4KLSAgICAgICAgICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXpl
KG1fY2hlY2tlci5tX2RvY3VtZW50LCBtX3N0eWxlLmdldCgpLCBmb250RGVzY3JpcHRpb24uaXNB
YnNvbHV0ZVNpemUoKSwgZm9udERlc2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKSwgdXNlU1ZHWm9v
bVJ1bGVzKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlv
bihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzRm9udFZhbHVl
KCkpIHsKLSAgICAgICAgICAgIEZvbnRWYWx1ZSAqZm9udCA9IHN0YXRpY19jYXN0PEZvbnRWYWx1
ZSo+KHZhbHVlKTsKLSAgICAgICAgICAgIGlmICghZm9udC0+c3R5bGUgfHwgIWZvbnQtPnZhcmlh
bnQgfHwgIWZvbnQtPndlaWdodCB8fAotICAgICAgICAgICAgICAgICAhZm9udC0+c2l6ZSB8fCAh
Zm9udC0+bGluZUhlaWdodCB8fCAhZm9udC0+ZmFtaWx5KQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U3R5bGUsIGZvbnQt
PnN0eWxlLmdldCgpKTsKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250
VmFyaWFudCwgZm9udC0+dmFyaWFudC5nZXQoKSk7Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udFdlaWdodCwgZm9udC0+d2VpZ2h0LmdldCgpKTsKLSAgICAgICAgICAg
IGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgZm9udC0+c2l6ZS5nZXQoKSk7Ci0K
LSAgICAgICAgICAgIG1fbGluZUhlaWdodFZhbHVlID0gZm9udC0+bGluZUhlaWdodC5nZXQoKTsK
LQotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGZvbnQt
PmZhbWlseS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAg
ICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVUeXBlKG1fcGFyZW50U3R5bGUtPmxpc3RT
dHlsZVR5cGUoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVJbWFnZShtX3Bh
cmVudFN0eWxlLT5saXN0U3R5bGVJbWFnZSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExp
c3RTdHlsZVBvc2l0aW9uKG1fcGFyZW50U3R5bGUtPmxpc3RTdHlsZVBvc2l0aW9uKCkpOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0TGlzdFN0eWxlVHlwZShSZW5kZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZVR5cGUoKSk7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVJbWFnZShSZW5kZXJTdHlsZTo6aW5p
dGlhbExpc3RTdHlsZUltYWdlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxl
UG9zaXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6Ci0gICAg
ICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVXaWR0
aChtX3BhcmVudFN0eWxlLT5vdXRsaW5lV2lkdGgoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRPdXRsaW5lQ29sb3IobV9wYXJlbnRTdHlsZS0+b3V0bGluZUNvbG9yKCkuaXNWYWxpZCgpID8g
bV9wYXJlbnRTdHlsZS0+b3V0bGluZUNvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVTdHlsZShtX3BhcmVudFN0eWxlLT5vdXRs
aW5lU3R5bGUoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAg
ICAgICAgICAgbV9zdHlsZS0+cmVzZXRPdXRsaW5lKCk7Ci0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIENTUzMgUHJvcGVydGllcwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNl
OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGFwcGVhcmFuY2UsIEFwcGVh
cmFuY2UpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fc3R5bGUtPnNldEFwcGVhcmFuY2UoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFn
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlOiB7Ci0gICAgICAgIGlm
IChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJJbWFnZSwgYm9yZGVySW1hZ2UsIEJvcmRlckltYWdlKQotICAgICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgbWFz
a0JveEltYWdlLCBNYXNrQm94SW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJ
VEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSwgQm9yZGVySW1hZ2UsIE5pbmVQ
aWVjZUltYWdlKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBNYXNrQm94SW1hZ2UsIE5pbmVQaWVjZUltYWdl
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgTmluZVBpZWNlSW1h
Z2UgaW1hZ2U7Ci0gICAgICAgIG1hcE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCB2YWx1ZSwgaW1h
Z2UpOwotICAgICAgICAKLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
SW1hZ2UpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJJbWFnZShpbWFnZSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hc2tCb3hJbWFnZShpbWFnZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVz
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXM6Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcExlZnRSYWRpdXMo
bV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpKTsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1
cyhtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkpOwotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMobV9wYXJlbnRTdHlsZS0+Ym9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+cmVzZXRCb3JkZXJS
YWRpdXMoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBGYWxs
IHRocm91Z2gKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzOiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBib3JkZXJU
b3BMZWZ0UmFkaXVzLCBCb3JkZXJUb3BMZWZ0UmFkaXVzKQotICAgICAgICAgICAgSEFORExFX0lO
SEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBib3JkZXJUb3BSaWdo
dFJhZGl1cywgQm9yZGVyVG9wUmlnaHRSYWRpdXMpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgYm9yZGVyQm90dG9tTGVm
dFJhZGl1cywgQm9yZGVyQm90dG9tTGVmdFJhZGl1cykKLSAgICAgICAgICAgIEhBTkRMRV9JTkhF
UklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgYm9yZGVyQm90dG9t
UmlnaHRSYWRpdXMsIEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAg
ICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BM
ZWZ0UmFkaXVzLCBCb3JkZXJUb3BMZWZ0UmFkaXVzLCBCb3JkZXJSYWRpdXMpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdo
dFJhZGl1cywgQm9yZGVyVG9wUmlnaHRSYWRpdXMsIEJvcmRlclJhZGl1cykKLSAgICAgICAgICAg
IEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxl
ZnRSYWRpdXMsIEJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIEJvcmRlclJhZGl1cykKLSAgICAgICAg
ICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzLCBCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgQm9yZGVyUmFkaXVzKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZl
VmFsdWUtPmdldFBhaXJWYWx1ZSgpOwotICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0
KCkgfHwgIXBhaXItPnNlY29uZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIExl
bmd0aCByYWRpdXNXaWR0aDsKLSAgICAgICAgTGVuZ3RoIHJhZGl1c0hlaWdodDsKLSAgICAgICAg
aWYgKHBhaXItPmZpcnN0KCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICByYWRpdXNXaWR0aCA9IExlbmd0aChwYWlyLT5m
aXJzdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgobWF4KGludE1pbkZvckxlbmd0aCwgbWluKGludE1h
eEZvckxlbmd0aCwgcGFpci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKSksIEZpeGVkKTsKLSAgICAgICAgaWYgKHBhaXIt
PnNlY29uZCgpLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJD
RU5UQUdFKQotICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKHBhaXItPnNlY29uZCgp
LT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKG1heChpbnRNaW5Gb3JMZW5ndGgsIG1pbihpbnRNYXhGb3JM
ZW5ndGgsIHBhaXItPnNlY29uZCgpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpKSwgRml4ZWQpOwotICAgICAgICBpbnQgd2lkdGggPSBy
YWRpdXNXaWR0aC5yYXdWYWx1ZSgpOwotICAgICAgICBpbnQgaGVpZ2h0ID0gcmFkaXVzSGVpZ2h0
LnJhd1ZhbHVlKCk7Ci0gICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHdpZHRoID09IDApCi0gICAgICAgICAgICByYWRp
dXNIZWlnaHQgPSByYWRpdXNXaWR0aDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZhbHVlLgotICAg
ICAgICBlbHNlIGlmIChoZWlnaHQgPT0gMCkKLSAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gcmFk
aXVzSGVpZ2h0OyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCi0KLSAgICAgICAgTGVuZ3Ro
U2l6ZSBzaXplKHJhZGl1c1dpZHRoLCByYWRpdXNIZWlnaHQpOwotICAgICAgICBzd2l0Y2ggKGlk
KSB7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1czoKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKHNpemUpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRv
cFJpZ2h0UmFkaXVzOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFJpZ2h0
UmFkaXVzKHNpemUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6Ci0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhzaXplKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoK
LSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhzaXpl
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmFkaXVzKHNpemUpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5T3V0bGluZU9mZnNldDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwob3V0bGluZU9mZnNldCwgT3V0bGluZU9mZnNldCkKLSAgICAgICAgbV9zdHlsZS0+c2V0T3V0
bGluZU9mZnNldChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nOiB7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGlz
SW5oZXJpdCkgCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0VGV4dFJlbmRlcmluZ01v
ZGUobV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudGV4dFJlbmRlcmluZ01vZGUoKSk7
Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRUZXh0UmVuZGVyaW5nTW9kZShBdXRvVGV4dFJlbmRlcmluZyk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0VGV4dFJlbmRlcmluZ01vZGUoKnBy
aW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRy
dWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRTaGFk
b3c6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNoYWRvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm94U2hhZG93OiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAg
IGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG1fc3R5bGUtPnNldFRleHRTaGFkb3cobV9wYXJlbnRTdHlsZS0+dGV4dFNoYWRvdygpID8gbmV3
IFNoYWRvd0RhdGEoKm1fcGFyZW50U3R5bGUtPnRleHRTaGFkb3coKSkgOiAwKTsKLSAgICAgICAg
ICAgIHJldHVybiBtX3N0eWxlLT5zZXRCb3hTaGFkb3cobV9wYXJlbnRTdHlsZS0+Ym94U2hhZG93
KCkgPyBuZXcgU2hhZG93RGF0YSgqbV9wYXJlbnRTdHlsZS0+Ym94U2hhZG93KCkpIDogMCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW5pdGlhbCB8fCBwcmltaXRpdmVWYWx1ZSkgLy8gaW5p
dGlhbCB8IG5vbmUKLSAgICAgICAgICAgIHJldHVybiBpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFk
b3cgPyBtX3N0eWxlLT5zZXRUZXh0U2hhZG93KDApIDogbV9zdHlsZS0+c2V0Qm94U2hhZG93KDAp
OwotCi0gICAgICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgQ1NTVmFsdWVMaXN0ICpsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVM
aXN0Kj4odmFsdWUpOwotICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7Ci0gICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgIENTU1ZhbHVlKiBj
dXJyVmFsdWUgPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwotICAgICAgICAgICAg
aWYgKCFjdXJyVmFsdWUtPmlzU2hhZG93VmFsdWUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIFNoYWRvd1ZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8U2hhZG93VmFs
dWUqPihsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKLSAgICAgICAgICAgIGludCB4
ID0gaXRlbS0+eC0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUs
IHpvb21GYWN0b3IpOwotICAgICAgICAgICAgaW50IHkgPSBpdGVtLT55LT5jb21wdXRlTGVuZ3Ro
SW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAg
ICBpbnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVtLT5ibHVyLT5jb21wdXRlTGVuZ3RoSW50KHN0
eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikgOiAwOwotICAgICAgICAgICAg
aW50IHNwcmVhZCA9IGl0ZW0tPnNwcmVhZCA/IGl0ZW0tPnNwcmVhZC0+Y29tcHV0ZUxlbmd0aElu
dChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpIDogMDsKLSAgICAgICAg
ICAgIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlID0gaXRlbS0+c3R5bGUgJiYgaXRlbS0+c3R5bGUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnNldCA/IEluc2V0IDogTm9ybWFsOwotICAgICAgICAg
ICAgQ29sb3IgY29sb3I7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+Y29sb3IpCi0gICAgICAgICAg
ICAgICAgY29sb3IgPSBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShpdGVtLT5jb2xvci5nZXQo
KSk7Ci0gICAgICAgICAgICBTaGFkb3dEYXRhKiBzaGFkb3dEYXRhID0gbmV3IFNoYWRvd0RhdGEo
eCwgeSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgaWQgPT0gQ1NTUHJvcGVydHlXZWJraXRC
b3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KTsK
LSAgICAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCi0gICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0VGV4dFNoYWRvdyhzaGFkb3dEYXRhLCBpICE9IDApOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJveFNoYWRvdyhzaGFkb3dE
YXRhLCBpICE9IDApOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUwoYm94UmVmbGVjdCwgQm94UmVmbGVjdCkKLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3hSZWZsZWN0KFJlbmRlclN0eWxl
Ojppbml0aWFsQm94UmVmbGVjdCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNSZWZsZWN0VmFsdWUoKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBDU1NSZWZsZWN0VmFsdWUqIHJlZmxlY3RWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgUmVmUHRyPFN0eWxl
UmVmbGVjdGlvbj4gcmVmbGVjdGlvbiA9IFN0eWxlUmVmbGVjdGlvbjo6Y3JlYXRlKCk7Ci0gICAg
ICAgIHJlZmxlY3Rpb24tPnNldERpcmVjdGlvbihyZWZsZWN0VmFsdWUtPmRpcmVjdGlvbigpKTsK
LSAgICAgICAgaWYgKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCkpIHsKLSAgICAgICAgICAgIGludCB0
eXBlID0gcmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAg
ICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE9mZnNldChMZW5ndGgocmVmbGVjdFZhbHVlLT5vZmZz
ZXQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE9mZnNldChMZW5ndGgocmVmbGVjdFZhbHVlLT5v
ZmZzZXQoKS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCkpOwotICAgICAgICB9Ci0gICAgICAgIE5pbmVQaWVj
ZUltYWdlIG1hc2s7Ci0gICAgICAgIG1hcE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCByZWZsZWN0
VmFsdWUtPm1hc2soKSwgbWFzayk7Ci0gICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2sobWFzayk7
Ci0gICAgICAgIAotICAgICAgICBtX3N0eWxlLT5zZXRCb3hSZWZsZWN0KHJlZmxlY3Rpb24ucmVs
ZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3Bh
Y2l0eToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwob3BhY2l0eSwgT3BhY2l0
eSkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAg
cmV0dXJuOyAvLyBFcnJvciBjYXNlLgotICAgICAgICAvLyBDbGFtcCBvcGFjaXR5IHRvIHRoZSBy
YW5nZSAwLTEKLSAgICAgICAgbV9zdHlsZS0+c2V0T3BhY2l0eShtaW4oMS4wZiwgbWF4KDAuMGYs
IHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ246Ci0gICAgewotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTChib3hBbGlnbiwgQm94QWxpZ24pCi0gICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEVCb3hBbGlnbm1lbnQg
Ym94QWxpZ25tZW50ID0gKnByaW1pdGl2ZVZhbHVlOwotICAgICAgICBpZiAoYm94QWxpZ25tZW50
ICE9IEJKVVNUSUZZKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm94QWxpZ24oYm94QWxpZ25t
ZW50KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5U3JjOiAv
LyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6IC8vIE9ubHkgdXNlZCBpbiBAZm9udC1mYWNlIHJ1
bGVzLgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNl
VmlzaWJpbGl0eToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYmFja2ZhY2VW
aXNpYmlsaXR5LCBCYWNrZmFjZVZpc2liaWxpdHkpCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJhY2tmYWNlVmlzaWJpbGl0eSgocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVWaXNpYmxlKSA/IEJhY2tmYWNlVmlzaWJpbGl0
eVZpc2libGUgOiBCYWNrZmFjZVZpc2liaWxpdHlIaWRkZW4pOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbjoKLSAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShib3hEaXJlY3Rpb24sIEJveERpcmVjdGlv
bikKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lczoK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShib3hMaW5l
cywgQm94TGluZXMpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm94T3JpZW50OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlU
SVZFKGJveE9yaWVudCwgQm94T3JpZW50KQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveFBhY2s6Ci0gICAgewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChib3hQYWNrLCBCb3hQYWNrKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBFQm94QWxpZ25tZW50IGJveFBhY2sgPSAqcHJp
bWl0aXZlVmFsdWU7Ci0gICAgICAgIGlmIChib3hQYWNrICE9IEJTVFJFVENIICYmIGJveFBhY2sg
IT0gQkJBU0VMSU5FKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm94UGFjayhib3hQYWNrKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94Rmxl
eDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94RmxleCwgQm94RmxleCkK
LSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgcmV0
dXJuOyAvLyBFcnJvciBjYXNlLgotICAgICAgICBtX3N0eWxlLT5zZXRCb3hGbGV4KHByaW1pdGl2
ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwoYm94RmxleEdyb3VwLCBCb3hGbGV4R3JvdXApCi0gICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAgIHJldHVybjsgLy8gRXJyb3IgY2FzZS4KLSAg
ICAgICAgbV9zdHlsZS0+c2V0Qm94RmxleEdyb3VwKCh1bnNpZ25lZCBpbnQpKHByaW1pdGl2ZVZh
bHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChib3hPcmRpbmFsR3JvdXAsIEJveE9yZGluYWxHcm91cCkKLSAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgcmV0dXJuOyAvLyBFcnJvciBj
YXNlLgotICAgICAgICBtX3N0eWxlLT5zZXRCb3hPcmRpbmFsR3JvdXAoKHVuc2lnbmVkIGludCko
cHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3hTaXppbmc6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKGJveFNpemluZywgQm94U2l6aW5nKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVDb250ZW50Qm94KQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm94
U2l6aW5nKENPTlRFTlRfQk9YKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0Qm94U2l6aW5nKEJPUkRFUl9CT1gpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50OiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAg
ICAgICAgICAgIGlmIChtX3BhcmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uQ291bnQoKSkKLSAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uQ291bnQoKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5Db3VudChtX3BhcmVudFN0
eWxlLT5jb2x1bW5Db3VudCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNl
IGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVB
dXRvKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uQ291bnQoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5D
b3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4ocHJpbWl0aXZlVmFsdWUtPmdldERvdWJs
ZVZhbHVlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uR2FwOiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAg
IGlmIChtX3BhcmVudFN0eWxlLT5oYXNOb3JtYWxDb2x1bW5HYXAoKSkKLSAgICAgICAgICAgICAg
ICBtX3N0eWxlLT5zZXRIYXNOb3JtYWxDb2x1bW5HYXAoKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5HYXAobV9wYXJlbnRTdHlsZS0+Y29sdW1u
R2FwKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlh
bCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkgewotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uR2FwKHByaW1pdGl2
ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblNwYW46IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
Y29sdW1uU3BhbiwgQ29sdW1uU3BhbikKLSAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uU3Bhbihw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUFsbCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoOiB7Ci0gICAg
ICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChtX3BhcmVudFN0eWxlLT5oYXNB
dXRvQ29sdW1uV2lkdGgoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNBdXRvQ29s
dW1uV2lkdGgoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRDb2x1bW5XaWR0aChtX3BhcmVudFN0eWxlLT5jb2x1bW5XaWR0aCgpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRI
YXNBdXRvQ29sdW1uV2lkdGgoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBtX3N0eWxlLT5zZXRDb2x1bW5XaWR0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0
aEZsb2F0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5
bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lU
SF9WQUxVRShjb2x1bW5SdWxlU3R5bGUsIENvbHVtblJ1bGVTdHlsZSwgQm9yZGVyU3R5bGUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZv
cmU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lU
SF9WQUxVRShjb2x1bW5CcmVha0JlZm9yZSwgQ29sdW1uQnJlYWtCZWZvcmUsIFBhZ2VCcmVhaykK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0Fm
dGVyOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJ
VEhfVkFMVUUoY29sdW1uQnJlYWtBZnRlciwgQ29sdW1uQnJlYWtBZnRlciwgUGFnZUJyZWFrKQot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5z
aWRlOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUoY29s
dW1uQnJlYWtJbnNpZGUsIENvbHVtbkJyZWFrSW5zaWRlLCBQYWdlQnJlYWspCi0gICAgICAgIEVQ
YWdlQnJlYWsgcGIgPSAqcHJpbWl0aXZlVmFsdWU7Ci0gICAgICAgIGlmIChwYiAhPSBQQkFMV0FZ
UykKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtbkJyZWFrSW5zaWRlKHBiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6
Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVt
blJ1bGVDb2xvcihtX3BhcmVudFN0eWxlLT5jb2x1bW5SdWxlQ29sb3IoKS5pc1ZhbGlkKCkgPyBt
X3BhcmVudFN0eWxlLT5jb2x1bW5SdWxlQ29sb3IoKSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkp
OwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uUnVsZVN0eWxlKG1fcGFyZW50U3R5bGUt
PmNvbHVtblJ1bGVTdHlsZSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVX
aWR0aChtX3BhcmVudFN0eWxlLT5jb2x1bW5SdWxlV2lkdGgoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+cmVzZXRDb2x1bW5S
dWxlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
czoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgaWYgKG1fcGFyZW50U3R5
bGUtPmhhc0F1dG9Db2x1bW5XaWR0aCgpKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEhh
c0F1dG9Db2x1bW5XaWR0aCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldENvbHVtbldpZHRoKG1fcGFyZW50U3R5bGUtPmNvbHVtbldpZHRoKCkpOwotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uQ291bnQobV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291
bnQoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENv
bHVtbkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29sdW1uQ291bnQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgotICAg
ICAgICBpZiAodmFsdWVUeXBlICE9IENTU1ZhbHVlOjpDU1NfSU5IRVJJVCB8fCAhbV9wYXJlbnRO
b2RlKSByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24obV9wYXJl
bnRTdHlsZS0+bWFycXVlZURpcmVjdGlvbigpKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVl
ZUluY3JlbWVudChtX3BhcmVudFN0eWxlLT5tYXJxdWVlSW5jcmVtZW50KCkpOwotICAgICAgICBt
X3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQobV9wYXJlbnRTdHlsZS0+bWFycXVlZVNwZWVkKCkpOwot
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KG1fcGFyZW50U3R5bGUtPm1hcnF1
ZWVMb29wQ291bnQoKSk7Ci0gICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihtX3Bh
cmVudFN0eWxlLT5tYXJxdWVlQmVoYXZpb3IoKSk7Ci0gICAgICAgIHJldHVybjsKLSNpZiBFTkFC
TEUoV0NTUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3A6Ci0jZW5kaWYKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb246IHsKLSAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZUxvb3BDb3VudCwgTWFycXVlZUxvb3BDb3Vu
dCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5maW5pdGUp
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KC0xKTsgLy8gLTEgbWVh
bnMgcmVwZWF0IGZvcmV2ZXIuCi0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1
ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUoV0NTUykKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkOgotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTcGVlZDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TChtYXJxdWVlU3BlZWQsIE1hcnF1ZWVTcGVlZCkgICAgICAKLSAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNsb3c6Ci0gICAgICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZCg1MDApOyAvLyA1MDAgbXNlYy4KLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5v
cm1hbDoKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDg1KTsg
Ly8gODVtc2VjLiBUaGUgV2luSUUgZGVmYXVsdC4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUZhc3Q6Ci0gICAgICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZCgxMCk7IC8vIDEwbXNlYy4gU3VwZXIgZmFzdC4KLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1MpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoMTAw
MCAqIHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01T
KQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJbnRWYWx1ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgLy8gRm9yIHNjcm9sbGFt
b3VudCBzdXBwb3J0LgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKHByaW1p
dGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudDogewotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlSW5jcmVtZW50LCBNYXJxdWVlSW5jcmVtZW50KQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlU21hbGw6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1l
bnQoTGVuZ3RoKDEsIEZpeGVkKSk7IC8vIDFweC4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChMZW5ndGgoNiwgRml4ZWQpKTsgLy8gNnB4
LiBUaGUgV2luSUUgZGVmYXVsdC4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhcmdlOgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgzNiwgRml4ZWQpKTsgLy8gMzZweC4KLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgIExlbmd0aCBs
ID0gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUsIDEsICZvayk7Ci0gICAgICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChsKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2lmIEVOQUJMRShXQ1NTKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVl
U3R5bGU6Ci0jZW5kaWYKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlOgot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG1hcnF1ZWVC
ZWhhdmlvciwgTWFycXVlZUJlaGF2aW9yKSAgICAgIAotICAgICAgICByZXR1cm47Ci0jaWYgRU5B
QkxFKFdDU1MpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXI6Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1hcnF1ZWVEaXJlY3Rpb24sIE1hcnF1ZWVEaXJlY3Rp
b24pCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSkgewotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkg
ewotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUx0cjoKLSAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1SSUdIVCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlUnRsOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dE1hcnF1ZWVEaXJlY3Rpb24oTUxFRlQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0
aW9uKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMX0FORF9QUklNSVRJVkUobWFycXVlZURpcmVjdGlvbiwgTWFycXVlZURpcmVjdGlvbikK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh1c2VyRHJhZywg
VXNlckRyYWcpICAgICAgCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlck1vZGlmeToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRSh1c2VyTW9kaWZ5LCBVc2VyTW9kaWZ5KSAgICAgIAotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodXNlclNlbGVjdCwgVXNlclNlbGVjdCkgICAg
ICAKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzog
ewotICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGlzIHN1cHBvcnRlZCBieSBXaW5JRSwgYW5kIHNv
IHdlIGxlYXZlIG9mZiB0aGUgIi13ZWJraXQtIiBpbiBvcmRlciB0bwotICAgICAgICAvLyB3b3Jr
IHdpdGggV2luSUUtc3BlY2lmaWMgcGFnZXMgdGhhdCB1c2UgdGhlIHByb3BlcnR5LgotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0T3ZlcmZsb3csIFRleHRPdmVyZmxvdykK
LSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFRleHRPdmVyZmxv
dyhwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUVsbGlwc2lzKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFw
c2U6IHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
TWFyZ2luQmVmb3JlQ29sbGFwc2UobV9wYXJlbnRTdHlsZS0+bWFyZ2luQmVmb3JlQ29sbGFwc2Uo
KSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5BZnRlckNvbGxhcHNlKG1fcGFyZW50
U3R5bGUtPm1hcmdpbkFmdGVyQ29sbGFwc2UoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBp
ZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5CZWZvcmVDb2xs
YXBzZShNQ09MTEFQU0UpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luQWZ0ZXJDb2xs
YXBzZShNQ09MTEFQU0UpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2U6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG1hcmdpbkJlZm9yZUNvbGxhcHNlLCBNYXJnaW5C
ZWZvcmVDb2xsYXBzZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5BZnRlckNvbGxhcHNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5C
b3R0b21Db2xsYXBzZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRShtYXJnaW5BZnRlckNvbGxhcHNlLCBNYXJnaW5BZnRlckNvbGxhcHNlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcDogewotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChsaW5lQ2xhbXAsIExpbmVDbGFtcCkKLSAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaW50
IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAodHlw
ZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZShwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBMaW5lQ2xhbXBMaW5lQ291bnQpKTsKLSAg
ICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUocHJpbWl0
aXZlVmFsdWUtPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSks
IExpbmVDbGFtcFBlcmNlbnRhZ2UpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKGhpZ2hsaWdodCwgSGlnaGxpZ2h0KTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEhpZ2hsaWdodChudWxsQXRvbSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldEhpZ2hsaWdodChwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnM6IHsKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoaHlwaGVucywgSHlwaGVucyk7Ci0gICAg
ICAgIG1fc3R5bGUtPnNldEh5cGhlbnMoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyOiB7
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGh5cGhlbmF0aW9uU3RyaW5nLCBI
eXBoZW5hdGlvblN0cmluZyk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIeXBoZW5hdGlvblN0
cmluZyhudWxsQXRvbSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEh5
cGhlbmF0aW9uU3RyaW5nKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9j
YWxlOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGh5cGhlbmF0aW9uTG9j
YWxlLCBIeXBoZW5hdGlvbkxvY2FsZSk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIeXBoZW5h
dGlvbkxvY2FsZShudWxsQXRvbSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldEh5cGhlbmF0aW9uTG9jYWxlKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
Rml0OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJvcmRlckZpdCwgQm9y
ZGVyRml0KTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlQm9yZGVyKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyRml0KEJvcmRlckZpdEJv
cmRlcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckZpdChC
b3JkZXJGaXRMaW5lcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKHRleHRTaXplQWRqdXN0LCBUZXh0U2l6ZUFkanVzdCkKLSAgICAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHJldHVybjsKLSAgICAg
ICAgbV9zdHlsZS0+c2V0VGV4dFNpemVBZGp1c3QocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodGV4dFNlY3Vy
aXR5LCBUZXh0U2VjdXJpdHkpCi0gICAgICAgIHJldHVybjsKLQotI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uOiB7
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGRhc2hib2FyZFJlZ2lvbnMsIERh
c2hib2FyZFJlZ2lvbnMpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGFzaGJvYXJkUmVnaW9ucyhS
ZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBEYXNoYm9hcmRSZWdpb24gKnJlZ2lvbiA9IHByaW1pdGl2
ZVZhbHVlLT5nZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOwotICAgICAgICBpZiAoIXJlZ2lvbikK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICBEYXNoYm9hcmRSZWdp
b24gKmZpcnN0ID0gcmVnaW9uOwotICAgICAgICB3aGlsZSAocmVnaW9uKSB7Ci0gICAgICAgICAg
ICBMZW5ndGggdG9wID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+dG9wKCksIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBMZW5ndGggcmlnaHQgPSBjb252ZXJ0VG9M
ZW5ndGgocmVnaW9uLT5yaWdodCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAg
ICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmJvdHRvbSgp
LCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAgTGVuZ3RoIGxlZnQg
PSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5sZWZ0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRT
dHlsZSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6Q2ly
Y2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9uID09
IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9p
c1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb24o
U3R5bGVEYXNoYm9hcmRSZWdpb246OlJlY3RhbmdsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJp
Z2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7Ci0gICAg
ICAgICAgICByZWdpb24gPSByZWdpb24tPm1fbmV4dC5nZXQoKTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXRIYXNEYXNoYm9hcmRSZWdpb25z
KHRydWUpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZiAgICAgICAg
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTCh2aXN1YWxseU9yZGVyZWQsIFZpc3VhbGx5T3JkZXJlZCkKLSAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCAhcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFZpc3VhbGx5T3JkZXJl
ZChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVZpc3VhbCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoOiB7Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRTdHJva2VXaWR0aCwgVGV4dFN0
cm9rZVdpZHRoKQotICAgICAgICBmbG9hdCB3aWR0aCA9IDA7Ci0gICAgICAgIHN3aXRjaCAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUaGlu
OgotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKLSAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVUaGljazogewotICAgICAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSAxLjAgLyA0ODsK
LSAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVNZWRpdW0pCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCAqPSAzOwotICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVGhpY2sp
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCAqPSA1OwotICAgICAgICAgICAgICAgIHdpZHRo
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZXN1bHQsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfRU1TKS0+Y29tcHV0ZUxlbmd0aEZsb2F0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwg
em9vbUZhY3Rvcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUt
PmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0
b3IpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUt
PnNldFRleHRTdHJva2VXaWR0aCh3aWR0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybTogewotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTCh0cmFuc2Zvcm0sIFRyYW5zZm9ybSk7Ci0gICAgICAgIFRyYW5zZm9ybU9w
ZXJhdGlvbnMgb3BlcmF0aW9uczsKLSAgICAgICAgY3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2
YWx1ZSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCBvcGVyYXRpb25zKTsKLSAgICAgICAg
bV9zdHlsZS0+c2V0VHJhbnNmb3JtKG9wZXJhdGlvbnMpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5zZm9ybU9yaWdpblgsIFRyYW5zZm9ybU9yaWdp
blgpCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5zZm9ybU9yaWdpblks
IFRyYW5zZm9ybU9yaWdpblkpCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRy
YW5zZm9ybU9yaWdpblosIFRyYW5zZm9ybU9yaWdpblopCi0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWDogewotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1PcmlnaW5YLCBUcmFuc2Zvcm1PcmlnaW5YKQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBMZW5ndGggbDsKLSAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpOwotICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgo
dHlwZSkpCi0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVu
Z3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvciks
IEZpeGVkKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXRE
b3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBtX3N0eWxlLT5zZXRUcmFuc2Zvcm1PcmlnaW5YKGwpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblk6IHsK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWSwgVHJh
bnNmb3JtT3JpZ2luWSkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjpp
c1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVW
YWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5
bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmlt
aXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtT3JpZ2luWShs
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5aOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5z
Zm9ybU9yaWdpblosIFRyYW5zZm9ybU9yaWdpblopCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGZsb2F0IGY7Ci0gICAgICAgIGludCB0
eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1By
aW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgZiA9IHN0
YXRpY19jYXN0PGZsb2F0PihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0
aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRUcmFuc2Zvcm1PcmlnaW5aKGYpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0
eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1TdHlsZTNE
LCBUcmFuc2Zvcm1TdHlsZTNEKQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCi0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRUcmFuc2Zvcm1TdHlsZTNEKChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpID8gVHJhbnNmb3JtU3R5bGUzRFByZXNlcnZlM0Qg
OiBUcmFuc2Zvcm1TdHlsZTNERmxhdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwocGVyc3BlY3RpdmUsIFBlcnNwZWN0aXZlKQotICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7Ci0gICAg
ICAgICAgICBtX3N0eWxlLT5zZXRQZXJzcGVjdGl2ZSgwKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZmxvYXQgcGVyc3BlY3RpdmVWYWx1ZTsKLSAg
ICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAg
ICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAg
ICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwg
em9vbUZhY3RvcikpOwotICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKSB7Ci0gICAgICAgICAgICAvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0
eSwgdHJlYXQgdmFsdWVsZXNzIG51bWJlcnMgYXMgcHguCi0gICAgICAgICAgICBwZXJzcGVjdGl2
ZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91
YmxlVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCktPmNvbXB1dGVMZW5ndGhGbG9h
dChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAocGVyc3BlY3RpdmVWYWx1ZSA+
PSAwLjBmKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVW
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBlcnNwZWN0aXZlT3JpZ2luOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChw
ZXJzcGVjdGl2ZU9yaWdpblgsIFBlcnNwZWN0aXZlT3JpZ2luWCkKLSAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmVPcmlnaW5ZLCBQZXJzcGVjdGl2ZU9yaWdpblkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVP
cmlnaW5YOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZl
T3JpZ2luWCwgUGVyc3BlY3RpdmVPcmlnaW5YKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBMZW5ndGggbDsKLSAgICAgICAgaW50IHR5
cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAoQ1NTUHJp
bWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICBsID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvciksIEZpeGVkKTsKLSAgICAgICAgZWxzZSBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBs
ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRQZXJz
cGVjdGl2ZU9yaWdpblgobCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWTogewotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChwZXJzcGVjdGl2ZU9yaWdpblksIFBlcnNwZWN0aXZlT3JpZ2luWSkKLSAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
TGVuZ3RoIGw7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5
cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5
cGUpKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0
aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBG
aXhlZCk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
RVJDRU5UQUdFKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91
YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgbV9zdHlsZS0+c2V0UGVyc3BlY3RpdmVPcmlnaW5ZKGwpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246Ci0gICAgICAg
IGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5jbGVhckFuaW1hdGlvbnMoKTsK
LSAgICAgICAgZWxzZSBpZiAoaXNJbmhlcml0KQotICAgICAgICAgICAgbV9zdHlsZS0+aW5oZXJp
dEFuaW1hdGlvbnMobV9wYXJlbnRTdHlsZS0+YW5pbWF0aW9ucygpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheToKLSAgICAgICAgSEFO
RExFX0FOSU1BVElPTl9WQUxVRShkZWxheSwgRGVsYXksIHZhbHVlKQotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbjoKLSAgICAgICAg
SEFORExFX0FOSU1BVElPTl9WQUxVRShkaXJlY3Rpb24sIERpcmVjdGlvbiwgdmFsdWUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb246
Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUoZHVyYXRpb24sIER1cmF0aW9uLCB2YWx1
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25G
aWxsTW9kZToKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRShmaWxsTW9kZSwgRmlsbE1v
ZGUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkl0ZXJhdGlvbkNvdW50OgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGl0
ZXJhdGlvbkNvdW50LCBJdGVyYXRpb25Db3VudCwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZToKLSAgICAgICAgSEFORExFX0FO
SU1BVElPTl9WQUxVRShuYW1lLCBOYW1lLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGU6Ci0gICAgICAgIEhBTkRMRV9B
TklNQVRJT05fVkFMVUUocGxheVN0YXRlLCBQbGF5U3RhdGUsIHZhbHVlKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOgot
ICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5j
dGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvbjoKLSAgICAgICAgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUt
PmNsZWFyVHJhbnNpdGlvbnMoKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbmhlcml0KQotICAgICAg
ICAgICAgbV9zdHlsZS0+aW5oZXJpdFRyYW5zaXRpb25zKG1fcGFyZW50U3R5bGUtPnRyYW5zaXRp
b25zKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
aXRpb25EZWxheToKLSAgICAgICAgSEFORExFX1RSQU5TSVRJT05fVkFMVUUoZGVsYXksIERlbGF5
LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uRHVyYXRpb246Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKGR1cmF0aW9u
LCBEdXJhdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5OgotICAgICAgICBIQU5ETEVfVFJBTlNJVElPTl9WQUxV
RShwcm9wZXJ0eSwgUHJvcGVydHksIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICAgICAgSEFORExF
X1RSQU5TSVRJT05fVkFMVUUodGltaW5nRnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uLCB2YWx1ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzOgotICAg
IHsKLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS82NTYxMDc3PiBXb3JrIGFyb3VuZCB0aGUgU3RvY2tzIHdpZGdldCdzIG1pc3VzZSBvZiB0
aGUKLSAgICAgICAgLy8gcG9pbnRlci1ldmVudHMgcHJvcGVydHkgYnkgbm90IGFwcGx5aW5nIGl0
IGluIERhc2hib2FyZC4KLSAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9jaGVja2VyLm1f
ZG9jdW1lbnQtPnNldHRpbmdzKCk7Ci0gICAgICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+
dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSNlbmRpZgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwb2ludGVy
RXZlbnRzLCBQb2ludGVyRXZlbnRzKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRQb2ludGVyRXZlbnRzKCpwcmlt
aXRpdmVWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgCi0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRDb2xvclNwYWNlKG1fcGFyZW50U3R5bGUtPmNvbG9yU3BhY2UoKSk7
Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENv
bG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRDb2xvclNwYWNlKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlTaXplOgotICAgICAgICBhcHBs
eVBhZ2VTaXplUHJvcGVydHkodmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVNwZWFrOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChz
cGVhaywgU3BlYWspOwotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRTcGVhaygqcHJpbWl0aXZlVmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRGlyZWN0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVz
b2x2ZWQgYnkgcmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoKSBiZWZvcmUgdGhlIHN3aXRj
aC4KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRW5kU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyU3RhcnRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0
aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcjoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXJXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
cjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0VuZDoKLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRk
aW5nQmVmb3JlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXI6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TG9naWNhbEhlaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNh
bFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0OgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3RyZXRjaDoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5UGFnZToKLSAgICBjYXNlIENTU1Byb3BlcnR5UXVvdGVzOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRMaW5lVGhyb3VnaENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hN
b2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRPdmVybGluZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lQ29sb3I6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHRPdmVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZToKLSAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dFVuZGVybGluZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9k
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRTaXplRGVsdGE6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0lu
RWZmZWN0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6Ci0gICAgICAgIHJldHVybjsKLSNpZiBFTkFC
TEUoV0NTUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQ6Ci0gICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZSAmJiBtX2VsZW1lbnQtPmhhc1RhZ05hbWUoV2ViQ29yZTo6aW5wdXRU
YWcpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbWFzayA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJp
bmdWYWx1ZSgpOwotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG1f
ZWxlbWVudCktPnNldFdhcElucHV0Rm9ybWF0KG1hc2spOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVpcmVkOgotICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUgJiYgbV9lbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKSB7
Ci0gICAgICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nh
c3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG1fZWxlbWVudCk7Ci0gICAgICAgICAgICBib29s
IHJlcXVpcmVkID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkgPT0gInRydWUiOwot
ICAgICAgICAgICAgZWxlbWVudC0+c2V0UmVxdWlyZWQocmVxdWlyZWQpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybjsKLSNlbmRpZiAKLQotICAgIC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUg
TGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBwb3J0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFdyaXRpbmdNb2RlOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FO
RF9QUklNSVRJVkUod3JpdGluZ01vZGUsIFdyaXRpbmdNb2RlKQotICAgICAgICBpZiAoIWlzSW5o
ZXJpdCAmJiAhaXNJbml0aWFsICYmIG1fZWxlbWVudCAmJiBtX2VsZW1lbnQgPT0gbV9lbGVtZW50
LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKLSAgICAgICAgICAgIG1fZWxlbWVudC0+
ZG9jdW1lbnQoKS0+c2V0V3JpdGluZ01vZGVTZXRPbkRvY3VtZW50RWxlbWVudCh0cnVlKTsKLSAg
ICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNj
cmlwdGlvbigpOwotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0T3JpZW50YXRpb24obV9zdHls
ZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7Ci0g
ICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkK
LSAgICAgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZToKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh0ZXh0Q29tYmluZSwgVGV4dENvbWJp
bmUpCi0gICAgICAgIGlmIChtX3N0eWxlLT5oYXNUZXh0Q29tYmluZSgpKQotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0VW5pcXVlKCk7IC8vIFRoZSBzdHlsZSBjb3VsZCBiZSBtb2RpZmllZCBpbiBS
ZW5kZXJDb21iaW5lVGV4dCBkZXBlbmRpbmcgb24gdGV4dCBtZXRyaWNzLgotICAgICAgICByZXR1
cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb246Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodGV4dEVtcGhh
c2lzUG9zaXRpb24sIFRleHRFbXBoYXNpc1Bvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGU6Ci0gICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRFbXBoYXNpc0ZpbGwsIFRleHRFbXBoYXNpc0ZpbGwp
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRFbXBoYXNpc01hcmssIFRl
eHRFbXBoYXNpc01hcmspCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRF
bXBoYXNpc0N1c3RvbU1hcmssIFRleHRFbXBoYXNpc0N1c3RvbU1hcmspCi0gICAgICAgIGlmIChp
c0luaGVyaXQgfHwgaXNJbml0aWFsKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlm
ICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAgICAgICAgICAgQVNTRVJU
KGxpc3QtPmxlbmd0aCgpID09IDIpOwotICAgICAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpICE9
IDIpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChsaXN0LT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKGkpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4obGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlT3BlbikKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVt
cGhhc2lzRmlsbCgqdmFsdWUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyaygqdmFsdWUpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRv
bSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXByaW1p
dGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSB7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0Zp
bGxGaWxsZWQpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0
RW1waGFzaXNNYXJrQ3VzdG9tKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNp
c0N1c3RvbU1hcmsocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lz
Q3VzdG9tTWFyayhudWxsQXRvbSk7Ci0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlT3BlbikgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmls
bCgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lz
TWFyayhUZXh0RW1waGFzaXNNYXJrQXV0byk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpOwot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyaygqcHJpbWl0aXZlVmFsdWUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRU5BQkxFKFNWRykKLSAgICBk
ZWZhdWx0OgotICAgICAgICAvLyBUcnkgdGhlIFNWRyBwcm9wZXJ0aWVzCi0gICAgICAgIGFwcGx5
U1ZHUHJvcGVydHkoaWQsIHZhbHVlKTsKLSNlbmRpZgotICAgIH0KLX0KLQotdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkoQ1NTVmFsdWUqIHZhbHVlKQotewotICAg
IG1fc3R5bGUtPnJlc2V0UGFnZVNpemVUeXBlKCk7Ci0gICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxp
c3QoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAgIExlbmd0aCB3aWR0aDsKLSAgICBM
ZW5ndGggaGVpZ2h0OwotICAgIFBhZ2VTaXplVHlwZSBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVf
QVVUTzsKLSAgICBzd2l0Y2ggKHZhbHVlTGlzdC0+bGVuZ3RoKCkpIHsKLSAgICBjYXNlIDI6IHsK
LSAgICAgICAgLy8gPGxlbmd0aD57Mn0gfCA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+Ci0gICAg
ICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKLSAgICAgICAgaWYgKCF2YWx1
ZUxpc3QtPml0ZW0oMCktPmlzUHJpbWl0aXZlVmFsdWUoKSB8fCAhdmFsdWVMaXN0LT5pdGVtKDEp
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgwKSk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZTEgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlz
dC0+aXRlbSgxKSk7Ci0gICAgICAgIGludCB0eXBlMCA9IHByaW1pdGl2ZVZhbHVlMC0+cHJpbWl0
aXZlVHlwZSgpOwotICAgICAgICBpbnQgdHlwZTEgPSBwcmltaXRpdmVWYWx1ZTEtPnByaW1pdGl2
ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3Ro
KHR5cGUwKSkgewotICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KLSAgICAgICAgICAgIGlmICgh
Q1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZTEpKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIHdpZHRoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlMC0+
Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBG
aXhlZCk7Ci0gICAgICAgICAgICBoZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUxLT5jb21w
dXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVk
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+IDxvcmllbnRh
dGlvbj4KLSAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvcmRlciBpcyBndWFyYW50ZWVkLiBTZWUg
Q1NTUGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIuCi0gICAgICAgICAgICBpZiAoIXBhZ2VTaXpl
RnJvbU5hbWUocHJpbWl0aXZlVmFsdWUwLCBwcmltaXRpdmVWYWx1ZTEsIHdpZHRoLCBoZWlnaHQp
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgY2FzZSAxOiB7Ci0gICAgICAgIC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNp
emU+IHwgWyBwb3J0cmFpdCB8IGxhbmRzY2FwZV0KLSAgICAgICAgaWYgKCF2YWx1ZUxpc3QtPml0
ZW0oMCktPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZUxpc3QtPml0ZW0oMCkpOwotICAgICAgICBpbnQgdHlwZSA9IHByaW1p
dGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1
ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgewotICAgICAgICAgICAgLy8gPGxlbmd0aD4KLSAg
ICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKLSAgICAgICAgICAg
IHdpZHRoID0gaGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50
Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SURFTlQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86
Ci0gICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlUG9ydHJhaXQ6Ci0gICAg
ICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9fUE9SVFJBSVQ7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBlOgot
ICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPX0xBTkRTQ0FQRTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgLy8gPHBhZ2Utc2l6ZT4KLSAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdF
X1NJWkVfUkVTT0xWRUQ7Ci0gICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKHBy
aW1pdGl2ZVZhbHVlLCAwLCB3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fc3R5bGUtPnNldFBhZ2VT
aXplVHlwZShwYWdlU2l6ZVR5cGUpOwotICAgIG1fc3R5bGUtPnNldFBhZ2VTaXplKExlbmd0aFNp
emUod2lkdGgsIGhlaWdodCkpOwotICAgIHJldHVybjsKLX0KLQotYm9vbCBDU1NTdHlsZVNlbGVj
dG9yOjpwYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENT
U1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3JpZW50YXRpb24sIExlbmd0aCYgd2lkdGgsIExlbmd0aCYg
aGVpZ2h0KQotewotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTVXaWR0aCA9IG1tTGVuZ3RoKDE0
OCksIGE1SGVpZ2h0ID0gbW1MZW5ndGgoMjEwKTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE0
V2lkdGggPSBtbUxlbmd0aCgyMTApLCBhNEhlaWdodCA9IG1tTGVuZ3RoKDI5Nyk7Ci0gICAgc3Rh
dGljIGNvbnN0IExlbmd0aCBhM1dpZHRoID0gbW1MZW5ndGgoMjk3KSwgYTNIZWlnaHQgPSBtbUxl
bmd0aCg0MjApOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYjVXaWR0aCA9IG1tTGVuZ3RoKDE3
NiksIGI1SGVpZ2h0ID0gbW1MZW5ndGgoMjUwKTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI0
V2lkdGggPSBtbUxlbmd0aCgyNTApLCBiNEhlaWdodCA9IG1tTGVuZ3RoKDM1Myk7Ci0gICAgc3Rh
dGljIGNvbnN0IExlbmd0aCBsZXR0ZXJXaWR0aCA9IGluY2hMZW5ndGgoOC41KSwgbGV0dGVySGVp
Z2h0ID0gaW5jaExlbmd0aCgxMSk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZWdhbFdpZHRo
ID0gaW5jaExlbmd0aCg4LjUpLCBsZWdhbEhlaWdodCA9IGluY2hMZW5ndGgoMTQpOwotICAgIHN0
YXRpYyBjb25zdCBMZW5ndGggbGVkZ2VyV2lkdGggPSBpbmNoTGVuZ3RoKDExKSwgbGVkZ2VySGVp
Z2h0ID0gaW5jaExlbmd0aCgxNyk7Ci0KLSAgICBpZiAoIXBhZ2VTaXplTmFtZSB8fCBwYWdlU2l6
ZU5hbWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFwYWdlU2l6ZU5hbWUgfHwgcGFnZVNpemVO
YW1lLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChwYWdlU2l6ZU5hbWUtPmdldElkZW50
KCkpIHsKICAgICBjYXNlIENTU1ZhbHVlQTU6CkBAIC02MDIxLDcgKzM1NjQsNyBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxDb21wb3NpdGUoCiAgICAgICAgIGxheWVyLT5zZXRDb21w
b3NpdGUoRmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZShsYXllci0+dHlwZSgpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjExNCw5ICszNjU3LDkgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsU2l6ZShDU1NQcgogICAgICAgICBsYXllci0+c2V0U2l6
ZVR5cGUoQ292ZXIpOwogICAgIGVsc2UKICAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKFNpemVM
ZW5ndGgpOwotICAgIAorCiAgICAgTGVuZ3RoU2l6ZSBiID0gRmlsbExheWVyOjppbml0aWFsRmls
bFNpemVMZW5ndGgobGF5ZXItPnR5cGUoKSk7Ci0gICAgCisKICAgICBpZiAodmFsdWUtPmNzc1Zh
bHVlVHlwZSgpID09IENTU1ZhbHVlOjpDU1NfSU5JVElBTCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4KICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVDb3ZlcikgewogICAgICAgICBsYXllci0+c2V0U2l6ZUxlbmd0
aChiKTsKQEAgLTYxMjYsMTQgKzM2NjksMTQgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBG
aWxsU2l6ZShDU1NQcgogICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZh
bHVlKCk7CiAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5maXJzdCgpKTsKICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
PihwYWlyLT5zZWNvbmQoKSk7Ci0gICAgCisKICAgICBMZW5ndGggZmlyc3RMZW5ndGgsIHNlY29u
ZExlbmd0aDsKICAgICBpbnQgZmlyc3RUeXBlID0gZmlyc3QtPnByaW1pdGl2ZVR5cGUoKTsKICAg
ICBpbnQgc2Vjb25kVHlwZSA9IHNlY29uZC0+cHJpbWl0aXZlVHlwZSgpOwotICAgIAorCiAgICAg
ZmxvYXQgem9vbUZhY3RvciA9IG1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKIAogICAgIGlmIChm
aXJzdFR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTktOT1dOKQpAQCAtNjE1Myw3ICsz
Njk2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsU2l6ZShDU1NQcgogICAgICAg
ICBzZWNvbmRMZW5ndGggPSBMZW5ndGgoc2Vjb25kLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50
KTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGIuc2V0V2lkdGgoZmly
c3RMZW5ndGgpOwogICAgIGIuc2V0SGVpZ2h0KHNlY29uZExlbmd0aCk7CiAgICAgbGF5ZXItPnNl
dFNpemVMZW5ndGgoYik7CkBAIC03MDY0LDcgKzQ2MDcsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0
b3I6OmNyZWF0ZVRyYW5zZm9ybU9wCiAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGNsYW1wVG9Q
b3NpdGl2ZUludGVnZXIodmFsKTsKICAgICAgICAgICAgICAgICAgICAgcCA9IExlbmd0aChzdGF0
aWNfY2FzdDxpbnQ+KHZhbCksIEZpeGVkKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAko
cmV2aXNpb24gNzczNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDggQEAgcHVibGljOgogICAgIHByaXZhdGU6
CiAgICAgICAgIHZvaWQgc2V0Rm9udFNpemUoRm9udERlc2NyaXB0aW9uJiwgZmxvYXQgc2l6ZSk7
CiAgICAgICAgIHN0YXRpYyBmbG9hdCBnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShE
b2N1bWVudCosIFJlbmRlclN0eWxlKiwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgZmxvYXQgc3BlY2lm
aWVkU2l6ZSwgYm9vbCB1c2VTVkdab29tUnVsZXMpOwotCisgICAgICAgIHN0YXRpYyBMZW5ndGgg
Y29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCk7Cisg
ICAgICAgIHN0YXRpYyB2b2lkIGFwcGx5Q291bnRlckxpc3QoUmVuZGVyU3R5bGUqLCBDU1NWYWx1
ZUxpc3QqLCBib29sIGlzUmVzZXQpOwogICAgIHB1YmxpYzoKICAgICAgICAgQ29sb3IgZ2V0Q29s
b3JGcm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqKSBjb25zdDsKIApAQCAtMzIx
LDYgKzMyMiw5IEBAIHB1YmxpYzoKICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4g
bV9zZWxlY3RvckF0dHJzOwogICAgICAgICBWZWN0b3I8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qPiBtX2FkZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZURlY2xzOwogICAgICAgICBWZWN0b3I8TWVk
aWFRdWVyeVJlc3VsdCo+IG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0czsKKwor
Ly8gcHVsbCBpbiBhdXRvLWdlbmVyYXRlZCBhcHBseSBwcm9wZXJ0eSBwcm90b3R5cGVzCisjaW5j
bHVkZSAiQ1NTU3R5bGVBcHBseVByb3BlcnR5LmgiCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAkocmV2aXNpb24gNzczNTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwJKHdvcmtpbmcgY29weSkKQEAgLTEzOCwzICsx
MzgsNTMgQEAgRU9GCiBjbG9zZSBIRUFERVI7CiAKIHN5c3RlbSgiZ3BlcmYgLS1rZXktcG9zaXRp
b25zPVwiKlwiIC1EIC1uIC1zIDIgQ1NTUHJvcGVydHlOYW1lcy5ncGVyZiA+IENTU1Byb3BlcnR5
TmFtZXMuY3BwIikgPT0gMCB8fCBkaWUgImNhbGxpbmcgZ3BlcmYgZmFpbGVkOiAkPyI7CisKKwor
b3BlbiBBUFBMWV9IRUFERVIsICI+Q1NTU3R5bGVBcHBseVByb3BlcnR5LmgiIHx8IGRpZSAiQ291
bGQgbm90IG9wZW4gQ1NTU3R5bGVBcHBseVByb3BlcnR5LmggZm9yIHdyaXRpbmciOworcHJpbnQg
QVBQTFlfSEVBREVSIDw8ICJFT0YiOworLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gQ1NTUHJvcGVydHlOYW1lcy5pbiBieSBtYWtlcHJvcCwgZG8gbm90IGVkaXQg
Ki8KKworc3RhdGljIHZvaWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5SW52YWxpZChDU1NTdHls
ZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVy
dHlJbnZhbGlkKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRs
ZVZhbHVlQ1NTUHJvcGVydHlJbnZhbGlkKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlLCBDU1NW
YWx1ZSAqdmFsdWUpOworCitFT0YKKworZm9yZWFjaCBteSAkbmFtZSAoQG5hbWVzKSB7CisgIG15
ICRpZCA9ICRuYW1lOworICAkaWQgPX4gcy8oXlteLV0pfC0oLikvdWMoJDF8fCQyKS9nZTsKKyAg
cHJpbnQgQVBQTFlfSEVBREVSICJzdGF0aWMgdm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHki
IC4gJGlkIC4gIihDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7XG4iOworICBwcmludCBBUFBM
WV9IRUFERVIgInN0YXRpYyB2b2lkIGhhbmRsZUluaXRpYWxDU1NQcm9wZXJ0eSIgLiAkaWQgLiAi
KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTtcbiI7CisgIHByaW50IEFQUExZX0hFQURFUiAi
c3RhdGljIHZvaWQgaGFuZGxlVmFsdWVDU1NQcm9wZXJ0eSIgLiAkaWQgLiAiKENTU1N0eWxlU2Vs
ZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpO1xuXG4iOworfQorCitwcmludCBBUFBM
WV9IRUFERVIgPDwgIkVPRiI7CisjaWYgRU5BQkxFKFdDU1MpCisvLyBGSVhNRTogV0NTUyBQcm9w
ZXJ0aWVzIGFyZSBub3QgYWN0dWFsbHkgZGVmaW5lZCBpbiBDU1NQcm9wZXJ0eS5pbgorc3RhdGlj
IHZvaWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3AoQ1NTU3R5bGVTZWxl
Y3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlSW5pdGlhbENTU1Byb3BlcnR5V2Fw
TWFycXVlZUxvb3AoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFu
ZGxlVmFsdWVDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wKENTU1N0eWxlU2VsZWN0b3IgKmluc3Rh
bmNlLCBDU1NWYWx1ZSAqdmFsdWUpOworCitzdGF0aWMgdm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJv
cGVydHlXYXBNYXJxdWVlU3BlZWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGlj
IHZvaWQgaGFuZGxlSW5pdGlhbENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkKENTU1N0eWxlU2Vs
ZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZVZhbHVlQ1NTUHJvcGVydHlXYXBN
YXJxdWVlU3BlZWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7
CisKK3N0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZShD
U1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NT
UHJvcGVydHlXYXBNYXJxdWVlU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3Rh
dGljIHZvaWQgaGFuZGxlVmFsdWVDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZShDU1NTdHlsZVNl
bGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKTsKKworc3RhdGljIHZvaWQgaGFuZGxl
SW5oZXJpdENTU1Byb3BlcnR5V2FwTWFycXVlZURpcihDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5j
ZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyKENT
U1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZVZhbHVlQ1NTUHJv
cGVydHlXYXBNYXJxdWVlRGlyKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAq
dmFsdWUpOworCitzdGF0aWMgdm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHlXYXBJbnB1dEZv
cm1hdChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0
aWFsQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7
CitzdGF0aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQoQ1NTU3R5
bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7CisKK3N0YXRpYyB2b2lkIGhh
bmRsZUluaGVyaXRDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQoQ1NTU3R5bGVTZWxlY3RvciAq
aW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlSW5pdGlhbENTU1Byb3BlcnR5V2FwSW5wdXRS
ZXF1aXJlZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVW
YWx1ZUNTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5j
ZSwgQ1NTVmFsdWUgKnZhbHVlKTsKKyNlbmRpZgorRU9GCisKK2Nsb3NlIEFQUExZX0hFQURFUjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81029</attachid>
            <date>2011-02-02 21:29:23 -0800</date>
            <delta_ts>2011-02-03 15:24:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46592-20110203162919.patch</filename>
            <type>text/plain</type>
            <size>319496</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NDU2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMTkgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkgdG8gdXNlIHNlcGFyYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBjYXNlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTIKKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGxp
Y2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRFRklORV9WQUxVRSk6CisgICAg
ICAgIChXZWJDb3JlOjpERUZJTkVfSU5IRVJJVCk6CisgICAgICAgIChXZWJDb3JlOjpERUZJTkVf
SU5JVElBTCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oOgorCiAyMDExLTAyLTAyICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDc3NDU2KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc3Nyw2ICs3NzcsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAogICAgIGNzcy9DU1NTZWxlY3Rv
ci5jcHAKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorICAgIGNzcy9DU1NTdHlsZUFwcGx5
UHJvcGVydHkuY3BwCiAgICAgY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCiAgICAgY3NzL0NT
U1N0eWxlUnVsZS5jcHAKICAgICBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiA3NzQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI4LDYgKzEwMjgsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yTGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVJ1bGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDc3NDU2KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc0LDYgKzEw
NzQsOCBAQAogICAgICAgICAgICAgJ2Nzcy9DU1NTZWxlY3Rvci5oJywKICAgICAgICAgICAgICdj
c3MvQ1NTU2VsZWN0b3JMaXN0LmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU1NlbGVjdG9yTGlz
dC5oJywKKyAgICAgICAgICAgICdjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCcsCisgICAg
ICAgICAgICAnY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oJywKICAgICAgICAgICAgICdjc3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NTdHlsZURlY2xh
cmF0aW9uLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NTdHlsZVJ1bGUuY3BwJywKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCShyZXZpc2lvbiA3NzQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CSh3b3JraW5nIGNvcHkpCkBAIC02NzEsNiArNjcxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgY3Nz
L0NTU1NlbGVjdG9yLmNwcCBcCiAgICAgY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgXAogICAgIGNz
cy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAgXAorICAgIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVy
dHkuY3BwIFwKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgXAogICAgIGNzcy9DU1NT
dHlsZVJ1bGUuY3BwIFwKICAgICBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgXApAQCAtMTYwNyw2
ICsxNjA4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmgg
XAogICAgIGNzcy9DU1NTZWxlY3Rvci5oIFwKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmggXAor
ICAgIGNzcy9DU1NTdHlsZUFwcGx5UHJvcHdlcnR5LmggXAogICAgIGNzcy9DU1NTdHlsZURlY2xh
cmF0aW9uLmggXAogICAgIGNzcy9DU1NTdHlsZVJ1bGUuaCBcCiAgICAgY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NzQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY5OCw2ICsx
Njk4LDcgQEAKIAkJN0VFNjg0NzAxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVE
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VFNjg0NzExMkQyNkUzODAwRTc5NDE1
IC8qIFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VS
ZXNwb25zZUNGTmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NzUxMkQyNkU3MDAwRTc5NDE1IC8qIFJl
c291cmNlTG9hZGVyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NzQxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZO
ZXQuY3BwICovOyB9OworCQk4MDFBNjNCNzEyRkEzNzdBMDA3N0I0RUUgLyogQ1NTU3R5bGVBcHBs
eVByb3BlcnR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgwMUE2M0I2MTJGQTM3N0EwMDc3QjRFRSAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3Bw
ICovOyB9OwogCQk4MUE3MzI1RTEyMTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MUE3MzI1RDEyMTAxODlC
MDBGQzBEOUUgLyogSURCQ3Vyc29yLmggKi87IH07CiAJCTgxQTczMjYwMTIxMDE4QTQwMEZDMEQ5
RSAvKiBJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODFBNzMyNUYxMjEwMThBNDAwRkMwRDlFIC8qIElEQkN1cnNvci5jcHAgKi87IH07
CiAJCTgxQTczMjc4MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMyNzcxMjEw
MTlFMTAwRkMwRDlFIC8qIElEQkN1cnNvckJhY2tlbmRJbXBsLmggKi87IH07CkBAIC04MTU0LDYg
KzgxNTUsNyBAQAogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25z
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZVJlc3BvbnNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDVFMTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0VFNjg0NzQxMkQyNkU3MDAwRTc5NDE1IC8qIFJlc291cmNlTG9hZGVyQ0ZOZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVzb3VyY2VMb2FkZXJD
Rk5ldC5jcHA7IHBhdGggPSBjZi9SZXNvdXJjZUxvYWRlckNGTmV0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODAxQTYzQjYxMkZBMzc3QTAwNzdCNEVFIC8qIENTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NT
dHlsZUFwcGx5UHJvcGVydHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUE3
MzI1RDEyMTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElEQkN1cnNvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MUE3MzI1RjEyMTAxOEE0MDBGQzBEOUUgLyogSURCQ3Vyc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkN1cnNvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgxQTczMjc3MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1w
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3JCYWNrZW5kSW1w
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1MzUsNiArMTg1MzcsNyBAQAog
CQkJCUE4MEU2Q0REMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFnZVZhbHVlLmggKi8s
CiAJCQkJQkM2MDRBNDIwREI1NjM0RTAwMjA0NzM5IC8qIENTU0NhbnZhc1ZhbHVlLmNwcCAqLywK
IAkJCQlCQzYwNDlDQjBEQjU2MEMyMDAyMDQ3MzkgLyogQ1NTQ2FudmFzVmFsdWUuaCAqLywKKwkJ
CQk4MDFBNjNCNjEyRkEzNzdBMDA3N0I0RUUgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCAq
LywKIAkJCQlFMUVCQkJEMzBBQUM5Qjg3MDAxRkU4RTIgLyogQ1NTQ2hhcnNldFJ1bGUuY3BwICov
LAogCQkJCUE4MEU2Q0NGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NDaGFyc2V0UnVsZS5oICovLAog
CQkJCTg1QzU2Q0FDMEFBODlGOEUwMEQ5NTc1NSAvKiBDU1NDaGFyc2V0UnVsZS5pZGwgKi8sCkBA
IC0yNTE4Niw2ICsyNTE4OSw3IEBACiAJCQkJQkNFNDQxMzMxMkY3NDhFMjAwOUI4NEI4IC8qIFJl
bmRlckNvbWJpbmVUZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OTQ3RkZEMTJGODBDRDIw
MEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdD
NDcxREIxMkY5MjVCRDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk4MDFBNjNCNzEyRkEzNzdBMDA3N0I0RUUgLyogQ1NTU3R5bGVBcHBseVBy
b3BlcnR5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlQXBwbHlQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTEy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CisgKiAgICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBj
YXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hhbmtz
ICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisKKyNpbmNsdWRlICJDb3VudGVyQ29u
dGVudC5oIgorI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFn
ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oIgorI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ291bnRlci5oIgorI2luY2x1ZGUgIkZvbnRGYW1p
bHlWYWx1ZS5oIgorI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIlBhaXIuaCIKKyNpbmNsdWRlICJSZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgi
CisjaW5jbHVkZSAiU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIgorCisjaWYgVVNFKFBMQVRGT1JNX1NU
UkFURUdJRVMpCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiVmlz
aXRlZExpbmtTdHJhdGVneS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCisjaW5jbHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShT
VkcpCisjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjZW5k
aWYKKworI2lmIEVOQUJMRShXTUwpCisjaW5jbHVkZSAiV01MTmFtZXMuaCIKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8cXdlYmhpc3RvcnlpbnRlcmZhY2UuaD4KKyNlbmRp
ZgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNkZWZp
bmUgREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxl
SW5oZXJpdCMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpCisKKyNkZWZpbmUg
REVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5p
dGlhbCMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpCisKKyNkZWZpbmUgREVG
SU5FX1ZBTFVFKFByb3BlcnR5KSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNQ
cm9wZXJ0eShDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKQorCisj
ZGVmaW5lIERFRklORV9IQU5ETEVfSU5IRVJJVChQcm9wZXJ0eSwgU2V0dGVyLCBHZXR0ZXIpIFwK
K0RFRklORV9JTkhFUklUKFByb3BlcnR5KSBcCit7IFwKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
U2V0dGVyKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5HZXR0ZXIoKSk7IFwKK30KKworI2RlZmlu
ZSBERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKFByb3BlcnR5LCBTZXR0ZXIsIEdldHRlciwg
QmFja3VwKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKGluc3Rh
bmNlLT5tX3BhcmVudFN0eWxlLT5HZXR0ZXIoKS5pc1ZhbGlkKCkpIFwKKyAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPlNldHRlcihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0dGVyKCkpOyBc
CisgICAgZWxzZSBcCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoaW5zdGFuY2Ut
Pm1fcGFyZW50U3R5bGUtPkJhY2t1cCgpKTsgXAorfQorCisjZGVmaW5lIERFRklORV9IQU5ETEVf
SU5JVElBTChQcm9wZXJ0eSwgU2V0dGVyLCBHZXR0ZXIpIFwKK0RFRklORV9JTklUSUFMKFByb3Bl
cnR5KSBcCit7IFwKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKFJlbmRlclN0eWxlOjpH
ZXR0ZXIoKSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoUHJv
cGVydHksIFNldHRlcikgXAorREVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIFwKK3sgXAorICAgIENv
bG9yIGNvbDsgXAorICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoY29sKTsgXAorfQorCisj
ZGVmaW5lIERFRklORV9IQU5ETEVfVkFMVUUoUHJvcGVydHksIFNldHRlcikgXAorREVGSU5FX1ZB
TFVFKFByb3BlcnR5KSBcCit7IFwKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eyBcCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7IFwKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcigq
cCk7IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKFBy
b3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYg
KHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsgXAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAg
IENvbG9yIGNvbCA9IGluc3RhbmNlLT5nZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShwKTsgXAor
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKGNvbCk7IFwKKyAgICB9IFwKK30KKwor
I2RlZmluZSBERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChQcm9wZXJ0eSwgbGF5ZXJU
eXBlLCBMYXllclR5cGUsIHByb3AsIFByb3ApIFwKK0RFRklORV9JTkhFUklUKFByb3BlcnR5KSBc
Cit7IFwKKyAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nl
c3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7IFwKKyAgICBGaWxsTGF5ZXIqIHByZXZDaGlsZCA9IDA7
IFwKKyAgICBjb25zdCBGaWxsTGF5ZXIqIGN1cnJQYXJlbnQgPSBpbnN0YW5jZS0+bV9wYXJlbnRT
dHlsZS0+bGF5ZXJUeXBlIyNMYXllcnMoKTsgXAorICAgIHdoaWxlIChjdXJyUGFyZW50ICYmIGN1
cnJQYXJlbnQtPmlzIyNQcm9wIyNTZXQoKSkgeyBcCisgICAgICAgIGlmICghY3VyckNoaWxkKSB7
IFwKKyAgICAgICAgICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBsYXllci4qLyBcCisgICAgICAg
ICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKExheWVyVHlwZSMjRmlsbExheWVyKTsgXAor
ICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1cnJDaGlsZCk7IFwKKyAgICAgICAgfSBc
CisgICAgICAgIGN1cnJDaGlsZC0+c2V0IyNQcm9wKGN1cnJQYXJlbnQtPnByb3AoKSk7IFwKKyAg
ICAgICAgcHJldkNoaWxkID0gY3VyckNoaWxkOyBcCisgICAgICAgIGN1cnJDaGlsZCA9IHByZXZD
aGlsZC0+bmV4dCgpOyBcCisgICAgICAgIGN1cnJQYXJlbnQgPSBjdXJyUGFyZW50LT5uZXh0KCk7
IFwKKyAgICB9IFwKKyAgICBcCisgICAgd2hpbGUgKGN1cnJDaGlsZCkgeyBcCisgICAgICAgIC8q
IFJlc2V0IGFueSByZW1haW5pbmcgbGF5ZXJzIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQu
ICovIFwKKyAgICAgICAgY3VyckNoaWxkLT5jbGVhciMjUHJvcCgpOyBcCisgICAgICAgIGN1cnJD
aGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5F
X0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoUHJvcGVydHksIGxheWVyVHlwZSwgTGF5ZXJUeXBl
LCBwcm9wLCBQcm9wKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgRmls
bExheWVyKiBjdXJyQ2hpbGQgPSBpbnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzIyNMYXllclR5cGUj
I0xheWVycygpOyBcCisgICAgY3VyckNoaWxkLT5zZXQjI1Byb3AoRmlsbExheWVyOjppbml0aWFs
RmlsbCMjUHJvcChMYXllclR5cGUjI0ZpbGxMYXllcikpOyBcCisgICAgZm9yIChjdXJyQ2hpbGQg
PSBjdXJyQ2hpbGQtPm5leHQoKTsgY3VyckNoaWxkOyBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5l
eHQoKSkgXAorICAgICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQcm9wKCk7IFwKK30KKworI2RlZmlu
ZSBERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoUHJvcGVydHksIGxheWVyVHlwZSwgTGF5
ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAg
IEZpbGxMYXllciogY3VyckNoaWxkID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2VzcyMjTGF5ZXJU
eXBlIyNMYXllcnMoKTsgXAorICAgIEZpbGxMYXllciogcHJldkNoaWxkID0gMDsgXAorICAgIGlm
ICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCisgICAgICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBh
bmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVycyBhcyBuZWVkZWQuICov
IFwKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1
ZUxpc3QqPih2YWx1ZSk7IFwKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2
YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsgXAorICAgICAgICAgICAgaWYgKCFjdXJyQ2hpbGQp
IHsgXAorICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBsYXllciB0byBob2xk
IHRoaXMgdmFsdWUgKi8gXAorICAgICAgICAgICAgICAgIGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5
ZXIoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpOyBcCisgICAgICAgICAgICAgICAgcHJldkNoaWxkLT5z
ZXROZXh0KGN1cnJDaGlsZCk7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgaW5zdGFu
Y2UtPm1hcEZpbGwjI1Byb3AoUHJvcGVydHksIGN1cnJDaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKGkpKTsgXAorICAgICAgICAgICAgcHJldkNoaWxkID0gY3VyckNoaWxk
OyBcCisgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAorICAgICAg
ICB9IFwKKyAgICB9IGVsc2UgeyBcCisgICAgICAgIGluc3RhbmNlLT5tYXBGaWxsIyNQcm9wKFBy
b3BlcnR5LCBjdXJyQ2hpbGQsIHZhbHVlKTsgXAorICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hp
bGQtPm5leHQoKTsgXAorICAgIH0gXAorICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsgXAorICAgICAg
ICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIGxheWVycyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkg
c2V0LiAqLyBcCisgICAgICAgIGN1cnJDaGlsZC0+Y2xlYXIjI1Byb3AoKTsgXAorICAgICAgICBj
dXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAorICAgIH0gXAorfQorCisjZGVmaW5lIERF
RklORV9OVUxMX0lOSEVSSVQoUHJvcGVydHkpIERFRklORV9JTkhFUklUKFByb3BlcnR5KSB7VU5V
U0VEX1BBUkFNKGluc3RhbmNlKTt9CisjZGVmaW5lIERFRklORV9OVUxMX0lOSVRJQUwoUHJvcGVy
dHkpIERFRklORV9JTklUSUFMKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTt9Cisj
ZGVmaW5lIERFRklORV9OVUxMX1ZBTFVFKFByb3BlcnR5KSBERUZJTkVfVkFMVUUoUHJvcGVydHkp
IHtVTlVTRURfUEFSQU0oaW5zdGFuY2UpOyBVTlVTRURfUEFSQU0odmFsdWUpO30KKworI2RlZmlu
ZSBERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChQcm9wZXJ0eSkgREVGSU5FX0lOSEVSSVQoUHJv
cGVydHkpIHtVTlVTRURfUEFSQU0oaW5zdGFuY2UpOyBBU1NFUlRfTk9UX1JFQUNIRUQoKTt9Cisj
ZGVmaW5lIERFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKFByb3BlcnR5KSBERUZJTkVfSU5JVElB
TChQcm9wZXJ0eSkge1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
O30KKyNkZWZpbmUgREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKFByb3BlcnR5KSBERUZJTkVfVkFM
VUUoUHJvcGVydHkpIHtVTlVTRURfUEFSQU0oaW5zdGFuY2UpOyBVTlVTRURfUEFSQU0odmFsdWUp
OyBBU1NFUlRfTk9UX1JFQUNIRUQoKTt9CisKKyNkZWZpbmUgREVGSU5FX0VRVUlWQUxFTlRfSU5I
RVJJVChQcm9wZXJ0eSwgRXF1aXZhbGVudCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIHtD
U1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0IyNFcXVpdmFsZW50KGluc3RhbmNlKTt9Cisj
ZGVmaW5lIERFRklORV9FUVVJVkFMRU5UX0lOSVRJQUwoUHJvcGVydHksIEVxdWl2YWxlbnQpIFwK
K0RFRklORV9JTklUSUFMKFByb3BlcnR5KSB7Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlh
bCMjRXF1aXZhbGVudChpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9WQUxV
RShQcm9wZXJ0eSwgRXF1aXZhbGVudCkgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSB7Q1NTU3R5
bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWUjI0VxdWl2YWxlbnQoaW5zdGFuY2UsIHZhbHVlKTt9Cisj
ZGVmaW5lIERFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKFByb3BlcnR5LCBFcXVpdmFsZW50KSBc
CitERUZJTkVfRVFVSVZBTEVOVF9JTkhFUklUKFByb3BlcnR5LCBFcXVpdmFsZW50KSBcCitERUZJ
TkVfRVFVSVZBTEVOVF9JTklUSUFMKFByb3BlcnR5LCBFcXVpdmFsZW50KSBcCitERUZJTkVfRVFV
SVZBTEVOVF9WQUxVRShQcm9wZXJ0eSwgRXF1aXZhbGVudCkKKworLy8gWFhYIGNvbWJpbmUgRVhQ
QU5ESU5HIGRlZmluaXRpb25zPworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdP
KFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAor
eyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRmlyc3QoaW5zdGFuY2Up
OyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjU2Vjb25kKGluc3RhbmNl
KTsgXAorfQorCisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oUHJvcGVydHks
IEZpcnN0LCBTZWNvbmQpIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5KSBcCit7IFwKKyAgICBD
U1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbml0aWFsIyNGaXJzdChpbnN0YW5jZSk7IFwKKyAgICBD
U1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbml0aWFsIyNTZWNvbmQoaW5zdGFuY2UpOyBcCit9CisK
KyNkZWZpbmUgREVGSU5FX0VYUEFORElOR19WQUxVRV9UV08oUHJvcGVydHksIEZpcnN0LCBTZWNv
bmQpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rv
cjo6aGFuZGxlVmFsdWUjI0ZpcnN0KGluc3RhbmNlLCB2YWx1ZSk7IFwKKyAgICBDU1NTdHlsZVNl
bGVjdG9yOjpoYW5kbGVWYWx1ZSMjU2Vjb25kKGluc3RhbmNlLCB2YWx1ZSk7IFwKK30KKworI2Rl
ZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoUHJvcGVydHksIEZpcnN0LCBTZWNv
bmQsIFRoaXJkKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5
bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRmlyc3QoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5
bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjU2Vjb25kKGluc3RhbmNlKTsgXAorICAgIENTU1N0
eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1RoaXJkKGluc3RhbmNlKTsgXAorfQorCisjZGVm
aW5lIERFRklORV9FWFBBTkRJTkdfSU5JVElBTF9USFJFRShQcm9wZXJ0eSwgRmlyc3QsIFNlY29u
ZCwgVGhpcmQpIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5KSBcCit7IFwKKyAgICBDU1NTdHls
ZVNlbGVjdG9yOjpoYW5kbGVJbml0aWFsIyNGaXJzdChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHls
ZVNlbGVjdG9yOjpoYW5kbGVJbml0aWFsIyNTZWNvbmQoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5
bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjVGhpcmQoaW5zdGFuY2UpOyBcCit9CisKKyNkZWZp
bmUgREVGSU5FX0VYUEFORElOR19JTkhFUklUX0ZPVVIoUHJvcGVydHksIEZpcnN0LCBTZWNvbmQs
IFRoaXJkLCBGb3VydGgpIFwKK0RFRklORV9JTkhFUklUKFByb3BlcnR5KSBcCit7IFwKKyAgICBD
U1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0IyNGaXJzdChpbnN0YW5jZSk7IFwKKyAgICBD
U1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0IyNTZWNvbmQoaW5zdGFuY2UpOyBcCisgICAg
Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjVGhpcmQoaW5zdGFuY2UpOyBcCisgICAg
Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRm91cnRoKGluc3RhbmNlKTsgXAorfQor
CisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdfSU5JVElBTF9GT1VSKFByb3BlcnR5LCBGaXJzdCwg
U2Vjb25kLCBUaGlyZCwgRm91cnRoKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBc
CisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjRmlyc3QoaW5zdGFuY2UpOyBc
CisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjU2Vjb25kKGluc3RhbmNlKTsg
XAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI1RoaXJkKGluc3RhbmNlKTsg
XAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI0ZvdXJ0aChpbnN0YW5jZSk7
IFwKK30KKworI2RlZmluZSBERUZJTkVfU1BBQ0lOR19WQUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBc
CitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsgXAorICAgICAgICBib29sIHVzZVNWR1pvb21S
dWxlcyA9IGluc3RhbmNlLT5tX2VsZW1lbnQgJiYgaW5zdGFuY2UtPm1fZWxlbWVudC0+aXNTVkdF
bGVtZW50KCk7IFwKKyAgICAgICAgaW50IHdpZHRoID0gMDsgXAorICAgICAgICBpZiAocC0+Z2V0
SWRlbnQoKSAhPSBDU1NWYWx1ZU5vcm1hbCkgXAorICAgICAgICAgICAgd2lkdGggPSBwLT5jb21w
dXRlTGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxl
bWVudFN0eWxlLCB1c2VTVkdab29tUnVsZXMgPyAxLjBmIDogaW5zdGFuY2UtPm1fc3R5bGUtPmVm
ZmVjdGl2ZVpvb20oKSk7IFwKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcih3aWR0
aCk7IFwKKyAgICB9IFwKK30KKyNkZWZpbmUgREVGSU5FX1dJRFRIX1ZBTFVFKFByb3BlcnR5LCBT
ZXR0ZXIpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsgXAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAgIHNob3J0IHdp
ZHRoID0gMzsgXAorICAgICAgICBzd2l0Y2ggKHAtPmdldElkZW50KCkpIHsgXAorICAgICAgICBj
YXNlIENTU1ZhbHVlVGhpbjogXAorICAgICAgICAgICAgd2lkdGggPSAxOyBcCisgICAgICAgICAg
ICBicmVhazsgXAorICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOiBcCisgICAgICAgICAgICB3
aWR0aCA9IDM7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIGNhc2UgQ1NTVmFsdWVU
aGljazogXAorICAgICAgICAgICAgd2lkdGggPSA1OyBcCisgICAgICAgICAgICBicmVhazsgXAor
ICAgICAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDogXAorICAgICAgICAgICAgd2lkdGggPSBwLT5j
b21wdXRlTGVuZ3RoU2hvcnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jv
b3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpOyBcCisg
ICAgICAgICAgICBicmVhazsgXAorICAgICAgICBkZWZhdWx0OiBcCisgICAgICAgICAgICByZXR1
cm47IFwKKyAgICAgICAgfSBcCisgICAgICAgIGlmICh3aWR0aCA+PSAwKSB7IFwKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIod2lkdGgpOyBcCisgICAgICAgIH0gXAorICAg
IH0gXAorfQorCisjZGVmaW5lIERFRklORV9MRU5HVEhfVkFMVUUoUHJvcGVydHksIFNldHRlciwg
Tm9uZUVuYWJsZWQsIEludHJpbnNpY0VuYWJsZWQsIE1pbkludHJpbnNpY0VuYWJsZWQsIEF1dG9F
bmFibGVkLCBOb25lVW5kZWZpbmVkKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAor
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7IFwKKyAgICAgICAgaWYgKE5vbmVFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkgXAorICAgICAgICAgICAgaWYgKE5vbmVVbmRlZmlu
ZWQpIFwKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKExlbmd0aCh1
bmRlZmluZWRMZW5ndGgsIEZpeGVkKSk7IFwKKyAgICAgICAgICAgIGVsc2UgXAorICAgICAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKCkpOyBcCisgICAgICAgIGVs
c2UgaWYgKEludHJpbnNpY0VuYWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVJbnRyaW5zaWMpIFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0
ZXIoTGVuZ3RoKEludHJpbnNpYykpOyBcCisgICAgICAgIGVsc2UgaWYgKE1pbkludHJpbnNpY0Vu
YWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNaW5JbnRyaW5z
aWMpIFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKE1pbklu
dHJpbnNpYykpOyBcCisgICAgICAgIGVsc2UgaWYgKEF1dG9FbmFibGVkICYmIHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykgXAorICAgICAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPlNldHRlcihMZW5ndGgoKSk7IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAg
ICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsgXAorICAgICAg
ICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSBcCisg
ICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCks
IGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3Rp
dmVab29tKCkpLCBGaXhlZCwgcHJpbWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKSk7IFwKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFKSBcCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihMZW5ndGgo
cHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsgXAorICAgICAgICB9
IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfUkFESVVTX1ZBTFVFKFByb3BlcnR5LCBT
ZXR0ZXIpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsgXAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsgXAorICAg
ICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOyBcCisgICAg
ICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpIFwKKyAg
ICAgICAgICAgIHJldHVybjsgXAorICAgICAgICBMZW5ndGggcmFkaXVzV2lkdGg7IFwKKyAgICAg
ICAgTGVuZ3RoIHJhZGl1c0hlaWdodDsgXAorICAgICAgICBpZiAocGFpci0+Zmlyc3QoKS0+cHJp
bWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgXAorICAg
ICAgICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFs
dWUoKSwgUGVyY2VudCk7IFwKKyAgICAgICAgZWxzZSBcCisgICAgICAgICAgICByYWRpdXNXaWR0
aCA9IExlbmd0aChtYXgoaW50TWluRm9yTGVuZ3RoLCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWly
LT5maXJzdCgpLT5jb21wdXRlTGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0
YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9v
bSgpKSkpLCBGaXhlZCk7IFwKKyAgICAgICAgaWYgKHBhaXItPnNlY29uZCgpLT5wcmltaXRpdmVU
eXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSBcCisgICAgICAgICAg
ICByYWRpdXNIZWlnaHQgPSBMZW5ndGgocGFpci0+c2Vjb25kKCktPmdldERvdWJsZVZhbHVlKCks
IFBlcmNlbnQpOyBcCisgICAgICAgIGVsc2UgXAorICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0g
TGVuZ3RoKG1heChpbnRNaW5Gb3JMZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPnNl
Y29uZCgpLT5jb21wdXRlTGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5j
ZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgp
KSkpLCBGaXhlZCk7IFwKKyAgICAgICAgaW50IHdpZHRoID0gcmFkaXVzV2lkdGgucmF3VmFsdWUo
KTsgXAorICAgICAgICBpbnQgaGVpZ2h0ID0gcmFkaXVzSGVpZ2h0LnJhd1ZhbHVlKCk7IFwKKyAg
ICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKSBcCisgICAgICAgICAgICByZXR1cm47
IFwKKyAgICAgICAgaWYgKCF3aWR0aCkgXAorICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gcmFk
aXVzV2lkdGg7IFwKKyAgICAgICAgZWxzZSBpZiAoIWhlaWdodCkgXAorICAgICAgICAgICAgcmFk
aXVzV2lkdGggPSByYWRpdXNIZWlnaHQ7IFwKKyAgICAgICAgTGVuZ3RoU2l6ZSBzaXplKHJhZGl1
c1dpZHRoLCByYWRpdXNIZWlnaHQpOyBcCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0
ZXIoc2l6ZSk7IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfU0hBRE9XX1ZBTFVFKFBy
b3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYg
KHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsgXAorICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+U2V0dGVyKDApOyBcCisgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBc
CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHZhbHVlKTsgXAorICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7IFwKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeyBcCisgICAgICAgICAgICBDU1NWYWx1ZSog
Y3VyclZhbHVlID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsgXAorICAgICAgICAg
ICAgaWYgKCFjdXJyVmFsdWUtPmlzU2hhZG93VmFsdWUoKSkgXAorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOyBcCisgICAgICAgICAgICBTaGFkb3dWYWx1ZSogaXRlbSA9IHN0YXRpY19jYXN0PFNo
YWRvd1ZhbHVlKj4obGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKKyAgICAgICAg
ICAgIGludCB4ID0gaXRlbS0+eC0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5n
ZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVm
ZmVjdGl2ZVpvb20oKSk7IFwKKyAgICAgICAgICAgIGludCB5ID0gaXRlbS0+eS0+Y29tcHV0ZUxl
bmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRT
dHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7IFwKKyAgICAgICAgICAg
IGludCBibHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGhJbnQoaW5z
dGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3Rh
bmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpIDogMDsgXAorICAgICAgICAgICAgaW50IHNw
cmVhZCA9IGl0ZW0tPnNwcmVhZCA/IGl0ZW0tPnNwcmVhZC0+Y29tcHV0ZUxlbmd0aEludChpbnN0
YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFu
Y2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkgOiAwOyBcCisgICAgICAgICAgICBTaGFkb3dT
dHlsZSBzaGFkb3dTdHlsZSA9IGl0ZW0tPnN0eWxlICYmIGl0ZW0tPnN0eWxlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlSW5zZXQgPyBJbnNldCA6IE5vcm1hbDsgXAorICAgICAgICAgICAgQ29sb3Ig
Y29sb3I7IFwKKyAgICAgICAgICAgIGlmIChpdGVtLT5jb2xvcikgXAorICAgICAgICAgICAgICAg
IGNvbG9yID0gaW5zdGFuY2UtPmdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGl0ZW0tPmNvbG9y
LmdldCgpKTsgXAorICAgICAgICAgICAgU2hhZG93RGF0YSogc2hhZG93RGF0YSA9IG5ldyBTaGFk
b3dEYXRhKHgsIHksIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIFByb3BlcnR5ID09IENTU1By
b3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0
cmFuc3BhcmVudCk7IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoc2hh
ZG93RGF0YSwgISFpKTsgXAorICAgICAgICB9IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJ
TkVfQU5JTUFUSU9OX0lOSEVSSVQoUHJvcGVydHksIHByb3AsIFByb3ApIFwKK0RFRklORV9JTkhF
UklUKFByb3BlcnR5KSBcCit7IFwKKyAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gaW5zdGFuY2Ut
Pm1fc3R5bGUtPmFjY2Vzc0FuaW1hdGlvbnMoKTsgXAorICAgIGNvbnN0IEFuaW1hdGlvbkxpc3Qq
IHBhcmVudExpc3QgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+YW5pbWF0aW9ucygpOyBcCisg
ICAgc2l6ZV90IGkgPSAwLCBwYXJlbnRTaXplID0gcGFyZW50TGlzdCA/IHBhcmVudExpc3QtPnNp
emUoKSA6IDA7IFwKKyAgICBmb3IgKCA7IGkgPCBwYXJlbnRTaXplICYmIHBhcmVudExpc3QtPmFu
aW1hdGlvbihpKS0+aXMjI1Byb3AjI1NldCgpOyArK2kpIHsgXAorICAgICAgICBpZiAobGlzdC0+
c2l6ZSgpIDw9IGkpIFwKKyAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0
ZSgpKTsgXAorICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPnNldCMjUHJvcChwYXJlbnRMaXN0
LT5hbmltYXRpb24oaSktPnByb3AoKSk7IFwKKyAgICB9IFwKKyAgICBcCisgICAgLyogUmVzZXQg
YW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICov
IFwKKyAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAorICAgICAgICBsaXN0LT5h
bmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwKK30KKworI2RlZmluZSBERUZJTkVfQU5JTUFU
SU9OX0lOSVRJQUwoUHJvcGVydHksIHByb3AsIFByb3ApIFwKK0RFRklORV9JTklUSUFMKFByb3Bl
cnR5KSBcCit7IFwKKyAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gaW5zdGFuY2UtPm1fc3R5bGUt
PmFjY2Vzc0FuaW1hdGlvbnMoKTsgXAorICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgbGlzdC0+YW5pbWF0
aW9uKDApLT5zZXQjI1Byb3AoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uIyNQcm9wKCkpOyBc
CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAorICAgICAg
ICBsaXN0LT5hbmltYXRpb24oMCktPmNsZWFyIyNQcm9wKCk7IFwKK30KKworI2RlZmluZSBERUZJ
TkVfQU5JTUFUSU9OX1ZBTFVFKFByb3BlcnR5LCBwcm9wLCBQcm9wKSBcCitERUZJTkVfVkFMVUUo
UHJvcGVydHkpIFwKK3sgXAorICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBpbnN0YW5jZS0+bV9z
dHlsZS0+YWNjZXNzQW5pbWF0aW9ucygpOyBcCisgICAgc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBc
CisgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7IFwKKyAgICAgICAgLyogV2FsayBlYWNo
IHZhbHVlIGFuZCBwdXQgaXQgaW50byBhbiBhbmltYXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRp
b25zIGFzIG5lZWRlZC4gKi8gXAorICAgICAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0
YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsgXAorICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHZhbHVlTGlzdC0+bGVuZ3RoKCk7IGkrKykgeyBcCisgICAgICAgICAg
ICBpZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5zaXplKCkpIFwKKyAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5t
YXBBbmltYXRpb24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZUxpc3Qt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOyBcCisgICAgICAgICAgICArK2NoaWxkSW5kZXg7
IFwKKyAgICAgICAgfSBcCisgICAgfSBlbHNlIHsgXAorICAgICAgICBpZiAobGlzdC0+aXNFbXB0
eSgpKSBcCisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwK
KyAgICAgICAgaW5zdGFuY2UtPm1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hp
bGRJbmRleCksIHZhbHVlKTsgXAorICAgICAgICBjaGlsZEluZGV4ID0gMTsgXAorICAgIH0gXAor
ICAgIGZvciAoIDsgY2hpbGRJbmRleCA8IGxpc3QtPnNpemUoKTsgKytjaGlsZEluZGV4KSB7IFwK
KyAgICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRo
ZSBwcm9wZXJ0eSBzZXQuICovIFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgp
LT5jbGVhciMjUHJvcCgpOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX1RSQU5TSVRJ
T05fSU5IRVJJVChQcm9wZXJ0eSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVy
dHkpIFwKK3sgXAorICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBpbnN0YW5jZS0+bV9zdHlsZS0+
YWNjZXNzVHJhbnNpdGlvbnMoKTsgXAorICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudExp
c3QgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+dHJhbnNpdGlvbnMoKTsgXAorICAgIHNpemVf
dCBpID0gMCwgcGFyZW50U2l6ZSA9IHBhcmVudExpc3QgPyBwYXJlbnRMaXN0LT5zaXplKCkgOiAw
OyBcCisgICAgZm9yICggOyBpIDwgcGFyZW50U2l6ZSAmJiBwYXJlbnRMaXN0LT5hbmltYXRpb24o
aSktPmlzIyNQcm9wIyNTZXQoKTsgKytpKSB7IFwKKyAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8
PSBpKSBcCisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwK
KyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5zZXQjI1Byb3AocGFyZW50TGlzdC0+YW5pbWF0
aW9uKGkpLT5wcm9wKCkpOyBcCisgICAgfSBcCisgICAgXAorICAgIC8qIFJlc2V0IGFueSByZW1h
aW5pbmcgdHJhbnNpdGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorICAg
IGZvciAoIDsgaSA8IGxpc3QtPnNpemUoKTsgKytpKSBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlv
bihpKS0+Y2xlYXIjI1Byb3AoKTsgXAorfQorCisjZGVmaW5lIERFRklORV9UUkFOU0lUSU9OX0lO
SVRJQUwoUHJvcGVydHksIHByb3AsIFByb3ApIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5KSBc
Cit7IFwKKyAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2Vz
c1RyYW5zaXRpb25zKCk7IFwKKyAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCisgICAgICAgIGxp
c3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAorICAgIGxpc3QtPmFuaW1hdGlvbigw
KS0+c2V0IyNQcm9wKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbiMjUHJvcCgpKTsgXAorICAg
IGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwKKyAgICAgICAgbGlz
dC0+YW5pbWF0aW9uKDApLT5jbGVhciMjUHJvcCgpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX1RS
QU5TSVRJT05fVkFMVUUoUHJvcGVydHksIHByb3AsIFByb3ApIFwKK0RFRklORV9WQUxVRShQcm9w
ZXJ0eSkgXAoreyBcCisgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGluc3RhbmNlLT5tX3N0eWxl
LT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCisgICAgc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBcCisg
ICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7IFwKKyAgICAgICAgLyogV2FsayBlYWNoIHZh
bHVlIGFuZCBwdXQgaXQgaW50byBhIHRyYW5zaXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRpb25z
IGFzIG5lZWRlZC4gKi8gXAorICAgICAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRp
Y19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsgXAorICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHZhbHVlTGlzdC0+bGVuZ3RoKCk7IGkrKykgeyBcCisgICAgICAgICAgICBp
ZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5zaXplKCkpIFwKKyAgICAgICAgICAgICAgICBsaXN0LT5h
cHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tYXBB
bmltYXRpb24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZUxpc3QtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOyBcCisgICAgICAgICAgICArK2NoaWxkSW5kZXg7IFwK
KyAgICAgICAgfSBcCisgICAgfSBlbHNlIHsgXAorICAgICAgICBpZiAobGlzdC0+aXNFbXB0eSgp
KSBcCisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAg
ICAgICAgaW5zdGFuY2UtPm1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJ
bmRleCksIHZhbHVlKTsgXAorICAgICAgICBjaGlsZEluZGV4ID0gMTsgXAorICAgIH0gXAorICAg
IGZvciAoIDsgY2hpbGRJbmRleCA8IGxpc3QtPnNpemUoKTsgKytjaGlsZEluZGV4KSB7IFwKKyAg
ICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyB0cmFuc2l0aW9ucyB0byBub3QgaGF2ZSB0aGUg
cHJvcGVydHkgc2V0LiAqLyBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KS0+
Y2xlYXIjI1Byb3AoKTsgXAorICAgIH0gXAorfQorCisvLyBDU1NQcm9wZXJ0eUludmFsaWQKK0RF
RklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlJbnZhbGlkKQorREVGSU5FX05VTExfSU5JVElB
TChDU1NQcm9wZXJ0eUludmFsaWQpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUludmFs
aWQpCisKKy8vIENTU1Byb3BlcnR5Q29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eUNvbG9yLCBzZXRDb2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlDb2xvciwgc2V0Q29sb3IsIGluaXRpYWxDb2xvcikKK0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eUNvbG9yKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgIGlmIChwLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ3VycmVudGNv
bG9yKQorICAgICAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdENTU1Byb3Bl
cnR5Q29sb3IoaW5zdGFuY2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0Q29sb3IoaW5zdGFuY2UtPmdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHAp
KTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5RGlyZWN0aW9uCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHNldERpcmVjdGlvbiwgZGlyZWN0aW9uKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBzZXREaXJlY3Rpb24sIGlu
aXRpYWxEaXJlY3Rpb24pCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pCit7Cisg
ICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldERpcmVjdGlvbigqcCk7CisgICAgfQorICAgIGlmIChp
bnN0YW5jZS0+bV9lbGVtZW50ICYmIGluc3RhbmNlLT5tX2VsZW1lbnQgPT0gaW5zdGFuY2UtPm1f
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgIGluc3RhbmNl
LT5tX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldERpcmVjdGlvblNldE9uRG9jdW1lbnRFbGVtZW50
KHRydWUpOworfQorCisvLyBDU1NQcm9wZXJ0eURpc3BsYXkKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eURpc3BsYXksIHNldERpc3BsYXksIGRpc3BsYXkpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlEaXNwbGF5LCBzZXREaXNwbGF5LCBpbml0aWFsRGlzcGxheSkK
K0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eURpc3BsYXkpCit7CisgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyNpZiBFTkFCTEUoV0NTUykKKyAgICAg
ICAgaWYgKHAtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVXYXBNYXJxdWVlKSB7CisgICAgICAgICAg
ICAvLyBJbml0aWFsaXplIFdBUCBNYXJxdWVlIHN0eWxlCisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0T3ZlcmZsb3dYKE9NQVJRVUVFKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRPdmVyZmxvd1koT01BUlFVRUUpOworICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldFdoaXRlU3BhY2UoTk9XUkFQKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1MRUZUKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoODUpOyAvLyBOb3JtYWwgc3BlZWQKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KDEpOworICAgICAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihNU0NST0xMKTsKKworICAgICAg
ICAgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlKSB7CisgICAgICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldERpc3BsYXkoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmRpc3Bs
YXkoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9
CisjZW5kaWYKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldERpc3BsYXkoKnApOworICAg
IH0KK30KKworLy8gQ1NTUHJvcGVydHlGb250CitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZv
bnQpCit7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0TGluZUhlaWdodChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpKTsKKyAg
ICBpbnN0YW5jZS0+bV9saW5lSGVpZ2h0VmFsdWUgPSAwOworICAgIGlmIChpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3Rh
bmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUZv
bnQpCit7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2Rv
Y3VtZW50LT5zZXR0aW5ncygpOworICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdlJ3JlIGRv
aW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBiZSBpbiBh
IGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKKyAgICBpZiAoIXNldHRpbmdzKQorICAgICAg
ICByZXR1cm47CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKKyAgICBmb250
RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlN0YW5kYXJkRmFt
aWx5KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9u
dFJlbmRlcmluZ01vZGUoKSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFVzZVByaW50ZXJGb250
KGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+cHJpbnRpbmcoKSk7CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBzdGFuZGFyZEZvbnRGYW1pbHkgPSBpbnN0YW5jZS0+bV9jaGVja2VyLm1f
ZG9jdW1lbnQtPnNldHRpbmdzKCktPnN0YW5kYXJkRm9udEZhbWlseSgpOworICAgIGlmICghc3Rh
bmRhcmRGb250RmFtaWx5LmlzRW1wdHkoKSkgeworICAgICAgICBmb250RGVzY3JpcHRpb24uZmly
c3RGYW1pbHkoKS5zZXRGYW1pbHkoc3RhbmRhcmRGb250RmFtaWx5KTsKKyAgICAgICAgZm9udERl
c2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuYXBwZW5kRmFtaWx5KDApOworICAgIH0KKyAgICBmb250
RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoQ1NTVmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21h
bGwgKyAxKTsKKyAgICBpbnN0YW5jZS0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBmb250
U2l6ZUZvcktleXdvcmQoaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZU1l
ZGl1bSwgZmFsc2UpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGluZUhlaWdodChSZW5k
ZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CisgICAgaW5zdGFuY2UtPm1fbGluZUhlaWdo
dFZhbHVlID0gMDsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlv
bihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVl
OworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Rm9udCkKK3sKKyAgICBpZiAodmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgICAg
ICBib29sIHVzZVNWR1pvb21SdWxlcyA9IGluc3RhbmNlLT5tX2VsZW1lbnQgJiYgaW5zdGFuY2Ut
Pm1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7CisKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOworICAgICAg
ICBpbnN0YW5jZS0+bV9saW5lSGVpZ2h0VmFsdWUgPSAwOworCisgICAgICAgIEZvbnREZXNjcmlw
dGlvbiBmb250RGVzY3JpcHRpb247CisgICAgICAgIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUo
KS0+c3lzdGVtRm9udChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9u
KTsKKworICAgICAgICAvLyBEb3VibGUtY2hlY2sgYW5kIHNlZSBpZiB0aGUgdGhlbWUgZGlkIGFu
eXRoaW5nLiAgSWYgbm90LCBkb24ndCBib3RoZXIgdXBkYXRpbmcgdGhlIGZvbnQuCisgICAgICAg
IGlmIChmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSkgeworICAgICAgICAgICAgLy8g
TWFrZSBzdXJlIHRoZSByZW5kZXJpbmcgbW9kZSBhbmQgcHJpbnRlciBmb250IHNldHRpbmdzIGFy
ZSB1cGRhdGVkLgorICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1f
Y2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOworICAgICAgICAgICAgQVNTRVJUKHNldHRp
bmdzKTsgLy8gSWYgd2UncmUgZG9pbmcgc3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBkb2N1bWVudCBz
aG91bGQgYWx3YXlzIGJlIGluIGEgZnJhbWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5ncworICAgICAg
ICAgICAgaWYgKCFzZXR0aW5ncykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9udFJlbmRlcmlu
Z01vZGUoKSk7CisgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0VXNlUHJpbnRlckZvbnQo
aW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5wcmludGluZygpKTsKKworICAgICAgICAg
ICAgLy8gSGFuZGxlIHRoZSB6b29tIGZhY3Rvci4KKyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRDb21wdXRlZFNpemUoZ2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoaW5zdGFu
Y2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgZm9udERl
c2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXpl
KCksIHVzZVNWR1pvb21SdWxlcykpOworICAgICAgICAgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgICAgICAgICBp
bnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICh2
YWx1ZS0+aXNGb250VmFsdWUoKSkgeworICAgICAgICBGb250VmFsdWUqIGZvbnQgPSBzdGF0aWNf
Y2FzdDxGb250VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmICghZm9udC0+c3R5bGUgfHwgIWZv
bnQtPnZhcmlhbnQgfHwgIWZvbnQtPndlaWdodCB8fCAhZm9udC0+c2l6ZSB8fCAhZm9udC0+bGlu
ZUhlaWdodCB8fCAhZm9udC0+ZmFtaWx5KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBD
U1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5Rm9udFN0eWxlKGluc3RhbmNl
LCBmb250LT5zdHlsZS5nZXQoKSk7CisgICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZh
bHVlQ1NTUHJvcGVydHlGb250VmFyaWFudChpbnN0YW5jZSwgZm9udC0+dmFyaWFudC5nZXQoKSk7
CisgICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlQ1NTUHJvcGVydHlGb250V2Vp
Z2h0KGluc3RhbmNlLCBmb250LT53ZWlnaHQuZ2V0KCkpOworICAgICAgICBDU1NTdHlsZVNlbGVj
dG9yOjpoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5Rm9udFNpemUoaW5zdGFuY2UsIGZvbnQtPnNpemUu
Z2V0KCkpOworCisgICAgICAgIGluc3RhbmNlLT5tX2xpbmVIZWlnaHRWYWx1ZSA9IGZvbnQtPmxp
bmVIZWlnaHQuZ2V0KCk7CisKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWVD
U1NQcm9wZXJ0eUZvbnRGYW1pbHkoaW5zdGFuY2UsIGZvbnQtPmZhbWlseS5nZXQoKSk7CisgICAg
fQorfQorCisvLyBDU1NQcm9wZXJ0eUZvbnRGYW1pbHkKKy8vIGxpc3Qgb2Ygc3RyaW5ncyBhbmQg
aWRzCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpCit7CisgICAgRm9udERl
c2NyaXB0aW9uIHBhcmVudEZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxl
LT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRHZW5lcmljRmFtaWx5KHBhcmVudEZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5
KCkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbHkocGFyZW50Rm9udERlc2NyaXB0aW9u
LmZpcnN0RmFtaWx5KCkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc1NwZWNpZmllZEZvbnQo
cGFyZW50Rm9udERlc2NyaXB0aW9uLmlzU3BlY2lmaWVkRm9udCgpKTsKKyAgICBpZiAoaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAg
ICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJv
cGVydHlGb250RmFtaWx5KQoreworICAgIEZvbnREZXNjcmlwdGlvbiBpbml0aWFsRGVzYyA9IEZv
bnREZXNjcmlwdGlvbigpOworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBp
bnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgLy8gV2UgbmVlZCB0byBh
ZGp1c3QgdGhlIHNpemUgdG8gYWNjb3VudCBmb3IgdGhlIGdlbmVyaWMgZmFtaWx5IGNoYW5nZSBm
cm9tIG1vbm9zcGFjZQorICAgIC8vIHRvIG5vbi1tb25vc3BhY2UuCisgICAgaWYgKGZvbnREZXNj
cmlwdGlvbi5rZXl3b3JkU2l6ZSgpICYmIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRT
aXplKCkpCisgICAgICAgIGluc3RhbmNlLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIGZv
bnRTaXplRm9yS2V5d29yZChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVl
WHhTbWFsbCArIGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwgZmFsc2UpKTsKKyAg
ICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShpbml0aWFsRGVzYy5nZW5lcmljRmFt
aWx5KCkpOworICAgIGlmICghaW5pdGlhbERlc2MuZmlyc3RGYW1pbHkoKS5mYW1pbHlJc0VtcHR5
KCkpCisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbHkoaW5pdGlhbERlc2MuZmlyc3RG
YW1pbHkoKSk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsK
K30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpCit7CisgICAgaWYgKCF2YWx1
ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEZvbnREZXNjcmlwdGlvbiBm
b250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Cisg
ICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUp
OworICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKKyAgICBGb250RmFtaWx5JiBmaXJzdEZh
bWlseSA9IGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpOworICAgIEZvbnRGYW1pbHkqIGN1
cnJGYW1pbHkgPSAwOworCisgICAgLy8gQmVmb3JlIG1hcHBpbmcgaW4gYSBuZXcgZm9udC1mYW1p
bHkgcHJvcGVydHksIHdlIHNob3VsZCByZXNldCB0aGUgZ2VuZXJpYyBmYW1pbHkuCisgICAgYm9v
bCBvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSA9IGZvbnREZXNjcmlwdGlvbi51c2VGaXhl
ZERlZmF1bHRTaXplKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9u
dERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsg
aSsrKSB7CisgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjayhpKTsKKyAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgIEF0b21pY1N0
cmluZyBmYWNlOworICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBpbnN0YW5jZS0+bV9jaGVj
a2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgICAgIGlmIChjb250ZW50VmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykgeworICAgICAg
ICAgICAgaWYgKGNvbnRlbnRWYWx1ZS0+aXNGb250RmFtaWx5VmFsdWUoKSkKKyAgICAgICAgICAg
ICAgICBmYWNlID0gc3RhdGljX2Nhc3Q8Rm9udEZhbWlseVZhbHVlKj4oY29udGVudFZhbHVlKS0+
ZmFtaWx5TmFtZSgpOworICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQgJiYgc2V0dGluZ3MpIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoY29udGVudFZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlV2Via2l0Qm9keToKKyAgICAgICAgICAgICAgICBmYWNlID0gc2V0dGlu
Z3MtPnN0YW5kYXJkRm9udEZhbWlseSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZVNlcmlmOgorICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtp
dC1zZXJpZiI7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1p
bHkoRm9udERlc2NyaXB0aW9uOjpTZXJpZkZhbWlseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2Fuc1NlcmlmOgorICAgICAgICAgICAgICAgIGZh
Y2UgPSAiLXdlYmtpdC1zYW5zLXNlcmlmIjsKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ3Vyc2l2ZToK
KyAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtY3Vyc2l2ZSI7CisgICAgICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpDdXJz
aXZlRmFtaWx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVGYW50YXN5OgorICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1mYW50YXN5IjsK
KyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVz
Y3JpcHRpb246OkZhbnRhc3lGYW1pbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZU1vbm9zcGFjZToKKyAgICAgICAgICAgICAgICBmYWNlID0gIi13
ZWJraXQtbW9ub3NwYWNlIjsKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2Vu
ZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZhbWlseSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZh
Y2UuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoIWN1cnJGYW1pbHkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGaWxsaW5nIGluIHRoZSBmaXJzdCBmYW1pbHkuCisgICAgICAgICAgICAgICAg
Zmlyc3RGYW1pbHkuc2V0RmFtaWx5KGZhY2UpOworICAgICAgICAgICAgICAgIGZpcnN0RmFtaWx5
LmFwcGVuZEZhbWlseSgwKTsgLy8gUmVtb3ZlIGFueSBpbmhlcml0ZWQgZmFtaWx5LWZhbGxiYWNr
IGxpc3QuCisgICAgICAgICAgICAgICAgY3VyckZhbWlseSA9ICZmaXJzdEZhbWlseTsKKyAgICAg
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNTcGVjaWZpZWRGb250KGZvbnREZXNjcmlw
dGlvbi5nZW5lcmljRmFtaWx5KCkgPT0gRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRGb250RmFtaWx5
PiBuZXdGYW1pbHkgPSBTaGFyZWRGb250RmFtaWx5OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAg
ICBuZXdGYW1pbHktPnNldEZhbWlseShmYWNlKTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5
LT5hcHBlbmRGYW1pbHkobmV3RmFtaWx5KTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0g
bmV3RmFtaWx5LmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gV2UgY2FuJ3QgY2FsbCB1c2VGaXhlZERlZmF1bHRTaXplKCkgdW50aWwgYWxsIG5ldyBmb250
IGZhbWlsaWVzIGhhdmUgYmVlbiBhZGRlZAorICAgIC8vIElmIGN1cnJGYW1pbHkgaXMgbm9uLXpl
cm8gdGhlbiB3ZSBzZXQgYXQgbGVhc3Qgb25lIGZhbWlseSBvbiB0aGlzIGRlc2NyaXB0aW9uLgor
ICAgIGlmIChjdXJyRmFtaWx5KSB7CisgICAgICAgIGlmIChmb250RGVzY3JpcHRpb24ua2V5d29y
ZFNpemUoKSAmJiBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpICE9IG9sZEZh
bWlseVVzZWRGaXhlZERlZmF1bHRTaXplKQorICAgICAgICAgICAgaW5zdGFuY2UtPnNldEZvbnRT
aXplKGZvbnREZXNjcmlwdGlvbiwgZm9udFNpemVGb3JLZXl3b3JkKGluc3RhbmNlLT5tX2NoZWNr
ZXIubV9kb2N1bWVudCwgQ1NTVmFsdWVYeFNtYWxsICsgZm9udERlc2NyaXB0aW9uLmtleXdvcmRT
aXplKCkgLSAxLCAhb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUpKTsKKworICAgICAgICBp
ZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24p
KQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuOworfQorCisvLyBDU1NQcm9wZXJ0eUZvbnRTaXplCitERUZJTkVfSU5IRVJJVChDU1NQ
cm9wZXJ0eUZvbnRTaXplKQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24g
PSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0
aW9uLnNldEtleXdvcmRTaXplKDApOworICAgIGZsb2F0IHNpemUgPSAwOworCisgICAgaWYgKGlu
c3RhbmNlLT5tX3BhcmVudE5vZGUpIHsKKyAgICAgICAgc2l6ZSA9IGluc3RhbmNlLT5tX3BhcmVu
dFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkua2V5d29yZFNpemUoKSk7CisgICAgfQorCisgICAgaWYgKHNpemUgPCAwKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpbnN0YW5jZS0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0
aW9uLCBzaXplKTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlv
bihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVl
OworICAgIHJldHVybjsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udFNpemUpCit7
CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxl
LT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUo
MCk7CisgICAgZmxvYXQgc2l6ZSA9IDA7CisKKyAgICBzaXplID0gQ1NTU3R5bGVTZWxlY3Rvcjo6
Zm9udFNpemVGb3JLZXl3b3JkKGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudCwgQ1NTVmFs
dWVNZWRpdW0sIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOworICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShDU1NWYWx1ZU1lZGl1bSAtIENTU1ZhbHVlWHhT
bWFsbCArIDEpOworCisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bnN0YW5jZS0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsKKyAgICBpZiAoaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAg
ICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworICAgIHJldHVybjsKK30KK0RFRklO
RV9WQUxVRShDU1NQcm9wZXJ0eUZvbnRTaXplKQoreworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisK
KyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgw
KTsKKyAgICBmbG9hdCBvbGRTaXplID0gMDsKKyAgICBmbG9hdCBzaXplID0gMDsKKworICAgIGJv
b2wgcGFyZW50SXNBYnNvbHV0ZVNpemUgPSBmYWxzZTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fcGFy
ZW50Tm9kZSkgeworICAgICAgICBvbGRTaXplID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsKKyAgICAgICAgcGFyZW50SXNBYnNvbHV0
ZVNpemUgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXNBYnNv
bHV0ZVNpemUoKTsKKyAgICB9CisKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkp
IHsKKyAgICAgICAgLy8gS2V5d29yZHMgYXJlIGJlaW5nIHVzZWQuCisgICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVh4U21h
bGw6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVYU21hbGw6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVT
bWFsbDoKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKKyAgICAgICAgY2FzZSBDU1NWYWx1
ZUxhcmdlOgorICAgICAgICBjYXNlIENTU1ZhbHVlWExhcmdlOgorICAgICAgICBjYXNlIENTU1Zh
bHVlWHhMYXJnZToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFh4eExhcmdlOgorICAgICAg
ICAgICAgc2l6ZSA9IGZvbnRTaXplRm9yS2V5d29yZChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9j
dW1lbnQsIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24udXNlRml4
ZWREZWZhdWx0U2l6ZSgpKTsKKyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3Jk
U2l6ZShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZXI6CisgICAgICAg
ICAgICBzaXplID0gaW5zdGFuY2UtPmxhcmdlckZvbnRTaXplKG9sZFNpemUsIGluc3RhbmNlLT5t
X2NoZWNrZXIubV9kb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFsbGVyOgorICAgICAgICAgICAgc2l6ZSA9IGluc3Rh
bmNlLT5zbWFsbGVyRm9udFNpemUob2xkU2l6ZSwgaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3Vt
ZW50LT5pblF1aXJrc01vZGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29sdXRlU2l6ZSAmJiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVMYXJnZXIgfHwgcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVTbWFsbGVyKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50
IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUocGFyZW50SXNBYnNvbHV0ZVNpemUgfHwgKHR5cGUg
IT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFICYmIHR5cGUgIT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19FTVMgJiYgdHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUyAm
JiB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUykpOworICAgICAgICBpZiAoQ1NT
UHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCisgICAgICAgICAgICBzaXpl
ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChpbnN0YW5jZS0+bV9wYXJlbnRT
dHlsZSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgdHJ1ZSk7CisgICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAg
ICAgc2l6ZSA9IChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpICogb2xkU2l6ZSkgLyAx
MDAuMGY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybjsKKworICAgIGluc3RhbmNlLT5zZXRGb250U2l6
ZShmb250RGVzY3JpcHRpb24sIHNpemUpOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2Zv
bnREaXJ0eSA9IHRydWU7Cit9CisKKworLy8gQ1NTUHJvcGVydHlGb250U3R5bGUKK0RFRklORV9J
TkhFUklUKENTU1Byb3BlcnR5Rm9udFN0eWxlKQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCkuaXRhbGljKCkpOworCisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9u
dERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udFN0eWxlKQor
eworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhmYWxz
ZSk7CisKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQor
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Rm9udFN0eWxlKQoreworICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBGb250
RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNj
cmlwdGlvbigpOworICAgIHN3aXRjaCAocC0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgQ1NTVmFs
dWVPYmxpcXVlOgorICAgIC8vIEZJWE1FOiBvYmxpcXVlIGlzIHRoZSBzYW1lIGFzIGl0YWxpYyBm
b3IgdGhlIG1vbWVudC4uLgorICAgIGNhc2UgQ1NTVmFsdWVJdGFsaWM6CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRJdGFsaWModHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWVOb3JtYWw6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlv
bikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENTU1By
b3BlcnR5Rm9udFZhcmlhbnQKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Rm9udFZhcmlhbnQp
Cit7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0
eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBz
KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSk7
CisKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVG
SU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlGb250VmFyaWFudCkKK3sKKyAgICBGb250RGVzY3JpcHRp
b24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
OworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoZmFsc2UpOworCisgICAgaWYgKGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAg
ICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eUZvbnRWYXJpYW50KQoreworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAg
IGludCBpZCA9IHAtPmdldElkZW50KCk7CisgICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFsKQor
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBzKGZhbHNlKTsKKyAgICBlbHNlIGlm
IChpZCA9PSBDU1NWYWx1ZVNtYWxsQ2FwcykKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNt
YWxsQ2Fwcyh0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAg
ICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENTU1Byb3BlcnR5Rm9u
dFdlaWdodAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlGb250V2VpZ2h0KQoreworICAgIEZv
bnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChpbnN0YW5jZS0+bV9w
YXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkud2VpZ2h0KCkpOworCisgICAgaWYgKGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAg
ICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9JTklUSUFMKENTU1By
b3BlcnR5Rm9udFdlaWdodCkKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7CisKKyAgICBpZiAoaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0
YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Rm9u
dFdlaWdodCkKK3sKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKworICAgIHN3aXRjaCAo
cC0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgY2FzZSBDU1NWYWx1ZUJvbGRlcjoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dFdlaWdodChmb250RGVzY3JpcHRpb24uYm9sZGVyV2VpZ2h0KCkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1ZhbHVlTGlnaHRlcjoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChmb250RGVzY3JpcHRpb24ubGlnaHRlcldlaWdodCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZUJvbGQ6CisgICAgY2FzZSBDU1NWYWx1ZTcwMDoKKyAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0Qm9sZCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CisgICAgY2FzZSBDU1NWYWx1ZTQwMDoKKyAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0Tm9ybWFsKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NWYWx1ZTkwMDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChGb250V2VpZ2h0OTAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZTgw
MDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0ODAwKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZTYwMDoKKyAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldFdlaWdodChGb250V2VpZ2h0NjAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
U1NWYWx1ZTUwMDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0
NTAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZTMwMDoKKyAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0MzAwKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZTIwMDoKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChG
b250V2VpZ2h0MjAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZTEwMDoKKyAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0MTAwKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisg
ICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENTU1Byb3BlcnR5
VGV4dFJlbmRlcmluZworREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nKQor
eworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFRleHRSZW5kZXJp
bmdNb2RlKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS50ZXh0UmVu
ZGVyaW5nTW9kZSgpKTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlw
dGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0
cnVlOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nKQoreworICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFRleHRSZW5kZXJpbmdNb2Rl
KEF1dG9UZXh0UmVuZGVyaW5nKTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGly
dHkgPSB0cnVlOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZykKK3sK
KyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3Rh
bmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldFRleHRSZW5kZXJpbmdNb2RlKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIGlmIChpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworICAgIH0KK30KKworLy8gQ1NT
UHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdEZvbnRTbW9vdGhpbmcpCit7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3Jp
cHRpb24uc2V0Rm9udFNtb290aGluZyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9m
b250RGlydHkgPSB0cnVlOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRGb250
U21vb3RoaW5nKQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0
YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNl
dEZvbnRTbW9vdGhpbmcoQXV0b1Ntb290aGluZyk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2Ut
Pm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRTbW9vdGhpbmcpCit7CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3Jp
cHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisKKyAgICBGb250
U21vb3RoaW5nTW9kZSBzbW9vdGhpbmc7CisgICAgc3dpdGNoIChwLT5nZXRJZGVudCgpKSB7Cisg
ICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIHNtb290aGluZyA9IEF1dG9TbW9vdGhpbmc7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICBzbW9vdGhp
bmcgPSBOb1Ntb290aGluZzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUFudGlh
bGlhc2VkOgorICAgICAgICBzbW9vdGhpbmcgPSBBbnRpYWxpYXNlZDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQ6CisgICAgICAgIHNtb290aGlu
ZyA9IFN1YnBpeGVsQW50aWFsaWFzZWQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBzbW9vdGhpbmcgPSBBdXRvU21v
b3RoaW5nOworICAgIH0KKyAgICBmb250RGVzY3JpcHRpb24uc2V0Rm9udFNtb290aGluZyhzbW9v
dGhpbmcpOworCisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsK
K30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdAorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIHNldFRleHRTaXplQWRqdXN0
LCB0ZXh0U2l6ZUFkanVzdCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTaXplQWRqdXN0LCBzZXRUZXh0U2l6ZUFkanVzdCwgaW5pdGlhbFRleHRTaXplQWRqdXN0
KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QpCit7CisgICAg
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRTaXplQWRqdXN0KHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlQXV0byk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9mb250
RGlydHkgPSB0cnVlOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dFdyaXRpbmdNb2RlCisvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2Fs
IHdyaXRpbmcgc3VwcG9ydAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
V3JpdGluZ01vZGUsIHNldFdyaXRpbmdNb2RlLCB3cml0aW5nTW9kZSkKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlLCBzZXRXcml0aW5nTW9kZSwgaW5p
dGlhbFdyaXRpbmdNb2RlKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01v
ZGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRXcml0aW5nTW9k
ZSgqcHJpbWl0aXZlVmFsdWUpOworICAgIH0KKyAgICBpZiAoaW5zdGFuY2UtPm1fZWxlbWVudCAm
JiBpbnN0YW5jZS0+bV9lbGVtZW50ID09IGluc3RhbmNlLT5tX2VsZW1lbnQtPmRvY3VtZW50KCkt
PmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICBpbnN0YW5jZS0+bV9lbGVtZW50LT5kb2N1bWVu
dCgpLT5zZXRXcml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50KHRydWUpOworICAgIEZvbnRE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKGluc3RhbmNlLT5t
X3N0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbCA6IFZlcnRpY2Fs
KTsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorCisv
LyBDU1NQcm9wZXJ0eVpvb20KK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Wm9vbSkKK3sKKyAg
ICAvLyBSZXNldCB0aGUgem9vbSBpbiBlZmZlY3QgYmVmb3JlIHdlIGRvIGFueXRoaW5nLiBUaGlz
IGFsbG93cyB0aGUgc2V0Wm9vbSBtZXRob2QgdG8gYWNjdXJhdGVseSBjb21wdXRlIGEgbmV3IHpv
b20gaW4gZWZmZWN0LgorICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRFZmZlY3RpdmVab29tKGlu
c3RhbmNlLT5tX3BhcmVudFN0eWxlID8gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmVmZmVjdGl2
ZVpvb20oKSA6IFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0Wm9vbShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+em9vbSgpKTsKK30KK0RFRklO
RV9JTklUSUFMKENTU1Byb3BlcnR5Wm9vbSkKK3sKKyAgICAvLyBSZXNldCB0aGUgem9vbSBpbiBl
ZmZlY3QgYmVmb3JlIHdlIGRvIGFueXRoaW5nLiBUaGlzIGFsbG93cyB0aGUgc2V0Wm9vbSBtZXRo
b2QgdG8gYWNjdXJhdGVseSBjb21wdXRlIGEgbmV3IHpvb20gaW4gZWZmZWN0LgorICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRFZmZlY3RpdmVab29tKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlID8g
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA6IFJlbmRlclN0eWxlOjpp
bml0aWFsWm9vbSgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHls
ZTo6aW5pdGlhbFpvb20oKSk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlab29tKQorewor
ICAgIC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdCBiZWZvcmUgd2UgZG8gYW55dGhpbmcuIFRo
aXMgYWxsb3dzIHRoZSBzZXRab29tIG1ldGhvZCB0byBhY2N1cmF0ZWx5IGNvbXB1dGUgYSBuZXcg
em9vbSBpbiBlZmZlY3QuCisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20o
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUgPyBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+ZWZmZWN0
aXZlWm9vbSgpIDogUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworCisgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisKKyAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVU
eXBlKCk7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9y
bWFsKQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5p
dGlhbFpvb20oKSk7CisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVSZXNldCkgeworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RWZmZWN0aXZl
Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKyAgICB9IGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRG9jdW1lbnQpIHsKKyAgICAg
ICAgZmxvYXQgZG9jWm9vbSA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+em9vbSgpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RWZm
ZWN0aXZlWm9vbShkb2Nab29tKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFpvb20o
ZG9jWm9vbSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSkgeworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUo
KSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRab29tKHByaW1pdGl2ZVZhbHVl
LT5nZXRGbG9hdFZhbHVlKCkgLyAxMDAuMGYpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldEZsb2F0VmFsdWUoKSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRab29t
KHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpOworICAgIH0KKworICAgIGluc3RhbmNl
LT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENTU1Byb3BlcnR5TGluZUhlaWdodAorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TGluZUhlaWdodCwgc2V0TGluZUhlaWdodCwg
bGluZUhlaWdodCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQs
IHNldExpbmVIZWlnaHQsIGluaXRpYWxMaW5lSGVpZ2h0KQorREVGSU5FX1ZBTFVFKENTU1Byb3Bl
cnR5TGluZUhlaWdodCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewor
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgICAgICBMZW5ndGggbGluZUhlaWdodDsK
KyAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisg
ICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKC0xMDAuMCwgUGVyY2VudCk7CisgICAgICAg
IGVsc2UgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7Cisg
ICAgICAgICAgICBkb3VibGUgbXVsdGlwbGllciA9IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3Rp
dmVab29tKCk7CisgICAgICAgICAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnRleHRTaXplQWRq
dXN0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW5zdGFuY2UtPm1f
Y2hlY2tlci5tX2RvY3VtZW50LT5mcmFtZSgpKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBs
aWVyICo9IGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbGluZUhlaWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZv
ckxlbmd0aChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRT
dHlsZSwgIG11bHRpcGxpZXIpLCBGaXhlZCk7CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgICBsaW5lSGVpZ2h0
ID0gTGVuZ3RoKChpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udFNpemUoKSAqIHByaW1pdGl2ZVZhbHVl
LT5nZXRJbnRWYWx1ZSgpKSAvIDEwMCwgRml4ZWQpOworICAgICAgICBlbHNlIGlmICh0eXBlID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgbGluZUhlaWdodCA9
IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSAqIDEwMC4wLCBQZXJjZW50
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0TGluZUhlaWdodChsaW5lSGVpZ2h0KTsKKyAgICB9Cit9CisKKy8vIENTU1By
b3BlcnR5QmFja2dyb3VuZAorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kKQor
eworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckJhY2tncm91bmRMYXllcnMoKTsKKyAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKENvbG9yKCkpOworfQorREVGSU5F
X0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5pbmhlcml0QmFja2dyb3VuZExheWVycygqaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmJhY2tn
cm91bmRMYXllcnMoKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJhY2tncm91bmRDb2xv
cihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+YmFja2dyb3VuZENvbG9yKCkpOworfQorREVGSU5F
X05VTExfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRBdHRhY2htZW50CitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9w
ZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBhdHRhY2ht
ZW50LCBBdHRhY2htZW50KQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgYXR0YWNo
bWVudCwgQXR0YWNobWVudCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBhdHRhY2ht
ZW50LCBBdHRhY2htZW50KQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwCitERUZJTkVf
SEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBiYWNr
Z3JvdW5kLCBCYWNrZ3JvdW5kLCBjbGlwLCBDbGlwKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3VuZCwgQmFja2dyb3Vu
ZCwgY2xpcCwgQ2xpcCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0
eUJhY2tncm91bmRDbGlwLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBjbGlwLCBDbGlwKQorCisv
LyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yLCBzZXRCYWNrZ3JvdW5kQ29sb3IsIGJhY2tncm91bmRDb2xv
cikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgc2V0QmFja2dyb3VuZENvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgc2V0QmFja2dyb3VuZENvbG9yKQorCisvLyBDU1NQcm9wZXJ0
eUJhY2tncm91bmRJbWFnZQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kSW1hZ2UsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGltYWdlLCBJbWFn
ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEltYWdlLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBpbWFnZSwgSW1hZ2UpCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIGJhY2tncm91
bmQsIEJhY2tncm91bmQsIGltYWdlLCBJbWFnZSkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
T3JpZ2luCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tn
cm91bmRPcmlnaW4sIGJhY2tncm91bmQsIEJhY2tncm91bmQsIG9yaWdpbiwgT3JpZ2luKQorREVG
SU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2lu
LCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBvcmlnaW4sIE9yaWdpbikKK0RFRklORV9IQU5ETEVf
RklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIGJhY2tncm91bmQs
IEJhY2tncm91bmQsIG9yaWdpbiwgT3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvbgorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RXTyhDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblkpCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVFdPKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blgKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgeFBvc2l0aW9uLCBYUG9zaXRpb24p
CitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvblgsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHhQb3NpdGlvbiwgWFBvc2l0aW9uKQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgeFBvc2l0aW9uLCBYUG9zaXRpb24pCisKKy8v
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBiYWNrZ3JvdW5kLCBCYWNr
Z3JvdW5kLCB5UG9zaXRpb24sIFlQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9J
TklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgYmFja2dyb3VuZCwgQmFja2dy
b3VuZCwgeVBvc2l0aW9uLCBZUG9zaXRpb24pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFM
VUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCB5UG9zaXRpb24sIFlQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
CitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVh
dCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0WSkKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRZKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
KQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYCitERUZJTkVfSEFORExFX0ZJTExf
TEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBiYWNrZ3JvdW5kLCBC
YWNrZ3JvdW5kLCByZXBlYXRYLCBSZXBlYXRYKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lO
SVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgYmFja2dyb3VuZCwgQmFja2dyb3Vu
ZCwgcmVwZWF0WCwgUmVwZWF0WCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCByZXBlYXRY
LCBSZXBlYXRYKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBiYWNr
Z3JvdW5kLCBCYWNrZ3JvdW5kLCByZXBlYXRZLCBSZXBlYXRZKQorREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgYmFja2dyb3VuZCwg
QmFja2dyb3VuZCwgcmVwZWF0WSwgUmVwZWF0WSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9W
QUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCByZXBlYXRZLCBSZXBlYXRZKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBi
YWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBzaXplLCBTaXplKQorREVGSU5FX0hBTkRMRV9GSUxMX0xB
WUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSwgYmFja2dyb3VuZCwgQmFja2dy
b3VuZCwgc2l6ZSwgU2l6ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRTaXplLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBzaXplLCBTaXplKQor
CisvLyBDU1NQcm9wZXJ0eUJvcmRlcgorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENT
U1Byb3BlcnR5Qm9yZGVyLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
cldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKQorREVGSU5FX0VYUEFORElOR19JTklUSUFM
X1RIUkVFKENTU1Byb3BlcnR5Qm9yZGVyLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKQorREVGSU5FX05VTExfVkFM
VUUoQ1NTUHJvcGVydHlCb3JkZXIpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tCitERUZJ
TkVfRVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRCb3JkZXJCb3R0b20o
KTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tKQorCisvLyBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQ
KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIHNldEJvcmRlckJvdHRvbUNvbG9yLCBib3Jk
ZXJCb3R0b21Db2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21Db2xvciwgc2V0Qm9yZGVyQm90dG9tQ29sb3IpCitERUZJTkVfSEFO
RExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIHNldEJvcmRlckJv
dHRvbUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIHNldEJv
cmRlckJvdHRvbUxlZnRSYWRpdXMsIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBzZXRCb3JkZXJC
b3R0b21MZWZ0UmFkaXVzLCBpbml0aWFsQm9yZGVyUmFkaXVzKQorREVGSU5FX1JBRElVU19WQUxV
RShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIHNldEJvcmRlckJvdHRvbUxlZnRS
YWRpdXMpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBzZXRCb3Jk
ZXJCb3R0b21SaWdodFJhZGl1cywgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgc2V0Qm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMsIGluaXRpYWxCb3JkZXJSYWRpdXMpCitERUZJTkVfUkFESVVTX1ZB
TFVFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIHNldEJvcmRlckJvdHRvbVJp
Z2h0UmFkaXVzKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlCitERUZJTkVfSEFO
RExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgc2V0Qm9yZGVyQm90dG9t
U3R5bGUsIGJvcmRlckJvdHRvbVN0eWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGUsIHNldEJvcmRlckJvdHRvbVN0eWxlLCBpbml0aWFsQm9yZGVy
U3R5bGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUs
IHNldEJvcmRlckJvdHRvbVN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRo
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgc2V0
Qm9yZGVyQm90dG9tV2lkdGgsIGJvcmRlckJvdHRvbVdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIHNldEJvcmRlckJvdHRvbVdpZHRoLCBp
bml0aWFsQm9yZGVyV2lkdGgpCitERUZJTkVfV0lEVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCwgc2V0Qm9yZGVyQm90dG9tV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVy
Q29sbGFwc2UKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNl
LCBzZXRCb3JkZXJDb2xsYXBzZSwgYm9yZGVyQ29sbGFwc2UpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgc2V0Qm9yZGVyQ29sbGFwc2UsIGluaXRpYWxC
b3JkZXJDb2xsYXBzZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlKQor
eworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOworICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
CisgICAgICAgIGNhc2UgQ1NTVmFsdWVDb2xsYXBzZToKKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRCb3JkZXJDb2xsYXBzZSh0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENTU1ZhbHVlU2VwYXJhdGU6CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0Qm9yZGVyQ29sbGFwc2UoZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IKK0RFRklORV9FWFBBTkRJ
TkdfSU5IRVJJVF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpCitERUZJTkVfRVhQQU5ESU5H
X0lOSVRJQUxfRk9VUihDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKQorREVGSU5FX05VTExfVkFMVUUo
Q1NTUHJvcGVydHlCb3JkZXJDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJMZWZ0CitERUZJ
TkVfRVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0LCBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFdpZHRoKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldEJvcmRlckxlZnQoKTsKK30KK0RFRklO
RV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCkKKworLy8gQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0Q29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0Q29sb3IsIHNldEJvcmRlckxlZnRDb2xvciwgYm9yZGVyTGVmdENvbG9yLCBjb2xvcikK
K0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwg
c2V0Qm9yZGVyTGVmdENvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0
eUJvcmRlckxlZnRDb2xvciwgc2V0Qm9yZGVyTGVmdENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFN0eWxlLCBzZXRCb3JkZXJMZWZ0U3R5bGUsIGJvcmRlckxlZnRTdHlsZSkKK0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgc2V0Qm9yZGVyTGVmdFN0eWxl
LCBpbml0aWFsQm9yZGVyU3R5bGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlLCBzZXRCb3JkZXJMZWZ0U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFdpZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lk
dGgsIHNldEJvcmRlckxlZnRXaWR0aCwgYm9yZGVyTGVmdFdpZHRoKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBzZXRCb3JkZXJMZWZ0V2lkdGgsIGlu
aXRpYWxCb3JkZXJXaWR0aCkKK0RFRklORV9XSURUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRXaWR0aCwgc2V0Qm9yZGVyTGVmdFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1
cworREVGSU5FX0VYUEFORElOR19JTkhFUklUX0ZPVVIoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMs
IENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdo
dFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJS
YWRpdXMpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0Qm9yZGVyUmFkaXVzKCk7Cit9
CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykKKworLy8gQ1NTUHJv
cGVydHlCb3JkZXJSaWdodAorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHQsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgpCitERUZJTkVfSU5J
VElBTChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5y
ZXNldEJvcmRlclJpZ2h0KCk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0KQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IKK0RFRklORV9IQU5ETEVf
SU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBzZXRCb3JkZXJSaWdo
dENvbG9yLCBib3JkZXJSaWdodENvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9D
T0xPUihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIHNldEJvcmRlclJpZ2h0Q29sb3IpCitE
RUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgc2V0
Qm9yZGVyUmlnaHRDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBzZXRCb3JkZXJS
aWdodFN0eWxlLCBib3JkZXJSaWdodFN0eWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgc2V0Qm9yZGVyUmlnaHRTdHlsZSwgaW5pdGlhbEJvcmRl
clN0eWxlKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUs
IHNldEJvcmRlclJpZ2h0U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aAor
REVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgc2V0Qm9y
ZGVyUmlnaHRXaWR0aCwgYm9yZGVyUmlnaHRXaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIHNldEJvcmRlclJpZ2h0V2lkdGgsIGluaXRpYWxC
b3JkZXJXaWR0aCkKK0RFRklORV9XSURUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lk
dGgsIHNldEJvcmRlclJpZ2h0V2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZwor
REVGSU5FX0VYUEFORElOR19JTkhFUklUX1RXTyhDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyVmVydGljYWxTcGFjaW5nKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQ
cm9wZXJ0eUJvcmRlclNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNw
YWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nKQorREVGSU5FX05V
TExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRl
clN0eWxlCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQcm9wZXJ0eUJvcmRlclN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX0ZPVVIoQ1NTUHJvcGVydHlCb3JkZXJTdHls
ZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxl
LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUpCisKKy8vIENTU1By
b3BlcnR5Qm9yZGVyVG9wCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVy
dHlCb3JkZXJUb3AsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgpCitERUZJTkVfSU5JVElBTChDU1NQ
cm9wZXJ0eUJvcmRlclRvcCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRCb3JkZXJU
b3AoKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wKQorCisvLyBD
U1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENT
U1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIHNldEJvcmRlclRvcENvbG9yLCBib3JkZXJUb3BDb2xv
ciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJU
b3BDb2xvciwgc2V0Qm9yZGVyVG9wQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENT
U1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIHNldEJvcmRlclRvcENvbG9yKQorCisvLyBDU1NQcm9w
ZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eUJvcmRlclRvcExlZnRSYWRpdXMsIHNldEJvcmRlclRvcExlZnRSYWRpdXMsIGJvcmRlclRvcExl
ZnRSYWRpdXMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0
UmFkaXVzLCBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzLCBpbml0aWFsQm9yZGVyUmFkaXVzKQorREVG
SU5FX1JBRElVU19WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsIHNldEJvcmRl
clRvcExlZnRSYWRpdXMpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBzZXRC
b3JkZXJUb3BSaWdodFJhZGl1cywgYm9yZGVyVG9wUmlnaHRSYWRpdXMpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgc2V0Qm9yZGVyVG9wUmln
aHRSYWRpdXMsIGluaXRpYWxCb3JkZXJSYWRpdXMpCitERUZJTkVfUkFESVVTX1ZBTFVFKENTU1By
b3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKQorCisv
LyBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlCb3JkZXJUb3BTdHlsZSwgc2V0Qm9yZGVyVG9wU3R5bGUsIGJvcmRlclRvcFN0eWxlKQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIHNldEJvcmRl
clRvcFN0eWxlLCBpbml0aWFsQm9yZGVyU3R5bGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGUsIHNldEJvcmRlclRvcFN0eWxlKQorCisvLyBDU1NQcm9wZXJ0
eUJvcmRlclRvcFdpZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJU
b3BXaWR0aCwgc2V0Qm9yZGVyVG9wV2lkdGgsIGJvcmRlclRvcFdpZHRoKQorREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIHNldEJvcmRlclRvcFdpZHRoLCBp
bml0aWFsQm9yZGVyV2lkdGgpCitERUZJTkVfV0lEVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJU
b3BXaWR0aCwgc2V0Qm9yZGVyVG9wV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgK
K0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENT
U1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgpCitE
RUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfRk9VUihDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoKQorREVG
SU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlC
b3R0b20KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvdHRvbSwgc2V0Qm90dG9t
LCBib3R0b20pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3R0b20sIHNldEJv
dHRvbSwgaW5pdGlhbE9mZnNldCkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3R0
b20sIHNldEJvdHRvbSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENT
U1Byb3BlcnR5Qm94U2l6aW5nCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3hT
aXppbmcsIHNldEJveFNpemluZywgYm94U2l6aW5nKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5Qm94U2l6aW5nLCBzZXRCb3hTaXppbmcsIGluaXRpYWxCb3hTaXppbmcpCitERUZJ
TkVfVkFMVUUoQ1NTUHJvcGVydHlCb3hTaXppbmcpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRlbnRCb3gpCisgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94U2l6aW5nKENPTlRFTlRfQk9YKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFNpemluZyhCT1JE
RVJfQk9YKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5Q2FwdGlvblNpZGUKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUNhcHRpb25TaWRlLCBzZXRDYXB0aW9uU2lkZSwgY2Fw
dGlvblNpZGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSwg
c2V0Q2FwdGlvblNpZGUsIGluaXRpYWxDYXB0aW9uU2lkZSkKK0RFRklORV9IQU5ETEVfVkFMVUUo
Q1NTUHJvcGVydHlDYXB0aW9uU2lkZSwgc2V0Q2FwdGlvblNpZGUpCisKKy8vIENTU1Byb3BlcnR5
Q2xlYXIKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUNsZWFyLCBzZXRDbGVhciwg
Y2xlYXIpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlDbGVhciwgc2V0Q2xlYXIs
IGluaXRpYWxDbGVhcikKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlDbGVhciwgc2V0
Q2xlYXIpCisKKy8vIENTU1Byb3BlcnR5Q2xpcAorCisvLyBDU1NQcm9wZXJ0eUNvbnRlbnQKKy8v
IEZJWE1FOiBJbiBDU1MzLCBpdCB3aWxsIGJlIHBvc3NpYmxlIHRvIGluaGVyaXQgY29udGVudC4g
IEluIENTUzIgaXQgaXMgbm90LiAgVGhpcworICAgIC8vIG5vdGUgaXMgYSByZW1pbmRlciB0aGF0
IGV2ZW50dWFsbHkgImluaGVyaXQiIG5lZWRzIHRvIGJlIHN1cHBvcnRlZC4KK0RFRklORV9OVUxM
X0lOSEVSSVQoQ1NTUHJvcGVydHlDb250ZW50KQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlD
b250ZW50KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckNvbnRlbnQoKTsKK30KK0RF
RklORV9WQUxVRShDU1NQcm9wZXJ0eUNvbnRlbnQpCit7CisgICAgLy8gbGlzdCBvZiBzdHJpbmcs
IHVyaSwgY291bnRlciwgYXR0ciwgaQorICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENT
U1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CisKKyAg
ICBib29sIGRpZFNldCA9IGZhbHNlOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKysp
IHsKKyAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KGkpOworICAgICAgICBpZiAoaXRlbS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpIHsKKyAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb250ZW50KHN0YXRpY19jYXN0PENTU0ltYWdl
R2VuZXJhdG9yVmFsdWUqPihpdGVtKS0+Z2VuZXJhdGVkSW1hZ2UoKSwgZGlkU2V0KTsKKyAgICAg
ICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWl0ZW0tPmlz
UHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGl0ZW0pOworICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+cHJpbWl0aXZlVHlwZSgp
KSB7CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc6CisgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29udGVudChjb250ZW50VmFsdWUtPmdldFN0cmlu
Z1ZhbHVlKCkuaW1wbCgpLCBkaWRTZXQpOworICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQVRU
UjogeworICAgICAgICAgICAgLy8gRklYTUU6IENhbiBhIG5hbWVzcGFjZSBiZSBzcGVjaWZpZWQg
Zm9yIGFuIGF0dHIoZm9vKT8KKyAgICAgICAgICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c3R5
bGVUeXBlKCkgPT0gTk9QU0VVRE8pCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldFVuaXF1ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluc3RhbmNl
LT5tX3BhcmVudFN0eWxlLT5zZXRVbmlxdWUoKTsKKyAgICAgICAgICAgIFF1YWxpZmllZE5hbWUg
YXR0cihudWxsQXRvbSwgY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgbnVs
bEF0b20pOworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbnRlbnQoaW5zdGFu
Y2UtPm1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKGF0dHIpLmltcGwoKSwgZGlkU2V0KTsKKyAgICAg
ICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICAvLyByZWdpc3RlciB0aGUgZmFjdCB0
aGF0IHRoZSBhdHRyaWJ1dGUgdmFsdWUgYWZmZWN0cyB0aGUgc3R5bGUKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3NlbGVjdG9yQXR0cnMuYWRkKGF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19VUkk6IHsKKyAgICAgICAgICAgIGlmICghY29udGVudFZhbHVlLT5pc0ltYWdlVmFs
dWUoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRDb250ZW50KGluc3RhbmNlLT5jYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJv
cGVydHlDb250ZW50LCBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4oY29udGVudFZhbHVlKSks
IGRpZFNldCk7CisgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NPVU5URVI6
IHsKKyAgICAgICAgICAgIENvdW50ZXIqIGNvdW50ZXJWYWx1ZSA9IGNvbnRlbnRWYWx1ZS0+Z2V0
Q291bnRlclZhbHVlKCk7CisgICAgICAgICAgICBPd25QdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50
ZXIgPSBhZG9wdFB0cihuZXcgQ291bnRlckNvbnRlbnQoY291bnRlclZhbHVlLT5pZGVudGlmaWVy
KCksCisgICAgICAgICAgICAgICAgKEVMaXN0U3R5bGVUeXBlKWNvdW50ZXJWYWx1ZS0+bGlzdFN0
eWxlTnVtYmVyKCksIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpKTsKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRDb250ZW50KGNvdW50ZXIucmVsZWFzZSgpLCBkaWRTZXQpOwor
ICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGlmICghZGlkU2V0KQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xlYXJDb250ZW50
KCk7CisgICAgcmV0dXJuOworfQorCisvLyBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQKK0RF
RklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50KQorREVGSU5FX05V
TExfSU5JVElBTChDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQpCitERUZJTkVfVkFMVUUoQ1NT
UHJvcGVydHlDb3VudGVySW5jcmVtZW50KQoreworICAgIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5
Q291bnRlckxpc3QoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIHZhbHVlLT5pc1ZhbHVlTGlzdCgp
ID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpIDogMCwgZmFsc2UpOworfQorCisv
LyBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldAorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0
eUNvdW50ZXJSZXNldCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlDb3VudGVyUmVz
ZXQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQpCit7CisgICAgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlDb3VudGVyTGlzdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgdmFs
dWUtPmlzVmFsdWVMaXN0KCkgPyBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSkgOiAw
LCB0cnVlKTsKK30KKworLy8gQ1NTUHJvcGVydHlDdXJzb3IKK0RFRklORV9JTkhFUklUKENTU1By
b3BlcnR5Q3Vyc29yKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJzb3IoaW5zdGFu
Y2UtPm1fcGFyZW50U3R5bGUtPmN1cnNvcigpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
Q3Vyc29yTGlzdChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y3Vyc29ycygpKTsKK30KK0RFRklO
RV9JTklUSUFMKENTU1Byb3BlcnR5Q3Vyc29yKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5j
bGVhckN1cnNvckxpc3QoKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q3Vyc29yKFJlbmRl
clN0eWxlOjppbml0aWFsQ3Vyc29yKCkpOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Q3Vy
c29yKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckN1cnNvckxpc3QoKTsKKyAgICBp
ZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0g
c3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgICAgICBpbnQgbGVuID0gbGlz
dC0+bGVuZ3RoKCk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJzb3IoQ1VSU09S
X0FVVE8pOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAg
ICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Cisg
ICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICBp
bnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICBp
ZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgeworICAgICAgICAgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVlKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxDU1NDdXJz
b3JJbWFnZVZhbHVlKj4ocHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAo
aW1hZ2UtPnVwZGF0ZUlmU1ZHQ3Vyc29ySXNVc2VkKGluc3RhbmNlLT5tX2VsZW1lbnQpKSAvLyBF
bGVtZW50cyB3aXRoIFNWRyBjdXJzb3JzIGFyZSBub3QgYWxsb3dlZCB0byBzaGFyZSBzdHlsZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRVbmlxdWUoKTsK
KyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPmFkZEN1cnNvcihpbnN0YW5j
ZS0+Y2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q3Vyc29yLCBpbWFnZSksIGlt
YWdlLT5ob3RTcG90KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgICAgICBpbnQgdHlwZSA9IHAtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYg
KHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBpbnN0YW5jZS0+bV9zdHls
ZS0+Y3Vyc29yKCkgIT0gRUN1cnNvcigqcCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0Q3Vyc29yKCpwKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5RW1wdHlDZWxscwor
REVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5RW1wdHlDZWxscywgc2V0RW1wdHlDZWxs
cywgZW1wdHlDZWxscykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUVtcHR5Q2Vs
bHMsIHNldEVtcHR5Q2VsbHMsIGluaXRpYWxFbXB0eUNlbGxzKQorREVGSU5FX0hBTkRMRV9WQUxV
RShDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMsIHNldEVtcHR5Q2VsbHMpCisKKy8vIENTU1Byb3BlcnR5
RmxvYXQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUZsb2F0LCBzZXRGbG9hdGlu
ZywgZmxvYXRpbmcpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlGbG9hdCwgc2V0
RmxvYXRpbmcsIGluaXRpYWxGbG9hdGluZykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVy
dHlGbG9hdCwgc2V0RmxvYXRpbmcpCisKKy8vIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gKK0RFRklO
RV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlGb250U3RyZXRjaCkKK0RFRklORV9OVUxMX0lOSVRJ
QUwoQ1NTUHJvcGVydHlGb250U3RyZXRjaCkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5
Rm9udFN0cmV0Y2gpCisKKy8vIENTU1Byb3BlcnR5SGVpZ2h0CitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlIZWlnaHQsIHNldEhlaWdodCwgaGVpZ2h0KQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5SGVpZ2h0LCBzZXRIZWlnaHQsIGluaXRpYWxTaXplKQorREVGSU5F
X0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eUhlaWdodCwgc2V0SGVpZ2h0LCBmYWxzZSwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5TGVmdAorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5TGVmdCwgc2V0TGVmdCwgbGVmdCkKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eUxlZnQsIHNldExlZnQsIGluaXRpYWxPZmZzZXQpCitERUZJTkVfTEVO
R1RIX1ZBTFVFKENTU1Byb3BlcnR5TGVmdCwgc2V0TGVmdCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
dHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZworREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgc2V0TGV0dGVyU3BhY2luZywgbGV0
dGVyU3BhY2luZykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUxldHRlclNwYWNp
bmcsIHNldExldHRlclNwYWNpbmcsIGluaXRpYWxMZXR0ZXJXb3JkU3BhY2luZykKK0RFRklORV9T
UEFDSU5HX1ZBTFVFKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgc2V0TGV0dGVyU3BhY2luZykK
KworLy8gQ1NTUHJvcGVydHlMaXN0U3R5bGUKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9USFJF
RShDU1NQcm9wZXJ0eUxpc3RTdHlsZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZUltYWdlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKQorREVGSU5F
X0VYUEFORElOR19JTklUSUFMX1RIUkVFKENTU1Byb3BlcnR5TGlzdFN0eWxlLCBDU1NQcm9wZXJ0
eUxpc3RTdHlsZVR5cGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIENTU1Byb3BlcnR5TGlz
dFN0eWxlUG9zaXRpb24pCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUxpc3RTdHlsZSkK
KworLy8gQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIHNldExpc3RTdHlsZUltYWdlLCBsaXN0U3R5bGVJbWFn
ZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCBzZXRM
aXN0U3R5bGVJbWFnZSwgaW5pdGlhbExpc3RTdHlsZUltYWdlKQorREVGSU5FX1ZBTFVFKENTU1By
b3BlcnR5TGlzdFN0eWxlSW1hZ2UpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldExpc3RT
dHlsZUltYWdlKGluc3RhbmNlLT5zdHlsZUltYWdlKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2Us
IHZhbHVlKSk7Cit9CisKKy8vIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24KK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLCBzZXRMaXN0U3R5bGVQ
b3NpdGlvbiwgbGlzdFN0eWxlUG9zaXRpb24pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlMaXN0U3R5bGVQb3NpdGlvbiwgc2V0TGlzdFN0eWxlUG9zaXRpb24sIGluaXRpYWxMaXN0
U3R5bGVQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlMaXN0U3R5bGVQ
b3NpdGlvbiwgc2V0TGlzdFN0eWxlUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5TGlzdFN0eWxl
VHlwZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgc2V0
TGlzdFN0eWxlVHlwZSwgbGlzdFN0eWxlVHlwZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eUxpc3RTdHlsZVR5cGUsIHNldExpc3RTdHlsZVR5cGUsIGluaXRpYWxMaXN0U3R5bGVU
eXBlKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIHNldExp
c3RTdHlsZVR5cGUpCisKKy8vIENTU1Byb3BlcnR5TWFyZ2luCitERUZJTkVfRVhQQU5ESU5HX0lO
SEVSSVRfRk9VUihDU1NQcm9wZXJ0eU1hcmdpbiwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1By
b3BlcnR5TWFyZ2luUmlnaHQsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eU1hcmdpbikKK3sKKyAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+cmVzZXRNYXJnaW4oKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1By
b3BlcnR5TWFyZ2luKQorCisvLyBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbQorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBzZXRNYXJnaW5Cb3R0b20sIG1hcmdp
bkJvdHRvbSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwg
c2V0TWFyZ2luQm90dG9tLCBpbml0aWFsTWFyZ2luKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQ
cm9wZXJ0eU1hcmdpbkJvdHRvbSwgc2V0TWFyZ2luQm90dG9tLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNYXJnaW5MZWZ0CitERUZJTkVfSEFORExF
X0lOSEVSSVQoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBzZXRNYXJnaW5MZWZ0LCBtYXJnaW5MZWZ0
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgc2V0TWFyZ2lu
TGVmdCwgaW5pdGlhbE1hcmdpbikKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0LCBzZXRNYXJnaW5MZWZ0LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkK
KworLy8gQ1NTUHJvcGVydHlNYXJnaW5SaWdodAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5TWFyZ2luUmlnaHQsIHNldE1hcmdpblJpZ2h0LCBtYXJnaW5SaWdodCkKK0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBzZXRNYXJnaW5SaWdodCwgaW5p
dGlhbE1hcmdpbikKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwg
c2V0TWFyZ2luUmlnaHQsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisvLyBD
U1NQcm9wZXJ0eU1hcmdpblRvcAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWFy
Z2luVG9wLCBzZXRNYXJnaW5Ub3AsIG1hcmdpblRvcCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eU1hcmdpblRvcCwgc2V0TWFyZ2luVG9wLCBpbml0aWFsTWFyZ2luKQorREVGSU5F
X0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpblRvcCwgc2V0TWFyZ2luVG9wLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNYXhIZWlnaHQKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1heEhlaWdodCwgc2V0TWF4SGVpZ2h0LCBt
YXhIZWlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIHNl
dE1heEhlaWdodCwgaW5pdGlhbE1heFNpemUpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3Bl
cnR5TWF4SGVpZ2h0LCBzZXRNYXhIZWlnaHQsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVl
KQorCisvLyBDU1NQcm9wZXJ0eU1heFdpZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlNYXhXaWR0aCwgc2V0TWF4V2lkdGgsIG1heFdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5TWF4V2lkdGgsIHNldE1heFdpZHRoLCBpbml0aWFsTWF4U2l6ZSkKK0RF
RklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXhXaWR0aCwgc2V0TWF4V2lkdGgsIHRydWUs
IHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNaW5IZWlnaHQKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1pbkhlaWdodCwgc2V0TWluSGVpZ2h0LCBt
aW5IZWlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNaW5IZWlnaHQsIHNl
dE1pbkhlaWdodCwgaW5pdGlhbE1pblNpemUpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3Bl
cnR5TWluSGVpZ2h0LCBzZXRNaW5IZWlnaHQsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxz
ZSkKKworLy8gQ1NTUHJvcGVydHlNaW5XaWR0aAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5TWluV2lkdGgsIHNldE1pbldpZHRoLCBtaW5XaWR0aCkKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eU1pbldpZHRoLCBzZXRNaW5XaWR0aCwgaW5pdGlhbE1pblNpemUpCitE
RUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5TWluV2lkdGgsIHNldE1pbldpZHRoLCBmYWxz
ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5T3BhY2l0eQorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5T3BhY2l0eSwgc2V0T3BhY2l0eSwgb3BhY2l0
eSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU9wYWNpdHksIHNldE9wYWNpdHks
IGluaXRpYWxPcGFjaXR5KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5T3BhY2l0eSkKK3sKKyAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAgICAgICAgICAvLyBDbGFtcCBvcGFjaXR5
IHRvIHRoZSByYW5nZSAwLTEKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPcGFj
aXR5KG1pbigxLjBmLCBtYXgoMC4wZiwgcHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkp
KTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5T3JwaGFucworREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5T3JwaGFucywgc2V0T3JwaGFucywgb3JwaGFucykKK0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eU9ycGhhbnMsIHNldE9ycGhhbnMsIGluaXRpYWxPcnBoYW5z
KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5T3JwaGFucykKK3sKKyAgICBpZiAodmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3JwaGFucyhw
cmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0
eU91dGxpbmUKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eU91dGxp
bmUsIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwgQ1NT
UHJvcGVydHlPdXRsaW5lU3R5bGUpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eU91dGxpbmUp
Cit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0T3V0bGluZSgpOworfQorREVGSU5FX05V
TExfVkFMVUUoQ1NTUHJvcGVydHlPdXRsaW5lKQorCisvLyBDU1NQcm9wZXJ0eU91dGxpbmVDb2xv
cgorREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwg
c2V0T3V0bGluZUNvbG9yLCBvdXRsaW5lQ29sb3IsIGNvbG9yKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMX0NPTE9SKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBzZXRPdXRsaW5lQ29sb3IpCitERUZJ
TkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBzZXRPdXRsaW5l
Q29sb3IpCisKKy8vIENTU1Byb3BlcnR5T3V0bGluZU9mZnNldAorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5T3V0bGluZU9mZnNldCwgc2V0T3V0bGluZU9mZnNldCwgb3V0bGluZU9m
ZnNldCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQsIHNl
dE91dGxpbmVPZmZzZXQsIGluaXRpYWxPdXRsaW5lT2Zmc2V0KQorREVGSU5FX1ZBTFVFKENTU1By
b3BlcnR5T3V0bGluZU9mZnNldCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldE91dGxpbmVPZmZzZXQocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnQoaW5z
dGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3Rh
bmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3Bl
cnR5T3V0bGluZVN0eWxlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPdXRsaW5l
U3R5bGUsIHNldE91dGxpbmVTdHlsZSwgb3V0bGluZVN0eWxlKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLCBzZXRPdXRsaW5lU3R5bGUsIGluaXRpYWxCb3Jk
ZXJTdHlsZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSkKK3sKKyAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0
bykKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPdXRsaW5lU3R5bGUoRE9UVEVE
LCB0cnVlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dE91dGxpbmVTdHlsZSgqcHJpbWl0aXZlVmFsdWUpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVy
dHlPdXRsaW5lV2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU91dGxpbmVX
aWR0aCwgc2V0T3V0bGluZVdpZHRoLCBvdXRsaW5lV2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIHNldE91dGxpbmVXaWR0aCwgaW5pdGlhbEJvcmRl
cldpZHRoKQorREVGSU5FX1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBzZXRP
dXRsaW5lV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5T3ZlcmZsb3cKK0RFRklORV9FWFBBTkRJTkdf
SU5IRVJJVF9UV08oQ1NTUHJvcGVydHlPdmVyZmxvdywgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENT
U1Byb3BlcnR5T3ZlcmZsb3dZKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQcm9w
ZXJ0eU92ZXJmbG93LCBDU1NQcm9wZXJ0eU92ZXJmbG93WSwgQ1NTUHJvcGVydHlPdmVyZmxvd1kp
CitERUZJTkVfRVhQQU5ESU5HX1ZBTFVFX1RXTyhDU1NQcm9wZXJ0eU92ZXJmbG93LCBDU1NQcm9w
ZXJ0eU92ZXJmbG93WSwgQ1NTUHJvcGVydHlPdmVyZmxvd1kpCisKKy8vIENTU1Byb3BlcnR5T3Zl
cmZsb3dYCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIHNldE92
ZXJmbG93WCwgb3ZlcmZsb3dYKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3Zl
cmZsb3dYLCBzZXRPdmVyZmxvd1gsIGluaXRpYWxPdmVyZmxvd1gpCitERUZJTkVfSEFORExFX1ZB
TFVFKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBzZXRPdmVyZmxvd1gpCisKKy8vIENTU1Byb3BlcnR5
T3ZlcmZsb3dZCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHNl
dE92ZXJmbG93WSwgb3ZlcmZsb3dZKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
T3ZlcmZsb3dZLCBzZXRPdmVyZmxvd1ksIGluaXRpYWxPdmVyZmxvd1kpCitERUZJTkVfSEFORExF
X1ZBTFVFKENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBzZXRPdmVyZmxvd1kpCisKKy8vIENTU1Byb3Bl
cnR5UGFkZGluZworREVGSU5FX0VYUEFORElOR19JTkhFUklUX0ZPVVIoQ1NTUHJvcGVydHlQYWRk
aW5nLCBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBDU1NQ
cm9wZXJ0eVBhZGRpbmdCb3R0b20sIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQpCitERUZJTkVfSU5J
VElBTChDU1NQcm9wZXJ0eVBhZGRpbmcpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0
UGFkZGluZygpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nKQorCisv
LyBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVBhZGRpbmdCb3R0b20sIHNldFBhZGRpbmdCb3R0b20sIHBhZGRpbmdCb3R0b20pCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBzZXRQYWRkaW5nQm90
dG9tLCBpbml0aWFsUGFkZGluZykKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRk
aW5nQm90dG9tLCBzZXRQYWRkaW5nQm90dG9tLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBzZXRQYWRkaW5nTGVmdCwgcGFkZGluZ0xlZnQpCitE
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgc2V0UGFkZGluZ0xl
ZnQsIGluaXRpYWxQYWRkaW5nKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRp
bmdMZWZ0LCBzZXRQYWRkaW5nTGVmdCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KQorCisvLyBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBzZXRQYWRkaW5nUmlnaHQsIHBhZGRpbmdSaWdodCkKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgc2V0UGFkZGluZ1Jp
Z2h0LCBpbml0aWFsUGFkZGluZykKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRk
aW5nUmlnaHQsIHNldFBhZGRpbmdSaWdodCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKQorCisvLyBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVBhZGRpbmdUb3AsIHNldFBhZGRpbmdUb3AsIHBhZGRpbmdUb3ApCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBzZXRQYWRkaW5nVG9wLCBpbml0
aWFsUGFkZGluZykKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBz
ZXRQYWRkaW5nVG9wLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENT
U1Byb3BlcnR5UGFnZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZ2UpCitERUZJ
TkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5UGFnZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1By
b3BlcnR5UGFnZSkKKworLy8gQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcgorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXIsIHNldFBhZ2VCcmVha0FmdGVyLCBw
YWdlQnJlYWtBZnRlcikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBhZ2VCcmVh
a0FmdGVyLCBzZXRQYWdlQnJlYWtBZnRlciwgaW5pdGlhbFBhZ2VCcmVhaykKK0RFRklORV9IQU5E
TEVfVkFMVUUoQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlciwgc2V0UGFnZUJyZWFrQWZ0ZXIpCisK
Ky8vIENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlQYWdlQnJlYWtCZWZvcmUsIHNldFBhZ2VCcmVha0JlZm9yZSwgcGFnZUJyZWFrQmVm
b3JlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlLCBz
ZXRQYWdlQnJlYWtCZWZvcmUsIGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVF
KENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlLCBzZXRQYWdlQnJlYWtCZWZvcmUpCisKKy8vIENT
U1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlQYWdlQnJlYWtJbnNpZGUsIHNldFBhZ2VCcmVha0luc2lkZSwgcGFnZUJyZWFrSW5zaWRlKQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlLCBzZXRQYWdl
QnJlYWtJbnNpZGUsIGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlQ
YWdlQnJlYWtJbnNpZGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFr
ID0gKnByaW1pdGl2ZVZhbHVlOworICAgICAgICBpZiAocGFnZUJyZWFrICE9IFBCQUxXQVlTKQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFBhZ2VCcmVha0luc2lkZShwYWdlQnJl
YWspOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzCisjaWYgRU5BQkxF
KERBU0hCT0FSRF9TVVBQT1JUKQorLy8gPHJkYXI6Ly9wcm9ibGVtLzY1NjEwNzc+IFdvcmsgYXJv
dW5kIHRoZSBTdG9ja3Mgd2lkZ2V0J3MgbWlzdXNlIG9mIHRoZQorLy8gcG9pbnRlci1ldmVudHMg
cHJvcGVydHkgYnkgbm90IGFwcGx5aW5nIGl0IGluIERhc2hib2FyZC4KK0RFRklORV9JTkhFUklU
KENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cykKK3sKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBp
bnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisgICAgaWYgKHNldHRp
bmdzICYmIHNldHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgp
KQorICAgICAgICByZXR1cm47CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFBvaW50ZXJFdmVu
dHMoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPnBvaW50ZXJFdmVudHMoKSk7Cit9CitERUZJTkVf
SU5JVElBTChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpCit7CisgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOworICAgIGlm
IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0
eU1vZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRQb2lu
dGVyRXZlbnRzKFJlbmRlclN0eWxlOjppbml0aWFsUG9pbnRlckV2ZW50cygpKTsKK30KK0RFRklO
RV9WQUxVRShDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpCit7CisgICAgU2V0dGluZ3MqIHNldHRp
bmdzID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOworICAgIGlm
IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0
eU1vZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0UG9pbnRlckV2ZW50cygqcHJpbWl0aXZlVmFsdWUpOworICAgIH0KK30KKyNlbHNl
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBzZXRQb2lu
dGVyRXZlbnRzLCBwb2ludGVyRXZlbnRzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5UG9pbnRlckV2ZW50cywgc2V0UG9pbnRlckV2ZW50cywgaW5pdGlhbFBvaW50ZXJFdmVudHMp
CitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgc2V0UG9pbnRl
ckV2ZW50cykKKyNlbmRpZgorCisvLyBDU1NQcm9wZXJ0eVBvc2l0aW9uCitERUZJTkVfSEFORExF
X0lOSEVSSVQoQ1NTUHJvcGVydHlQb3NpdGlvbiwgc2V0UG9zaXRpb24sIHBvc2l0aW9uKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UG9zaXRpb24sIHNldFBvc2l0aW9uLCBpbml0
aWFsUG9zaXRpb24pCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5UG9zaXRpb24sIHNl
dFBvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVF1b3RlcworREVGSU5FX05VTExfSU5IRVJJVChD
U1NQcm9wZXJ0eVF1b3RlcykKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlRdW90ZXMp
CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVF1b3RlcykKKworLy8gQ1NTUHJvcGVydHlS
ZXNpemUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVJlc2l6ZSwgc2V0UmVzaXpl
LCByZXNpemUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlSZXNpemUsIHNldFJl
c2l6ZSwgaW5pdGlhbFJlc2l6ZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVJlc2l6ZSkKK3sK
KyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAg
ICAgICAgICBFUmVzaXplIHJlc3VsdCA9IFJFU0laRV9OT05FOworICAgICAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykgeworICAgICAgICAgICAg
ICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1l
bnQtPnNldHRpbmdzKCkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldHRpbmdzLT50
ZXh0QXJlYXNBcmVSZXNpemFibGUoKSA/IFJFU0laRV9CT1RIIDogUkVTSVpFX05PTkU7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAqcHJpbWl0aXZlVmFsdWU7
CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0UmVzaXplKHJlc3VsdCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5UmlnaHQKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVJpZ2h0LCBzZXRSaWdodCwgcmlnaHQpCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlSaWdodCwgc2V0UmlnaHQsIGluaXRpYWxPZmZzZXQpCitERUZJTkVf
TEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5UmlnaHQsIHNldFJpZ2h0LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlTaXplCitERUZJTkVfTlVMTF9JTkhF
UklUKENTU1Byb3BlcnR5U2l6ZSkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlTaXpl
KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5U2l6ZSkKK3sKKyAgICBpbnN0YW5jZS0+YXBwbHlQ
YWdlU2l6ZVByb3BlcnR5KHZhbHVlKTsKK30KKworLy8gQ1NTUHJvcGVydHlTcmMKKy8vIE9ubHkg
dXNlZCBpbiBAZm9udC1mYWNlIHJ1bGVzLgorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0
eVNyYykKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlTcmMpCitERUZJTkVfTlVMTF9W
QUxVRShDU1NQcm9wZXJ0eVNyYykKKworLy8gQ1NTUHJvcGVydHlTcGVhaworREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5U3BlYWssIHNldFNwZWFrLCBzcGVhaykKK0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVNwZWFrLCBzZXRTcGVhaywgaW5pdGlhbFNwZWFrKQorREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVNwZWFrLCBzZXRTcGVhaykKKworLy8gQ1NTUHJv
cGVydHlUYWJsZUxheW91dAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGFibGVM
YXlvdXQsIHNldFRhYmxlTGF5b3V0LCB0YWJsZUxheW91dCkKK0RFRklORV9IQU5ETEVfSU5JVElB
TChDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0LCBzZXRUYWJsZUxheW91dCwgaW5pdGlhbFRhYmxlTGF5
b3V0KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5VGFibGVMYXlvdXQpCit7CisgICAgaWYgKHZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgICAgIEVUYWJsZUxheW91dCBsYXlvdXQgPSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAgIGlm
IChsYXlvdXQgPT0gVEFVVE8pCisgICAgICAgICAgICBsYXlvdXQgPSBSZW5kZXJTdHlsZTo6aW5p
dGlhbFRhYmxlTGF5b3V0KCk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUYWJsZUxh
eW91dChsYXlvdXQpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlUZXh0QWxpZ24KK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRBbGlnbiwgc2V0VGV4dEFsaWduLCB0ZXh0
QWxpZ24pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIHNldFRl
eHRBbGlnbiwgaW5pdGlhbFRleHRBbGlnbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVRleHRB
bGlnbikKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW50IGlkID0gcHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCk7CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVN0YXJ0KQorICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFRleHRBbGlnbihpbnN0YW5jZS0+bV9zdHlsZS0+aXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpID8gTEVGVCA6IFJJR0hUKTsKKyAgICAgICAgZWxzZSBpZiAoaWQgPT0g
Q1NTVmFsdWVFbmQpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEFsaWdu
KGluc3RhbmNlLT5tX3N0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBSSUdIVCA6IExF
RlQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4
dEFsaWduKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVRleHRE
ZWNvcmF0aW9uCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
biwgc2V0VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHNldFRleHREZWNvcmF0aW9uLCBpbml0aWFs
VGV4dERlY29yYXRpb24pCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikK
K3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHZhbHVlLT5p
c1ZhbHVlTGlzdCgpKSB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0
PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAgICAgICAgaW50IHQgPSBSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHREZWNvcmF0aW9uKCk7CisgICAgICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgQ1NT
VmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOworICAgICAgICAg
ICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5v
bmU6CisgICAgICAgICAgICAgICAgdCA9IFRETk9ORTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVVbmRlcmxpbmU6CisgICAgICAgICAgICAgICAgdCB8
PSBVTkRFUkxJTkU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlT3ZlcmxpbmU6CisgICAgICAgICAgICAgICAgdCB8PSBPVkVSTElORTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5lVGhyb3VnaDoKKyAg
ICAgICAgICAgICAgICB0IHw9IExJTkVfVEhST1VHSDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVCbGluazoKKyAgICAgICAgICAgICAgICB0IHw9IEJM
SU5LOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFRleHREZWNvcmF0aW9uKHQpOworICAgIH0KK30KKworLy8gQ1NT
UHJvcGVydHlUZXh0SW5kZW50CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0
SW5kZW50LCBzZXRUZXh0SW5kZW50LCB0ZXh0SW5kZW50KQorREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5VGV4dEluZGVudCwgc2V0VGV4dEluZGVudCwgaW5pdGlhbFRleHRJbmRlbnQp
CitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5VGV4dEluZGVudCwgc2V0VGV4dEluZGVu
dCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVRl
eHRMaW5lVGhyb3VnaAorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRMaW5lVGhy
b3VnaCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2gpCitE
RUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaCkKKworLy8gQ1NTUHJv
cGVydHlUZXh0TGluZVRocm91Z2hDb2xvcgorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0
eVRleHRMaW5lVGhyb3VnaENvbG9yKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRl
eHRMaW5lVGhyb3VnaENvbG9yKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0TGlu
ZVRocm91Z2hDb2xvcikKKworLy8gQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlCitERUZJ
TkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZSkKK0RFRklORV9O
VUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlKQorREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlKQorCisvLyBDU1NQcm9wZXJ0eVRl
eHRMaW5lVGhyb3VnaFN0eWxlCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoU3R5bGUpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dExpbmVU
aHJvdWdoU3R5bGUpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3Vn
aFN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoCitERUZJTkVfTlVM
TF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGgpCitERUZJTkVfTlVMTF9J
TklUSUFMKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGgpCitERUZJTkVfTlVMTF9WQUxV
RShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVRleHRP
dmVyZmxvdworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93LCBz
ZXRUZXh0T3ZlcmZsb3csIHRleHRPdmVyZmxvdykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVRleHRPdmVyZmxvdywgc2V0VGV4dE92ZXJmbG93LCBpbml0aWFsVGV4dE92ZXJmbG93
KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93KQoreworICAgIGlmICh2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCisgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0VGV4dE92ZXJmbG93KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlRWxsaXBzaXMpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlUZXh0T3Zlcmxp
bmUKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmUpCitERUZJTkVf
TlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lKQorREVGSU5FX05VTExfVkFMVUUo
Q1NTUHJvcGVydHlUZXh0T3ZlcmxpbmUpCisKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lQ29s
b3IKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcikKK0RF
RklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcikKK0RFRklORV9O
VUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lTW9kZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRPdmVy
bGluZU1vZGUpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9k
ZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZSkKKworLy8g
Q1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9w
ZXJ0eVRleHRPdmVybGluZVN0eWxlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRl
eHRPdmVybGluZVN0eWxlKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0T3Zlcmxp
bmVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aAorREVGSU5FX05VTExf
SU5IRVJJVChDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoKQorREVGSU5FX05VTExfSU5JVElB
TChDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJv
cGVydHlUZXh0T3ZlcmxpbmVXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlUZXh0U2hhZG93CitERUZJ
TkVfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldFRleHRTaGFkb3coaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPnRleHRTaGFkb3coKSA/
IG5ldyBTaGFkb3dEYXRhKCppbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+dGV4dFNoYWRvdygpKSA6
IDApOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0U2hhZG93KQoreworICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0U2hhZG93KDApOworfQorREVGSU5FX1NIQURPV19WQUxV
RShDU1NQcm9wZXJ0eVRleHRTaGFkb3csIHNldFRleHRTaGFkb3cpCisKKy8vIENTU1Byb3BlcnR5
VGV4dFRyYW5zZm9ybQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGV4dFRyYW5z
Zm9ybSwgc2V0VGV4dFRyYW5zZm9ybSwgdGV4dFRyYW5zZm9ybSkKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIHNldFRleHRUcmFuc2Zvcm0sIGluaXRpYWxU
ZXh0VHJhbnNmb3JtKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm0sIHNldFRleHRUcmFuc2Zvcm0pCisKKy8vIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZQorREVG
SU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCitERUZJTkVfTlVMTF9J
TklUSUFMKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1By
b3BlcnR5VGV4dFVuZGVybGluZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3IK
K0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3IpCitERUZJ
TkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yKQorREVGSU5FX05V
TExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5
VGV4dFVuZGVybGluZU1vZGUKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lTW9kZSkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5l
TW9kZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUpCisK
Ky8vIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlCitERUZJTkVfTlVMTF9JTkhFUklUKENT
U1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9w
ZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aAorREVG
SU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aCkKK0RFRklORV9O
VUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgpCitERUZJTkVfTlVMTF9W
QUxVRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlUb3AK
K0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVRvcCwgc2V0VG9wLCB0b3ApCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlUb3AsIHNldFRvcCwgaW5pdGlhbE9mZnNldCkK
K0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlUb3AsIHNldFRvcCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5VW5pY29kZUJpZGkKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzZXRVbmljb2RlQmlkaSwg
dW5pY29kZUJpZGkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlVbmljb2RlQmlk
aSwgc2V0VW5pY29kZUJpZGksIGluaXRpYWxVbmljb2RlQmlkaSkKK0RFRklORV9IQU5ETEVfVkFM
VUUoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgc2V0VW5pY29kZUJpZGkpCisKKy8vIENTU1Byb3Bl
cnR5VW5pY29kZVJhbmdlCisvLyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KK0RFRklO
RV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpCitERUZJTkVfTlVMTF9JTklU
SUFMKENTU1Byb3BlcnR5VW5pY29kZVJhbmdlKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlVbmljb2RlUmFuZ2UpCisKKy8vIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbgorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgc2V0VmVydGljYWxBbGlnbiwg
dmVydGljYWxBbGlnbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVZlcnRpY2Fs
QWxpZ24sIHNldFZlcnRpY2FsQWxpZ24sIGluaXRpYWxWZXJ0aWNhbEFsaWduKQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5VmVydGljYWxBbGlnbikKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBFVmVydGljYWxBbGlnbiBh
bGlnbjsKKyAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsK
KyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUb3A6CisgICAgICAgICAgICAgICAgYWxpZ24gPSBU
T1A7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQm90
dG9tOgorICAgICAgICAgICAgICAgIGFsaWduID0gQk9UVE9NOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU1pZGRsZToKKyAgICAgICAgICAgICAgICBh
bGlnbiA9IE1JRERMRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVCYXNlbGluZToKKyAgICAgICAgICAgICAgICBhbGlnbiA9IEJBU0VMSU5FOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRleHRCb3R0b206
CisgICAgICAgICAgICAgICAgYWxpZ24gPSBURVhUX0JPVFRPTTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUZXh0VG9wOgorICAgICAgICAgICAgICAg
IGFsaWduID0gVEVYVF9UT1A7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlU3ViOgorICAgICAgICAgICAgICAgIGFsaWduID0gU1VCOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1cGVyOgorICAgICAgICAg
ICAgICAgIGFsaWduID0gU1VQRVI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlV2Via2l0QmFzZWxpbmVNaWRkbGU6CisgICAgICAgICAgICAgICAgYWxp
Z24gPSBCQVNFTElORV9NSURETEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKGFsaWduKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1p
dGl2ZVR5cGUoKTsKKyAgICAgICAgICAgIExlbmd0aCBsZW5ndGg7CisgICAgICAgICAgICBpZiAo
Q1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCisgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVu
Z3RoKGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxl
LCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSwgRml4ZWQpOworICAgICAgICAg
ICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRWZXJ0
aWNhbEFsaWduKExFTkdUSCk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VmVy
dGljYWxBbGlnbkxlbmd0aChsZW5ndGgpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQ
cm9wZXJ0eVZpc2liaWxpdHkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVZpc2li
aWxpdHksIHNldFZpc2liaWxpdHksIHZpc2liaWxpdHkpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlWaXNpYmlsaXR5LCBzZXRWaXNpYmlsaXR5LCBpbml0aWFsVmlzaWJpbGl0eSkK
K0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBzZXRWaXNpYmlsaXR5
KQorCisvLyBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdoaXRlU3BhY2UsIHNldFdoaXRlU3BhY2UsIHdoaXRlU3BhY2UpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBzZXRXaGl0ZVNwYWNlLCBpbml0aWFs
V2hpdGVTcGFjZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBz
ZXRXaGl0ZVNwYWNlKQorCisvLyBDU1NQcm9wZXJ0eVdpZG93cworREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2lkb3dzLCBzZXRXaWRvd3MsIHdpZG93cykKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdpZG93cywgc2V0V2lkb3dzLCBpbml0aWFsV2lkb3dzKQorREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5V2lkb3dzKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRXaWRvd3MocHJpbWl0aXZl
VmFsdWUtPmdldEludFZhbHVlKCkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXaWR0aAor
REVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2lkdGgsIHNldFdpZHRoLCB3aWR0aCkK
K0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdpZHRoLCBzZXRXaWR0aCwgaW5pdGlh
bFNpemUpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5V2lkdGgsIHNldFdpZHRoLCBm
YWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5V29yZEJyZWFr
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXb3JkQnJlYWssIHNldFdvcmRCcmVh
aywgd29yZEJyZWFrKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V29yZEJyZWFr
LCBzZXRXb3JkQnJlYWssIGluaXRpYWxXb3JkQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVFKENT
U1Byb3BlcnR5V29yZEJyZWFrLCBzZXRXb3JkQnJlYWspCisKKy8vIENTU1Byb3BlcnR5V29yZFNw
YWNpbmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nLCBzZXRX
b3JkU3BhY2luZywgd29yZFNwYWNpbmcpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXb3JkU3BhY2luZywgc2V0V29yZFNwYWNpbmcsIGluaXRpYWxMZXR0ZXJXb3JkU3BhY2luZykK
K0RFRklORV9TUEFDSU5HX1ZBTFVFKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIHNldFdvcmRTcGFj
aW5nKQorCisvLyBDU1NQcm9wZXJ0eVdvcmRXcmFwCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXb3JkV3JhcCwgc2V0V29yZFdyYXAsIHdvcmRXcmFwKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5V29yZFdyYXAsIHNldFdvcmRXcmFwLCBpbml0aWFsV29yZFdyYXAp
CitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V29yZFdyYXAsIHNldFdvcmRXcmFwKQor
CisvLyBDU1NQcm9wZXJ0eVpJbmRleAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlaSW5kZXgp
Cit7CisgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5oYXNBdXRvWkluZGV4KCkpCisg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvWkluZGV4KCk7CisgICAgZWxzZQor
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0WkluZGV4KGluc3RhbmNlLT5tX3BhcmVudFN0
eWxlLT56SW5kZXgoKSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVpJbmRleCkKK3sK
KyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b1pJbmRleCgpOworfQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5WkluZGV4KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldEhhc0F1dG9aSW5kZXgoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogU2hvdWxkIGNsYW1wIGFsbCBzb3J0cyBvZiBvdGhlciBpbnRlZ2VyIHByb3Bl
cnRpZXMgdG9vLgorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFpJbmRleChjbGFt
cFRvSW50ZWdlcihwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOworICAgICAgICB9
CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbgorREVGSU5FX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24pCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PmNsZWFyQW5pbWF0aW9ucygpOworfQorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb24pCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPmluaGVyaXRBbmltYXRpb25zKGlu
c3RhbmNlLT5tX3BhcmVudFN0eWxlLT5hbmltYXRpb25zKCkpOworfQorREVGSU5FX05VTExfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRGVsYXkKK0RFRklORV9BTklNQVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkRlbGF5LCBkZWxheSwgRGVsYXkpCitERUZJTkVfQU5JTUFUSU9OX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgZGVsYXksIERlbGF5KQorREVGSU5FX0FOSU1B
VElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LCBkZWxheSwgRGVsYXkp
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uCitERUZJTkVfQU5JTUFU
SU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sIGRpcmVjdGlv
biwgRGlyZWN0aW9uKQorREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRGlyZWN0aW9uLCBkaXJlY3Rpb24sIERpcmVjdGlvbikKK0RFRklORV9BTklNQVRJ
T05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sIGRpcmVjdGlvbiwg
RGlyZWN0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uCitERUZJ
TkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwg
ZHVyYXRpb24sIER1cmF0aW9uKQorREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKK0RFRklORV9BTklN
QVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwgZHVyYXRpb24s
IER1cmF0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlCitERUZJ
TkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZSwg
ZmlsbE1vZGUsIEZpbGxNb2RlKQorREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUsIGZpbGxNb2RlLCBGaWxsTW9kZSkKK0RFRklORV9BTklN
QVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZSwgZmlsbE1vZGUs
IEZpbGxNb2RlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
CitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVy
YXRpb25Db3VudCwgaXRlcmF0aW9uQ291bnQsIEl0ZXJhdGlvbkNvdW50KQorREVGSU5FX0FOSU1B
VElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIGl0
ZXJhdGlvbkNvdW50LCBJdGVyYXRpb25Db3VudCkKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwgaXRlcmF0aW9uQ291bnQsIEl0
ZXJhdGlvbkNvdW50KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUKK0RFRklO
RV9BTklNQVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsIG5hbWUs
IE5hbWUpCitERUZJTkVfQU5JTUFUSU9OX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25OYW1lLCBuYW1lLCBOYW1lKQorREVGSU5FX0FOSU1BVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbk5hbWUsIG5hbWUsIE5hbWUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uUGxheVN0YXRlCitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25QbGF5U3RhdGUsIHBsYXlTdGF0ZSwgUGxheVN0YXRlKQorREVGSU5FX0FOSU1B
VElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlLCBwbGF5U3Rh
dGUsIFBsYXlTdGF0ZSkKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25QbGF5U3RhdGUsIHBsYXlTdGF0ZSwgUGxheVN0YXRlKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uCitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24s
IFRpbWluZ0Z1bmN0aW9uKQorREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlv
bikKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1p
bmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdEFwcGVhcmFuY2UKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdEFwcGVhcmFuY2UsIHNldEFwcGVhcmFuY2UsIGFwcGVhcmFuY2UpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBzZXRBcHBlYXJhbmNlLCBpbml0
aWFsQXBwZWFyYW5jZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBcHBl
YXJhbmNlLCBzZXRBcHBlYXJhbmNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlz
aWJpbGl0eQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VW
aXNpYmlsaXR5LCBzZXRCYWNrZmFjZVZpc2liaWxpdHksIGJhY2tmYWNlVmlzaWJpbGl0eSkKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwg
c2V0QmFja2ZhY2VWaXNpYmlsaXR5LCBpbml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5KQorREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KQoreworICAgIGlmICh2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5KChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVZpc2libGUpID8gQmFja2ZhY2VWaXNpYmls
aXR5VmlzaWJsZSA6IEJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbik7CisgICAgfQorfQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJU
WShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRD
bGlwKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUKK0RFRklORV9I
QU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBv
c2l0ZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgY29tcG9zaXRlLCBDb21wb3NpdGUpCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRD
b21wb3NpdGUsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZENvbXBvc2l0ZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgY29tcG9zaXRlLCBDb21wb3NpdGUp
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbgorREVGSU5FX0VRVUlWQUxF
TlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRPcmlnaW4pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUK
K0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNp
emUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXIKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXIpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcgorREVGSU5F
X1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yKQor
REVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNv
bG9yKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXJDb2xvcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlCitERUZJTkVf
VU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUpCitE
RUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5
bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRl
clN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgKK0RFRklORV9V
TlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkKK0RF
RklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0
aCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
V2lkdGgpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlCitERUZJTkVfVU5SRUFD
SEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZSkKK0RFRklORV9VTlJF
QUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlKQorREVGSU5FX1VO
UkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlKQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yKQorREVGSU5FX1VOUkVBQ0hBQkxF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcikKK0RFRklORV9VTlJF
QUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yKQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlCitERUZJTkVfVU5SRUFDSEFCTEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlKQorREVGSU5FX1VOUkVBQ0hB
QkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSkKK0RFRklORV9V
TlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoCitERUZJTkVfVU5SRUFDSEFCTEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoKQorREVGSU5FX1VOUkVB
Q0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCkKK0RFRklO
RV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRDb2xvcgorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kQ29sb3IpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRDb2xvcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZQor
REVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHls
ZSkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5k
U3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aAorREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCkKK0RFRklO
RV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgpCitE
RUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCkK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdCwgc2V0Qm9yZGVyRml0LCBib3JkZXJGaXQpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQsIHNldEJvcmRlckZp
dCwgaW5pdGlhbEJvcmRlckZpdCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckZpdCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlQm9yZGVyKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJv
cmRlckZpdChCb3JkZXJGaXRCb3JkZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Qm9yZGVyRml0KEJvcmRlckZpdExpbmVzKTsKKyAgICB9Cit9CisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBzZXRI
b3Jpem9udGFsQm9yZGVyU3BhY2luZywgaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywg
c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsIGluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2lu
ZykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5n
KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgICAgICBmbG9hdCB6b29tRmFjdG9yID0gaW5zdGFuY2UtPm1fc3R5
bGUtPmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNl
LT5tX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7CisgICAgfQorfQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSwgc2V0Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlKQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIHNldEJv
cmRlckltYWdlLCBpbml0aWFsTmluZVBpZWNlSW1hZ2UpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJJbWFnZSkKK3sKKyAgICBOaW5lUGllY2VJbWFnZSBpbWFnZTsKKyAgICBp
bnN0YW5jZS0+bWFwTmluZVBpZWNlSW1hZ2UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSwg
dmFsdWUsIGltYWdlKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm9yZGVySW1hZ2UoaW1h
Z2UpOworfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cworREVGSU5FX0VRVUlW
QUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXMsIENTU1Byb3BlcnR5
Qm9yZGVyUmFkaXVzKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0CitERUZJTkVf
VU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0KQorREVGSU5F
X1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydCkKK0RFRklO
RV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0KQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcikKK0RFRklORV9VTlJFQUNIQUJM
RV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvcikKK0RFRklORV9VTlJF
QUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IpCisKKy8vIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlKQorREVGSU5FX1VOUkVB
Q0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgpCitERUZJTkVfVU5SRUFD
SEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoKQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZworREVGSU5FX0hBTkRMRV9JTkhFUklU
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nLCBzZXRWZXJ0aWNhbEJvcmRl
clNwYWNpbmcsIHZlcnRpY2FsQm9yZGVyU3BhY2luZykKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZywgc2V0VmVydGljYWxCb3JkZXJT
cGFjaW5nLCBpbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKQorREVGSU5FX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nKQoreworICAgIGlmICh2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBm
bG9hdCB6b29tRmFjdG9yID0gaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKKyAg
ICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQo
aW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIHpv
b21GYWN0b3IpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJT
cGFjaW5nKHNwYWNpbmcpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hBbGln
bgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24sIHNldEJv
eEFsaWduLCBib3hBbGlnbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dEJveEFsaWduLCBzZXRCb3hBbGlnbiwgaW5pdGlhbEJveEFsaWduKQorREVGSU5FX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0Qm94QWxpZ24pCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIEVCb3hBbGlnbm1l
bnQgYm94QWxpZ25tZW50ID0gKnByaW1pdGl2ZVZhbHVlOworICAgICAgICBpZiAoYm94QWxpZ25t
ZW50ICE9IEJKVVNUSUZZKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveEFs
aWduKGJveEFsaWdubWVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8vIENTU1By
b3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRCb3hEaXJlY3Rpb24sIHNldEJveERpcmVjdGlvbiwgYm94RGlyZWN0aW9uKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBzZXRCb3hE
aXJlY3Rpb24sIGluaXRpYWxCb3hEaXJlY3Rpb24pCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBzZXRCb3hEaXJlY3Rpb24pCisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0Qm94RmxleAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
Qm94RmxleCwgc2V0Qm94RmxleCwgYm94RmxleCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdEJveEZsZXgsIHNldEJveEZsZXgsIGluaXRpYWxCb3hGbGV4KQorREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94RmxleChwcmlt
aXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5
V2Via2l0Qm94RmxleEdyb3VwCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRCb3hGbGV4R3JvdXAsIHNldEJveEZsZXhHcm91cCwgYm94RmxleEdyb3VwKQorREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwLCBzZXRCb3hGbGV4R3Jv
dXAsIGluaXRpYWxCb3hGbGV4R3JvdXApCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRC
b3hGbGV4R3JvdXApCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJp
bWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveEZsZXhHcm91cCgodW5zaWduZWQgaW50KShwcmlt
aXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRCb3hMaW5lcworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
Qm94TGluZXMsIHNldEJveExpbmVzLCBib3hMaW5lcykKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzLCBzZXRCb3hMaW5lcywgaW5pdGlhbEJveExpbmVzKQor
REVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzLCBzZXRCb3hMaW5l
cykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXAKK0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCwgc2V0Qm94T3JkaW5hbEdy
b3VwLCBib3hPcmRpbmFsR3JvdXApCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRCb3hPcmRpbmFsR3JvdXAsIHNldEJveE9yZGluYWxHcm91cCwgaW5pdGlhbEJveE9yZGlu
YWxHcm91cCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCkK
K3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0Qm94T3JkaW5hbEdyb3VwKCh1bnNpZ25lZCBpbnQpKHByaW1pdGl2ZVZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJv
eE9yaWVudAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50
LCBzZXRCb3hPcmllbnQsIGJveE9yaWVudCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdEJveE9yaWVudCwgc2V0Qm94T3JpZW50LCBpbml0aWFsQm94T3JpZW50KQorREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudCwgc2V0Qm94T3JpZW50
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2sKK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdEJveFBhY2ssIHNldEJveFBhY2ssIGJveFBhY2spCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBzZXRCb3hQYWNrLCBpbml0aWFs
Qm94UGFjaykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2spCit7CisgICAg
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIEVCb3hBbGlnbm1lbnQgYm94UGFjayA9ICpwcmltaXRpdmVWYWx1ZTsKKyAg
ICAgICAgaWYgKGJveFBhY2sgIT0gQlNUUkVUQ0ggJiYgYm94UGFjayAhPSBCQkFTRUxJTkUpCisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94UGFjayhib3hQYWNrKTsKKyAgICB9
Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdAorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgc2V0Qm94UmVmbGVjdCwgYm94UmVmbGVj
dCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QsIHNl
dEJveFJlZmxlY3QsIGluaXRpYWxCb3hSZWZsZWN0KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0Qm94UmVmbGVjdCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94UmVmbGVjdChSZW5kZXJTdHlsZTo6
aW5pdGlhbEJveFJlZmxlY3QoKSk7CisgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNSZWZsZWN0VmFs
dWUoKSkgeworICAgICAgICBDU1NSZWZsZWN0VmFsdWUqIHJlZmxlY3RWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1JlZmxlY3RWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgUmVmUHRyPFN0eWxlUmVmbGVj
dGlvbj4gcmVmbGVjdGlvbiA9IFN0eWxlUmVmbGVjdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgIHJl
ZmxlY3Rpb24tPnNldERpcmVjdGlvbihyZWZsZWN0VmFsdWUtPmRpcmVjdGlvbigpKTsKKyAgICAg
ICAgaWYgKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIGludCB0eXBlID0g
cmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICAgICAgaWYg
KHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAg
ICAgIHJlZmxlY3Rpb24tPnNldE9mZnNldChMZW5ndGgocmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+
Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHJlZmxlY3Rpb24tPnNldE9mZnNldChMZW5ndGgocmVmbGVjdFZhbHVlLT5vZmZzZXQo
KS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5z
dGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpv
b20oKSksIEZpeGVkKSk7CisgICAgICAgIH0KKyAgICAgICAgTmluZVBpZWNlSW1hZ2UgbWFzazsK
KyAgICAgICAgaW5zdGFuY2UtPm1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5V2Via2l0Qm94
UmVmbGVjdCwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2spOworICAgICAgICByZWZsZWN0aW9u
LT5zZXRNYXNrKG1hc2spOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94UmVmbGVj
dChyZWZsZWN0aW9uLnJlbGVhc2UoKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eUJveFNo
YWRvdworREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3hTaGFkb3cpCit7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldEJveFNoYWRvdyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Ym94U2hh
ZG93KCkgPyBuZXcgU2hhZG93RGF0YSgqaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmJveFNoYWRv
dygpKSA6IDApOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3hTaGFkb3cpCit7Cisg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFNoYWRvdygwKTsKK30KK0RFRklORV9TSEFET1df
VkFMVUUoQ1NTUHJvcGVydHlCb3hTaGFkb3csIHNldEJveFNoYWRvdykKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRCb3hTaGFkb3cKK0RFRklORV9FUVVJVkFMRU5UX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRCb3hTaGFkb3csIENTU1Byb3BlcnR5Qm94U2hhZG93KQorREVGSU5FX0VRVUlWQUxFTlRf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgQ1NTUHJvcGVydHlCb3hTaGFkb3cp
CitERUZJTkVfU0hBRE9XX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBzZXRCb3hT
aGFkb3cpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uCitERUZJTkVfSEFO
RExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb24sIHNldENvbG9yU3Bh
Y2UsIGNvbG9yU3BhY2UpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29y
cmVjdGlvbikKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29sb3JTcGFjZShDb2xvclNw
YWNlRGV2aWNlUkdCKTsKK30KK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRD
b2xvckNvcnJlY3Rpb24sIHNldENvbG9yU3BhY2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtBZnRlcgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtBZnRlciwgc2V0Q29sdW1uQnJlYWtBZnRlciwgY29sdW1uQnJlYWtBZnRlcikKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIHNl
dENvbHVtbkJyZWFrQWZ0ZXIsIGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlciwgc2V0Q29sdW1uQnJlYWtBZnRlcikK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZQorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUsIHNldENvbHVtbkJyZWFr
QmVmb3JlLCBjb2x1bW5CcmVha0JlZm9yZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlLCBzZXRDb2x1bW5CcmVha0JlZm9yZSwgaW5pdGlh
bFBhZ2VCcmVhaykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5C
cmVha0JlZm9yZSwgc2V0Q29sdW1uQnJlYWtCZWZvcmUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQnJlYWtJbnNpZGUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrSW5zaWRlLCBzZXRDb2x1bW5CcmVha0luc2lkZSwgY29sdW1uQnJlYWtJbnNp
ZGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0lu
c2lkZSwgc2V0Q29sdW1uQnJlYWtJbnNpZGUsIGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSkKK3sKKyAgICBpZiAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgRVBhZ2VCcmVhayBwYiA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAgICAgaWYgKHBiICE9IFBC
QUxXQVlTKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbkJyZWFrSW5z
aWRlKHBiKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQKK0RF
RklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQpCit7CisgICAgaWYgKGlu
c3RhbmNlLT5tX3BhcmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uQ291bnQoKSkKKyAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5Db3VudCgpOworICAgIGVsc2UKKyAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbkNvdW50KGluc3RhbmNlLT5tX3BhcmVudFN0
eWxlLT5jb2x1bW5Db3VudCgpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQ291bnQpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5D
b3VudCgpOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQpCit7
CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZUF1dG8pCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVt
bkNvdW50KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRDb2x1bW5Db3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4ocHJpbWl0aXZlVmFsdWUt
PmdldERvdWJsZVZhbHVlKCkpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uR2FwCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcCkKK3sKKyAg
ICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmhhc05vcm1hbENvbHVtbkdhcCgpKQorICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCk7CisgICAgZWxz
ZQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29sdW1uR2FwKGluc3RhbmNlLT5tX3Bh
cmVudFN0eWxlLT5jb2x1bW5HYXAoKSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkdhcCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzTm9ybWFsQ29s
dW1uR2FwKCk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXApCit7
CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZU5vcm1hbCkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNOb3JtYWxD
b2x1bW5HYXAoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldENvbHVtbkdhcChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGluc3RhbmNl
LT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+
bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGUKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGUsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLCBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxl
V2lkdGgpCitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUpCit7Cisg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0Q29sdW1uUnVsZSgpOworfQorREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGVDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgc2V0Q29sdW1uUnVsZUNvbG9yLCBjb2x1bW5SdWxlQ29s
b3IsIGNvbG9yKQorREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZUNvbG9yLCBzZXRDb2x1bW5SdWxlQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVF
X0NPTE9SKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLCBzZXRDb2x1bW5SdWxlQ29s
b3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlCitERUZJTkVfSEFORExF
X0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsIHNldENvbHVtblJ1bGVT
dHlsZSwgY29sdW1uUnVsZVN0eWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZVN0eWxlLCBzZXRDb2x1bW5SdWxlU3R5bGUsIGluaXRpYWxCb3JkZXJT
dHlsZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5
bGUsIHNldENvbHVtblJ1bGVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxl
V2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVX
aWR0aCwgc2V0Q29sdW1uUnVsZVdpZHRoLCBjb2x1bW5SdWxlV2lkdGgpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIHNldENvbHVtblJ1bGVX
aWR0aCwgaW5pdGlhbEJvcmRlcldpZHRoKQorREVGSU5FX1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBzZXRDb2x1bW5SdWxlV2lkdGgpCisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uU3BhbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uU3Bhbiwgc2V0Q29sdW1uU3BhbiwgY29sdW1uU3BhbikKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4sIHNldENvbHVtblNwYW4sIGluaXRp
YWxDb2x1bW5TcGFuKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uU3BhbikK
K3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtblNwYW4ocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBbGwpOworICAgIH0KK30KKworLy8g
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5XaWR0aCkKK3sKKyAgICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmhh
c0F1dG9Db2x1bW5XaWR0aCgpKQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0
b0NvbHVtbldpZHRoKCk7CisgICAgZWxzZQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
Q29sdW1uV2lkdGgoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmNvbHVtbldpZHRoKCkpOworfQor
REVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCkKK3sKKyAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7Cit9CitERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbldpZHRoKHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNl
LT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkp
KTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucworREVGSU5FX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zKQoreworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJl
bnRTdHlsZS0+aGFzQXV0b0NvbHVtbldpZHRoKCkpCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsKKyAgICBlbHNlCisgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRDb2x1bW5XaWR0aChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uV2lk
dGgoKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbkNvdW50KGluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT5jb2x1bW5Db3VudCgpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1ucykKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0Nv
bHVtbldpZHRoKCk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbkNvdW50KFJlbmRl
clN0eWxlOjppbml0aWFsQ29sdW1uQ291bnQoKSk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbnMpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0
YQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEpCitE
RUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSkKK0RFRklO
RV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSkKKworLy8gQ1NTUHJv
cGVydHlXZWJraXRIaWdobGlnaHQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdEhpZ2hsaWdodCwgc2V0SGlnaGxpZ2h0LCBoaWdobGlnaHQpCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQsIHNldEhpZ2hsaWdodCwgaW5pdGlhbEhp
Z2hsaWdodCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCkKK3sKKyAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
Tm9uZSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIaWdobGlnaHQobnVsbEF0
b20pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGln
aGxpZ2h0KHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICB9Cit9CisKKy8v
IENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIsIHNldEh5cGhlbmF0aW9uU3Ry
aW5nLCBoeXBoZW5hdGlvblN0cmluZykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3Rlciwgc2V0SHlwaGVuYXRpb25TdHJpbmcsIGluaXRpYWxI
eXBoZW5hdGlvblN0cmluZykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0
ZUNoYXJhY3RlcikKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRIeXBoZW5hdGlvblN0cmluZyhudWxsQXRvbSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIeXBoZW5hdGlvblN0cmluZyhwcmltaXRpdmVWYWx1ZS0+
Z2V0U3RyaW5nVmFsdWUoKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bmF0ZUxvY2FsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0SHlwaGVu
YXRlTG9jYWxlLCBzZXRIeXBoZW5hdGlvbkxvY2FsZSwgaHlwaGVuYXRpb25Mb2NhbGUpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMb2NhbGUsIHNldEh5
cGhlbmF0aW9uTG9jYWxlLCBpbml0aWFsSHlwaGVuYXRpb25Mb2NhbGUpCitERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMb2NhbGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25Mb2NhbGUobnVsbEF0b20pOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25M
b2NhbGUocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOworICAgIH0KK30KKworLy8g
Q1NTUHJvcGVydHlXZWJraXRIeXBoZW5zCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRIeXBoZW5zLCBzZXRIeXBoZW5zLCBoeXBoZW5zKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0SHlwaGVucywgc2V0SHlwaGVucywgaW5pdGlhbEh5cGhlbnMp
CitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0SHlwaGVucywgc2V0SHlwaGVu
cykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWsKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgc2V0S0hUTUxMaW5lQnJlYWssIGtodG1sTGlu
ZUJyZWFrKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFr
LCBzZXRLSFRNTExpbmVCcmVhaywgaW5pdGlhbEtIVE1MTGluZUJyZWFrKQorREVGSU5FX0hBTkRM
RV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgc2V0S0hUTUxMaW5lQnJlYWspCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRMaW5lQ2xhbXAsIHNldExpbmVDbGFtcCwgbGluZUNsYW1wKQorREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wLCBzZXRMaW5lQ2xhbXAs
IGluaXRpYWxMaW5lQ2xhbXApCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xh
bXApCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1p
dGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGluZUNsYW1wKExpbmVD
bGFtcFZhbHVlKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUiksIExpbmVDbGFtcExpbmVDb3VudCkpOworICAgICAgICBlbHNlIGlmICh0eXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRMaW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUocHJpbWl0aXZlVmFsdWUt
PmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIExpbmVDbGFt
cFBlcmNlbnRhZ2UpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdp
ZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxX
aWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TG9naWNh
bFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TG9naWNh
bFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQKK0RFRklORV9VTlJF
QUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodCkKK0RFRklORV9V
TlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodCkKK0RFRklO
RV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQpCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZQorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSwgc2V0TWFyZ2luQWZ0ZXJD
b2xsYXBzZSwgbWFyZ2luQWZ0ZXJDb2xsYXBzZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIHNldE1hcmdpbkFmdGVyQ29sbGFwc2Us
IGluaXRpYWxNYXJnaW5BZnRlckNvbGxhcHNlKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UsIHNldE1hcmdpbkFmdGVyQ29sbGFwc2UpCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UKK0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBzZXRNYXJnaW5C
ZWZvcmVDb2xsYXBzZSwgbWFyZ2luQmVmb3JlQ29sbGFwc2UpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgc2V0TWFyZ2luQmVmb3Jl
Q29sbGFwc2UsIGluaXRpYWxNYXJnaW5CZWZvcmVDb2xsYXBzZSkKK0RFRklORV9IQU5ETEVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgc2V0TWFyZ2luQmVmb3Jl
Q29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2UKK0RF
RklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29s
bGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSkKKworLy8gQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZQorREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVSVFko
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5CZWZvcmVDb2xsYXBzZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZQor
REVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSkKK3sKKyAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UoaW5zdGFuY2UtPm1fcGFy
ZW50U3R5bGUtPm1hcmdpbkJlZm9yZUNvbGxhcHNlKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRNYXJnaW5BZnRlckNvbGxhcHNlKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJnaW5B
ZnRlckNvbGxhcHNlKCkpOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Db2xsYXBzZSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2luQmVmb3JlQ29s
bGFwc2UoTUNPTExBUFNFKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2luQWZ0ZXJD
b2xsYXBzZShNQ09MTEFQU0UpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5Db2xsYXBzZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcgorREVG
SU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcikKK0RF
RklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXIpCitE
RUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcikKKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmUKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmUpCitERUZJTkVfVU5SRUFDSEFCTEVf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmUpCisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luRW5kCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkVuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luRW5kKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luRW5kKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0CitERUZJTkVfVU5SRUFD
SEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0KQorREVGSU5FX1VOUkVB
Q0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydCkKK0RFRklORV9VTlJF
QUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0KQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWUKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlKQoreworICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKGluc3RhbmNlLT5tX3BhcmVu
dFN0eWxlLT5tYXJxdWVlRGlyZWN0aW9uKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRN
YXJxdWVlSW5jcmVtZW50KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJxdWVlSW5jcmVtZW50
KCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoaW5zdGFuY2UtPm1f
cGFyZW50U3R5bGUtPm1hcnF1ZWVTcGVlZCgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
TWFycXVlZUxvb3BDb3VudChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFycXVlZUxvb3BDb3Vu
dCgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZUJlaGF2aW9yKGluc3RhbmNl
LT5tX3BhcmVudFN0eWxlLT5tYXJxdWVlQmVoYXZpb3IoKSk7Cit9CitERUZJTkVfTlVMTF9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZURpcmVjdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZURpcmVjdGlvbiwgc2V0TWFycXVlZURpcmVjdGlvbiwgbWFycXVlZURpcmVjdGlvbikKK0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIHNldE1h
cnF1ZWVEaXJlY3Rpb24sIGluaXRpYWxNYXJxdWVlRGlyZWN0aW9uKQorREVGSU5FX0hBTkRMRV9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIHNldE1hcnF1ZWVEaXJlY3Rp
b24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudAorREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwgc2V0TWFycXVlZUlu
Y3JlbWVudCwgbWFycXVlZUluY3JlbWVudCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsIHNldE1hcnF1ZWVJbmNyZW1lbnQsIGluaXRpYWxN
YXJxdWVlSW5jcmVtZW50KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUlu
Y3JlbWVudCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7CisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAg
ICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoKDEsIEZpeGVkKSk7IC8vIDFweC4KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoKDYsIEZpeGVkKSk7IC8v
IDZweC4gVGhlIFdpbklFIGRlZmF1bHQuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUxhcmdlOgorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1
ZWVJbmNyZW1lbnQoTGVuZ3RoKDM2LCBGaXhlZCkpOyAvLyAzNnB4LgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJvb2wgb2sgPSB0
cnVlOworICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aCA9IGNvbnZlcnRUb0xlbmd0aChwcmltaXRp
dmVWYWx1ZSwgaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50
U3R5bGUsIDEsICZvayk7CisgICAgICAgICAgICBpZiAob2spCisgICAgICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQobGVuZ3RoKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbgorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sIHNldE1h
cnF1ZWVMb29wQ291bnQsIG1hcnF1ZWVMb29wQ291bnQpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwgc2V0TWFycXVlZUxvb3BDb3VudCwg
aW5pdGlhbE1hcnF1ZWVMb29wQ291bnQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlUmVwZXRpdGlvbikKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5maW5pdGUpCisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0TWFycXVlZUxvb3BDb3VudCgtMSk7IC8vIC0xIG1lYW5zIHJlcGVhdCBmb3Jl
dmVyLgorICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkp
OworICAgIH0KK30KKworCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZAorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkLCBzZXRNYXJxdWVl
U3BlZWQsIG1hcnF1ZWVTcGVlZCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVTcGVlZCwgc2V0TWFycXVlZVNwZWVkLCBpbml0aWFsTWFycXVlZVNwZWVkKQor
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkKQoreworICAgIGlmICh2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVTbG93OgorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVl
U3BlZWQoNTAwKTsgLy8gNTAwIG1zZWMuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRNYXJxdWVlU3BlZWQoODUpOyAvLyA4NW1zZWMuIFRoZSBXaW5JRSBkZWZhdWx0Lgor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUZhc3Q6Cisg
ICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZCgxMCk7IC8v
IDEwbXNlYy4gU3VwZXIgZmFzdC4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRNYXJxdWVlU3BlZWQoMTAwMCAqIHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsK
KyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX01TKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dE1hcnF1ZWVTcGVlZChwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7CisgICAgICAgIGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpIC8vIEZvciBzY3JvbGxhbW91bnQgc3VwcG9ydC4KKyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQocHJpbWl0aXZlVmFsdWUtPmdldElu
dFZhbHVlKCkpOworICAgIH0KK30KKy8vIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlCitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIHNldE1h
cnF1ZWVCZWhhdmlvciwgbWFycXVlZUJlaGF2aW9yKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBzZXRNYXJxdWVlQmVoYXZpb3IsIGluaXRpYWxN
YXJxdWVlQmVoYXZpb3IpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZVN0eWxlLCBzZXRNYXJxdWVlQmVoYXZpb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFz
aworREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrKQoreworICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5jbGVhck1hc2tMYXllcnMoKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0TWFzaykKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+aW5oZXJpdE1hc2tMYXll
cnMoKmluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXNrTGF5ZXJzKCkpOworfQorREVGSU5FX05V
TExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tBdHRhY2htZW50CitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tBdHRhY2htZW50LCBtYXNrLCBNYXNrLCBhdHRhY2htZW50LCBBdHRhY2htZW50
KQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNr
QXR0YWNobWVudCwgbWFzaywgTWFzaywgYXR0YWNobWVudCwgQXR0YWNobWVudCkKK0RFRklORV9I
QU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBt
YXNrLCBNYXNrLCBhdHRhY2htZW50LCBBdHRhY2htZW50KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tCb3hJbWFnZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFz
a0JveEltYWdlLCBzZXRNYXNrQm94SW1hZ2UsIG1hc2tCb3hJbWFnZSkKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc2V0TWFza0JveEltYWdlLCBp
bml0aWFsTmluZVBpZWNlSW1hZ2UpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNr
Qm94SW1hZ2UpCit7CisgICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2U7CisgICAgaW5zdGFuY2UtPm1h
cE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCB2YWx1ZSwgaW1h
Z2UpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXNrQm94SW1hZ2UoaW1hZ2UpOworfQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBtYXNrLCBNYXNrLCBjbGlwLCBDbGlw
KQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q2xpcCwgbWFzaywgTWFzaywgY2xpcCwgQ2xpcCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBtYXNrLCBNYXNrLCBjbGlwLCBDbGlwKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUKK0RFRklORV9IQU5ETEVfRklMTF9M
QVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgbWFzaywgTWFzaywg
Y29tcG9zaXRlLCBDb21wb3NpdGUpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29t
cG9zaXRlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
TWFza0NvbXBvc2l0ZSwgbWFzaywgTWFzaywgY29tcG9zaXRlLCBDb21wb3NpdGUpCisKKy8vIENT
U1Byb3BlcnR5V2Via2l0TWFza0ltYWdlCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgbWFzaywgTWFzaywgaW1hZ2UsIEltYWdlKQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1h
Z2UsIG1hc2ssIE1hc2ssIGltYWdlLCBJbWFnZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgbWFzaywgTWFzaywgaW1hZ2UsIEltYWdl
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4KK0RFRklORV9IQU5ETEVfRklMTF9M
QVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgbWFzaywgTWFzaywgb3Jp
Z2luLCBPcmlnaW4pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tPcmlnaW4sIG1hc2ssIE1hc2ssIG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hB
TkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgbWFzaywg
TWFzaywgb3JpZ2luLCBPcmlnaW4pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
CitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWSkKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb25ZKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWAorREVG
SU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRp
b25YLCBtYXNrLCBNYXNrLCB4UG9zaXRpb24sIFhQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklM
TF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgbWFzaywgTWFz
aywgeFBvc2l0aW9uLCBYUG9zaXRpb24pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBtYXNrLCBNYXNrLCB4UG9zaXRpb24sIFhQ
b3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIG1h
c2ssIE1hc2ssIHlQb3NpdGlvbiwgWVBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBtYXNrLCBNYXNrLCB5UG9z
aXRpb24sIFlQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIG1hc2ssIE1hc2ssIHlQb3NpdGlvbiwgWVBvc2l0aW9u
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQKK0RFRklORV9FWFBBTkRJTkdfSU5I
RVJJVF9UV08oQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZKQorREVGSU5FX0VYUEFORElO
R19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkpCitERUZJTkVfTlVM
TF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQpCisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1JlcGVhdFgKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0TWFza1JlcGVhdFgsIG1hc2ssIE1hc2ssIHJlcGVhdFgsIFJlcGVhdFgpCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRY
LCBtYXNrLCBNYXNrLCByZXBlYXRYLCBSZXBlYXRYKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIG1hc2ssIE1hc2ssIHJlcGVhdFgs
IFJlcGVhdFgpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkKK0RFRklORV9IQU5E
TEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFksIG1hc2ss
IE1hc2ssIHJlcGVhdFksIFJlcGVhdFkpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBtYXNrLCBNYXNrLCByZXBlYXRZLCBSZXBl
YXRZKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFksIG1hc2ssIE1hc2ssIHJlcGVhdFksIFJlcGVhdFkpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0TWFza1NpemUKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0TWFza1NpemUsIG1hc2ssIE1hc2ssIHNpemUsIFNpemUpCitERUZJTkVfSEFORExF
X0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNrLCBNYXNr
LCBzaXplLCBTaXplKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0TWFza1NpemUsIG1hc2ssIE1hc2ssIHNpemUsIFNpemUpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgc2V0
TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvciwgbWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVv
dGVDb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVh
cmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIHNldE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29s
b3IsIGluaXRpYWxNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKQorREVGSU5FX0hBTkRM
RV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3Is
IHNldE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0TWF4TG9naWNhbFdpZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdE1heExvZ2ljYWxXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
eExvZ2ljYWxIZWlnaHQKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0TWF4TG9naWNhbEhlaWdodCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0TWF4TG9naWNhbEhlaWdodCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWlu
TG9naWNhbFdpZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dE1pbkxvZ2ljYWxXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0TWluTG9naWNhbFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0TWluTG9naWNhbFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2lj
YWxIZWlnaHQKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWlu
TG9naWNhbEhlaWdodCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0TWluTG9naWNhbEhlaWdodCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUK
K0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBzZXROQlNQ
TW9kZSwgbmJzcE1vZGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRO
YnNwTW9kZSwgc2V0TkJTUE1vZGUsIGluaXRpYWxOQlNQTW9kZSkKK0RFRklORV9IQU5ETEVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgc2V0TkJTUE1vZGUpCisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0UGFkZGluZ0FmdGVyCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdC
ZWZvcmUKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0UGFkZGlu
Z0JlZm9yZSkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGFk
ZGluZ0JlZm9yZSkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBh
ZGRpbmdCZWZvcmUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0VuZAorREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kKQorREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kKQorREVGSU5FX1VO
UkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0VuZCkKKworLy8gQ1NTUHJv
cGVydHlXZWJraXRQYWRkaW5nU3RhcnQKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
LCBzZXRQZXJzcGVjdGl2ZSwgcGVyc3BlY3RpdmUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSwgc2V0UGVyc3BlY3RpdmUsIGluaXRpYWxQZXJzcGVj
dGl2ZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlKQoreworICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZU5vbmUpIHsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRQZXJzcGVjdGl2ZSgw
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZsb2F0IHBlcnNw
ZWN0aXZlVmFsdWU7CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3Ro
KHR5cGUpKQorICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0
PihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9z
dHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgIGluc3RhbmNlLT5tX3N0
eWxlLT5lZmZlY3RpdmVab29tKCkpKTsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAgICAgICAgLy8gRm9yIGJhY2t3YXJkIGNv
bXBhdGliaWxpdHksIHRyZWF0IHZhbHVlbGVzcyBudW1iZXJzIGFzIHB4LgorICAgICAgICAgICAg
cGVyc3BlY3RpdmVWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocHJpbWl0aXZlVmFs
dWUtPmdldERvdWJsZVZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5jb21wdXRl
TGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVt
ZW50U3R5bGUsICBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHBlcnNwZWN0aXZlVmFs
dWUgPj0gMC4wZikKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRQZXJzcGVjdGl2
ZShwZXJzcGVjdGl2ZVZhbHVlKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGVy
c3BlY3RpdmVPcmlnaW4KK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdp
blgsIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZKQorREVGSU5FX0VYUEFORElO
R19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luLCBDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZU9yaWdpblkpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWAorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YLCBzZXRQ
ZXJzcGVjdGl2ZU9yaWdpblgsIHBlcnNwZWN0aXZlT3JpZ2luWCkKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgc2V0UGVyc3BlY3RpdmVP
cmlnaW5YLCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKQorREVGSU5FX0xFTkdUSF9WQUxVRShD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgc2V0UGVyc3BlY3RpdmVPcmlnaW5Y
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0UGVyc3BlY3RpdmVPcmlnaW5ZCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblksIHNldFBlcnNwZWN0aXZlT3JpZ2luWSwgcGVyc3BlY3Rp
dmVPcmlnaW5ZKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZLCBzZXRQZXJzcGVjdGl2ZU9yaWdpblksIGluaXRpYWxQZXJzcGVjdGl2ZU9y
aWdpblkpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVP
cmlnaW5ZLCBzZXRQZXJzcGVjdGl2ZU9yaWdpblksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZworREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcsIHNldFZpc3VhbGx5T3JkZXJl
ZCwgdmlzdWFsbHlPcmRlcmVkKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0UnRsT3JkZXJpbmcsIHNldFZpc3VhbGx5T3JkZXJlZCwgaW5pdGlhbFZpc3VhbGx5T3JkZXJl
ZCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nKQoreworICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpCisgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0VmlzdWFsbHlPcmRlcmVkKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlVmlzdWFsKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dENvbWJpbmUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRDb21iaW5lLCBzZXRUZXh0Q29tYmluZSwgdGV4dENvbWJpbmUpCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSwgc2V0VGV4dENvbWJpbmUsIGluaXRp
YWxUZXh0Q29tYmluZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5l
KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0Q29tYmluZSgqcCk7CisgICAgfQor
ICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+aGFzVGV4dENvbWJpbmUoKSkKKyAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFVuaXF1ZSgpOyAvLyBUaGUgc3R5bGUgY291bGQgYmUgbW9kaWZp
ZWQgaW4gUmVuZGVyQ29tYmluZVRleHQgZGVwZW5kaW5nIG9uIHRleHQgbWV0cmljcy4KK30KKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdAorREVGSU5FX05VTExf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KQorREVGSU5F
X05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KQor
REVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMKK0RFRklORV9OVUxMX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMpCitERUZJTkVfTlVMTF9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXMpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
Q29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvciwgc2V0VGV4dEVtcGhhc2lzQ29sb3IsIHRleHRFbXBoYXNpc0NvbG9yLCBj
b2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdFRleHRF
bXBoYXNpc0NvbG9yLCBzZXRUZXh0RW1waGFzaXNDb2xvcikKK0RFRklORV9IQU5ETEVfVkFMVUVf
Q09MT1IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgc2V0VGV4dEVtcGhhc2lz
Q29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24KK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBz
ZXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgdGV4dEVtcGhhc2lzUG9zaXRpb24pCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgc2V0VGV4
dEVtcGhhc2lzUG9zaXRpb24sIGluaXRpYWxUZXh0RW1waGFzaXNQb3NpdGlvbikKK0RFRklORV9I
QU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgc2V0VGV4
dEVtcGhhc2lzUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5
bGUKKy8vIE5PVEU6IHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBicm9rZW4gc28gSSBoYXZlIGNvbnZl
cnRlZCB0aGlzIHRvIG1hdGNoIHRoZSBpbnRlbnQgb2YgdGhlIG9yaWdpbmFsIGNvZGUKK0RFRklO
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpCit7CisgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0ZpbGwoaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPnRleHRFbXBoYXNpc0ZpbGwoKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRF
bXBoYXNpc01hcmsoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPnRleHRFbXBoYXNpc01hcmsoKSk7
CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoaW5zdGFu
Y2UtPm1fcGFyZW50U3R5bGUtPnRleHRFbXBoYXNpc0N1c3RvbU1hcmsoKSk7Cit9CitERUZJTkVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKQoreworICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dEVtcGhhc2lzRmlsbCgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lz
TWFyayhSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc01hcmsoKSk7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoUmVuZGVyU3R5bGU6OmluaXRp
YWxUZXh0RW1waGFzaXNDdXN0b21NYXJrKCkpOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KSB7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbChU
ZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtDdXN0b20pOworICAgICAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsocHJpbWl0aXZlVmFs
dWUtPmdldFN0cmluZ1ZhbHVlKCkpOworICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlT3BlbikgeworICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dFRleHRFbXBoYXNpc0ZpbGwoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtBdXRvKTsKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51
bGxBdG9tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpOworICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc01hcmsoKnByaW1pdGl2ZVZhbHVl
KTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21N
YXJrKG51bGxBdG9tKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzVmFsdWVM
aXN0KCkpIHsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVMaXN0Kj4odmFsdWUpOworICAgICAgICBBU1NFUlQobGlzdC0+bGVuZ3RoKCkgPT0gMik7Cisg
ICAgICAgIGlmIChsaXN0LT5sZW5ndGgoKSAhPSAyKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICAgICAgICBBU1NF
UlQobGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsK
KyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4obGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7CisgICAgICAg
ICAgICBpZiAodmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgdmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVPcGVuKQorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc01hcmsoKnZhbHVl
KTsKKyAgICAgICAgfQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lz
Q3VzdG9tTWFyayhudWxsQXRvbSk7CisgICAgfQorfQorCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
VGV4dEZpbGxDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eVdl
YmtpdFRleHRGaWxsQ29sb3IsIHNldFRleHRGaWxsQ29sb3IsIHRleHRGaWxsQ29sb3IsIGNvbG9y
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxD
b2xvciwgc2V0VGV4dEZpbGxDb2xvcikKK0RFRklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCBzZXRUZXh0RmlsbENvbG9yKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTZWN1cml0eQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0VGV4dFNlY3VyaXR5LCBzZXRUZXh0U2VjdXJpdHksIHRleHRTZWN1cml0eSkKK0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwgc2V0VGV4dFNl
Y3VyaXR5LCBpbml0aWFsVGV4dFNlY3VyaXR5KQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwgc2V0VGV4dFNlY3VyaXR5KQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTdHJva2UKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U3Ryb2tlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJv
a2UpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UpCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRf
QkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBzZXRUZXh0U3Ryb2tlQ29s
b3IsIHRleHRTdHJva2VDb2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1Io
Q1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIHNldFRleHRTdHJva2VDb2xvcikKK0RF
RklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3Is
IHNldFRleHRTdHJva2VDb2xvcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lk
dGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0
aCwgc2V0VGV4dFN0cm9rZVdpZHRoLCB0ZXh0U3Ryb2tlV2lkdGgpCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIHNldFRleHRTdHJva2VXaWR0
aCwgaW5pdGlhbFRleHRTdHJva2VXaWR0aCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTdHJva2VXaWR0aCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgZmxvYXQgd2lkdGggPSAwOwor
ICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVUaGluOgorICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgorICAgICAgICBj
YXNlIENTU1ZhbHVlVGhpY2s6IHsKKyAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSAxLjAgLyA0
ODsKKyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZU1lZGl1bSkKKyAgICAgICAgICAgICAgICByZXN1bHQgKj0gMzsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVGhpY2spCisgICAgICAg
ICAgICAgICAgcmVzdWx0ICo9IDU7CisgICAgICAgICAgICB3aWR0aCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUocmVzdWx0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyktPmNvbXB1dGVM
ZW5ndGhGbG9hdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1l
bnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgd2lkdGgg
PSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGluc3RhbmNlLT5tX3N0eWxlLmdl
dCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZm
ZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0U3Ryb2tlV2lkdGgod2lkdGgpOworICAgIH0KK30KKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwgc2V0VHJhbnNmb3JtLCB0cmFuc2Zvcm0pCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIHNldFRyYW5zZm9ybSwg
aW5pdGlhbFRyYW5zZm9ybSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bSkKK3sKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7CisgICAgY3JlYXRlVHJh
bnNmb3JtT3BlcmF0aW9ucyh2YWx1ZSwgaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNl
LT5tX3Jvb3RFbGVtZW50U3R5bGUsIG9wZXJhdGlvbnMpOworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRUcmFuc2Zvcm0ob3BlcmF0aW9ucyk7Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtT3JpZ2luCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW4sIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybU9yaWdpblopCitERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVEhSRUUoQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW4sIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybU9yaWdpblopCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLCBzZXRUcmFu
c2Zvcm1PcmlnaW5YLCB0cmFuc2Zvcm1PcmlnaW5YKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwgc2V0VHJhbnNmb3JtT3JpZ2luWCwgaW5p
dGlhbFRyYW5zZm9ybU9yaWdpblgpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtT3JpZ2luWCwgc2V0VHJhbnNmb3JtT3JpZ2luWCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdp
blkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdp
blksIHNldFRyYW5zZm9ybU9yaWdpblksIHRyYW5zZm9ybU9yaWdpblkpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBzZXRUcmFuc2Zvcm1P
cmlnaW5ZLCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWSkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBzZXRUcmFuc2Zvcm1PcmlnaW5ZLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtT3JpZ2luWgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtT3JpZ2luWiwgc2V0VHJhbnNmb3JtT3JpZ2luWiwgdHJhbnNmb3JtT3JpZ2luWikKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblosIHNl
dFRyYW5zZm9ybU9yaWdpblosIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5aKQorREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWikKK3sKKyAgICBpZiAodmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAg
aWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5w
cmltaXRpdmVUeXBlKCkpKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRyYW5z
Zm9ybU9yaWdpblooc3RhdGljX2Nhc3Q8ZmxvYXQ+KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVu
Z3RoSW50Rm9yTGVuZ3RoKGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290
RWxlbWVudFN0eWxlKSkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1TdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
U3R5bGUsIHNldFRyYW5zZm9ybVN0eWxlM0QsIHRyYW5zZm9ybVN0eWxlM0QpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZSwgc2V0VHJhbnNmb3Jt
U3R5bGUzRCwgaW5pdGlhbFRyYW5zZm9ybVN0eWxlM0QpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1TdHlsZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldFRyYW5zZm9ybVN0eWxlM0QoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlUHJlc2VydmUzZCkgPyBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRCA6IFRyYW5z
Zm9ybVN0eWxlM0RGbGF0KTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvbgorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKQoreworICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5pbmhlcml0VHJhbnNpdGlvbnMoaW5zdGFuY2UtPm1fcGFyZW50
U3R5bGUtPnRyYW5zaXRpb25zKCkpOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2l0aW9uKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhclRyYW5zaXRpb25z
KCk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24pCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5CitERUZJTkVfVFJBTlNJVElPTl9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5LCBkZWxheSwgRGVsYXkpCitE
RUZJTkVfVFJBTlNJVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5
LCBkZWxheSwgRGVsYXkpCitERUZJTkVfVFJBTlNJVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25EZWxheSwgZGVsYXksIERlbGF5KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25EdXJhdGlvbgorREVGSU5FX1RSQU5TSVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgZHVyYXRpb24sIER1cmF0aW9uKQorREVGSU5FX1RSQU5T
SVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgZHVyYXRp
b24sIER1cmF0aW9uKQorREVGSU5FX1RSQU5TSVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkKK0RFRklORV9UUkFOU0lUSU9OX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksIHByb3BlcnR5LCBQcm9wZXJ0eSkKK0RFRklO
RV9UUkFOU0lUSU9OX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHks
IHByb3BlcnR5LCBQcm9wZXJ0eSkKK0RFRklORV9UUkFOU0lUSU9OX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBwcm9wZXJ0eSwgUHJvcGVydHkpCisKKy8vIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uCitERUZJTkVfVFJBTlNJVElPTl9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLCB0aW1pbmdG
dW5jdGlvbiwgVGltaW5nRnVuY3Rpb24pCitERUZJTkVfVFJBTlNJVElPTl9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLCB0aW1pbmdGdW5jdGlvbiwgVGlt
aW5nRnVuY3Rpb24pCitERUZJTkVfVFJBTlNJVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uKQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRVc2VyRHJhZywgc2V0VXNlckRyYWcsIHVzZXJEcmFnKQorREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIHNldFVzZXJEcmFnLCBpbml0
aWFsVXNlckRyYWcpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VXNlckRy
YWcsIHNldFVzZXJEcmFnKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnkKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIHNldFVzZXJNb2Rp
ZnksIHVzZXJNb2RpZnkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRV
c2VyTW9kaWZ5LCBzZXRVc2VyTW9kaWZ5LCBpbml0aWFsVXNlck1vZGlmeSkKK0RFRklORV9IQU5E
TEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBzZXRVc2VyTW9kaWZ5KQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIHNldFVzZXJTZWxlY3QsIHVzZXJTZWxlY3QpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBzZXRVc2VyU2Vs
ZWN0LCBpbml0aWFsVXNlclNlbGVjdCkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRVc2VyU2VsZWN0LCBzZXRVc2VyU2VsZWN0KQorCisvLyBDU1NQcm9wZXJ0eUNsaXBQYXRo
CitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUNsaXApCit7CisgICAgTGVuZ3RoIHRvcDsKKyAg
ICBMZW5ndGggcmlnaHQ7CisgICAgTGVuZ3RoIGJvdHRvbTsKKyAgICBMZW5ndGggbGVmdDsKKyAg
ICBib29sIGhhc0NsaXAgPSB0cnVlOworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+
aGFzQ2xpcCgpKSB7CisgICAgICAgIHRvcCA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jbGlw
VG9wKCk7CisgICAgICAgIHJpZ2h0ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmNsaXBSaWdo
dCgpOworICAgICAgICBib3R0b20gPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y2xpcEJvdHRv
bSgpOworICAgICAgICBsZWZ0ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmNsaXBMZWZ0KCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaGFzQ2xpcCA9IGZhbHNlOworICAgICAgICB0b3AgPSBy
aWdodCA9IGJvdHRvbSA9IGxlZnQgPSBMZW5ndGgoKTsKKyAgICB9CisgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldENsaXAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0SGFzQ2xpcChoYXNDbGlwKTsKK30KKworREVGSU5FX0lOSVRJQUwoQ1NTUHJv
cGVydHlDbGlwKQoreworICAgIExlbmd0aCBsZW5ndGggPSBMZW5ndGgoKTsKKyAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0Q2xpcChsZW5ndGgsIGxlbmd0aCwgbGVuZ3RoLCBsZW5ndGgpOworICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNDbGlwKGZhbHNlKTsKK30KKworREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5Q2xpcCkKK3sKKyAgICBMZW5ndGggdG9wOworICAgIExlbmd0aCByaWdodDsK
KyAgICBMZW5ndGggYm90dG9tOworICAgIExlbmd0aCBsZWZ0OworICAgIGJvb2wgaGFzQ2xpcCA9
IHRydWU7CisgICAgZmxvYXQgem9vbUZhY3RvciA9IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3Rp
dmVab29tKCk7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVDVCkgeworICAgICAgICAgICAgUmVj
dCogcmVjdCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRSZWN0VmFsdWUoKTsKKyAgICAgICAgICAgIGlm
ICghcmVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB0b3AgPSBDU1NT
dHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9MZW5ndGgocmVjdC0+dG9wKCksIGluc3RhbmNlLT5tX3N0
eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAg
ICAgICAgICAgIHJpZ2h0ID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKHJlY3Qt
PnJpZ2h0KCksIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVu
dFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGJvdHRvbSA9IENTU1N0eWxlU2VsZWN0
b3I6OmNvbnZlcnRUb0xlbmd0aChyZWN0LT5ib3R0b20oKSwgaW5zdGFuY2UtPm1fc3R5bGUuZ2V0
KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAg
ICAgbGVmdCA9IENTU1N0eWxlU2VsZWN0b3I6OmNvbnZlcnRUb0xlbmd0aChyZWN0LT5sZWZ0KCks
IGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSAhPSBDU1NWYWx1ZUF1dG8pIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q2xpcCh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQp
OworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQ2xpcChoYXNDbGlwKTsKKyAgICB9
Cit9CisKKy8vIENTU1Byb3BlcnR5Q2xpcFJ1bGUKKy8vIENTU1Byb3BlcnR5TWFzaworLy8gQ1NT
UHJvcGVydHlFbmFibGVCYWNrZ3JvdW5kCisvLyBDU1NQcm9wZXJ0eUZpbHRlcgorLy8gQ1NTUHJv
cGVydHlGbG9vZENvbG9yCisvLyBDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eQorLy8gQ1NTUHJvcGVy
dHlMaWdodGluZ0NvbG9yCisvLyBDU1NQcm9wZXJ0eVN0b3BDb2xvcgorLy8gQ1NTUHJvcGVydHlT
dG9wT3BhY2l0eQorLy8gQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb24KKy8vIENTU1Byb3Bl
cnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycworLy8gQ1NTUHJvcGVydHlDb2xvclByb2ZpbGUK
Ky8vIENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmcKKy8vIENTU1Byb3BlcnR5RmlsbAorLy8gQ1NT
UHJvcGVydHlGaWxsT3BhY2l0eQorLy8gQ1NTUHJvcGVydHlGaWxsUnVsZQorLy8gQ1NTUHJvcGVy
dHlJbWFnZVJlbmRlcmluZworLy8gQ1NTUHJvcGVydHlNYXJrZXIKKy8vIENTU1Byb3BlcnR5TWFy
a2VyRW5kCisvLyBDU1NQcm9wZXJ0eU1hcmtlck1pZAorLy8gQ1NTUHJvcGVydHlNYXJrZXJTdGFy
dAorLy8gQ1NTUHJvcGVydHlTaGFwZVJlbmRlcmluZworLy8gQ1NTUHJvcGVydHlTdHJva2UKKy8v
IENTU1Byb3BlcnR5U3Ryb2tlRGFzaGFycmF5CisvLyBDU1NQcm9wZXJ0eVN0cm9rZURhc2hvZmZz
ZXQKKy8vIENTU1Byb3BlcnR5U3Ryb2tlTGluZWNhcAorLy8gQ1NTUHJvcGVydHlTdHJva2VMaW5l
am9pbgorLy8gQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0CisvLyBDU1NQcm9wZXJ0eVN0cm9r
ZU9wYWNpdHkKKy8vIENTU1Byb3BlcnR5U3Ryb2tlV2lkdGgKKy8vIENTU1Byb3BlcnR5QWxpZ25t
ZW50QmFzZWxpbmUKKy8vIENTU1Byb3BlcnR5QmFzZWxpbmVTaGlmdAorLy8gQ1NTUHJvcGVydHlE
b21pbmFudEJhc2VsaW5lCisvLyBDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFs
CisvLyBDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25WZXJ0aWNhbAorLy8gQ1NTUHJvcGVydHlL
ZXJuaW5nCisvLyBDU1NQcm9wZXJ0eVRleHRBbmNob3IKKy8vIENTU1Byb3BlcnR5VmVjdG9yRWZm
ZWN0CisvLyBDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1No
YWRvdworCisvLyBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbgorI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dERhc2hib2FyZFJlZ2lvbiwgc2V0RGFzaGJvYXJkUmVnaW9ucywgZGFzaGJvYXJkUmVnaW9ucykK
K0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbiwg
c2V0RGFzaGJvYXJkUmVnaW9ucywgaW5pdGlhbERhc2hib2FyZFJlZ2lvbnMpCitERUZJTkVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24pCit7CisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb25zKFJlbmRlclN0eWxl
Ojpub25lRGFzaGJvYXJkUmVnaW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIERhc2hib2FyZFJlZ2lvbiogcmVnaW9uID0gcHJpbWl0aXZlVmFsdWUtPmdl
dERhc2hib2FyZFJlZ2lvblZhbHVlKCk7CisgICAgICAgIGlmICghcmVnaW9uKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIERhc2hib2FyZFJlZ2lvbiogZmlyc3QgPSByZWdpb247Cisg
ICAgICAgIHdoaWxlIChyZWdpb24pIHsKKyAgICAgICAgICAgIExlbmd0aCB0b3AgPSBjb252ZXJ0
VG9MZW5ndGgocmVnaW9uLT50b3AoKSwgaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNl
LT5tX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29udmVy
dFRvTGVuZ3RoKHJlZ2lvbi0+cmlnaHQoKSwgaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3Rh
bmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgTGVuZ3RoIGJvdHRvbSA9IGNv
bnZlcnRUb0xlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwg
aW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSk7CisgICAgICAgICAgICBMZW5ndGggbGVmdCA9
IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmxlZnQoKSwgaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCks
IGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgaWYgKHJlZ2lvbi0+
bV9pc0NpcmNsZSkKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RGFzaGJv
YXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwg
dG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUp
OworICAgICAgICAgICAgZWxzZSBpZiAocmVnaW9uLT5tX2lzUmVjdGFuZ2xlKQorICAgICAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb24oU3R5bGVEYXNoYm9h
cmRSZWdpb246OlJlY3RhbmdsZSwgcmVnaW9uLT5tX2xhYmVsLCB0b3AsIHJpZ2h0LCBib3R0b20s
IGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1ZSk7CisgICAgICAgICAgICByZWdp
b24gPSByZWdpb24tPm1fbmV4dC5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICBpbnN0YW5jZS0+
bV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXRIYXNEYXNoYm9hcmRSZWdpb25zKHRydWUpOworICAg
IH0KK30KKyNlbHNlCisvL0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXREYXNo
Ym9hcmRSZWdpb24pCisvL0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXREYXNo
Ym9hcmRSZWdpb24pCisvL0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0RGFzaGJv
YXJkUmVnaW9uKQorI2VuZGlmCisKKyNpZiBFTkFCTEUoV0NTUykKKy8vIENTU1Byb3BlcnR5V2Fw
TWFycXVlZUxvb3AKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2FwTWFy
cXVlZUxvb3AsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pCisKKy8vIENTU1By
b3BlcnR5V2FwTWFycXVlZVNwZWVkCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9w
ZXJ0eVdhcE1hcnF1ZWVTcGVlZCwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQpCisKKy8v
IENTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShD
U1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUp
CisKKy8vIENTU1Byb3BlcnR5V2FwTWFycXVlZURpcgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5V2FwTWFycXVlZURpciwgc2V0TWFycXVlZURpcmVjdGlvbiwgbWFycXVlZURpcmVj
dGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIsIHNl
dE1hcnF1ZWVEaXJlY3Rpb24sIGluaXRpYWxNYXJxdWVlRGlyZWN0aW9uKQorREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5V2FwTWFycXVlZURpcikKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTHRyOgorICAgICAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1SSUdIVCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUnRsOgor
ICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1M
RUZUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24oKnByaW1p
dGl2ZVZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdAorREVGSU5FX05V
TExfSU5IRVJJVChDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0KQorREVGSU5FX05VTExfSU5JVElB
TChDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Fw
SW5wdXRGb3JtYXQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChpbnN0YW5jZS0+bV9lbGVtZW50
LT5oYXNUYWdOYW1lKFdlYkNvcmU6OmlucHV0VGFnKSkgeworICAgICAgICAgICAgU3RyaW5nIG1h
c2sgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihpbnN0YW5jZS0+bV9lbGVtZW50KS0+c2V0V2FwSW5w
dXRGb3JtYXQobWFzayk7CisgICAgICAgIH0KKyAgICB9Cit9CisvLyBDU1NQcm9wZXJ0eVdhcElu
cHV0UmVxdWlyZWQKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVp
cmVkKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQpCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVpcmVkKQoreworICAgIGlmICh2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
ICAgICBpZiAoaW5zdGFuY2UtPm1fZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkgewor
ICAgICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihpbnN0YW5jZS0+bV9lbGVtZW50KTsKKyAgICAgICAg
ICAgIGJvb2wgcmVxdWlyZWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSA9PSAi
dHJ1ZSI7CisgICAgICAgICAgICBlbGVtZW50LT5zZXRSZXF1aXJlZChyZXF1aXJlZCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisjZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNzc0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSwyMzMgKzEyNSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotI2Rl
ZmluZSBIQU5ETEVfSU5IRVJJVChwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0KSB7IFwKLSAg
ICBtX3N0eWxlLT5zZXQjI1Byb3AobV9wYXJlbnRTdHlsZS0+cHJvcCgpKTsgXAotICAgIHJldHVy
bjsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3Ap
IFwKLUhBTkRMRV9JTkhFUklUKHByb3AsIFByb3ApIFwKLWlmIChpc0luaXRpYWwpIHsgXAotICAg
IG1fc3R5bGUtPnNldCMjUHJvcChSZW5kZXJTdHlsZTo6aW5pdGlhbCMjUHJvcCgpKTsgXAotICAg
IHJldHVybjsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhf
VkFMVUUocHJvcCwgUHJvcCwgVmFsdWUpIFwKLUhBTkRMRV9JTkhFUklUKHByb3AsIFByb3ApIFwK
LWlmIChpc0luaXRpYWwpIHsgXAotICAgIG1fc3R5bGUtPnNldCMjUHJvcChSZW5kZXJTdHlsZTo6
aW5pdGlhbCMjVmFsdWUoKSk7XAotICAgIHJldHVybjtcCi19Ci0KLSNkZWZpbmUgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShwcm9wLCBQcm9wKSBcCi1IQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChwcm9wLCBQcm9wKSBcCi1pZiAocHJpbWl0aXZlVmFsdWUpIFwKLSAg
ICBtX3N0eWxlLT5zZXQjI1Byb3AoKnByaW1pdGl2ZVZhbHVlKTsKLQotI2RlZmluZSBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUocHJvcCwgUHJvcCwg
VmFsdWUpIFwKLUhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUocHJvcCwgUHJv
cCwgVmFsdWUpIFwKLWlmIChwcmltaXRpdmVWYWx1ZSkgXAotICAgIG1fc3R5bGUtPnNldCMjUHJv
cCgqcHJpbWl0aXZlVmFsdWUpOwotCi0jZGVmaW5lIEhBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVRf
QU5EX0lOSVRJQUwobGF5ZXJUeXBlLCBMYXllclR5cGUsIHByb3AsIFByb3ApIFwKLWlmIChpc0lu
aGVyaXQpIHsgXAotICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gbV9zdHlsZS0+YWNjZXNzIyNM
YXllclR5cGUjI0xheWVycygpOyBcCi0gICAgRmlsbExheWVyKiBwcmV2Q2hpbGQgPSAwOyBcCi0g
ICAgY29uc3QgRmlsbExheWVyKiBjdXJyUGFyZW50ID0gbV9wYXJlbnRTdHlsZS0+bGF5ZXJUeXBl
IyNMYXllcnMoKTsgXAotICAgIHdoaWxlIChjdXJyUGFyZW50ICYmIGN1cnJQYXJlbnQtPmlzIyNQ
cm9wIyNTZXQoKSkgeyBcCi0gICAgICAgIGlmICghY3VyckNoaWxkKSB7IFwKLSAgICAgICAgICAg
IC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBsYXllci4qLyBcCi0gICAgICAgICAgICBjdXJyQ2hpbGQg
PSBuZXcgRmlsbExheWVyKExheWVyVHlwZSMjRmlsbExheWVyKTsgXAotICAgICAgICAgICAgcHJl
dkNoaWxkLT5zZXROZXh0KGN1cnJDaGlsZCk7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIGN1cnJD
aGlsZC0+c2V0IyNQcm9wKGN1cnJQYXJlbnQtPnByb3AoKSk7IFwKLSAgICAgICAgcHJldkNoaWxk
ID0gY3VyckNoaWxkOyBcCi0gICAgICAgIGN1cnJDaGlsZCA9IHByZXZDaGlsZC0+bmV4dCgpOyBc
Ci0gICAgICAgIGN1cnJQYXJlbnQgPSBjdXJyUGFyZW50LT5uZXh0KCk7IFwKLSAgICB9IFwKLSAg
ICBcCi0gICAgd2hpbGUgKGN1cnJDaGlsZCkgeyBcCi0gICAgICAgIC8qIFJlc2V0IGFueSByZW1h
aW5pbmcgbGF5ZXJzIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICAgICAg
Y3VyckNoaWxkLT5jbGVhciMjUHJvcCgpOyBcCi0gICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGls
ZC0+bmV4dCgpOyBcCi0gICAgfSBcCi19IGVsc2UgaWYgKGlzSW5pdGlhbCkgeyBcCi0gICAgRmls
bExheWVyKiBjdXJyQ2hpbGQgPSBtX3N0eWxlLT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7
IFwKLSAgICBjdXJyQ2hpbGQtPnNldCMjUHJvcChGaWxsTGF5ZXI6OmluaXRpYWxGaWxsIyNQcm9w
KExheWVyVHlwZSMjRmlsbExheWVyKSk7IFwKLSAgICBmb3IgKGN1cnJDaGlsZCA9IGN1cnJDaGls
ZC0+bmV4dCgpOyBjdXJyQ2hpbGQ7IGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpKSBcCi0g
ICAgICAgIGN1cnJDaGlsZC0+Y2xlYXIjI1Byb3AoKTsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9G
SUxMX0xBWUVSX1ZBTFVFKGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9wLCB2YWx1ZSkg
eyBcCi1IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUX0FORF9JTklUSUFMKGxheWVyVHlwZSwgTGF5
ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCi1pZiAoaXNJbmhlcml0IHx8IGlzSW5pdGlhbCkgXAotICAg
IHJldHVybjsgXAotRmlsbExheWVyKiBjdXJyQ2hpbGQgPSBtX3N0eWxlLT5hY2Nlc3MjI0xheWVy
VHlwZSMjTGF5ZXJzKCk7IFwKLUZpbGxMYXllciogcHJldkNoaWxkID0gMDsgXAotaWYgKHZhbHVl
LT5pc1ZhbHVlTGlzdCgpKSB7IFwKLSAgICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBp
bnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVkLiAqLyBcCi0gICAgQ1NT
VmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7
IFwKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhbHVlTGlzdC0+bGVuZ3RoKCk7
IGkrKykgeyBcCi0gICAgICAgIGlmICghY3VyckNoaWxkKSB7IFwKLSAgICAgICAgICAgIC8qIE5l
ZWQgdG8gbWFrZSBhIG5ldyBsYXllciB0byBob2xkIHRoaXMgdmFsdWUgKi8gXAotICAgICAgICAg
ICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihMYXllclR5cGUjI0ZpbGxMYXllcik7IFwKLSAg
ICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOyBcCi0gICAgICAgIH0gXAot
ICAgICAgICBtYXBGaWxsIyNQcm9wKHByb3BlcnR5LCBjdXJyQ2hpbGQsIHZhbHVlTGlzdC0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKLSAgICAgICAgcHJldkNoaWxkID0gY3VyckNoaWxk
OyBcCi0gICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dCgpOyBcCi0gICAgfSBcCi19
IGVsc2UgeyBcCi0gICAgbWFwRmlsbCMjUHJvcChwcm9wZXJ0eSwgY3VyckNoaWxkLCB2YWx1ZSk7
IFwKLSAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAotfSBcCi13aGlsZSAoY3Vy
ckNoaWxkKSB7IFwKLSAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIGxheWVycyB0byBub3QgaGF2
ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCi0gICAgY3VyckNoaWxkLT5jbGVhciMjUHJvcCgpOyBc
Ci0gICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKLX0gfQotCi0jZGVmaW5lIEhB
TkRMRV9CQUNLR1JPVU5EX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotSEFORExF
X0ZJTExfTEFZRVJfSU5IRVJJVF9BTkRfSU5JVElBTChiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBw
cm9wLCBQcm9wKQotCi0jZGVmaW5lIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKHByb3AsIFByb3As
IHZhbHVlKSBcCi1IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCBwcm9wLCBQcm9wLCB2YWx1ZSkKLQotI2RlZmluZSBIQU5ETEVfTUFTS19JTkhFUklUX0FORF9J
TklUSUFMKHByb3AsIFByb3ApIFwKLUhBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVRfQU5EX0lOSVRJ
QUwobWFzaywgTWFzaywgcHJvcCwgUHJvcCkKLQotI2RlZmluZSBIQU5ETEVfTUFTS19WQUxVRShw
cm9wLCBQcm9wLCB2YWx1ZSkgXAotSEFORExFX0ZJTExfTEFZRVJfVkFMVUUobWFzaywgTWFzaywg
cHJvcCwgUHJvcCwgdmFsdWUpCi0KLSNkZWZpbmUgSEFORExFX0FOSU1BVElPTl9JTkhFUklUX0FO
RF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQpIHsgXAotICAgIEFuaW1hdGlv
bkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKLSAgICBjb25zdCBB
bmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gbV9wYXJlbnRTdHlsZS0+YW5pbWF0aW9ucygpOyBc
Ci0gICAgc2l6ZV90IGkgPSAwLCBwYXJlbnRTaXplID0gcGFyZW50TGlzdCA/IHBhcmVudExpc3Qt
PnNpemUoKSA6IDA7IFwKLSAgICBmb3IgKCA7IGkgPCBwYXJlbnRTaXplICYmIHBhcmVudExpc3Qt
PmFuaW1hdGlvbihpKS0+aXMjI1Byb3AjI1NldCgpOyArK2kpIHsgXAotICAgICAgICBpZiAobGlz
dC0+c2l6ZSgpIDw9IGkpIFwKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNy
ZWF0ZSgpKTsgXAotICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPnNldCMjUHJvcChwYXJlbnRM
aXN0LT5hbmltYXRpb24oaSktPnByb3AoKSk7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgLyogUmVz
ZXQgYW55IHJlbWFpbmluZyBhbmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQu
ICovIFwKLSAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0
LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwKLX0gZWxzZSBpZiAoaXNJbml0aWFsKSB7
IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygp
OyBcCi0gICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkgXAotICAgICAgICBsaXN0LT5hcHBlbmQoQW5p
bWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICBsaXN0LT5hbmltYXRpb24oMCktPnNldCMjUHJvcChB
bmltYXRpb246OmluaXRpYWxBbmltYXRpb24jI1Byb3AoKSk7IFwKLSAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytpKSBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbigw
KS0+Y2xlYXIjI1Byb3AoKTsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9BTklNQVRJT05fVkFMVUUo
cHJvcCwgUHJvcCwgdmFsdWUpIHsgXAotSEFORExFX0FOSU1BVElPTl9JTkhFUklUX0FORF9JTklU
SUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQgfHwgaXNJbml0aWFsKSBcCi0gICAgcmV0
dXJuOyBcCi1BbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzQW5pbWF0aW9ucygp
OyBcCi1zaXplX3QgY2hpbGRJbmRleCA9IDA7IFwKLWlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkg
eyBcCi0gICAgLyogV2FsayBlYWNoIHZhbHVlIGFuZCBwdXQgaXQgaW50byBhbiBhbmltYXRpb24s
IGNyZWF0aW5nIG5ldyBhbmltYXRpb25zIGFzIG5lZWRlZC4gKi8gXAotICAgIENTU1ZhbHVlTGlz
dCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOyBcCi0gICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsg
XAotICAgICAgICBpZiAoY2hpbGRJbmRleCA8PSBsaXN0LT5zaXplKCkpIFwKLSAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgICAgICBtYXBBbmltYXRp
b24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZUxpc3QtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soaSkpOyBcCi0gICAgICAgICsrY2hpbGRJbmRleDsgXAotICAgIH0gXAot
fSBlbHNlIHsgXAotICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBw
ZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3Qt
PmFuaW1hdGlvbihjaGlsZEluZGV4KSwgdmFsdWUpOyBcCi0gICAgY2hpbGRJbmRleCA9IDE7IFwK
LX0gXAotZm9yICggOyBjaGlsZEluZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsg
XAotICAgIC8qIFJlc2V0IGFsbCByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUg
cHJvcGVydHkgc2V0LiAqLyBcCi0gICAgbGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLT5jbGVh
ciMjUHJvcCgpOyBcCi19IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfVFJBTlNJVElPTl9JTkhFUklU
X0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQpIHsgXAotICAgIEFuaW1h
dGlvbkxpc3QqIGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCi0gICAgY29u
c3QgQW5pbWF0aW9uTGlzdCogcGFyZW50TGlzdCA9IG1fcGFyZW50U3R5bGUtPnRyYW5zaXRpb25z
KCk7IFwKLSAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50
TGlzdC0+c2l6ZSgpIDogMDsgXAotICAgIGZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYgcGFyZW50
TGlzdC0+YW5pbWF0aW9uKGkpLT5pcyMjUHJvcCMjU2V0KCk7ICsraSkgeyBcCi0gICAgICAgIGlm
IChsaXN0LT5zaXplKCkgPD0gaSkgXAotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlv
bjo6Y3JlYXRlKCkpOyBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+c2V0IyNQcm9wKHBh
cmVudExpc3QtPmFuaW1hdGlvbihpKS0+cHJvcCgpKTsgXAotICAgIH0gXAotICAgIFwKLSAgICAv
KiBSZXNldCBhbnkgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0
eSBzZXQuICovIFwKLSAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAg
ICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwKLX0gZWxzZSBpZiAoaXNJbml0
aWFsKSB7IFwKLSAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJhbnNp
dGlvbnMoKTsgXAotICAgIGlmIChsaXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBw
ZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgbGlzdC0+YW5pbWF0aW9uKDApLT5zZXQj
I1Byb3AoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uIyNQcm9wKCkpOyBcCi0gICAgZm9yIChz
aXplX3QgaSA9IDE7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAotICAgICAgICBsaXN0LT5hbmlt
YXRpb24oMCktPmNsZWFyIyNQcm9wKCk7IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfVFJBTlNJVElP
Tl9WQUxVRShwcm9wLCBQcm9wLCB2YWx1ZSkgeyBcCi1IQU5ETEVfVFJBTlNJVElPTl9JTkhFUklU
X0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwKLWlmIChpc0luaGVyaXQgfHwgaXNJbml0aWFsKSBc
Ci0gICAgcmV0dXJuOyBcCi1BbmltYXRpb25MaXN0KiBsaXN0ID0gbV9zdHlsZS0+YWNjZXNzVHJh
bnNpdGlvbnMoKTsgXAotc2l6ZV90IGNoaWxkSW5kZXggPSAwOyBcCi1pZiAodmFsdWUtPmlzVmFs
dWVMaXN0KCkpIHsgXAotICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSB0
cmFuc2l0aW9uLCBjcmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKLSAgICBD
U1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVl
KTsgXAotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgo
KTsgaSsrKSB7IFwKLSAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKSBcCi0g
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICAgICAg
bWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KSwgdmFsdWVMaXN0
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsgXAotICAgICAgICArK2NoaWxkSW5kZXg7IFwK
LSAgICB9IFwKLX0gZWxzZSB7IFwKLSAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCi0gICAgICAg
IGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgIG1hcEFuaW1hdGlvbiMj
UHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCksIHZhbHVlKTsgXAotICAgIGNoaWxkSW5k
ZXggPSAxOyBcCi19IFwKLWZvciAoIDsgY2hpbGRJbmRleCA8IGxpc3QtPnNpemUoKTsgKytjaGls
ZEluZGV4KSB7IFwKLSAgICAvKiBSZXNldCBhbGwgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5v
dCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBsaXN0LT5hbmltYXRpb24oY2hpbGRJ
bmRleCktPmNsZWFyIyNQcm9wKCk7IFwKLX0gXAotfQotCi0jZGVmaW5lIEhBTkRMRV9JTkhFUklU
X0NPTkQocHJvcElELCBwcm9wLCBQcm9wKSBcCi1pZiAoaWQgPT0gcHJvcElEKSB7IFwKLSAgICBt
X3N0eWxlLT5zZXQjI1Byb3AobV9wYXJlbnRTdHlsZS0+cHJvcCgpKTsgXAotICAgIHJldHVybjsg
XAotfQotICAgIAotI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKHByb3BJ
RCwgcHJvcCwgcHJvcEFsdCwgUHJvcCkgXAotaWYgKGlkID09IHByb3BJRCkgeyBcCi0gICAgaWYg
KG1fcGFyZW50U3R5bGUtPnByb3AoKS5pc1ZhbGlkKCkpIFwKLSAgICAgICAgbV9zdHlsZS0+c2V0
IyNQcm9wKG1fcGFyZW50U3R5bGUtPnByb3AoKSk7IFwKLSAgICBlbHNlIFwKLSAgICAgICAgbV9z
dHlsZS0+c2V0IyNQcm9wKG1fcGFyZW50U3R5bGUtPnByb3BBbHQoKSk7IFwKLSAgICByZXR1cm47
IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5JVElBTF9DT05EKHByb3BJRCwgUHJvcCkgXAotaWYg
KGlkID09IHByb3BJRCkgeyBcCi0gICAgbV9zdHlsZS0+c2V0IyNQcm9wKFJlbmRlclN0eWxlOjpp
bml0aWFsIyNQcm9wKCkpOyBcCi0gICAgcmV0dXJuOyBcCi19Ci0KLSNkZWZpbmUgSEFORExFX0lO
SVRJQUxfQ09ORF9XSVRIX1ZBTFVFKHByb3BJRCwgUHJvcCwgVmFsdWUpIFwKLWlmIChpZCA9PSBw
cm9wSUQpIHsgXAotICAgIG1fc3R5bGUtPnNldCMjUHJvcChSZW5kZXJTdHlsZTo6aW5pdGlhbCMj
VmFsdWUoKSk7IFwKLSAgICByZXR1cm47IFwKLX0KLQogY2xhc3MgUnVsZURhdGEgewogcHVibGlj
OgogICAgIFJ1bGVEYXRhKENTU1N0eWxlUnVsZSogcnVsZSwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
LCB1bnNpZ25lZCBwb3NpdGlvbikKQEAgLTM3NSw3ICsxNDgsNyBAQCBjbGFzcyBSdWxlU2V0IHsK
IHB1YmxpYzoKICAgICBSdWxlU2V0KCk7CiAgICAgflJ1bGVTZXQoKTsKLSAgICAKKwogICAgIHR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgVmVjdG9yPFJ1bGVEYXRhPio+IEF0b21S
dWxlTWFwOwogICAgIAogICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCos
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBDU1NTdHlsZVNlbGVjdG9yKiA9IDApOwpAQCAt
Mzg1LDExICsxNTgsMTIgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUGFnZVJ1bGUoQ1NTU3R5bGVS
dWxlKiBydWxlLCBDU1NTZWxlY3Rvciogc2VsKTsKICAgICB2b2lkIGFkZFRvUnVsZVNldChBdG9t
aWNTdHJpbmdJbXBsKiBrZXksIEF0b21SdWxlTWFwJiBtYXAsCiAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTU3R5bGVSdWxlKiBydWxlLCBDU1NTZWxlY3Rvciogc2VsKTsKKwogICAgIHZvaWQgc2hy
aW5rVG9GaXQoKTsKICAgICB2b2lkIGRpc2FibGVBdXRvU2hyaW5rVG9GaXQoKSB7IG1fYXV0b1No
cmlua1RvRml0RW5hYmxlZCA9IGZhbHNlOyB9CiAgICAgCiAgICAgdm9pZCBjb2xsZWN0SWRzQW5k
U2libGluZ1J1bGVzKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBpZHMsIE93blB0cjxSdWxl
U2V0PiYgc2libGluZ1J1bGVzKSBjb25zdDsKLSAgICAKKwogICAgIGNvbnN0IFZlY3RvcjxSdWxl
RGF0YT4qIGdldElEUnVsZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSBjb25zdCB7IHJldHVybiBt
X2lkUnVsZXMuZ2V0KGtleSk7IH0KICAgICBjb25zdCBWZWN0b3I8UnVsZURhdGE+KiBnZXRDbGFz
c1J1bGVzKEF0b21pY1N0cmluZ0ltcGwqIGtleSkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1J1bGVz
LmdldChrZXkpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogZ2V0VGFnUnVsZXMoQXRv
bWljU3RyaW5nSW1wbCoga2V5KSBjb25zdCB7IHJldHVybiBtX3RhZ1J1bGVzLmdldChrZXkpOyB9
CkBAIC00MTMsNyArMTg3LDYgQEAgc3RhdGljIFJ1bGVTZXQqIGRlZmF1bHRRdWlya3NTdHlsZTsK
IHN0YXRpYyBSdWxlU2V0KiBkZWZhdWx0UHJpbnRTdHlsZTsKIHN0YXRpYyBSdWxlU2V0KiBkZWZh
dWx0Vmlld1NvdXJjZVN0eWxlOwogc3RhdGljIENTU1N0eWxlU2hlZXQqIHNpbXBsZURlZmF1bHRT
dHlsZVNoZWV0OwotICAgIAogc3RhdGljIFJ1bGVTZXQqIHNpYmxpbmdSdWxlc0luRGVmYXVsdFN0
eWxlOwogCiBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c19zdHlsZU5vdFlldEF2YWls
YWJsZTsKQEAgLTQ1MCw3ICsyMjMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0Tm9TaWJs
aW5nUnVsZXNJCiAgICAgQVNTRVJUKCFzaWJsaW5nUnVsZXNJbkRlZmF1bHRTdHlsZSk7CiAjZW5k
aWYKIH0KLSAgICAKKwogc3RhdGljIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIHNjcmVlbkV2
YWwoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRv
ciwgc3RhdGljU2NyZWVuRXZhbCwgKCJzY3JlZW4iKSk7CkBAIC0xMDA3LDEwICs3ODAsMTAgQEAg
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjYW5TaGFyZVN0eWxlV2l0aAogICAgICAgICAgICAgKHMt
PmZhc3RHZXRBdHRyaWJ1dGUobGFuZ0F0dHIpID09IG1fZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0
ZShsYW5nQXR0cikpICYmCiAgICAgICAgICAgICAocy0+ZmFzdEdldEF0dHJpYnV0ZShyZWFkb25s
eUF0dHIpID09IG1fZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShyZWFkb25seUF0dHIpKSAmJgog
ICAgICAgICAgICAgKHMtPmZhc3RHZXRBdHRyaWJ1dGUoY2VsbHBhZGRpbmdBdHRyKSA9PSBtX2Vs
ZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoY2VsbHBhZGRpbmdBdHRyKSkpIHsKLSAgICAgICAgICAg
IAorCiAgICAgICAgICAgICBpZiAocy0+aGFzSUQoKSAmJiBtX2lkc0luUnVsZXMuY29udGFpbnMo
cy0+aWRGb3JTdHlsZVJlc29sdXRpb24oKS5pbXBsKCkpKQogICAgICAgICAgICAgICAgIHJldHVy
biAwOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGJvb2wgaXNDb250cm9sID0gcy0+aXNG
b3JtQ29udHJvbEVsZW1lbnQoKTsKICAgICAgICAgICAgIGlmIChpc0NvbnRyb2wgIT0gbV9lbGVt
ZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEwODEsNyArODU0LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjYW5TaGFyZVN0
eWxlV2l0aAogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9Ci0gICAgCisKIGlubGluZSBOb2Rl
KiBDU1NTdHlsZVNlbGVjdG9yOjpmaW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhOb2RlKiBub2Rl
LCB1bnNpZ25lZCYgY291bnQpIGNvbnN0CiB7CiAgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2Rl
LT5wcmV2aW91c1NpYmxpbmcoKSkgewpAQCAtMTExMCw3ICs4ODMsNyBAQCBBTFdBWVNfSU5MSU5F
IFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjCiAgICAgTm9kZSogc2hhcmVOb2RlID0gZmluZFNp
YmxpbmdGb3JTdHlsZVNoYXJpbmcobV9zdHlsZWRFbGVtZW50LT5wcmV2aW91c1NpYmxpbmcoKSwg
Y291bnQpOwogICAgIGlmICghc2hhcmVOb2RlKSB7CiAgICAgICAgIE5vZGUqIGNvdXNpbkxpc3Qg
PSBsb2NhdGVDb3VzaW5MaXN0KG1fc3R5bGVkRWxlbWVudC0+cGFyZW50RWxlbWVudCgpKTsKLSAg
ICAgICAgc2hhcmVOb2RlID0gZmluZFNpYmxpbmdGb3JTdHlsZVNoYXJpbmcoY291c2luTGlzdCwg
Y291bnQpOyAKKyAgICAgICAgc2hhcmVOb2RlID0gZmluZFNpYmxpbmdGb3JTdHlsZVNoYXJpbmco
Y291c2luTGlzdCwgY291bnQpOwogICAgICAgICBpZiAoIXNoYXJlTm9kZSkKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgIH0KQEAgLTEyNzEsNyArMTA0NCw3IEBAIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgQ1NTU3R5bGVTaGVldCogc3ZnU2hlZXQg
PSBwYXJzZVVBU2hlZXQoc3ZnVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHN2Z1VzZXJBZ2Vu
dFN0eWxlU2hlZXQpKTsKICAgICAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChz
dmdTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1
bGVzRnJvbVNoZWV0KHN2Z1NoZWV0LCBwcmludEV2YWwoKSk7Ci0gICAgICAgIGFzc2VydE5vU2li
bGluZ1J1bGVzSW5EZWZhdWx0U3R5bGUoKTsKKyAgICAgICAgYXNzZXJ0Tm9TaWJsaW5nUnVsZXNJ
bkRlZmF1bHRTdHlsZSgpOyAKICAgICB9CiAjZW5kaWYKIApAQCAtMTI4Myw3ICsxMDU2LDcgQEAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgICAgICBDU1NTdHls
ZVNoZWV0KiBtYXRoTUxTaGVldCA9IHBhcnNlVUFTaGVldChtYXRobWxVc2VyQWdlbnRTdHlsZVNo
ZWV0LCBzaXplb2YobWF0aG1sVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgICAgICBkZWZhdWx0
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1hdGhNTFNoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAg
ICAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWF0aE1MU2hlZXQsIHBy
aW50RXZhbCgpKTsKLSAgICAgICAgLy8gVGhlcmUgYXJlIHNvbWUgc2libGluZyBydWxlcyBoZXJl
LgorICAgICAgICAvLyBUaGVyZSBhcmUgc29tZSBzaWJsaW5nIHJ1bGVzIGhlcmUuIAogICAgICAg
ICBjb2xsZWN0U2libGluZ1J1bGVzSW5EZWZhdWx0U3R5bGUoKTsKICAgICB9CiAjZW5kaWYKQEAg
LTEzNTYsNyArMTEyOSw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0
b3IKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAKKwog
ICAgICAgICAvLyA2LiBDaGVjayB0aGUgcnVsZXMgaW4gYXV0aG9yIHNoZWV0cyBuZXh0LgogICAg
ICAgICBpZiAobV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAgICAgICAgICAgICBtYXRjaFJ1
bGVzKG1fYXV0aG9yU3R5bGUuZ2V0KCksIGZpcnN0QXV0aG9yUnVsZSwgbGFzdEF1dGhvclJ1bGUs
IGZhbHNlKTsKQEAgLTI5ODYsNyArMjc1OSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RJZHNBbmRT
aWJsaW5nUnVsZXNGcm8KICAgICAgICAgfQogICAgIH0KIH0KLQorIAogdm9pZCBSdWxlU2V0Ojpj
b2xsZWN0SWRzQW5kU2libGluZ1J1bGVzKEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBpZHMs
IE93blB0cjxSdWxlU2V0PiYgc2libGluZ1J1bGVzKSBjb25zdAogewogICAgIEF0b21SdWxlTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2lkUnVsZXMuZW5kKCk7CkBAIC0zMDI0LDcgKzI3OTcs
NyBAQCB2b2lkIFJ1bGVTZXQ6OnNocmlua1RvRml0KCkKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIC8vIHRoaXMgaXMgbW9zdGx5IGJvcmluZyBzdHVmZiBvbiBob3cgdG8gYXBwbHkg
YSBjZXJ0YWluIHJ1bGUgdG8gdGhlIHJlbmRlcnN0eWxlLi4uCiAKLXN0YXRpYyBMZW5ndGggY29u
dmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEs
IGJvb2wgKm9rID0gMCkKK0xlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9MZW5ndGgo
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJl
bmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29sICpvaykKIHsKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHRvbGVyYW50IG9mIGEgbnVsbCBzdHlsZSB2YWx1ZS4gVGhl
IG9ubHkgcGxhY2Ugc3R5bGUgaXMgdXNlZCBpcyBpbgogICAgIC8vIGxlbmd0aCBtZWFzdXJlbWVu
dHMsIGxpa2UgJ2VtcycgYW5kICdweCcuIEFuZCBpbiB0aG9zZSBjYXNlcyBzdHlsZSBpcyBvbmx5
IHVzZWQKQEAgLTMxNTcsNyArMjkzMCw3IEBAIFN0cmluZyBDU1NTdHlsZVNlbGVjdG9yOjpwYWdl
TmFtZShpbnQgLyoKICAgICByZXR1cm4gIiI7CiB9CiAKLXN0YXRpYyB2b2lkIGFwcGx5Q291bnRl
ckxpc3QoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NWYWx1ZUxpc3QqIGxpc3QsIGJvb2wgaXNSZXNl
dCkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlDb3VudGVyTGlzdChSZW5kZXJTdHlsZSog
c3R5bGUsIENTU1ZhbHVlTGlzdCogbGlzdCwgYm9vbCBpc1Jlc2V0KQogewogICAgIENvdW50ZXJE
aXJlY3RpdmVNYXAmIG1hcCA9IHN0eWxlLT5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwogICAg
IHR5cGVkZWYgQ291bnRlckRpcmVjdGl2ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CkBAIC0zMjQy
LDI1ICszMDE1LDYgQEAgaW5saW5lIGJvb2wgaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoaQog
CiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAq
dmFsdWUpCiB7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gMDsKLSAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLQotICAgIGZsb2F0IHpv
b21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICAvLyBTVkcgaGFuZGxl
cyB6b29taW5nIGluIGEgZGlmZmVyZW50IHdheSBjb21wYXJlZCB0byBDU1MuIFRoZSB3aG9sZSBk
b2N1bWVudCBpcyBzY2FsZWQgaW5zdGVhZAotICAgIC8vIG9mIGVhY2ggaW5kaXZpZHVhbCBsZW5n
dGggdmFsdWUgaW4gdGhlIHJlbmRlciBzdHlsZSAvIHRyZWUuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
b21wdXRlTGVuZ3RoKigpCi0gICAgLy8gbXVsdGlwbGllcyBlYWNoIHJlc29sdmVkIGxlbmd0aCB3
aXRoIHRoZSB6b29tIG11bHRpcGxpZXIgLSBzbyBmb3IgU1ZHIHdlIG5lZWQgdG8gZGlzYWJsZSB0
aGF0LgotICAgIC8vIFRob3VnaCBhbGwgQ1NTIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRv
IG91dGVybW9zdCA8c3ZnPiBlbGVtZW50cyAod2lkdGgvaGVpZ2h0L2JvcmRlci9wYWRkaW5nLi4u
KQotICAgIC8vIG5lZWQgdG8gcmVzcGVjdCB0aGUgc2NhbGluZy4gUmVuZGVyQm94ICh0aGUgcGFy
ZW50IGNsYXNzIG9mIFJlbmRlclNWR1Jvb3QpIGdyYWJzIHZhbHVlcyBsaWtlCi0gICAgLy8gd2lk
dGgvaGVpZ2h0L2JvcmRlci9wYWRkaW5nLy4uLiBmcm9tIHRoZSBSZW5kZXJTdHlsZSAtPiBmb3Ig
U1ZHIHRoZXNlIHZhbHVlcyB3b3VsZCBuZXZlciBzY2FsZSwKLSAgICAvLyBpZiB3ZSdkIHBhc3Mg
YSAxLjAgem9vbSBmYWN0b3IgZXZlcnlod2VyZS4gU28gd2Ugb25seSBwYXNzIGEgem9vbSBmYWN0
b3Igb2YgMS4wIGZvciBzcGVjaWZpYwotICAgIC8vIHByb3BlcnRpZXMgdGhhdCBhcmUgTk9UIGFs
bG93ZWQgdG8gc2NhbGUgd2l0aGluIGEgem9vbWVkIFNWRyBkb2N1bWVudCAobGV0dGVyL3dvcmQt
c3BhY2luZy9mb250LXNpemUpLgotICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzID0gbV9lbGVtZW50
ICYmIG1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7Ci0KLSAgICBMZW5ndGggbDsKLSAgICBib29s
IGFwcGx5ID0gZmFsc2U7Ci0KICAgICB1bnNpZ25lZCBzaG9ydCB2YWx1ZVR5cGUgPSB2YWx1ZS0+
Y3NzVmFsdWVUeXBlKCk7CiAKICAgICBib29sIGlzSW5oZXJpdCA9IG1fcGFyZW50Tm9kZSAmJiB2
YWx1ZVR5cGUgPT0gQ1NTVmFsdWU6OkNTU19JTkhFUklUOwpAQCAtMzI3MiwyNjI1ICszMDI2LDQx
NyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIC8v
IExpbWl0IHRoZSBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gb25seSB0aGUgb25l
cyBob25vcmVkIGJ5IDp2aXNpdGVkLgogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCisj
ZGVmaW5lIEhBTkRMRV9DQVNFKFByb3BlcnR5KSBcCitjYXNlIFByb3BlcnR5OiB7IFwKKyAgICBp
ZiAoaXNJbmhlcml0KSBcCisgICAgICAgIGhhbmRsZUluaGVyaXQjI1Byb3BlcnR5KHRoaXMpOyBc
CisgICAgZWxzZSBpZiAoaXNJbml0aWFsKSBcCisgICAgICAgIGhhbmRsZUluaXRpYWwjI1Byb3Bl
cnR5KHRoaXMpOyBcCisgICAgZWxzZSBcCisgICAgICAgIGhhbmRsZVZhbHVlIyNQcm9wZXJ0eSh0
aGlzLCB2YWx1ZSk7IFwKKyAgICByZXR1cm47IFwKK30KKwogICAgIC8vIFdoYXQgZm9sbG93cyBp
cyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVydGllcyBpbnRvIHRoZWlyIGNvcnJlc3Bv
bmRpbmcgZnJvbnQtZW5kCiAgICAgLy8gUmVuZGVyU3R5bGUgdmFsdWVzLiAgU2hvcnRoYW5kcyAo
ZS5nLiBib3JkZXIsIGJhY2tncm91bmQpIG9jY3VyIGluIHRoaXMgbGlzdCBhcyB3ZWxsIGFuZAog
ICAgIC8vIGFyZSBvbmx5IGhpdCB3aGVuIG1hcHBpbmcgImluaGVyaXQiIG9yICJpbml0aWFsIiBp
bnRvIGZyb250LWVuZCB2YWx1ZXMuCiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHN0YXRp
Y19jYXN0PENTU1Byb3BlcnR5SUQ+KGlkKTsKICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7Ci0vLyBp
ZGVudCBvbmx5IHByb3BlcnRpZXMKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFj
aG1lbnQ6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKGF0dGFjaG1lbnQsIEF0dGFj
aG1lbnQsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDbGlwOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcDoKLSAg
ICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoY2xpcCwgQ2xpcCwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZToK
LSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoY29tcG9zaXRlLCBDb21wb3NpdGUsIHZh
bHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmln
aW46Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW46Ci0gICAgICAg
IEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKG9yaWdpbiwgT3JpZ2luLCB2YWx1ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5E
X1ZBTFVFKHNpemUsIFNpemUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50OgotICAgICAgICBIQU5ETEVfTUFTS19WQUxVRShh
dHRhY2htZW50LCBBdHRhY2htZW50LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcDoKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoY2xp
cCwgQ2xpcCwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0NvbXBvc2l0ZToKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoY29tcG9zaXRlLCBD
b21wb3NpdGUsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tPcmlnaW46Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKG9yaWdpbiwgT3JpZ2lu
LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
U2l6ZToKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoc2l6ZSwgU2l6ZSwgdmFsdWUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJvcmRlckNvbGxhcHNlLCBCb3JkZXJDb2xsYXBz
ZSkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZUNvbGxhcHNlOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRl
ckNvbGxhcHNlKHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVNlcGFyYXRlOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckNv
bGxhcHNlKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShib3JkZXJUb3BTdHlsZSwg
Qm9yZGVyVG9wU3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShib3JkZXJSaWdodFN0eWxlLCBCb3JkZXJS
aWdodFN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKGJvcmRlckJvdHRvbVN0eWxlLCBCb3JkZXJCb3R0
b21TdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9B
TkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoYm9yZGVyTGVmdFN0eWxlLCBCb3JkZXJMZWZ0U3R5bGUs
IEJvcmRlclN0eWxlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxp
bmVTdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShv
dXRsaW5lU3R5bGUsIE91dGxpbmVTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZSkgewotICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lU3R5
bGUoRE9UVEVELCB0cnVlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRPdXRsaW5lU3R5bGUoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGNhcHRpb25TaWRlLCBDYXB0aW9u
U2lkZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlDbGVhcjoKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShjbGVhciwgQ2xlYXIp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5RGlyZWN0aW9uOgotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGRpcmVjdGlvbiwgRGly
ZWN0aW9uKQotICAgICAgICBpZiAoIWlzSW5oZXJpdCAmJiAhaXNJbml0aWFsICYmIG1fZWxlbWVu
dCAmJiBtX2VsZW1lbnQgPT0gbV9lbGVtZW50LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KSkKLSAgICAgICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0RGlyZWN0aW9uU2V0T25E
b2N1bWVudEVsZW1lbnQodHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5RGlzcGxheToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1J
VElWRShkaXNwbGF5LCBEaXNwbGF5KQotI2lmIEVOQUJMRShXQ1NTKQotICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZVdhcE1hcnF1ZWUpIHsKLSAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXpl
IFdBUCBNYXJxdWVlIHN0eWxlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3ZlcmZsb3dY
KE9NQVJRVUVFKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1koT01BUlFV
RUUpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFdoaXRlU3BhY2UoTk9XUkFQKTsKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1MRUZUKTsKLSAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoODUpOyAvLyBOb3JtYWwgc3BlZWQK
LSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KDEpOwotICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihNU0NST0xMKTsKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXApCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kQ2xpcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRDb21wb3NpdGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
T3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdp
bikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tDbGlwKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFz
a0NvbXBvc2l0ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4p
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlD
YXB0aW9uU2lkZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUNsZWFyKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5RGlyZWN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
RGlzcGxheSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlGbG9hdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZv
bnRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5Rm9udFdlaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TGlzdFN0
eWxlVHlwZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU92ZXJmbG93KQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5T3ZlcmZsb3dYKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
T3ZlcmZsb3dZKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXIpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlQb3NpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VW5pY29kZUJpZGkpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlUZXh0VHJhbnNmb3JtKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VmlzaWJp
bGl0eSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tQb3NpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUN1cnNvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUNvbG9yKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29s
b3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXNDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRG
aWxsQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eUJvcmRlclRvcFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRX
aWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5T3V0bGluZVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Rm9u
dFNtb290aGluZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXb3JkU3BhY2luZykKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdvcmRCcmVhaykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdvcmRXcmFw
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWspCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5UmVzaXplKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWF4V2lk
dGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlNaW5XaWR0aCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VG9wKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TGVmdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVJpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm90dG9tKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5TWFyZ2luVG9wKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWFy
Z2luUmlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20pCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5UGFkZGluZ1RvcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZGRpbmdSaWdo
dCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20pCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVRleHRJbmRlbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlNYXhIZWlnaHQpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlIZWlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlNaW5IZWlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Rm9udFNpemUpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlaSW5kZXgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXaWRvd3MpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlPcnBoYW5zKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5TGluZUhlaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRBbGlnbikKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUNsaXApCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlDb250ZW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVpvb20pCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0TWFzaykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlcikKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5Qm9yZGVyV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJDb2xvcikK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eU1hcmdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBh
ZGRpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5TGlzdFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGlu
ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eUJvcmRlclJhZGl1cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJh
ZGl1cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cykKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cykKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0
UmVuZGVyaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dFNoYWRvdykKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJveFNoYWRvdykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdEJveFNoYWRvdykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJv
eFJlZmxlY3QpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPcGFjaXR5KQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlTcmMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb24pCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdEJveE9yaWVudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2sp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4KQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
Qm94U2l6aW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXApCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0Q29sdW1uV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5SdWxlU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5CcmVha0JlZm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJy
ZWFrQWZ0ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0lu
c2lkZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVSZXBldGl0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZVNwZWVkKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3Jl
bWVudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24pCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRVc2VyU2VsZWN0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93KQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0SGlnaGxpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0SHlwaGVu
cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcikK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFNlY3VyaXR5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
UnRsT3JkZXJpbmcpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tl
V2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4pCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblopCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1TdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dFBlcnNwZWN0aXZlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3Rp
dmVPcmlnaW4pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9y
aWdpblgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdp
blkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24pCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbikKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25QbGF5U3RhdGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25UaW1pbmdGdW5jdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
RGVsYXkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRp
b24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHkp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rp
b24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5U2l6ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVNwZWFrKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5SW52YWxpZCkKIAotICAgICAgICAgICAgICAgIGlmICht
X3BhcmVudFN0eWxlKQotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXREaXNwbGF5KG1f
cGFyZW50U3R5bGUtPmRpc3BsYXkoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXREaXNwbGF5KCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXREaXNwbGF5KCpwcmltaXRp
dmVWYWx1ZSk7Ci0gICAgICAgIH0KKyAgICAvLyBEaXJlY3Rpb25hbCBwcm9wZXJ0aWVzIGFyZSBy
ZXNvbHZlZCBieSByZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eSgpIGJlZm9yZSB0aGUgc3dp
dGNoLgorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyU3RhcnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydENvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3Rh
cnRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lk
dGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmUpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcikKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGgpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJBZnRlclN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyQWZ0ZXJXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVu
ZCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0KQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRQYWRkaW5nRW5kKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGFk
ZGluZ1N0YXJ0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9y
ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
TWF4TG9naWNhbFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWF4TG9n
aWNhbEhlaWdodCkKKyAgICAvLyBlbmQgZGlyZWN0aW9uYWwgcHJvcGVydGllcworCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlGb250U3RyZXRjaCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVBhZ2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlRdW90ZXMpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2gpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlUZXh0TGluZVRocm91Z2hDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRl
eHRMaW5lVGhyb3VnaE1vZGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0TGluZVRo
cm91Z2hTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdp
ZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4
dE92ZXJsaW5lU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVX
aWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3IpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRVbmRl
cmxpbmVXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVs
dGEpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMpCisKKyAgICAvLyBDU1Mg
VGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGUpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JU
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uKQorI2Vu
ZGlmCisjaWYgRU5BQkxFKFdDU1MpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXYXBNYXJx
dWVlTG9vcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZCkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
YXBJbnB1dEZvcm1hdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWly
ZWQpCisjZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRy
eSB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAgICAgYXBwbHlTVkdQcm9wZXJ0eShpZCwgdmFsdWUp
OwogI2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5RW1wdHlDZWxs
czoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShlbXB0
eUNlbGxzLCBFbXB0eUNlbGxzKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUZsb2F0OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZF
KGZsb2F0aW5nLCBGbG9hdGluZykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlGb250U3R5bGU6Ci0gICAgewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGlmIChpc0luaGVyaXQp
Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKG1fcGFyZW50U3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLml0YWxpYygpKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQot
ICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhmYWxzZSk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU9ibGlxdWU6Ci0gICAgICAgICAgICAgICAg
Ly8gRklYTUU6IG9ibGlxdWUgaXMgdGhlIHNhbWUgYXMgaXRhbGljIGZvciB0aGUgbW9tZW50Li4u
Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUl0YWxpYzoKLSAgICAgICAgICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyhmYWxzZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAobV9zdHls
ZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2Zv
bnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKICAgICB9Cit9CiAKLSAgICBjYXNlIENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQ6Ci0gICAgewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIAotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2FwcyhtX3Bh
cmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zbWFsbENhcHMoKSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMo
ZmFsc2UpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaW50IGlkID0gcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCk7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb3JtYWwp
Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2FwcyhmYWxzZSk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZVNtYWxsQ2FwcykKLSAgICAgICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0U21hbGxDYXBzKHRydWUpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9zdHls
ZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2Zv
bnREaXJ0eSA9IHRydWU7Cit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UGFnZVNpemVQcm9w
ZXJ0eShDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgbV9zdHlsZS0+cmVzZXRQYWdlU2l6ZVR5cGUo
KTsKKyAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6Ci0gICAgewotICAgICAgICBGb250
RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7
Ci0gICAgICAgIGlmIChpc0luaGVyaXQpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
V2VpZ2h0KG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLndlaWdodCgpKTsKLSAgICAg
ICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChGb250V2VpZ2h0Tm9ybWFsKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
IXByaW1pdGl2ZVZhbHVlKQorICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nh
c3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAgIExlbmd0aCB3aWR0aDsKKyAgICBMZW5ndGgg
aGVpZ2h0OworICAgIFBhZ2VTaXplVHlwZSBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUTzsK
KyAgICBzd2l0Y2ggKHZhbHVlTGlzdC0+bGVuZ3RoKCkpIHsKKyAgICBjYXNlIDI6IHsKKyAgICAg
ICAgLy8gPGxlbmd0aD57Mn0gfCA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+CisgICAgICAgIHBh
Z2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKKyAgICAgICAgaWYgKCF2YWx1ZUxpc3Qt
Pml0ZW0oMCktPmlzUHJpbWl0aXZlVmFsdWUoKSB8fCAhdmFsdWVMaXN0LT5pdGVtKDEpLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlTGlzdC0+aXRlbSgwKSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZTEgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRl
bSgxKSk7CisgICAgICAgIGludCB0eXBlMCA9IHByaW1pdGl2ZVZhbHVlMC0+cHJpbWl0aXZlVHlw
ZSgpOworICAgICAgICBpbnQgdHlwZTEgPSBwcmltaXRpdmVWYWx1ZTEtPnByaW1pdGl2ZVR5cGUo
KTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUw
KSkgeworICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KKyAgICAgICAgICAgIGlmICghQ1NTUHJp
bWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZTEpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIHdpZHRoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlMC0+Y29tcHV0
ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7
CisgICAgICAgICAgICBoZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUxLT5jb21wdXRlTGVu
Z3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4K
KyAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvcmRlciBpcyBndWFyYW50ZWVkLiBTZWUgQ1NTUGFy
c2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIuCisgICAgICAgICAgICBpZiAoIXBhZ2VTaXplRnJvbU5h
bWUocHJpbWl0aXZlVmFsdWUwLCBwcmltaXRpdmVWYWx1ZTEsIHdpZHRoLCBoZWlnaHQpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUJvbGRlcjoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2NyaXB0
aW9uLmJvbGRlcldlaWdodCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGlnaHRlcjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2NyaXB0aW9uLmxpZ2h0ZXJX
ZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWU3MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0
KEZvbnRXZWlnaHRCb2xkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgotICAgICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlNDAwOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldFdlaWdodChGb250V2VpZ2h0Tm9ybWFsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlOTAwOgotICAgICAgICAgICAg
ICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0OTAwKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlODAwOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdl
aWdodChGb250V2VpZ2h0ODAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlNjAwOgotICAgICAgICAgICAgICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0NjAwKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlNTAw
OgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250
V2VpZ2h0NTAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlMzAwOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0MzAwKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlMjAwOgotICAgICAg
ICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0MjAw
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlMTAwOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldFdlaWdodChGb250V2VpZ2h0MTAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX3N0
eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgIG1f
Zm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbjoKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShsaXN0U3R5bGVQb3Np
dGlvbiwgTGlzdFN0eWxlUG9zaXRpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1By
b3BlcnR5TGlzdFN0eWxlVHlwZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxf
QU5EX1BSSU1JVElWRShsaXN0U3R5bGVUeXBlLCBMaXN0U3R5bGVUeXBlKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgotICAgIHsKLSAgICAgICAgaWYgKGlz
SW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3ZlcmZsb3dYKG1fcGFyZW50U3R5
bGUtPm92ZXJmbG93WCgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WShtX3Bh
cmVudFN0eWxlLT5vdmVyZmxvd1koKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldE92ZXJmbG93WChSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJmbG93WCgpKTsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WShSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJmbG93WSgp
KTsKKyAgICBjYXNlIDE6IHsKKyAgICAgICAgLy8gPGxlbmd0aD4gfCBhdXRvIHwgPHBhZ2Utc2l6
ZT4gfCBbIHBvcnRyYWl0IHwgbGFuZHNjYXBlXQorICAgICAgICBpZiAoIXZhbHVlTGlzdC0+aXRl
bSgwKS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgwKSk7CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0
aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVl
Ojppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7CisgICAgICAgICAgICAvLyA8bGVuZ3RoPgorICAg
ICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOworICAgICAgICAgICAg
d2lkdGggPSBoZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19J
REVOVCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoK
KyAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUTzsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQb3J0cmFpdDoKKyAgICAg
ICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUT19QT1JUUkFJVDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYW5kc2NhcGU6Cisg
ICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9fTEFORFNDQVBFOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAvLyA8cGFnZS1zaXplPgorICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0Vf
U0laRV9SRVNPTFZFRDsKKyAgICAgICAgICAgICAgICBpZiAoIXBhZ2VTaXplRnJvbU5hbWUocHJp
bWl0aXZlVmFsdWUsIDAsIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBFT3Zl
cmZsb3cgbyA9ICpwcmltaXRpdmVWYWx1ZTsKLQotICAgICAgICBtX3N0eWxlLT5zZXRPdmVyZmxv
d1gobyk7Ci0gICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WShvKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dY
OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG92ZXJm
bG93WCwgT3ZlcmZsb3dYKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU92
ZXJmbG93WToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElW
RShvdmVyZmxvd1ksIE92ZXJmbG93WSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWdlQnJlYWtCZWZvcmU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShwYWdlQnJlYWtCZWZvcmUsIFBhZ2VCcmVha0JlZm9y
ZSwgUGFnZUJyZWFrKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VC
cmVha0FmdGVyOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlU
SVZFX1dJVEhfVkFMVUUocGFnZUJyZWFrQWZ0ZXIsIFBhZ2VCcmVha0FmdGVyLCBQYWdlQnJlYWsp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlOiB7
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX1dJVEhfVkFMVUUocGFnZUJyZWFr
SW5zaWRlLCBQYWdlQnJlYWtJbnNpZGUsIFBhZ2VCcmVhaykKLSAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRVBhZ2VCcmVhayBwYWdlQnJl
YWsgPSAqcHJpbWl0aXZlVmFsdWU7Ci0gICAgICAgIGlmIChwYWdlQnJlYWsgIT0gUEJBTFdBWVMp
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWdlQnJlYWtJbnNpZGUocGFnZUJyZWFrKTsKKyAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm47CiAgICAgfQotICAgICAgICAKLSAgICBjYXNlIENT
U1Byb3BlcnR5UG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FO
RF9QUklNSVRJVkUocG9zaXRpb24sIFBvc2l0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKHRhYmxlTGF5b3V0LCBUYWJsZUxheW91dCkKKyAgICBtX3N0eWxlLT5zZXRQYWdlU2l6
ZVR5cGUocGFnZVNpemVUeXBlKTsKKyAgICBtX3N0eWxlLT5zZXRQYWdlU2l6ZShMZW5ndGhTaXpl
KHdpZHRoLCBoZWlnaHQpKTsKKyAgICByZXR1cm47Cit9CiAKLSAgICAgICAgRVRhYmxlTGF5b3V0
IGwgPSAqcHJpbWl0aXZlVmFsdWU7Ci0gICAgICAgIGlmIChsID09IFRBVVRPKQotICAgICAgICAg
ICAgbCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGFibGVMYXlvdXQoKTsKK2Jvb2wgQ1NTU3R5bGVT
ZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZShDU1NQcmltaXRpdmVWYWx1ZSogcGFnZVNpemVOYW1l
LCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVudGF0aW9uLCBMZW5ndGgmIHdpZHRoLCBMZW5n
dGgmIGhlaWdodCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE1V2lkdGggPSBtbUxlbmd0
aCgxNDgpLCBhNUhlaWdodCA9IG1tTGVuZ3RoKDIxMCk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0
aCBhNFdpZHRoID0gbW1MZW5ndGgoMjEwKSwgYTRIZWlnaHQgPSBtbUxlbmd0aCgyOTcpOworICAg
IHN0YXRpYyBjb25zdCBMZW5ndGggYTNXaWR0aCA9IG1tTGVuZ3RoKDI5NyksIGEzSGVpZ2h0ID0g
bW1MZW5ndGgoNDIwKTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI1V2lkdGggPSBtbUxlbmd0
aCgxNzYpLCBiNUhlaWdodCA9IG1tTGVuZ3RoKDI1MCk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0
aCBiNFdpZHRoID0gbW1MZW5ndGgoMjUwKSwgYjRIZWlnaHQgPSBtbUxlbmd0aCgzNTMpOworICAg
IHN0YXRpYyBjb25zdCBMZW5ndGggbGV0dGVyV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxldHRl
ckhlaWdodCA9IGluY2hMZW5ndGgoMTEpOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGVnYWxX
aWR0aCA9IGluY2hMZW5ndGgoOC41KSwgbGVnYWxIZWlnaHQgPSBpbmNoTGVuZ3RoKDE0KTsKKyAg
ICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZGdlcldpZHRoID0gaW5jaExlbmd0aCgxMSksIGxlZGdl
ckhlaWdodCA9IGluY2hMZW5ndGgoMTcpOwogCi0gICAgICAgIG1fc3R5bGUtPnNldFRhYmxlTGF5
b3V0KGwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBjYXNlIENTU1By
b3BlcnR5VW5pY29kZUJpZGk6IAotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9B
TkRfUFJJTUlUSVZFKHVuaWNvZGVCaWRpLCBVbmljb2RlQmlkaSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtOiAKLSAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh0ZXh0VHJhbnNmb3JtLCBUZXh0VHJhbnNmb3Jt
KQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVZpc2liaWxpdHk6Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodmlzaWJpbGl0eSwg
VmlzaWJpbGl0eSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNw
YWNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHdo
aXRlU3BhY2UsIFdoaXRlU3BhY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb246Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX0lOSEVS
SVRfQU5EX0lOSVRJQUwoeFBvc2l0aW9uLCBYUG9zaXRpb24pOwotICAgICAgICBIQU5ETEVfQkFD
S0dST1VORF9JTkhFUklUX0FORF9JTklUSUFMKHlQb3NpdGlvbiwgWVBvc2l0aW9uKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YOiB7Ci0g
ICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKHhQb3NpdGlvbiwgWFBvc2l0aW9uLCB2YWx1
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWTogewotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRSh5UG9zaXRpb24s
IFlQb3NpdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbjoKLSAgICAgICAgSEFORExFX01BU0tfSU5IRVJJVF9B
TkRfSU5JVElBTCh4UG9zaXRpb24sIFhQb3NpdGlvbik7Ci0gICAgICAgIEhBTkRMRV9NQVNLX0lO
SEVSSVRfQU5EX0lOSVRJQUwoeVBvc2l0aW9uLCBZUG9zaXRpb24pOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblg6IHsKLSAgICAgICAgSEFO
RExFX01BU0tfVkFMVUUoeFBvc2l0aW9uLCBYUG9zaXRpb24sIHZhbHVlKQotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZOiB7Ci0g
ICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKHlQb3NpdGlvbiwgWVBvc2l0aW9uLCB2YWx1ZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVh
dDoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfSU5IRVJJVF9BTkRfSU5JVElBTChyZXBlYXRY
LCBSZXBlYXRYKTsKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfSU5IRVJJVF9BTkRfSU5JVElB
TChyZXBlYXRZLCBSZXBlYXRZKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0WDoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUocmVw
ZWF0WCwgUmVwZWF0WCwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFk6Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX1ZBTFVFKHJl
cGVhdFksIFJlcGVhdFksIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6Ci0gICAgICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lO
SVRJQUwocmVwZWF0WCwgUmVwZWF0WCk7Ci0gICAgICAgIEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5E
X0lOSVRJQUwocmVwZWF0WSwgUmVwZWF0WSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFg6Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKHJl
cGVhdFgsIFJlcGVhdFgsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXRZOgotICAgICAgICBIQU5ETEVfTUFTS19WQUxVRShyZXBlYXRZ
LCBSZXBlYXRZLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJTcGFjaW5nOiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKG1fcGFyZW50U3R5bGUtPmhvcml6b250
YWxCb3JkZXJTcGFjaW5nKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3Jk
ZXJTcGFjaW5nKG1fcGFyZW50U3R5bGUtPnZlcnRpY2FsQm9yZGVyU3BhY2luZygpKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKDApOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
VmVydGljYWxCb3JkZXJTcGFjaW5nKDApOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOiB7
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGhvcml6b250YWxCb3JkZXJTcGFj
aW5nLCBIb3Jpem9udGFsQm9yZGVyU3BhY2luZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2
ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmco
c3BhY2luZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTCh2ZXJ0aWNhbEJvcmRlclNwYWNpbmcsIFZlcnRpY2FsQm9yZGVyU3BhY2luZykKLSAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
c2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0
VmVydGljYWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcihtX3BhcmVudFN0eWxlLT5jdXJzb3IoKSk7Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRDdXJzb3JMaXN0KG1fcGFyZW50U3R5bGUtPmN1cnNvcnMo
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHlsZS0+Y2xl
YXJDdXJzb3JMaXN0KCk7Ci0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkp
IHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVl
TGlzdCo+KHZhbHVlKTsKLSAgICAgICAgICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcihDVVJTT1JfQVVUTyk7Ci0gICAgICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgQ1NTVmFsdWUq
IGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgICAg
IGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRp
dmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAgICAgICAgIGlmICh0eXBlID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1h
Z2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
bWFnZS0+dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQobV9lbGVtZW50KSkgLy8gRWxlbWVudHMgd2l0
aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFsbG93ZWQgdG8gc2hhcmUgc3R5bGUuCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5hZGRDdXJzb3IoY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1By
b3BlcnR5Q3Vyc29yLCBpbWFnZSksIGltYWdlLT5ob3RTcG90KCkpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvcigq
cHJpbWl0aXZlVmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHByaW1p
dGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0lERU5UICYmIG1fc3R5bGUtPmN1cnNvcigpICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVl
KSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0vLyBjb2xvcnMgfHwgaW5oZXJpdAotICAgIGNh
c2UgQ1NTUHJvcGVydHlDb2xvcjoKLSAgICAgICAgLy8gSWYgdGhlICdjdXJyZW50Q29sb3InIGtl
eXdvcmQgaXMgc2V0IG9uIHRoZSAnY29sb3InIHByb3BlcnR5IGl0c2VsZiwKLSAgICAgICAgLy8g
aXQgaXMgdHJlYXRlZCBhcyAnY29sb3I6aW5oZXJpdCcgYXQgcGFyc2UgdGltZQotICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVDdXJyZW50Y29sb3IpCi0gICAgICAgICAgICBpc0luaGVyaXQgPSB0cnVlOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRv
cENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFN0cm9rZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXNDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjogewotICAg
ICAgICBDb2xvciBjb2w7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGJhY2tncm91bmRD
b2xvciwgQmFja2dyb3VuZENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9X
SVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBib3JkZXJUb3BDb2xvciwgY29s
b3IsIEJvcmRlclRvcENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRI
X0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBib3JkZXJCb3R0b21Db2xvciwg
Y29sb3IsIEJvcmRlckJvdHRvbUNvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09O
RF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIGJvcmRlclJpZ2h0Q29s
b3IsIGNvbG9yLCBCb3JkZXJSaWdodENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRf
Q09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgYm9yZGVyTGVmdENv
bG9yLCBjb2xvciwgQm9yZGVyTGVmdENvbG9yKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRf
Q09ORChDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvciwgQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVf
SU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBvdXRsaW5l
Q29sb3IsIGNvbG9yLCBPdXRsaW5lQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9D
T05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLCBjb2x1bW5S
dWxlQ29sb3IsIGNvbG9yLCBDb2x1bW5SdWxlQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5I
RVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCB0
ZXh0U3Ryb2tlQ29sb3IsIGNvbG9yLCBUZXh0U3Ryb2tlQ29sb3IpCi0gICAgICAgICAgICBIQU5E
TEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
Q29sb3IsIHRleHRFbXBoYXNpc0NvbG9yLCBjb2xvciwgVGV4dEVtcGhhc2lzQ29sb3IpCi0gICAg
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0
VGV4dEZpbGxDb2xvciwgdGV4dEZpbGxDb2xvciwgY29sb3IsIFRleHRGaWxsQ29sb3IpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAg
ICAgICAgICAgLy8gVGhlIGJvcmRlci9vdXRsaW5lIGNvbG9ycyB3aWxsIGp1c3QgbWFwIHRvIHRo
ZSBpbnZhbGlkIGNvbG9yIHxjb2x8IGFib3ZlLiAgVGhpcyB3aWxsIGhhdmUgdGhlCi0gICAgICAg
ICAgICAvLyBlZmZlY3Qgb2YgZm9yY2luZyB0aGUgdXNlIG9mIHRoZSBjdXJyZW50Q29sb3Igd2hl
biBpdCBjb21lcyB0aW1lIHRvIGRyYXcgdGhlIGJvcmRlcnMgKGFuZCBvZgotICAgICAgICAgICAg
Ly8gbm90IHBhaW50aW5nIHRoZSBiYWNrZ3JvdW5kIHNpbmNlIHRoZSBjb2xvciB3b24ndCBiZSB2
YWxpZCkuCi0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDb2xvcikKLSAgICAgICAg
ICAgICAgICBjb2wgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yKCk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIGNvbCA9IGdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1p
dGl2ZVZhbHVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEJhY2tncm91bmRDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRl
clRvcENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdo
dENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9t
Q29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdENvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9y
KGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9y
OgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yOgotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0T3V0bGluZUNvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldENvbHVtblJ1bGVDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6Ci0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRUZXh0U3Ryb2tlQ29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3I6Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yOgotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0VGV4dEZpbGxDb2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0vLyB1cmkgfHwg
aW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6Ci0gICAgICAgIEhB
TkRMRV9CQUNLR1JPVU5EX1ZBTFVFKGltYWdlLCBJbWFnZSwgdmFsdWUpCi0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlOgotICAgICAgICBIQU5ETEVf
TUFTS19WQUxVRShpbWFnZSwgSW1hZ2UsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlOgotICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwobGlzdFN0eWxlSW1hZ2UsIExpc3RTdHlsZUltYWdlKQotICAgICAgICBt
X3N0eWxlLT5zZXRMaXN0U3R5bGVJbWFnZShzdHlsZUltYWdlKENTU1Byb3BlcnR5TGlzdFN0eWxl
SW1hZ2UsIHZhbHVlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLS8vIGxlbmd0aAotICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGg6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
T3V0bGluZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGg6
Ci0gICAgewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5I
RVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIGJvcmRlclRvcFdpZHRoLCBCb3Jk
ZXJUb3BXaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlC
b3JkZXJSaWdodFdpZHRoLCBib3JkZXJSaWdodFdpZHRoLCBCb3JkZXJSaWdodFdpZHRoKQotICAg
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRo
LCBib3JkZXJCb3R0b21XaWR0aCwgQm9yZGVyQm90dG9tV2lkdGgpCi0gICAgICAgICAgICBIQU5E
TEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBib3JkZXJMZWZ0V2lk
dGgsIEJvcmRlckxlZnRXaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NT
UHJvcGVydHlPdXRsaW5lV2lkdGgsIG91dGxpbmVXaWR0aCwgT3V0bGluZVdpZHRoKQotICAgICAg
ICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0
aCwgY29sdW1uUnVsZVdpZHRoLCBDb2x1bW5SdWxlV2lkdGgpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBI
QU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwg
Qm9yZGVyVG9wV2lkdGgsIEJvcmRlcldpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxf
Q09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQm9yZGVyUmlnaHRX
aWR0aCwgQm9yZGVyV2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhf
VkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQm9yZGVyQm90dG9tV2lkdGgsIEJv
cmRlcldpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBCb3JkZXJMZWZ0V2lkdGgsIEJvcmRlcldpZHRoKQot
ICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoLCBPdXRsaW5lV2lkdGgsIEJvcmRlcldpZHRoKQotICAgICAgICAgICAgSEFORExF
X0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRo
LCBDb2x1bW5SdWxlV2lkdGgsIEJvcmRlcldpZHRoKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgc2hvcnQgd2lkdGggPSAzOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVUaGluOgotICAgICAgICAg
ICAgd2lkdGggPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVN
ZWRpdW06Ci0gICAgICAgICAgICB3aWR0aCA9IDM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDU1NWYWx1ZVRoaWNrOgotICAgICAgICAgICAgd2lkdGggPSA1OwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVJbnZhbGlkOgotICAgICAgICAgICAgd2lk
dGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh3aWR0
aCA8IDApIHJldHVybjsKLSAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyVG9wV2lkdGg6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BX
aWR0aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0V2lkdGg6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodFdp
ZHRoKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tV2lkdGg6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21X
aWR0aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRXaWR0aDoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRXaWR0
aCh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU91
dGxpbmVXaWR0aDoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVXaWR0aCh3aWR0aCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blJ1bGVXaWR0aDoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVXaWR0aCh3aWR0
aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmc6IHsKLSAgICAgICAgRm9udERlc2NyaXB0aW9uIGZv
bnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICBpZiAo
aXNJbmhlcml0KSAKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5n
KG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRG
b250U21vb3RoaW5nKEF1dG9TbW9vdGhpbmcpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgaW50IGlkID0gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCk7Ci0gICAgICAgICAgICBGb250
U21vb3RoaW5nTW9kZSBzbW9vdGhpbmc7Ci0gICAgICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86Ci0gICAgICAgICAgICAgICAgICAgIHNtb290
aGluZyA9IEF1dG9TbW9vdGhpbmc7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgotICAgICAgICAgICAgICAgICAgICBzbW9vdGhp
bmcgPSBOb1Ntb290aGluZzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUFudGlhbGlhc2VkOgotICAgICAgICAgICAgICAgICAgICBzbW9v
dGhpbmcgPSBBbnRpYWxpYXNlZDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1YnBpeGVsQW50aWFsaWFzZWQ6Ci0gICAgICAgICAgICAg
ICAgICAgIHNtb290aGluZyA9IFN1YnBpeGVsQW50aWFsaWFzZWQ7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmcgPSBB
dXRvU21vb3RoaW5nOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldEZvbnRTbW9vdGhpbmcoc21vb3RoaW5nKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9z
dHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBt
X2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6
Ci0gICAgewotICAgICAgICAKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAg
SEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIGxldHRlclNwYWNp
bmcsIExldHRlclNwYWNpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1By
b3BlcnR5V29yZFNwYWNpbmcsIHdvcmRTcGFjaW5nLCBXb3JkU3BhY2luZykKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAg
ICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUxldHRlclNw
YWNpbmcsIExldHRlclNwYWNpbmcsIExldHRlcldvcmRTcGFjaW5nKQotICAgICAgICAgICAgSEFO
RExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIFdvcmRT
cGFjaW5nLCBMZXR0ZXJXb3JkU3BhY2luZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgaW50IHdpZHRoID0gMDsKLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKSB7
Ci0gICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBp
ZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290
RWxlbWVudFN0eWxlLCB1c2VTVkdab29tUnVsZXMgPyAxLjBmIDogem9vbUZhY3Rvcik7Ci0gICAg
ICAgIH0KLSAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGV0
dGVyU3BhY2luZzoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExldHRlclNwYWNpbmcod2lkdGgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2lu
ZzoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFdvcmRTcGFjaW5nKHdpZHRoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgLy8gIyMjIG5lZWRzIHRoZSBkZWZpbml0aW9ucyBpbiBy
ZW5kZXJzdHlsZQotICAgICAgICBkZWZhdWx0OiBicmVhazsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh3b3JkQnJlYWssIFdvcmRC
cmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh3b3JkV3JhcCwg
V29yZFdyYXApCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TmJz
cE1vZGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUo
bmJzcE1vZGUsIE5CU1BNb2RlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVCcmVhazoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5E
X1BSSU1JVElWRShraHRtbExpbmVCcmVhaywgS0hUTUxMaW5lQnJlYWspCi0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVD
b2xvcjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSht
YXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90
ZUNvbG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5UmVzaXplOgot
ICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocmVzaXplLCBSZXNpemUp
Ci0KLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBFUmVzaXplIHIgPSBSRVNJWkVfTk9ORTsKLSAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAg
ICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5n
cygpKQotICAgICAgICAgICAgICAgIHIgPSBzZXR0aW5ncy0+dGV4dEFyZWFzQXJlUmVzaXphYmxl
KCkgPyBSRVNJWkVfQk9USCA6IFJFU0laRV9OT05FOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIHIgPSAqcHJpbWl0aXZlVmFsdWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgbV9zdHlsZS0+
c2V0UmVzaXplKHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIGxlbmd0
aCwgcGVyY2VudAotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKLSAgICAgICAgLy8gK25v
bmUgK2luaGVyaXQKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsK
LSAgICBjYXNlIENTU1Byb3BlcnR5VG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgotICAg
IGNhc2UgQ1NTUHJvcGVydHlSaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRvcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbToKLSAgICBjYXNlIENTU1By
b3BlcnR5TWFyZ2luTGVmdDoKLSAgICAgICAgLy8gK2luaGVyaXQgK2F1dG8KLSAgICAgICAgaWYg
KGlkID09IENTU1Byb3BlcnR5V2lkdGggfHwgaWQgPT0gQ1NTUHJvcGVydHlNaW5XaWR0aCB8fCBp
ZCA9PSBDU1NQcm9wZXJ0eU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnRyaW5zaWMpIHsK
LSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKEludHJpbnNpYyk7Ci0gICAgICAgICAgICAgICAg
YXBwbHkgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0
aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNaW5JbnRy
aW5zaWMpIHsKLSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKE1pbkludHJpbnNpYyk7Ci0gICAg
ICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGlmIChpZCAhPSBDU1NQcm9wZXJ0eU1heFdpZHRoICYmIHByaW1pdGl2ZVZhbHVlICYmIHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIGFw
cGx5ID0gdHJ1ZTsKLSAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9t
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dEluZGVudDoKLSAgICAgICAgLy8gK2luaGVyaXQKLSAgICB7Ci0gICAgICAgIGlmIChpc0lu
aGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXhX
aWR0aCwgbWF4V2lkdGgsIE1heFdpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09O
RChDU1NQcm9wZXJ0eUJvdHRvbSwgYm90dG9tLCBCb3R0b20pCi0gICAgICAgICAgICBIQU5ETEVf
SU5IRVJJVF9DT05EKENTU1Byb3BlcnR5VG9wLCB0b3AsIFRvcCkKLSAgICAgICAgICAgIEhBTkRM
RV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlMZWZ0LCBsZWZ0LCBMZWZ0KQotICAgICAgICAgICAg
SEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVJpZ2h0LCByaWdodCwgUmlnaHQpCi0gICAg
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5V2lkdGgsIHdpZHRoLCBXaWR0
aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNaW5XaWR0aCwg
bWluV2lkdGgsIE1pbldpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQ
cm9wZXJ0eVBhZGRpbmdUb3AsIHBhZGRpbmdUb3AsIFBhZGRpbmdUb3ApCi0gICAgICAgICAgICBI
QU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBwYWRkaW5nUmlnaHQs
IFBhZGRpbmdSaWdodCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVy
dHlQYWRkaW5nQm90dG9tLCBwYWRkaW5nQm90dG9tLCBQYWRkaW5nQm90dG9tKQotICAgICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBwYWRkaW5nTGVm
dCwgUGFkZGluZ0xlZnQpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3Bl
cnR5TWFyZ2luVG9wLCBtYXJnaW5Ub3AsIE1hcmdpblRvcCkKLSAgICAgICAgICAgIEhBTkRMRV9J
TkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgbWFyZ2luUmlnaHQsIE1hcmdpblJp
Z2h0KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU1hcmdpbkJv
dHRvbSwgbWFyZ2luQm90dG9tLCBNYXJnaW5Cb3R0b20pCi0gICAgICAgICAgICBIQU5ETEVfSU5I
RVJJVF9DT05EKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgbWFyZ2luTGVmdCwgTWFyZ2luTGVmdCkK
LSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlUZXh0SW5kZW50LCB0
ZXh0SW5kZW50LCBUZXh0SW5kZW50KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxf
Q09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWF4V2lkdGgsIE1heFdpZHRoLCBNYXhTaXplKQot
ICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm90
dG9tLCBCb3R0b20sIE9mZnNldCkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lU
SF9WQUxVRShDU1NQcm9wZXJ0eVRvcCwgVG9wLCBPZmZzZXQpCi0gICAgICAgICAgICBIQU5ETEVf
SU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlMZWZ0LCBMZWZ0LCBPZmZzZXQpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlSaWdo
dCwgUmlnaHQsIE9mZnNldCkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9W
QUxVRShDU1NQcm9wZXJ0eVdpZHRoLCBXaWR0aCwgU2l6ZSkKLSAgICAgICAgICAgIEhBTkRMRV9J
TklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eU1pbldpZHRoLCBNaW5XaWR0aCwgTWlu
U2l6ZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9w
ZXJ0eVBhZGRpbmdUb3AsIFBhZGRpbmdUb3AsIFBhZGRpbmcpCi0gICAgICAgICAgICBIQU5ETEVf
SU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsIFBhZGRpbmdS
aWdodCwgUGFkZGluZykKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxV
RShDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sIFBhZGRpbmdCb3R0b20sIFBhZGRpbmcpCi0gICAg
ICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5n
TGVmdCwgUGFkZGluZ0xlZnQsIFBhZGRpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9D
T05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIE1hcmdpblRvcCwgTWFyZ2luKQot
ICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWFy
Z2luUmlnaHQsIE1hcmdpblJpZ2h0LCBNYXJnaW4pCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElB
TF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIE1hcmdpbkJvdHRvbSwg
TWFyZ2luKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1By
b3BlcnR5TWFyZ2luTGVmdCwgTWFyZ2luTGVmdCwgTWFyZ2luKQotICAgICAgICAgICAgSEFORExF
X0lOSVRJQUxfQ09ORChDU1NQcm9wZXJ0eVRleHRJbmRlbnQsIFRleHRJbmRlbnQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0gCi0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYm
ICFhcHBseSkgewotICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpOwotICAgICAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBl
TGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBvdXIgcXVpcmt5IG1hcmdp
biB1bml0cyBpZiB3ZSBoYXZlIHRoZW0uCi0gICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmlt
aXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVt
ZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmltaXRpdmVWYWx1ZS0+aXNRdWlya1ZhbHVlKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICAg
ICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
YXBwbHkgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghYXBwbHkpIHJldHVybjsKLSAg
ICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRo
OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1heFdpZHRoKGwpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRCb3R0b20obCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5VG9wOgotICAgICAgICAgICAgICAgIG1fc3R5bGUt
PnNldFRvcChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlMZWZ0OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldExlZnQobCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UmlnaHQ6Ci0g
ICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0UmlnaHQobCk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0V2lkdGgobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5TWluV2lkdGg6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
TWluV2lkdGgobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENT
U1Byb3BlcnR5UGFkZGluZ1RvcDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5n
VG9wKGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVBhZGRpbmdSaWdodDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nUmln
aHQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5UGFkZGluZ0JvdHRvbToKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nQm90
dG9tKGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVBhZGRpbmdMZWZ0OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdMZWZ0
KGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eU1hcmdpblRvcDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5Ub3AobCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQ6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luUmlnaHQobCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luQm90
dG9tOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpbkJvdHRvbShsKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0
OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpbkxlZnQobCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEluZGVudDoKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0SW5kZW50KGwpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlNYXhIZWlnaHQ6Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgICAgIGwgPSBMZW5ndGgo
dW5kZWZpbmVkTGVuZ3RoLCBGaXhlZCk7Ci0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAg
ICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlN
aW5IZWlnaHQ6Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludHJpbnNpYykgewotICAgICAgICAgICAgbCA9IExlbmd0
aChJbnRyaW5zaWMpOwotICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgICAgICB9IGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlTWluSW50cmluc2ljKSB7Ci0gICAgICAgICAgICBsID0gTGVuZ3RoKE1pbkludHJpbnNpYyk7
Ci0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoaWQgIT0gQ1NT
UHJvcGVydHlNYXhIZWlnaHQgJiYgcHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAg
ICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENT
U1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhIZWlnaHQsIE1heEhlaWdodCkKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlIZWlnaHQsIGhlaWdodCwgSGVpZ2h0KQotICAg
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU1pbkhlaWdodCwgbWluSGVp
Z2h0LCBNaW5IZWlnaHQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZB
TFVFKENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBNYXhIZWlnaHQsIE1heFNpemUpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlIZWlnaHQsIEhlaWdo
dCwgU2l6ZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQ
cm9wZXJ0eU1pbkhlaWdodCwgTWluSGVpZ2h0LCBNaW5TaXplKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmICFhcHBseSkgewot
ICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRp
dmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVM
ZW5ndGgodHlwZSkpCi0gICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpv
b21GYWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKHBy
aW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGFwcGx5KQotICAgICAgICAgICAgc3dpdGNoIChpZCkgewot
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6Ci0gICAgICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldE1heEhlaWdodChsKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKLSAgICAgICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0SGVpZ2h0KGwpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgotICAgICAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRNaW5IZWlnaHQobCk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1By
b3BlcnR5VmVydGljYWxBbGlnbjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
dmVydGljYWxBbGlnbiwgVmVydGljYWxBbGlnbikKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSB7Ci0gICAgICAgICAgRVZlcnRpY2FsQWxpZ24gYWxpZ247Ci0KLSAgICAgICAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVRvcDoKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBUT1A7IGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVCb3R0b206Ci0gICAgICAgICAgICAgICAgICAg
IGFsaWduID0gQk9UVE9NOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTWlk
ZGxlOgotICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IE1JRERMRTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUJhc2VsaW5lOgotICAgICAgICAgICAgICAgICAgICBhbGln
biA9IEJBU0VMSU5FOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVGV4dEJv
dHRvbToKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBURVhUX0JPVFRPTTsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVRleHRUb3A6Ci0gICAgICAgICAgICAgICAgICAg
IGFsaWduID0gVEVYVF9UT1A7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVT
dWI6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1VCOyBicmVhazsKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlU3VwZXI6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1VQ
RVI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRCYXNlbGluZU1p
ZGRsZToKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBCQVNFTElORV9NSURETEU7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKGFsaWdu
KTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgaW50IHR5
cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAgIExlbmd0aCBs
OwotICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBl
KSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJ
bnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4
ZWQpOwotICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
RVJDRU5UQUdFKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91
YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0KLSAgICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEFs
aWduKExFTkdUSCk7Ci0gICAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxBbGlnbkxlbmd0aChs
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFNpemU6Ci0gICAgewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0g
bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRL
ZXl3b3JkU2l6ZSgwKTsKLSAgICAgICAgZmxvYXQgb2xkU2l6ZSA9IDA7Ci0gICAgICAgIGZsb2F0
IHNpemUgPSAwOwotICAgICAgICAKLSAgICAgICAgYm9vbCBwYXJlbnRJc0Fic29sdXRlU2l6ZSA9
IGZhbHNlOwotICAgICAgICBpZiAobV9wYXJlbnROb2RlKSB7Ci0gICAgICAgICAgICBvbGRTaXpl
ID0gbV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOwotICAg
ICAgICAgICAgcGFyZW50SXNBYnNvbHV0ZVNpemUgPSBtX3BhcmVudFN0eWxlLT5mb250RGVzY3Jp
cHRpb24oKS5pc0Fic29sdXRlU2l6ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzSW5o
ZXJpdCkgewotICAgICAgICAgICAgc2l6ZSA9IG9sZFNpemU7Ci0gICAgICAgICAgICBpZiAobV9w
YXJlbnROb2RlKQotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6
ZShtX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5rZXl3b3JkU2l6ZSgpKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIHNpemUgPSBmb250U2l6ZUZv
cktleXdvcmQobV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlTWVkaXVtLCBmb250RGVzY3Jp
cHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRLZXl3b3JkU2l6ZShDU1NWYWx1ZU1lZGl1bSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwot
ICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAg
ICAgICAvLyBLZXl3b3JkcyBhcmUgYmVpbmcgdXNlZC4KLSAgICAgICAgICAgIHN3aXRjaCAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
WHhTbWFsbDoKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlWFNtYWxsOgotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFsbDoKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
TWVkaXVtOgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKLSAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlWExhcmdlOgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVY
eExhcmdlOgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRYeHhMYXJnZToKLSAg
ICAgICAgICAgICAgICAgICAgc2l6ZSA9IGZvbnRTaXplRm9yS2V5d29yZChtX2NoZWNrZXIubV9k
b2N1bWVudCwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCksIGZvbnREZXNjcmlwdGlvbi51c2VG
aXhlZERlZmF1bHRTaXplKCkpOwotICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0S2V5d29yZFNpemUocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgLSBDU1NWYWx1ZVh4U21h
bGwgKyAxKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUxhcmdlcjoKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IGxhcmdlckZvbnRT
aXplKG9sZFNpemUsIG1fY2hlY2tlci5tX2RvY3VtZW50LT5pblF1aXJrc01vZGUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFs
bGVyOgotICAgICAgICAgICAgICAgICAgICBzaXplID0gc21hbGxlckZvbnRTaXplKG9sZFNpemUs
IG1fY2hlY2tlci5tX2RvY3VtZW50LT5pblF1aXJrc01vZGUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dElzQWJzb2x1dGVTaXplKHBhcmVudElzQWJzb2x1dGVTaXplICYmIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUxhcmdlciB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVNtYWxs
ZXIpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJ
c0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29sdXRlU2l6ZSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TICYmIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICE9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRVhTICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TKSk7Ci0gICAgICAg
ICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAg
ICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQobV9w
YXJlbnRTdHlsZSwgbV9yb290RWxlbWVudFN0eWxlLCB0cnVlKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAg
ICAgICAgIHNpemUgPSAocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSAqIG9sZFNpemUp
IC8gMTAwLjBmOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBzZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIHNpemUpOwotICAgICAgICBpZiAo
bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAg
ICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNl
IENTU1Byb3BlcnR5WkluZGV4OiB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIGlmIChtX3BhcmVudFN0eWxlLT5oYXNBdXRvWkluZGV4KCkpCi0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0SGFzQXV0b1pJbmRleCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldFpJbmRleChtX3BhcmVudFN0eWxlLT56SW5kZXgoKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0SGFzQXV0b1pJbmRleCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGNsYW1wIGFsbCBzb3J0cyBvZiBvdGhl
ciBpbnRlZ2VyIHByb3BlcnRpZXMgdG9vLgotICAgICAgICBtX3N0eWxlLT5zZXRaSW5kZXgoY2xh
bXBUb0ludGVnZXIocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2lkb3dzOgotICAgIHsKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwod2lkb3dzLCBXaWRvd3MpCi0gICAgICAgIGlm
ICghcHJpbWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV9zdHlsZS0+c2V0V2lkb3dzKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU9ycGhh
bnM6Ci0gICAgewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChvcnBoYW5zLCBP
cnBoYW5zKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8IHByaW1pdGl2ZVZhbHVlLT5w
cmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldE9ycGhhbnMocHJpbWl0aXZlVmFsdWUt
PmdldEludFZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfSAgICAgICAgCi0KLS8vIGxl
bmd0aCwgcGVyY2VudCwgbnVtYmVyCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQ6Ci0g
ICAgewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChsaW5lSGVpZ2h0LCBMaW5l
SGVpZ2h0KQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBMZW5ndGggbGluZUhlaWdodDsKLSAgICAgICAgaW50IHR5cGUgPSBwcmltaXRp
dmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCi0gICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVu
Z3RoKC0xMDAuMCwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UgaWYgKENTU1ByaW1pdGl2ZVZhbHVl
Ojppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7Ci0gICAgICAgICAgICBkb3VibGUgbXVsdGlwbGll
ciA9IHpvb21GYWN0b3I7Ci0gICAgICAgICAgICBpZiAobV9zdHlsZS0+dGV4dFNpemVBZGp1c3Qo
KSkgewotICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2NoZWNrZXIubV9kb2N1
bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciAqPSBmcmFtZS0+
dGV4dFpvb21GYWN0b3IoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxpbmVIZWlnaHQg
PSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCAgbXVsdGlwbGllciksIEZpeGVkKTsKLSAgICAgICAgfSBl
bHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAg
ICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgoKG1fc3R5bGUtPmZvbnRTaXplKCkgKiBwcmltaXRp
dmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKLSAgICAgICAgZWxzZSBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAgIGxpbmVI
ZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgKiAxMDAuMCwg
UGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9z
dHlsZS0+c2V0TGluZUhlaWdodChsaW5lSGVpZ2h0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotLy8gc3RyaW5nCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGlnbjoKLSAgICB7Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRBbGlnbiwgVGV4dEFsaWduKQotICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBp
bnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKLSAgICAgICAgaWYgKGlkID09IENT
U1ZhbHVlU3RhcnQpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0QWxpZ24obV9zdHlsZS0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTEVGVCA6IFJJR0hUKTsKLSAgICAgICAgZWxzZSBp
ZiAoaWQgPT0gQ1NTVmFsdWVFbmQpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0QWxpZ24o
bV9zdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gUklHSFQgOiBMRUZUKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEFsaWduKCpwcmltaXRpdmVWYWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLS8vIHJlY3QKLSAgICBjYXNlIENTU1Byb3Bl
cnR5Q2xpcDoKLSAgICB7Ci0gICAgICAgIExlbmd0aCB0b3A7Ci0gICAgICAgIExlbmd0aCByaWdo
dDsKLSAgICAgICAgTGVuZ3RoIGJvdHRvbTsKLSAgICAgICAgTGVuZ3RoIGxlZnQ7Ci0gICAgICAg
IGJvb2wgaGFzQ2xpcCA9IHRydWU7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIGlmIChtX3BhcmVudFN0eWxlLT5oYXNDbGlwKCkpIHsKLSAgICAgICAgICAgICAgICB0b3Ag
PSBtX3BhcmVudFN0eWxlLT5jbGlwVG9wKCk7Ci0gICAgICAgICAgICAgICAgcmlnaHQgPSBtX3Bh
cmVudFN0eWxlLT5jbGlwUmlnaHQoKTsKLSAgICAgICAgICAgICAgICBib3R0b20gPSBtX3BhcmVu
dFN0eWxlLT5jbGlwQm90dG9tKCk7Ci0gICAgICAgICAgICAgICAgbGVmdCA9IG1fcGFyZW50U3R5
bGUtPmNsaXBMZWZ0KCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGhh
c0NsaXAgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB0b3AgPSByaWdodCA9IGJvdHRvbSA9IGxl
ZnQgPSBMZW5ndGgoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRp
YWwpIHsKLSAgICAgICAgICAgIGhhc0NsaXAgPSBmYWxzZTsKLSAgICAgICAgICAgIHRvcCA9IHJp
Z2h0ID0gYm90dG9tID0gbGVmdCA9IExlbmd0aCgpOwotICAgICAgICB9IGVsc2UgaWYgKCFwcmlt
aXRpdmVWYWx1ZSkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19S
RUNUKSB7Ci0gICAgICAgICAgICBSZWN0KiByZWN0ID0gcHJpbWl0aXZlVmFsdWUtPmdldFJlY3RW
YWx1ZSgpOwotICAgICAgICAgICAgaWYgKCFyZWN0KQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT50b3AoKSwgc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIHJpZ2h0ID0gY29u
dmVydFRvTGVuZ3RoKHJlY3QtPnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwg
em9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+
Ym90dG9tKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAg
ICAgICAgICBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHJlY3QtPmxlZnQoKSwgc3R5bGUoKSwgbV9y
b290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgfSBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pIHsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICBtX3N0eWxlLT5zZXRDbGlwKHRvcCwgcmlnaHQsIGJvdHRv
bSwgbGVmdCk7Ci0gICAgICAgIG1fc3R5bGUtPnNldEhhc0NsaXAoaGFzQ2xpcCk7Ci0gICAgCi0g
ICAgICAgIC8vIHJlY3QsIGlkZW50Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLS8vIGxpc3Rz
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvbnRlbnQ6Ci0gICAgICAgIC8vIGxpc3Qgb2Ygc3RyaW5n
LCB1cmksIGNvdW50ZXIsIGF0dHIsIGkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbiBDU1Mz
LCBpdCB3aWxsIGJlIHBvc3NpYmxlIHRvIGluaGVyaXQgY29udGVudC4gIEluIENTUzIgaXQgaXMg
bm90LiAgVGhpcwotICAgICAgICAvLyBub3RlIGlzIGEgcmVtaW5kZXIgdGhhdCBldmVudHVhbGx5
ICJpbmhlcml0IiBuZWVkcyB0byBiZSBzdXBwb3J0ZWQuCi0KLSAgICAgICAgaWYgKGlzSW5pdGlh
bCkgewotICAgICAgICAgICAgbV9zdHlsZS0+Y2xlYXJDb250ZW50KCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghdmFsdWUtPmlzVmFsdWVM
aXN0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAgICAgICBpbnQgbGVuID0g
bGlzdC0+bGVuZ3RoKCk7Ci0KLSAgICAgICAgYm9vbCBkaWRTZXQgPSBmYWxzZTsKLSAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgQ1NTVmFsdWUqIGl0
ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgaWYgKGl0
ZW0tPmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0Q29udGVudChzdGF0aWNfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4oaXRlbSktPmdl
bmVyYXRlZEltYWdlKCksIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwotICAgICAgICAgICAgc3dpdGNoIChjb250ZW50
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19TVFJJTkc6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENv
bnRlbnQoY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgZGlkU2V0KTsKLSAg
ICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0FUVFI6IHsK
LSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IENhbiBhIG5hbWVzcGFjZSBiZSBzcGVjaWZp
ZWQgZm9yIGFuIGF0dHIoZm9vKT8KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnN0
eWxlVHlwZSgpID09IE5PUFNFVURPKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0VW5pcXVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcGFyZW50U3R5bGUtPnNldFVuaXF1ZSgpOwotICAgICAgICAgICAgICAgICAgICBR
dWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20sIGNvbnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUo
KS5pbXBsKCksIG51bGxBdG9tKTsKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29u
dGVudChtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZShhdHRyKS5pbXBsKCksIGRpZFNldCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHJl
Z2lzdGVyIHRoZSBmYWN0IHRoYXQgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBhZmZlY3RzIHRoZSBzdHls
ZQotICAgICAgICAgICAgICAgICAgICBtX3NlbGVjdG9yQXR0cnMuYWRkKGF0dHIubG9jYWxOYW1l
KCkuaW1wbCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkk6IHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZW50VmFsdWUtPmlzSW1hZ2VWYWx1ZSgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUt
PnNldENvbnRlbnQoY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q29udGVudCwg
c3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KGNvbnRlbnRWYWx1ZSkpLCBkaWRTZXQpOwotICAg
ICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0NPVU5URVI6IHsKLSAgICAgICAgICAgICAgICAgICAgQ291bnRlciogY291bnRl
clZhbHVlID0gY29udGVudFZhbHVlLT5nZXRDb3VudGVyVmFsdWUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgT3duUHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyID0gYWRvcHRQdHIobmV3IENvdW50
ZXJDb250ZW50KGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgKEVMaXN0U3R5bGVUeXBlKWNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlTnVtYmVyKCksIGNv
dW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0Q29udGVudChjb3VudGVyLnJlbGVhc2UoKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAg
ICAgZGlkU2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKCFkaWRTZXQpCi0gICAgICAgICAgICBtX3N0eWxlLT5jbGVhckNv
bnRlbnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlD
b3VudGVySW5jcmVtZW50OgotICAgICAgICBhcHBseUNvdW50ZXJMaXN0KHN0eWxlKCksIHZhbHVl
LT5pc1ZhbHVlTGlzdCgpID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpIDogMCwg
ZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNl
dDoKLSAgICAgICAgYXBwbHlDb3VudGVyTGlzdChzdHlsZSgpLCB2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSA/IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKSA6IDAsIHRydWUpOwotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseTogewotICAgICAgICAv
LyBsaXN0IG9mIHN0cmluZ3MgYW5kIGlkcwotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAg
ICAgICAgICBGb250RGVzY3JpcHRpb24gcGFyZW50Rm9udERlc2NyaXB0aW9uID0gbV9wYXJlbnRT
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShwYXJlbnRGb250RGVzY3JpcHRpb24uZ2Vu
ZXJpY0ZhbWlseSgpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbHkocGFy
ZW50Rm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkpOwotICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldElzU3BlY2lmaWVkRm9udChwYXJlbnRGb250RGVzY3JpcHRpb24uaXNTcGVjaWZp
ZWRGb250KCkpOwotICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihm
b250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAg
ICAgICAgIEZvbnREZXNjcmlwdGlvbiBpbml0aWFsRGVzYyA9IEZvbnREZXNjcmlwdGlvbigpOwot
ICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpOwotICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgdGhlIHNp
emUgdG8gYWNjb3VudCBmb3IgdGhlIGdlbmVyaWMgZmFtaWx5IGNoYW5nZSBmcm9tIG1vbm9zcGFj
ZQotICAgICAgICAgICAgLy8gdG8gbm9uLW1vbm9zcGFjZS4KLSAgICAgICAgICAgIGlmIChmb250
RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZh
dWx0U2l6ZSgpKQotICAgICAgICAgICAgICAgIHNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwg
Zm9udFNpemVGb3JLZXl3b3JkKG1fY2hlY2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZVh4U21hbGwg
KyBmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAtIDEsIGZhbHNlKSk7Ci0gICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShpbml0aWFsRGVzYy5nZW5lcmljRmFt
aWx5KCkpOwotICAgICAgICAgICAgaWYgKCFpbml0aWFsRGVzYy5maXJzdEZhbWlseSgpLmZhbWls
eUlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0RmFtaWx5KGlu
aXRpYWxEZXNjLmZpcnN0RmFtaWx5KCkpOwotICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAgICAgIG1fZm9udERp
cnR5ID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNj
cmlwdGlvbigpOwotICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NW
YWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLSAg
ICAgICAgRm9udEZhbWlseSYgZmlyc3RGYW1pbHkgPSBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1p
bHkoKTsKLSAgICAgICAgRm9udEZhbWlseSogY3VyckZhbWlseSA9IDA7Ci0gICAgICAgIAotICAg
ICAgICAvLyBCZWZvcmUgbWFwcGluZyBpbiBhIG5ldyBmb250LWZhbWlseSBwcm9wZXJ0eSwgd2Ug
c2hvdWxkIHJlc2V0IHRoZSBnZW5lcmljIGZhbWlseS4KLSAgICAgICAgYm9vbCBvbGRGYW1pbHlV
c2VkRml4ZWREZWZhdWx0U2l6ZSA9IGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXpl
KCk7Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlw
dGlvbjo6Tm9GYW1pbHkpOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKysp
IHsKLSAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjayhpKTsKLSAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNv
bnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAg
ICAgICAgICBBdG9taWNTdHJpbmcgZmFjZTsKLSAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOwotICAgICAgICAgICAgaWYgKGNv
bnRlbnRWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RS
SU5HKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS0+aXNGb250RmFtaWx5VmFs
dWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZmFjZSA9IHN0YXRpY19jYXN0PEZvbnRGYW1pbHlW
YWx1ZSo+KGNvbnRlbnRWYWx1ZSktPmZhbWlseU5hbWUoKTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY29udGVudFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19JREVOVCAmJiBzZXR0aW5ncykgewotICAgICAgICAgICAgICAgIHN3aXRjaCAoY29udGVudFZh
bHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJr
aXRCb2R5OgotICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9IHNldHRpbmdzLT5zdGFuZGFy
ZEZvbnRGYW1pbHkoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2VyaWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBm
YWNlID0gIi13ZWJraXQtc2VyaWYiOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpTZXJpZkZhbWlseSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVNhbnNTZXJpZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtp
dC1zYW5zLXNlcmlmIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U2Fuc1NlcmlmRmFtaWx5KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlQ3Vyc2l2ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1jdXJz
aXZlIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmlj
RmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6Q3Vyc2l2ZUZhbWlseSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUZhbnRhc3k6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtZmFudGFzeSI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250
RGVzY3JpcHRpb246OkZhbnRhc3lGYW1pbHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNb25vc3BhY2U6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtbW9ub3NwYWNlIjsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlw
dGlvbjo6TW9ub3NwYWNlRmFtaWx5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFmYWNl
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGlmICghY3VyckZhbWlseSkgewotICAgICAg
ICAgICAgICAgICAgICAvLyBGaWxsaW5nIGluIHRoZSBmaXJzdCBmYW1pbHkuCi0gICAgICAgICAg
ICAgICAgICAgIGZpcnN0RmFtaWx5LnNldEZhbWlseShmYWNlKTsKLSAgICAgICAgICAgICAgICAg
ICAgZmlyc3RGYW1pbHkuYXBwZW5kRmFtaWx5KDApOyAvLyBSZW1vdmUgYW55IGluaGVyaXRlZCBm
YW1pbHktZmFsbGJhY2sgbGlzdC4KLSAgICAgICAgICAgICAgICAgICAgY3VyckZhbWlseSA9ICZm
aXJzdEZhbWlseTsKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzU3Bl
Y2lmaWVkRm9udChmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpID09IEZvbnREZXNjcmlw
dGlvbjo6Tm9GYW1pbHkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdGYW1pbHkgPSBTaGFyZWRGb250RmFt
aWx5OjpjcmVhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgbmV3RmFtaWx5LT5zZXRGYW1pbHko
ZmFjZSk7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPmFwcGVuZEZhbWlseShuZXdG
YW1pbHkpOwotICAgICAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0gbmV3RmFtaWx5LmdldCgp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IC8vIFdlIGNhbid0IGNhbGwgdXNlRml4ZWREZWZhdWx0U2l6ZSgpIHVudGlsIGFsbCBuZXcgZm9u
dCBmYW1pbGllcyBoYXZlIGJlZW4gYWRkZWQKLSAgICAgICAgLy8gSWYgY3VyckZhbWlseSBpcyBu
b24temVybyB0aGVuIHdlIHNldCBhdCBsZWFzdCBvbmUgZmFtaWx5IG9uIHRoaXMgZGVzY3JpcHRp
b24uCi0gICAgICAgIGlmIChjdXJyRmFtaWx5KSB7Ci0gICAgICAgICAgICBpZiAoZm9udERlc2Ny
aXB0aW9uLmtleXdvcmRTaXplKCkgJiYgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNp
emUoKSAhPSBvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkKLSAgICAgICAgICAgICAgICBz
ZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRTaXplRm9yS2V5d29yZChtX2NoZWNrZXIu
bV9kb2N1bWVudCwgQ1NTVmFsdWVYeFNtYWxsICsgZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXpl
KCkgLSAxLCAhb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUpKTsKLQotICAgICAgICAgICAg
aWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAg
ICAgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjogewotICAgICAgICAv
LyBsaXN0IG9mIGlkZW50Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRE
ZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvbikKLSAgICAgICAgaW50IHQgPSBSZW5kZXJTdHlsZTo6
aW5pdGlhbFRleHREZWNvcmF0aW9uKCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgICAg
IC8vIGRvIG5vdGhpbmcKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghdmFsdWUt
PmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgQ1NT
VmFsdWVMaXN0ICpsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAg
ICAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBDU1NW
YWx1ZSAqaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgdCA9IFRETk9ORTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVVbmRlcmxpbmU6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0IHw9IFVOREVSTElORTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVPdmVybGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHQgfD0gT1ZFUkxJTkU7
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGluZVRocm91Z2g6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0IHw9IExJTkVfVEhST1VHSDsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVCbGluazoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHQgfD0gQkxJTks7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIG1fc3R5bGUtPnNldFRleHREZWNvcmF0aW9uKHQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVpvb206Ci0gICAg
ewotICAgICAgICAvLyBSZXNldCB0aGUgem9vbSBpbiBlZmZlY3QgYmVmb3JlIHdlIGRvIGFueXRo
aW5nLiAgVGhpcyBhbGxvd3MgdGhlIHNldFpvb20gbWV0aG9kIHRvIGFjY3VyYXRlbHkgY29tcHV0
ZSBhIG5ldwotICAgICAgICAvLyB6b29tIGluIGVmZmVjdC4KLSAgICAgICAgbV9zdHlsZS0+c2V0
RWZmZWN0aXZlWm9vbShtX3BhcmVudFN0eWxlID8gbV9wYXJlbnRTdHlsZS0+ZWZmZWN0aXZlWm9v
bSgpIDogUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwotICAgICAgICAKLSAgICAgICAgLy8g
Tm93IHdlIGNhbiBoYW5kbGUgaW5oZXJpdCBhbmQgaW5pdGlhbC4KLSAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwoem9vbSwgWm9vbSkKLSAgICAgICAgCi0gICAgICAgIC8vIEhhbmRs
ZSBub3JtYWwvcmVzZXQsIG51bWJlcnMgYW5kIHBlcmNlbnRhZ2VzLgotICAgICAgICBpbnQgdHlw
ZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwotICAgICAgICBlbHNlIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVJlc2V0KSB7Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRFZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgp
KTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29t
KCkpOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlRG9jdW1lbnQpIHsKLSAgICAgICAgICAgIGZsb2F0IGRvY1pvb20gPSBtX2NoZWNrZXIu
bV9kb2N1bWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+em9vbSgpOwotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0RWZmZWN0aXZlWm9vbShkb2Nab29tKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dFpvb20oZG9jWm9vbSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIHsKLSAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0RmxvYXRWYWx1ZSgpKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFpvb20ocHJpbWl0
aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSAvIDEwMC4wZik7Ci0gICAgICAgIH0gZWxzZSBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgewotICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCi0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Wm9vbShwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotLy8gc2hvcnRoYW5kIHByb3BlcnRpZXMKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZDoKLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+Y2xl
YXJCYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCYWNrZ3JvdW5k
Q29sb3IoQ29sb3IoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbmhlcml0KSB7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5pbmhlcml0QmFja2dyb3VuZExheWVycygqbV9wYXJlbnRT
dHlsZS0+YmFja2dyb3VuZExheWVycygpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJhY2tn
cm91bmRDb2xvcihtX3BhcmVudFN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgotICAgICAg
ICBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+Y2xlYXJNYXNrTGF5ZXJzKCk7
Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmluaGVy
aXRNYXNrTGF5ZXJzKCptX3BhcmVudFN0eWxlLT5tYXNrTGF5ZXJzKCkpOwotICAgICAgICByZXR1
cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yOgotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlCb3Jk
ZXIgfHwgaWQgPT0gQ1NTUHJvcGVydHlCb3JkZXJDb2xvcikKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRv
cENvbG9yKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcENvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJl
bnRTdHlsZS0+Ym9yZGVyVG9wQ29sb3IoKSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbUNvbG9yKG1fcGFyZW50U3R5bGUt
PmJvcmRlckJvdHRvbUNvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90
dG9tQ29sb3IoKSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldEJvcmRlckxlZnRDb2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0Q29sb3Io
KS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3JkZXJMZWZ0Q29sb3IoKSA6IG1fcGFyZW50
U3R5bGUtPmNvbG9yKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0
Q29sb3IobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpLmlzVmFsaWQoKSA/IG1fcGFy
ZW50U3R5bGUtPmJvcmRlclJpZ2h0Q29sb3IoKTogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BDb2xvcihDb2xvcigpKTsgLy8gUmVzZXQgdG8g
aW52YWxpZCBjb2xvciBzbyBjdXJyZW50Q29sb3IgaXMgdXNlZCBpbnN0ZWFkLgotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbUNvbG9yKENvbG9yKCkpOwotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRDb2xvcihDb2xvcigpKTsKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodENvbG9yKENvbG9yKCkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUJvcmRlciB8fCBpZCA9
PSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNJ
bmhlcml0KSB7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wU3R5bGUobV9w
YXJlbnRTdHlsZS0+Ym9yZGVyVG9wU3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0Qm9yZGVyQm90dG9tU3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90dG9tU3R5bGUoKSk7
Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdFN0eWxlKG1fcGFyZW50U3R5
bGUtPmJvcmRlckxlZnRTdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3Jk
ZXJSaWdodFN0eWxlKG1fcGFyZW50U3R5bGUtPmJvcmRlclJpZ2h0U3R5bGUoKSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BTdHlsZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0
eWxlKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVN0eWxlKFJl
bmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Qm9yZGVyTGVmdFN0eWxlKFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUoKSk7
Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRTdHlsZShSZW5kZXJTdHls
ZTo6aW5pdGlhbEJvcmRlclN0eWxlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUJvcmRlciB8fCBpZCA9PSBDU1NQcm9wZXJ0eUJvcmRl
cldpZHRoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVy
VG9wV2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tV2lk
dGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyTGVmdFdpZHRoKG1fcGFyZW50U3R5bGUtPmJvcmRlckxlZnRXaWR0
aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodFdpZHRoKG1fcGFy
ZW50U3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3Jk
ZXJUb3BXaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoKCkpOwotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFs
Qm9yZGVyV2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdFdp
ZHRoKFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRXaWR0aChSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldp
ZHRoKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAg
ICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BDb2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJU
b3BDb2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcENvbG9yKCkgOiBt
X3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRv
cFN0eWxlKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcFN0eWxlKCkpOwotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Qm9yZGVyVG9wV2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9wV2lkdGgoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9z
dHlsZS0+cmVzZXRCb3JkZXJUb3AoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodDoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRDb2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdodENv
bG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpIDogbV9w
YXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdo
dFN0eWxlKG1fcGFyZW50U3R5bGUtPmJvcmRlclJpZ2h0U3R5bGUoKSk7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRCb3JkZXJSaWdodFdpZHRoKG1fcGFyZW50U3R5bGUtPmJvcmRlclJpZ2h0V2lk
dGgoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAg
ICAgbV9zdHlsZS0+cmVzZXRCb3JkZXJSaWdodCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3IobV9wYXJlbnRTdHlsZS0+Ym9y
ZGVyQm90dG9tQ29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21D
b2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRCb3JkZXJCb3R0b21TdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21TdHlsZSgpKTsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVdpZHRoKG1fcGFyZW50U3R5bGUt
PmJvcmRlckJvdHRvbVdpZHRoKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5p
dGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0Qm9yZGVyQm90dG9tKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKLSAgICAgICAgaWYgKGlz
SW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9yKG1fcGFy
ZW50U3R5bGUtPmJvcmRlckxlZnRDb2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJv
cmRlckxlZnRDb2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRCb3JkZXJMZWZ0U3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdFN0eWxl
KCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdFdpZHRoKG1fcGFyZW50U3R5
bGUtPmJvcmRlckxlZnRXaWR0aCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0lu
aXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5yZXNldEJvcmRlckxlZnQoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46Ci0gICAgICAgIGlmIChpc0luaGVy
aXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpblRvcChtX3BhcmVudFN0eWxlLT5t
YXJnaW5Ub3AoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5Cb3R0b20obV9wYXJl
bnRTdHlsZS0+bWFyZ2luQm90dG9tKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2lu
TGVmdChtX3BhcmVudFN0eWxlLT5tYXJnaW5MZWZ0KCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0TWFyZ2luUmlnaHQobV9wYXJlbnRTdHlsZS0+bWFyZ2luUmlnaHQoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+cmVzZXRN
YXJnaW4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgot
ICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRQYWRkaW5n
VG9wKG1fcGFyZW50U3R5bGUtPnBhZGRpbmdUb3AoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRQYWRkaW5nQm90dG9tKG1fcGFyZW50U3R5bGUtPnBhZGRpbmdCb3R0b20oKSk7Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRQYWRkaW5nTGVmdChtX3BhcmVudFN0eWxlLT5wYWRkaW5nTGVmdCgp
KTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdSaWdodChtX3BhcmVudFN0eWxlLT5w
YWRkaW5nUmlnaHQoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQot
ICAgICAgICAgICAgbV9zdHlsZS0+cmVzZXRQYWRkaW5nKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAg
ICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fcGFyZW50U3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGluZUhlaWdodChtX3Bh
cmVudFN0eWxlLT5saW5lSGVpZ2h0KCkpOwotICAgICAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUg
PSAwOwotICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pKQotICAgICAgICAgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAg
fSBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IG1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOwotICAgICAgICAgICAgQVNTRVJUKHNl
dHRpbmdzKTsgLy8gSWYgd2UncmUgZG9pbmcgc3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBkb2N1bWVu
dCBzaG91bGQgYWx3YXlzIGJlIGluIGEgZnJhbWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5ncwotICAg
ICAgICAgICAgaWYgKCFzZXR0aW5ncykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwotICAgICAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpTdGFuZGFyZEZhbWls
eSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5n
cy0+Zm9udFJlbmRlcmluZ01vZGUoKSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
VXNlUHJpbnRlckZvbnQobV9jaGVja2VyLm1fZG9jdW1lbnQtPnByaW50aW5nKCkpOwotICAgICAg
ICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGFuZGFyZEZvbnRGYW1pbHkgPSBtX2NoZWNrZXIu
bV9kb2N1bWVudC0+c2V0dGluZ3MoKS0+c3RhbmRhcmRGb250RmFtaWx5KCk7Ci0gICAgICAgICAg
ICBpZiAoIXN0YW5kYXJkRm9udEZhbWlseS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoc3RhbmRhcmRGb250RmFtaWx5
KTsKLSAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5hcHBlbmRG
YW1pbHkoMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
S2V5d29yZFNpemUoQ1NTVmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKLSAgICAg
ICAgICAgIHNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgZm9udFNpemVGb3JLZXl3b3JkKG1f
Y2hlY2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZU1lZGl1bSwgZmFsc2UpKTsKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkp
OwotICAgICAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwotICAgICAgICAgICAgaWYgKG1f
c3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQotICAgICAgICAgICAg
ICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZSkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5p
dGlhbExpbmVIZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247
Ci0gICAgICAgICAgICBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5c3RlbUZvbnQocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCksIGZvbnREZXNjcmlwdGlvbik7Ci0KLSAgICAgICAgICAg
IC8vIERvdWJsZS1jaGVjayBhbmQgc2VlIGlmIHRoZSB0aGVtZSBkaWQgYW55dGhpbmcuICBJZiBu
b3QsIGRvbid0IGJvdGhlciB1cGRhdGluZyB0aGUgZm9udC4KLSAgICAgICAgICAgIGlmIChmb250
RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSkgewotICAgICAgICAgICAgICAgIC8vIE1ha2Ug
c3VyZSB0aGUgcmVuZGVyaW5nIG1vZGUgYW5kIHByaW50ZXIgZm9udCBzZXR0aW5ncyBhcmUgdXBk
YXRlZC4KLSAgICAgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2NoZWNrZXIubV9k
b2N1bWVudC0+c2V0dGluZ3MoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc2V0dGluZ3MpOyAv
LyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRvY3VtZW50IHNob3VsZCBh
bHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdzCi0gICAgICAgICAgICAg
ICAgaWYgKCFzZXR0aW5ncykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5mb250UmVu
ZGVyaW5nTW9kZSgpKTsKLSAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0VXNlUHJp
bnRlckZvbnQobV9jaGVja2VyLm1fZG9jdW1lbnQtPnByaW50aW5nKCkpOwotICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIHpvb20gZmFjdG9yLgotICAgICAgICAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZ2V0Q29tcHV0ZWRTaXplRnJvbVNw
ZWNpZmllZFNpemUobV9jaGVja2VyLm1fZG9jdW1lbnQsIG1fc3R5bGUuZ2V0KCksIGZvbnREZXNj
cmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCBmb250RGVzY3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgp
LCB1c2VTVkdab29tUnVsZXMpKTsKLSAgICAgICAgICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9u
dERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIG1fZm9u
dERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+
aXNGb250VmFsdWUoKSkgewotICAgICAgICAgICAgRm9udFZhbHVlICpmb250ID0gc3RhdGljX2Nh
c3Q8Rm9udFZhbHVlKj4odmFsdWUpOwotICAgICAgICAgICAgaWYgKCFmb250LT5zdHlsZSB8fCAh
Zm9udC0+dmFyaWFudCB8fCAhZm9udC0+d2VpZ2h0IHx8Ci0gICAgICAgICAgICAgICAgICFmb250
LT5zaXplIHx8ICFmb250LT5saW5lSGVpZ2h0IHx8ICFmb250LT5mYW1pbHkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRT
dHlsZSwgZm9udC0+c3R5bGUuZ2V0KCkpOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRWYXJpYW50LCBmb250LT52YXJpYW50LmdldCgpKTsKLSAgICAgICAgICAgIGFw
cGx5UHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCBmb250LT53ZWlnaHQuZ2V0KCkpOwot
ICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBmb250LT5zaXpl
LmdldCgpKTsKLQotICAgICAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSBmb250LT5saW5lSGVp
Z2h0LmdldCgpOwotCi0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZh
bWlseSwgZm9udC0+ZmFtaWx5LmdldCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0g
ICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6Ci0gICAgICAgIGlmIChpc0lu
aGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHlsZVR5cGUobV9wYXJlbnRT
dHlsZS0+bGlzdFN0eWxlVHlwZSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHls
ZUltYWdlKG1fcGFyZW50U3R5bGUtPmxpc3RTdHlsZUltYWdlKCkpOwotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0TGlzdFN0eWxlUG9zaXRpb24obV9wYXJlbnRTdHlsZS0+bGlzdFN0eWxlUG9zaXRp
b24oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVUeXBlKFJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0
eWxlVHlwZSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHlsZUltYWdlKFJlbmRl
clN0eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRMaXN0U3R5bGVQb3NpdGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZVBvc2l0aW9u
KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZToKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
T3V0bGluZVdpZHRoKG1fcGFyZW50U3R5bGUtPm91dGxpbmVXaWR0aCgpKTsKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldE91dGxpbmVDb2xvcihtX3BhcmVudFN0eWxlLT5vdXRsaW5lQ29sb3IoKS5p
c1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5vdXRsaW5lQ29sb3IoKSA6IG1fcGFyZW50U3R5bGUt
PmNvbG9yKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZVN0eWxlKG1fcGFyZW50
U3R5bGUtPm91dGxpbmVTdHlsZSgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0lu
aXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5yZXNldE91dGxpbmUoKTsKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gQ1NTMyBQcm9wZXJ0aWVzCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEFwcGVhcmFuY2U6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYXBwZWFy
YW5jZSwgQXBwZWFyYW5jZSkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0QXBwZWFyYW5jZSgqcHJpbWl0aXZlVmFs
dWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckltYWdlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2U6IHsK
LSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09O
RChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlLCBib3JkZXJJbWFnZSwgQm9yZGVySW1hZ2Up
Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5V2Via2l0TWFza0Jv
eEltYWdlLCBtYXNrQm94SW1hZ2UsIE1hc2tCb3hJbWFnZSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTklU
SUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlLCBCb3JkZXJJ
bWFnZSwgTmluZVBpZWNlSW1hZ2UpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJ
VEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIE1hc2tCb3hJbWFnZSwgTmlu
ZVBpZWNlSW1hZ2UpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBO
aW5lUGllY2VJbWFnZSBpbWFnZTsKLSAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2UocHJvcGVydHks
IHZhbHVlLCBpbWFnZSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJJbWFnZSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckltYWdlKGlt
YWdlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFza0JveEltYWdl
KGltYWdlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1czoKLSAg
ICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9w
TGVmdFJhZGl1cyhtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkpOwotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMobV9wYXJlbnRTdHlsZS0+Ym9y
ZGVyVG9wUmlnaHRSYWRpdXMoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0
b21MZWZ0UmFkaXVzKG1fcGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSk7Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhtX3BhcmVudFN0
eWxlLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5y
ZXNldEJvcmRlclJhZGl1cygpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIC8vIEZhbGwgdGhyb3VnaAotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFk
aXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1czoKLSAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKLSAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6IHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAg
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXMsIGJvcmRlclRvcExlZnRSYWRpdXMsIEJvcmRlclRvcExlZnRSYWRpdXMpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIGJv
cmRlclRvcFJpZ2h0UmFkaXVzLCBCb3JkZXJUb3BSaWdodFJhZGl1cykKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBib3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzLCBCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKQotICAgICAgICAgICAg
SEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBi
b3JkZXJCb3R0b21SaWdodFJhZGl1cywgQm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChpc0luaXRpYWwp
IHsKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0
eUJvcmRlclRvcExlZnRSYWRpdXMsIEJvcmRlclRvcExlZnRSYWRpdXMsIEJvcmRlclJhZGl1cykK
LSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUJv
cmRlclRvcFJpZ2h0UmFkaXVzLCBCb3JkZXJUb3BSaWdodFJhZGl1cywgQm9yZGVyUmFkaXVzKQot
ICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tTGVmdFJhZGl1cywgQm9yZGVyQm90dG9tTGVmdFJhZGl1cywgQm9yZGVyUmFkaXVz
KQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBCb3JkZXJS
YWRpdXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXBy
aW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFBhaXIqIHBhaXIg
PSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7Ci0gICAgICAgIGlmICghcGFpciB8fCAh
cGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgTGVuZ3RoIHJhZGl1c1dpZHRoOwotICAgICAgICBMZW5ndGggcmFkaXVzSGVpZ2h0
OwotICAgICAgICBpZiAocGFpci0+Zmlyc3QoKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVu
Z3RoKHBhaXItPmZpcnN0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICByYWRpdXNXaWR0aCA9IExlbmd0aChtYXgoaW50TWluRm9yTGVuZ3Ro
LCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWlyLT5maXJzdCgpLT5jb21wdXRlTGVuZ3RoSW50KHN0
eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpKSwgRml4ZWQpOwotICAgICAg
ICBpZiAocGFpci0+c2Vjb25kKCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBMZW5ndGgocGFp
ci0+c2Vjb25kKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBMZW5ndGgobWF4KGludE1pbkZvckxlbmd0aCwgbWlu
KGludE1heEZvckxlbmd0aCwgcGFpci0+c2Vjb25kKCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSkpLCBGaXhlZCk7Ci0gICAgICAgIGlu
dCB3aWR0aCA9IHJhZGl1c1dpZHRoLnJhd1ZhbHVlKCk7Ci0gICAgICAgIGludCBoZWlnaHQgPSBy
YWRpdXNIZWlnaHQucmF3VmFsdWUoKTsKLSAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQg
PCAwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAod2lkdGggPT0gMCkKLSAgICAg
ICAgICAgIHJhZGl1c0hlaWdodCA9IHJhZGl1c1dpZHRoOyAvLyBOdWxsIG91dCB0aGUgb3RoZXIg
dmFsdWUuCi0gICAgICAgIGVsc2UgaWYgKGhlaWdodCA9PSAwKQotICAgICAgICAgICAgcmFkaXVz
V2lkdGggPSByYWRpdXNIZWlnaHQ7IC8vIE51bGwgb3V0IHRoZSBvdGhlciB2YWx1ZS4KLQotICAg
ICAgICBMZW5ndGhTaXplIHNpemUocmFkaXVzV2lkdGgsIHJhZGl1c0hlaWdodCk7Ci0gICAgICAg
IHN3aXRjaCAoaWQpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0
UmFkaXVzOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcExlZnRSYWRpdXMo
c2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9y
ZGVyVG9wUmlnaHRSYWRpdXMoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKHNpemUpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJp
Z2h0UmFkaXVzOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKHNpemUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSYWRpdXMoc2l6ZSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0OgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChvdXRsaW5lT2Zmc2V0LCBPdXRsaW5lT2Zmc2V0KQotICAgICAgICBtX3N0
eWxlLT5zZXRPdXRsaW5lT2Zmc2V0KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50KHN0
eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6IHsKLSAgICAgICAgRm9udERlc2Ny
aXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IG1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwotICAg
ICAgICBpZiAoaXNJbmhlcml0KSAKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRUZXh0
UmVuZGVyaW5nTW9kZShtX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS50ZXh0UmVuZGVy
aW5nTW9kZSgpKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFRleHRSZW5kZXJpbmdNb2RlKEF1dG9UZXh0UmVuZGVyaW5nKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRUZXh0UmVuZGVy
aW5nTW9kZSgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3N0eWxl
LT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgIG1fZm9u
dERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dFNoYWRvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2hhZG93OgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3c6IHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewot
ICAgICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbV9zdHlsZS0+c2V0VGV4dFNoYWRvdyhtX3BhcmVudFN0eWxlLT50ZXh0U2hh
ZG93KCkgPyBuZXcgU2hhZG93RGF0YSgqbV9wYXJlbnRTdHlsZS0+dGV4dFNoYWRvdygpKSA6IDAp
OwotICAgICAgICAgICAgcmV0dXJuIG1fc3R5bGUtPnNldEJveFNoYWRvdyhtX3BhcmVudFN0eWxl
LT5ib3hTaGFkb3coKSA/IG5ldyBTaGFkb3dEYXRhKCptX3BhcmVudFN0eWxlLT5ib3hTaGFkb3co
KSkgOiAwKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZh
bHVlKSAvLyBpbml0aWFsIHwgbm9uZQotICAgICAgICAgICAgcmV0dXJuIGlkID09IENTU1Byb3Bl
cnR5VGV4dFNoYWRvdyA/IG1fc3R5bGUtPnNldFRleHRTaGFkb3coMCkgOiBtX3N0eWxlLT5zZXRC
b3hTaGFkb3coMCk7Ci0KLSAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBDU1NWYWx1ZUxpc3QgKmxpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgo
KTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAg
Q1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7Ci0g
ICAgICAgICAgICBpZiAoIWN1cnJWYWx1ZS0+aXNTaGFkb3dWYWx1ZSgpKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgU2hhZG93VmFsdWUqIGl0ZW0gPSBzdGF0aWNfY2Fz
dDxTaGFkb3dWYWx1ZSo+KGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwotICAgICAg
ICAgICAgaW50IHggPSBpdGVtLT54LT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBpbnQgeSA9IGl0ZW0tPnktPmNv
bXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsK
LSAgICAgICAgICAgIGludCBibHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVM
ZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSA6IDA7Ci0g
ICAgICAgICAgICBpbnQgc3ByZWFkID0gaXRlbS0+c3ByZWFkID8gaXRlbS0+c3ByZWFkLT5jb21w
dXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikgOiAw
OwotICAgICAgICAgICAgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUgPSBpdGVtLT5zdHlsZSAmJiBp
dGVtLT5zdHlsZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluc2V0ID8gSW5zZXQgOiBOb3JtYWw7
Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGlmIChpdGVtLT5jb2xvcikK
LSAgICAgICAgICAgICAgICBjb2xvciA9IGdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGl0ZW0t
PmNvbG9yLmdldCgpKTsKLSAgICAgICAgICAgIFNoYWRvd0RhdGEqIHNoYWRvd0RhdGEgPSBuZXcg
U2hhZG93RGF0YSh4LCB5LCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBpZCA9PSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJh
bnNwYXJlbnQpOwotICAgICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykK
LSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0U2hhZG93KHNoYWRvd0RhdGEsIGkgIT0g
MCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm94U2hh
ZG93KHNoYWRvd0RhdGEsIGkgIT0gMCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdDogewotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hSZWZsZWN0LCBCb3hSZWZsZWN0KQotICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJveFJlZmxlY3Qo
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3hSZWZsZWN0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIXZhbHVlLT5pc1JlZmxlY3RWYWx1ZSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIENTU1JlZmxlY3RWYWx1ZSogcmVmbGVj
dFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUmVmbGVjdFZhbHVlKj4odmFsdWUpOwotICAgICAgICBS
ZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiByZWZsZWN0aW9uID0gU3R5bGVSZWZsZWN0aW9uOjpjcmVh
dGUoKTsKLSAgICAgICAgcmVmbGVjdGlvbi0+c2V0RGlyZWN0aW9uKHJlZmxlY3RWYWx1ZS0+ZGly
ZWN0aW9uKCkpOwotICAgICAgICBpZiAocmVmbGVjdFZhbHVlLT5vZmZzZXQoKSkgewotICAgICAg
ICAgICAgaW50IHR5cGUgPSByZWZsZWN0VmFsdWUtPm9mZnNldCgpLT5wcmltaXRpdmVUeXBlKCk7
Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UpCi0gICAgICAgICAgICAgICAgcmVmbGVjdGlvbi0+c2V0T2Zmc2V0KExlbmd0aChyZWZsZWN0
VmFsdWUtPm9mZnNldCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgcmVmbGVjdGlvbi0+c2V0T2Zmc2V0KExlbmd0aChyZWZs
ZWN0VmFsdWUtPm9mZnNldCgpLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvciksIEZpeGVkKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgTmluZVBpZWNlSW1hZ2UgbWFzazsKLSAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2UocHJvcGVy
dHksIHJlZmxlY3RWYWx1ZS0+bWFzaygpLCBtYXNrKTsKLSAgICAgICAgcmVmbGVjdGlvbi0+c2V0
TWFzayhtYXNrKTsKLSAgICAgICAgCi0gICAgICAgIG1fc3R5bGUtPnNldEJveFJlZmxlY3QocmVm
bGVjdGlvbi5yZWxlYXNlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NT
UHJvcGVydHlPcGFjaXR5OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChvcGFj
aXR5LCBPcGFjaXR5KQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8IHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0g
ICAgICAgICAgICByZXR1cm47IC8vIEVycm9yIGNhc2UuCi0gICAgICAgIC8vIENsYW1wIG9wYWNp
dHkgdG8gdGhlIHJhbmdlIDAtMQotICAgICAgICBtX3N0eWxlLT5zZXRPcGFjaXR5KG1pbigxLjBm
LCBtYXgoMC4wZiwgcHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoKLSAgICB7Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJveEFsaWduLCBCb3hBbGlnbikKLSAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRUJv
eEFsaWdubWVudCBib3hBbGlnbm1lbnQgPSAqcHJpbWl0aXZlVmFsdWU7Ci0gICAgICAgIGlmIChi
b3hBbGlnbm1lbnQgIT0gQkpVU1RJRlkpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3hBbGln
bihib3hBbGlnbm1lbnQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJv
cGVydHlTcmM6IC8vIE9ubHkgdXNlZCBpbiBAZm9udC1mYWNlIHJ1bGVzLgotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZTogLy8gT25seSB1c2VkIGluIEBm
b250LWZhY2UgcnVsZXMuCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0QmFja2ZhY2VWaXNpYmlsaXR5OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TChiYWNrZmFjZVZpc2liaWxpdHksIEJhY2tmYWNlVmlzaWJpbGl0eSkKLSAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5
KChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVZpc2libGUpID8gQmFja2Zh
Y2VWaXNpYmlsaXR5VmlzaWJsZSA6IEJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbik7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGJveERpcmVjdGlvbiwg
Qm94RGlyZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveExpbmVzOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlU
SVZFKGJveExpbmVzLCBCb3hMaW5lcykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3hPcmllbnQ6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUoYm94T3JpZW50LCBCb3hPcmllbnQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKGJveFBhY2ssIEJveFBhY2spCi0gICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEVCb3hBbGlnbm1lbnQgYm94
UGFjayA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAgaWYgKGJveFBhY2sgIT0gQlNUUkVUQ0gg
JiYgYm94UGFjayAhPSBCQkFTRUxJTkUpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3hQYWNr
KGJveFBhY2spOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hGbGV4OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hGbGV4
LCBCb3hGbGV4KQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8IHByaW1pdGl2ZVZhbHVl
LT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAg
ICAgICAgICByZXR1cm47IC8vIEVycm9yIGNhc2UuCi0gICAgICAgIG1fc3R5bGUtPnNldEJveEZs
ZXgocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwOgotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChib3hGbGV4R3JvdXAsIEJveEZsZXhHcm91cCkKLSAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgcmV0dXJuOyAvLyBFcnJv
ciBjYXNlLgotICAgICAgICBtX3N0eWxlLT5zZXRCb3hGbGV4R3JvdXAoKHVuc2lnbmVkIGludCko
cHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXA6Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKGJveE9yZGluYWxHcm91cCwgQm94T3JkaW5hbEdyb3VwKQotICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAgICByZXR1cm47
IC8vIEVycm9yIGNhc2UuCi0gICAgICAgIG1fc3R5bGUtPnNldEJveE9yZGluYWxHcm91cCgodW5z
aWduZWQgaW50KShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJveFNpemluZzoKLSAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwoYm94U2l6aW5nLCBCb3hTaXppbmcpCi0gICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRlbnRCb3gpCi0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3hTaXppbmcoQ09OVEVOVF9CT1gpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3hTaXppbmcoQk9SREVSX0JPWCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQ6IHsKLSAgICAgICAgaWYgKGlzSW5o
ZXJpdCkgewotICAgICAgICAgICAgaWYgKG1fcGFyZW50U3R5bGUtPmhhc0F1dG9Db2x1bW5Db3Vu
dCgpKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5Db3VudCgpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtbkNvdW50
KG1fcGFyZW50U3R5bGUtPmNvbHVtbkNvdW50KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUF1dG8pIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5D
b3VudCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUt
PnNldENvbHVtbkNvdW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihwcmltaXRpdmVWYWx1
ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXA6IHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewot
ICAgICAgICAgICAgaWYgKG1fcGFyZW50U3R5bGUtPmhhc05vcm1hbENvbHVtbkdhcCgpKQotICAg
ICAgICAgICAgICAgIG1fc3R5bGUtPnNldEhhc05vcm1hbENvbHVtbkdhcCgpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtbkdhcChtX3BhcmVudFN0
eWxlLT5jb2x1bW5HYXAoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9y
bWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNOb3JtYWxDb2x1bW5HYXAoKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5H
YXAocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVt
ZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uU3BhbjogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTChjb2x1bW5TcGFuLCBDb2x1bW5TcGFuKQotICAgICAgICBtX3N0eWxlLT5zZXRD
b2x1bW5TcGFuKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQWxsKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lk
dGg6IHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgaWYgKG1fcGFyZW50
U3R5bGUtPmhhc0F1dG9Db2x1bW5XaWR0aCgpKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEhhc0F1dG9Db2x1bW5XaWR0aCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG1fc3R5bGUtPnNldENvbHVtbldpZHRoKG1fcGFyZW50U3R5bGUtPmNvbHVtbldpZHRoKCkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCB8fCBwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIG1fc3R5bGUtPnNldENvbHVtbldpZHRoKHByaW1pdGl2ZVZhbHVlLT5j
b21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9y
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtblJ1bGVTdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRV9XSVRIX1ZBTFVFKGNvbHVtblJ1bGVTdHlsZSwgQ29sdW1uUnVsZVN0eWxlLCBCb3Jk
ZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5CcmVha0JlZm9yZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRV9XSVRIX1ZBTFVFKGNvbHVtbkJyZWFrQmVmb3JlLCBDb2x1bW5CcmVha0JlZm9yZSwg
UGFnZUJyZWFrKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrQWZ0ZXI6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9Q
UklNSVRJVkVfV0lUSF9WQUxVRShjb2x1bW5CcmVha0FmdGVyLCBDb2x1bW5CcmVha0FmdGVyLCBQ
YWdlQnJlYWspCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtJbnNpZGU6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lU
SF9WQUxVRShjb2x1bW5CcmVha0luc2lkZSwgQ29sdW1uQnJlYWtJbnNpZGUsIFBhZ2VCcmVhaykK
LSAgICAgICAgRVBhZ2VCcmVhayBwYiA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAgaWYgKHBi
ICE9IFBCQUxXQVlTKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uQnJlYWtJbnNpZGUo
cGIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZToKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Q29sdW1uUnVsZUNvbG9yKG1fcGFyZW50U3R5bGUtPmNvbHVtblJ1bGVDb2xvcigpLmlz
VmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmNvbHVtblJ1bGVDb2xvcigpIDogbV9wYXJlbnRTdHls
ZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5SdWxlU3R5bGUobV9w
YXJlbnRTdHlsZS0+Y29sdW1uUnVsZVN0eWxlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
Q29sdW1uUnVsZVdpZHRoKG1fcGFyZW50U3R5bGUtPmNvbHVtblJ1bGVXaWR0aCgpKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5y
ZXNldENvbHVtblJ1bGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5zOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBpZiAo
bV9wYXJlbnRTdHlsZS0+aGFzQXV0b0NvbHVtbldpZHRoKCkpCi0gICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgobV9wYXJlbnRTdHlsZS0+Y29sdW1uV2lk
dGgoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5Db3VudChtX3BhcmVudFN0eWxl
LT5jb2x1bW5Db3VudCgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOwotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Q29sdW1uQ291bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2x1bW5Db3VudCgpKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWU6Ci0gICAgICAgIGlmICh2YWx1ZVR5cGUgIT0gQ1NTVmFsdWU6OkNTU19JTkhFUklUIHx8
ICFtX3BhcmVudE5vZGUpIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZURpcmVj
dGlvbihtX3BhcmVudFN0eWxlLT5tYXJxdWVlRGlyZWN0aW9uKCkpOwotICAgICAgICBtX3N0eWxl
LT5zZXRNYXJxdWVlSW5jcmVtZW50KG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVJbmNyZW1lbnQoKSk7
Ci0gICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZChtX3BhcmVudFN0eWxlLT5tYXJxdWVl
U3BlZWQoKSk7Ci0gICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQobV9wYXJlbnRT
dHlsZS0+bWFycXVlZUxvb3BDb3VudCgpKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUJl
aGF2aW9yKG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVCZWhhdmlvcigpKTsKLSAgICAgICAgcmV0dXJu
OwotI2lmIEVOQUJMRShXQ1NTKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcDoK
LSNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbjogewot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChtYXJxdWVlTG9vcENvdW50LCBNYXJx
dWVlTG9vcENvdW50KQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFs
dWVJbmZpbml0ZSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoLTEp
OyAvLyAtMSBtZWFucyByZXBlYXQgZm9yZXZlci4KLSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQocHJpbWl0aXZlVmFsdWUt
PmdldEludFZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2lmIEVOQUJMRShXQ1NT
KQotICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQ6Ci0jZW5kaWYKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKG1hcnF1ZWVTcGVlZCwgTWFycXVlZVNwZWVkKSAgICAgIAotICAgICAgICBp
ZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2xvdzoK
LSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDUwMCk7IC8vIDUw
MCBtc2VjLgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlTm9ybWFsOgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVl
U3BlZWQoODUpOyAvLyA4NW1zZWMuIFRoZSBXaW5JRSBkZWZhdWx0LgotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRmFzdDoKLSAgICAgICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDEwKTsgLy8gMTBtc2VjLiBTdXBl
ciBmYXN0LgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUykKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1
ZWVTcGVlZCgxMDAwICogcHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOwotICAgICAgICBl
bHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTVMpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQocHJpbWl0
aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOwotICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSAvLyBG
b3Igc2Nyb2xsYW1vdW50IHN1cHBvcnQuCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVl
U3BlZWQocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50OiB7Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG1hcnF1ZWVJbmNyZW1lbnQsIE1hcnF1ZWVJ
bmNyZW1lbnQpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAg
ICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVTbWFsbDoKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFy
cXVlZUluY3JlbWVudChMZW5ndGgoMSwgRml4ZWQpKTsgLy8gMXB4LgotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgotICAgICAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCg2LCBGaXhl
ZCkpOyAvLyA2cHguIFRoZSBXaW5JRSBkZWZhdWx0LgotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFyZ2U6Ci0gICAgICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoKDM2LCBGaXhlZCkpOyAvLyAz
NnB4LgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwotICAgICAgICAg
ICAgTGVuZ3RoIGwgPSBjb252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSwgMSwgJm9rKTsKLSAgICAgICAgICAgIGlmIChvaykKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KGwpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFdDU1MpCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdhcE1hcnF1ZWVTdHlsZToKLSNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJ
VkUobWFycXVlZUJlaGF2aW9yLCBNYXJxdWVlQmVoYXZpb3IpICAgICAgCi0gICAgICAgIHJldHVy
bjsKLSNpZiBFTkFCTEUoV0NTUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZURpcjoK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZURpcmVjdGlvbiwgTWFy
cXVlZURpcmVjdGlvbikKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlTHRyOgotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24oTVJJR0hUKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSdGw6Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNTEVGVCk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1h
cnF1ZWVEaXJlY3Rpb24oKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbjoKLSAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShtYXJxdWVlRGlyZWN0aW9uLCBNYXJxdWVl
RGlyZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVz
ZXJEcmFnOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZF
KHVzZXJEcmFnLCBVc2VyRHJhZykgICAgICAKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9BTkRfUFJJTUlUSVZFKHVzZXJNb2RpZnksIFVzZXJNb2RpZnkpICAgICAgCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh1c2VyU2VsZWN0LCBVc2Vy
U2VsZWN0KSAgICAgIAotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dE92ZXJmbG93OiB7Ci0gICAgICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgc3VwcG9ydGVkIGJ5IFdp
bklFLCBhbmQgc28gd2UgbGVhdmUgb2ZmIHRoZSAiLXdlYmtpdC0iIGluIG9yZGVyIHRvCi0gICAg
ICAgIC8vIHdvcmsgd2l0aCBXaW5JRS1zcGVjaWZpYyBwYWdlcyB0aGF0IHVzZSB0aGUgcHJvcGVy
dHkuCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRPdmVyZmxvdywgVGV4
dE92ZXJmbG93KQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8ICFwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0
VGV4dE92ZXJmbG93KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRWxsaXBz
aXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5Db2xsYXBzZTogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRNYXJnaW5CZWZvcmVDb2xsYXBzZShtX3BhcmVudFN0eWxlLT5tYXJnaW5CZWZv
cmVDb2xsYXBzZSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpbkFmdGVyQ29sbGFw
c2UobV9wYXJlbnRTdHlsZS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSgpKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdp
bkJlZm9yZUNvbGxhcHNlKE1DT0xMQVBTRSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJn
aW5BZnRlckNvbGxhcHNlKE1DT0xMQVBTRSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobWFyZ2luQmVmb3JlQ29sbGFw
c2UsIE1hcmdpbkJlZm9yZUNvbGxhcHNlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9BTkRfUFJJTUlUSVZFKG1hcmdpbkFmdGVyQ29sbGFwc2UsIE1hcmdpbkFmdGVyQ29sbGFw
c2UpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1w
OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGxpbmVDbGFtcCwgTGluZUNs
YW1wKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAg
ICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIExpbmVDbGFtcExpbmVD
b3VudCkpOwotICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpbmVDbGFtcChMaW5lQ2xhbXBW
YWx1ZShwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
RVJDRU5UQUdFKSwgTGluZUNsYW1wUGVyY2VudGFnZSkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQ6IHsKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwoaGlnaGxpZ2h0LCBIaWdobGlnaHQpOwotICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0SGlnaGxpZ2h0KG51bGxBdG9tKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0SGlnaGxpZ2h0KHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0SHlw
aGVuczogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChoeXBoZW5zLCBIeXBo
ZW5zKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0SHlwaGVucygqcHJpbWl0aXZlVmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVD
aGFyYWN0ZXI6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoaHlwaGVuYXRp
b25TdHJpbmcsIEh5cGhlbmF0aW9uU3RyaW5nKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEh5
cGhlbmF0aW9uU3RyaW5nKG51bGxBdG9tKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0SHlwaGVuYXRpb25TdHJpbmcocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVl
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRI
eXBoZW5hdGVMb2NhbGU6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoaHlw
aGVuYXRpb25Mb2NhbGUsIEh5cGhlbmF0aW9uTG9jYWxlKTsKLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldEh5cGhlbmF0aW9uTG9jYWxlKG51bGxBdG9tKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0SHlwaGVuYXRpb25Mb2NhbGUocHJpbWl0aXZlVmFsdWUtPmdldFN0cmlu
Z1ZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJGaXQ6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm9y
ZGVyRml0LCBCb3JkZXJGaXQpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVCb3JkZXIpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJGaXQo
Qm9yZGVyRml0Qm9yZGVyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
Qm9yZGVyRml0KEJvcmRlckZpdExpbmVzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6IHsKLSAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwodGV4dFNpemVBZGp1c3QsIFRleHRTaXplQWRqdXN0KQotICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8ICFwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgcmV0
dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRUZXh0U2l6ZUFkanVzdChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pOwotICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
ZWN1cml0eToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElW
RSh0ZXh0U2VjdXJpdHksIFRleHRTZWN1cml0eSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXREYXNoYm9h
cmRSZWdpb246IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoZGFzaGJvYXJk
UmVnaW9ucywgRGFzaGJvYXJkUmVnaW9ucykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXREYXNoYm9h
cmRSZWdpb25zKFJlbmRlclN0eWxlOjpub25lRGFzaGJvYXJkUmVnaW9ucygpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIERhc2hib2FyZFJlZ2lvbiAqcmVnaW9u
ID0gcHJpbWl0aXZlVmFsdWUtPmdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7Ci0gICAgICAgIGlm
ICghcmVnaW9uKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgIERh
c2hib2FyZFJlZ2lvbiAqZmlyc3QgPSByZWdpb247Ci0gICAgICAgIHdoaWxlIChyZWdpb24pIHsK
LSAgICAgICAgICAgIExlbmd0aCB0b3AgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT50b3AoKSwg
c3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIExlbmd0aCByaWdodCA9
IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPnJpZ2h0KCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRT
dHlsZSk7Ci0gICAgICAgICAgICBMZW5ndGggYm90dG9tID0gY29udmVydFRvTGVuZ3RoKHJlZ2lv
bi0+Ym90dG9tKCksIHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBM
ZW5ndGggbGVmdCA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmxlZnQoKSwgc3R5bGUoKSwgbV9y
b290RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0g
ICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJk
UmVnaW9uOjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0
LCByZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOwotICAgICAgICAgICAgZWxzZSBpZiAo
cmVnaW9uLT5tX2lzUmVjdGFuZ2xlKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldERhc2hi
b2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJlZ2lvbjo6UmVjdGFuZ2xlLCByZWdpb24tPm1fbGFi
ZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgcmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0
cnVlKTsKLSAgICAgICAgICAgIHJlZ2lvbiA9IHJlZ2lvbi0+bV9uZXh0LmdldCgpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldEhhc0Rhc2hi
b2FyZFJlZ2lvbnModHJ1ZSk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmICAgICAgICAKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHZpc3VhbGx5T3JkZXJlZCwgVmlzdWFsbHlP
cmRlcmVkKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8ICFwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0Vmlz
dWFsbHlPcmRlcmVkKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVmlzdWFs
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tl
V2lkdGg6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dFN0cm9rZVdp
ZHRoLCBUZXh0U3Ryb2tlV2lkdGgpCi0gICAgICAgIGZsb2F0IHdpZHRoID0gMDsKLSAgICAgICAg
c3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVRoaW46Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgotICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZVRoaWNrOiB7Ci0gICAgICAgICAgICAgICAgZG91YmxlIHJlc3VsdCA9
IDEuMCAvIDQ4OwotICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZU1lZGl1bSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICo9IDM7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVUaGljaykKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICo9IDU7Ci0gICAgICAgICAg
ICAgICAgd2lkdGggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlc3VsdCwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19FTVMpLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgd2lkdGggPSBwcmlt
aXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgbV9zdHlsZS0+c2V0VGV4dFN0cm9rZVdpZHRoKHdpZHRoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtOiB7Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5zZm9ybSwgVHJhbnNmb3JtKTsKLSAgICAgICAg
VHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOwotICAgICAgICBjcmVhdGVUcmFuc2Zvcm1P
cGVyYXRpb25zKHZhbHVlLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIG9wZXJhdGlvbnMp
OwotICAgICAgICBtX3N0eWxlLT5zZXRUcmFuc2Zvcm0ob3BlcmF0aW9ucyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWCwgVHJh
bnNmb3JtT3JpZ2luWCkKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNm
b3JtT3JpZ2luWSwgVHJhbnNmb3JtT3JpZ2luWSkKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWiwgVHJhbnNmb3JtT3JpZ2luWikKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOiB7Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5zZm9ybU9yaWdpblgsIFRyYW5zZm9y
bU9yaWdpblgpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIExlbmd0aCBsOwotICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVl
LT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0
VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUt
PmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKSwgRml4ZWQpOwotICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFRyYW5zZm9ybU9yaWdpblgobCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWTogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1P
cmlnaW5ZLCBUcmFuc2Zvcm1PcmlnaW5ZKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBMZW5ndGggbDsKLSAgICAgICAgaW50IHR5cGUg
PSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAoQ1NTUHJpbWl0
aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICBsID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvciksIEZpeGVkKTsKLSAgICAgICAgZWxzZSBpZiAodHlw
ZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBsID0g
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRUcmFuc2Zv
cm1PcmlnaW5ZKGwpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybU9yaWdpblo6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwodHJhbnNmb3JtT3JpZ2luWiwgVHJhbnNmb3JtT3JpZ2luWikKLSAgICAgICAgaWYgKCFw
cmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZmxvYXQgZjsKLSAg
ICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAg
ICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAg
ICAgICBmID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3Ro
SW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSkpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFRyYW5zZm9ybU9yaWdp
blooZik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtU3R5bGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5z
Zm9ybVN0eWxlM0QsIFRyYW5zZm9ybVN0eWxlM0QpCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRyYW5zZm9ybVN0eWxlM0QoKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlUHJlc2VydmUzZCkgPyBUcmFuc2Zvcm1TdHlsZTNE
UHJlc2VydmUzRCA6IFRyYW5zZm9ybVN0eWxlM0RGbGF0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZTogewotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChwZXJzcGVjdGl2ZSwgUGVyc3BlY3RpdmUpCi0gICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5v
bmUpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBlcnNwZWN0aXZlKDApOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBmbG9hdCBwZXJzcGVjdGl2
ZVZhbHVlOwotICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCk7Ci0gICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBl
KSkKLSAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4ocHJp
bWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKLSAgICAgICAgICAgIC8vIEZvciBiYWNrd2FyZCBj
b21wYXRpYmlsaXR5LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KLSAgICAgICAgICAg
IHBlcnNwZWN0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1pdGl2ZVZh
bHVlLT5nZXREb3VibGVWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y29tcHV0
ZUxlbmd0aEZsb2F0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChwZXJzcGVj
dGl2ZVZhbHVlID49IDAuMGYpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRQZXJzcGVjdGl2ZShw
ZXJzcGVjdGl2ZVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW46Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKHBlcnNwZWN0aXZlT3JpZ2luWCwgUGVyc3BlY3RpdmVPcmlnaW5YKQotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwZXJzcGVjdGl2ZU9yaWdpblksIFBlcnNwZWN0
aXZlT3JpZ2luWSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQ
ZXJzcGVjdGl2ZU9yaWdpblg6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
cGVyc3BlY3RpdmVPcmlnaW5YLCBQZXJzcGVjdGl2ZU9yaWdpblgpCi0gICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIExlbmd0aCBsOwotICAg
ICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAg
IGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAg
ICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgo
c3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOwotICAgICAg
ICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAg
ICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBl
cmNlbnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5
bGUtPnNldFBlcnNwZWN0aXZlT3JpZ2luWChsKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOiB7Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlT3JpZ2luWSwgUGVyc3BlY3RpdmVP
cmlnaW5ZKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBMZW5ndGggbDsKLSAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5
cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5j
b21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9v
bUZhY3RvciksIEZpeGVkKTsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZh
bHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRQZXJzcGVjdGl2ZU9yaWdpblkobCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bjoKLSAgICAgICAgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmNsZWFyQW5p
bWF0aW9ucygpOwotICAgICAgICBlbHNlIGlmIChpc0luaGVyaXQpCi0gICAgICAgICAgICBtX3N0
eWxlLT5pbmhlcml0QW5pbWF0aW9ucyhtX3BhcmVudFN0eWxlLT5hbmltYXRpb25zKCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5Ogot
ICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGRlbGF5LCBEZWxheSwgdmFsdWUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9u
OgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGRpcmVjdGlvbiwgRGlyZWN0aW9uLCB2
YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25EdXJhdGlvbjoKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRShkdXJhdGlvbiwgRHVy
YXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbkZpbGxNb2RlOgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKGZpbGxN
b2RlLCBGaWxsTW9kZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJ
T05fVkFMVUUoaXRlcmF0aW9uQ291bnQsIEl0ZXJhdGlvbkNvdW50LCB2YWx1ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lOgotICAgICAg
ICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKG5hbWUsIE5hbWUsIHZhbHVlKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZToKLSAgICAg
ICAgSEFORExFX0FOSU1BVElPTl9WQUxVRShwbGF5U3RhdGUsIFBsYXlTdGF0ZSwgdmFsdWUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5n
RnVuY3Rpb246Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUodGltaW5nRnVuY3Rpb24s
IFRpbWluZ0Z1bmN0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uOgotICAgICAgICBpZiAoaXNJbml0aWFsKQotICAgICAgICAg
ICAgbV9zdHlsZS0+Y2xlYXJUcmFuc2l0aW9ucygpOwotICAgICAgICBlbHNlIGlmIChpc0luaGVy
aXQpCi0gICAgICAgICAgICBtX3N0eWxlLT5pbmhlcml0VHJhbnNpdGlvbnMobV9wYXJlbnRTdHls
ZS0+dHJhbnNpdGlvbnMoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvbkRlbGF5OgotICAgICAgICBIQU5ETEVfVFJBTlNJVElPTl9WQUxVRShk
ZWxheSwgRGVsYXksIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbjoKLSAgICAgICAgSEFORExFX1RSQU5TSVRJT05fVkFM
VUUoZHVyYXRpb24sIER1cmF0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHk6Ci0gICAgICAgIEhBTkRMRV9UUkFO
U0lUSU9OX1ZBTFVFKHByb3BlcnR5LCBQcm9wZXJ0eSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgotICAg
ICAgICBIQU5ETEVfVFJBTlNJVElPTl9WQUxVRSh0aW1pbmdGdW5jdGlvbiwgVGltaW5nRnVuY3Rp
b24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBvaW50ZXJF
dmVudHM6Ci0gICAgewotI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICAgICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzY1NjEwNzc+IFdvcmsgYXJvdW5kIHRoZSBTdG9ja3Mgd2lkZ2V0J3Mg
bWlzdXNlIG9mIHRoZQotICAgICAgICAvLyBwb2ludGVyLWV2ZW50cyBwcm9wZXJ0eSBieSBub3Qg
YXBwbHlpbmcgaXQgaW4gRGFzaGJvYXJkLgotICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBt
X2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKLSAgICAgICAgaWYgKHNldHRpbmdzICYm
IHNldHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotI2VuZGlmCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKHBvaW50ZXJFdmVudHMsIFBvaW50ZXJFdmVudHMpCi0gICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFBvaW50ZXJF
dmVudHMoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgotICAgICAgICBpZiAoaXNJbmhlcml0
KSAKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbG9yU3BhY2UobV9wYXJlbnRTdHlsZS0+Y29s
b3JTcGFjZSgpKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Q29sb3JTcGFjZShDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbG9yU3BhY2UoKnByaW1pdGl2ZVZhbHVlKTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVNpemU6Ci0g
ICAgICAgIGFwcGx5UGFnZVNpemVQcm9wZXJ0eSh2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKHNwZWFrLCBTcGVhayk7Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFNwZWFrKCpwcmltaXRpdmVW
YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlJbnZhbGlkOgotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBEaXJlY3Rpb25hbCBwcm9wZXJ0
aWVzIGFyZSByZXNvbHZlZCBieSByZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eSgpIGJlZm9y
ZSB0aGUgc3dpdGNoLgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJFbmRTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
RW5kV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0OgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJTdGFydFN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJTdGFydFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlcldpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5FbmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0OgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkFmdGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kOgotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBhZGRpbmdCZWZvcmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdB
ZnRlcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TG9naWNhbFdpZHRoOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRNaW5Mb2dpY2FsV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxI
ZWlnaHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodDoKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRT
dHJldGNoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlR
dW90ZXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaE1vZGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dE92ZXJsaW5lOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVD
b2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZToKLSAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRPdmVy
bGluZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRV
bmRlcmxpbmVNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGU6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Rm9udFNpemVEZWx0YToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3Q6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczoKLSAgICAgICAgcmV0dXJu
OwotI2lmIEVOQUJMRShXQ1NTKQotICAgIGNhc2UgQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdDoK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIG1fZWxlbWVudC0+aGFzVGFnTmFtZShXZWJD
b3JlOjppbnB1dFRhZykpIHsKLSAgICAgICAgICAgIFN0cmluZyBtYXNrID0gcHJpbWl0aXZlVmFs
dWUtPmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MSW5wdXRF
bGVtZW50Kj4obV9lbGVtZW50KS0+c2V0V2FwSW5wdXRGb3JtYXQobWFzayk7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQ6
Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBtX2VsZW1lbnQtPmlzRm9ybUNvbnRyb2xF
bGVtZW50KCkpIHsKLSAgICAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIGVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4obV9lbGVtZW50KTsKLSAgICAg
ICAgICAgIGJvb2wgcmVxdWlyZWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSA9
PSAidHJ1ZSI7Ci0gICAgICAgICAgICBlbGVtZW50LT5zZXRSZXF1aXJlZChyZXF1aXJlZCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotI2VuZGlmIAotCi0gICAgLy8gQ1NTIFRleHQgTGF5
b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0V3JpdGluZ01vZGU6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUxfQU5EX1BSSU1JVElWRSh3cml0aW5nTW9kZSwgV3JpdGluZ01vZGUpCi0gICAgICAg
IGlmICghaXNJbmhlcml0ICYmICFpc0luaXRpYWwgJiYgbV9lbGVtZW50ICYmIG1fZWxlbWVudCA9
PSBtX2VsZW1lbnQtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQotICAgICAgICAgICAg
bV9lbGVtZW50LT5kb2N1bWVudCgpLT5zZXRXcml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50
KHRydWUpOwotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPcmllbnRh
dGlvbihtX3N0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbCA6IFZl
cnRpY2FsKTsKLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lOgotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHRleHRDb21iaW5l
LCBUZXh0Q29tYmluZSkKLSAgICAgICAgaWYgKG1fc3R5bGUtPmhhc1RleHRDb21iaW5lKCkpCi0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsgLy8gVGhlIHN0eWxlIGNvdWxkIGJlIG1v
ZGlmaWVkIGluIFJlbmRlckNvbWJpbmVUZXh0IGRlcGVuZGluZyBvbiB0ZXh0IG1ldHJpY3MuCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQ
b3NpdGlvbjoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElW
RSh0ZXh0RW1waGFzaXNQb3NpdGlvbiwgVGV4dEVtcGhhc2lzUG9zaXRpb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZToKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dEVtcGhhc2lzRmlsbCwgVGV4dEVt
cGhhc2lzRmlsbCkKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dEVtcGhh
c2lzTWFyaywgVGV4dEVtcGhhc2lzTWFyaykKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwodGV4dEVtcGhhc2lzQ3VzdG9tTWFyaywgVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaykKLSAg
ICAgICAgaWYgKGlzSW5oZXJpdCB8fCBpc0luaXRpYWwpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1
ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgICAg
ICAgICBBU1NFUlQobGlzdC0+bGVuZ3RoKCkgPT0gMik7Ci0gICAgICAgICAgICBpZiAobGlzdC0+
bGVuZ3RoKCkgIT0gMikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGxp
c3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSktPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAg
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKLSAgICAgICAg
ICAgICAgICBpZiAodmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgdmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVPcGVuKQotICAgICAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKCp2YWx1ZSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21N
YXJrKG51bGxBdG9tKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4
dEVtcGhhc2lzRmlsbEZpbGxlZCk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFz
aXNNYXJrKFRleHRFbXBoYXNpc01hcmtDdXN0b20pOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX3N0eWxlLT5zZXRU
ZXh0RW1waGFzaXNDdXN0b21NYXJrKG51bGxBdG9tKTsKLQotICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVPcGVuKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0
RW1waGFzaXNGaWxsKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRU
ZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtBdXRvKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmls
bEZpbGxlZCk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKCpwcmlt
aXRpdmVWYWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFCTEUo
U1ZHKQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIFRyeSB0aGUgU1ZHIHByb3BlcnRpZXMKLSAg
ICAgICAgYXBwbHlTVkdQcm9wZXJ0eShpZCwgdmFsdWUpOwotI2VuZGlmCi0gICAgfQotfQotCi12
b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UGFnZVNpemVQcm9wZXJ0eShDU1NWYWx1ZSogdmFs
dWUpCi17Ci0gICAgbV9zdHlsZS0+cmVzZXRQYWdlU2l6ZVR5cGUoKTsKLSAgICBpZiAoIXZhbHVl
LT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICByZXR1cm47Ci0gICAgQ1NTVmFsdWVMaXN0KiB2YWx1
ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgTGVuZ3RoIHdp
ZHRoOwotICAgIExlbmd0aCBoZWlnaHQ7Ci0gICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9
IFBBR0VfU0laRV9BVVRPOwotICAgIHN3aXRjaCAodmFsdWVMaXN0LT5sZW5ndGgoKSkgewotICAg
IGNhc2UgMjogewotICAgICAgICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+IDxvcmllbnRh
dGlvbj4KLSAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwotICAgICAg
ICBpZiAoIXZhbHVlTGlzdC0+aXRlbSgwKS0+aXNQcmltaXRpdmVWYWx1ZSgpIHx8ICF2YWx1ZUxp
c3QtPml0ZW0oMSktPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlMCA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVMaXN0LT5pdGVtKDApKTsKLSAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlMSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWVMaXN0LT5pdGVtKDEpKTsKLSAgICAgICAgaW50IHR5cGUwID0gcHJpbWl0aXZlVmFs
dWUwLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGludCB0eXBlMSA9IHByaW1pdGl2ZVZhbHVl
MS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5p
dFR5cGVMZW5ndGgodHlwZTApKSB7Ci0gICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfQotICAgICAg
ICAgICAgaWYgKCFDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlMSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2lkdGggPSBMZW5ndGgocHJpbWl0
aXZlVmFsdWUwLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1l
bnRTdHlsZSksIEZpeGVkKTsKLSAgICAgICAgICAgIGhlaWdodCA9IExlbmd0aChwcmltaXRpdmVW
YWx1ZTEtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0
eWxlKSwgRml4ZWQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gPHBhZ2Utc2l6
ZT4gPG9yaWVudGF0aW9uPgotICAgICAgICAgICAgLy8gVGhlIHZhbHVlIG9yZGVyIGlzIGd1YXJh
bnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBhcnNlU2l6ZVBhcmFtZXRlci4KLSAgICAgICAgICAgIGlm
ICghcGFnZVNpemVGcm9tTmFtZShwcmltaXRpdmVWYWx1ZTAsIHByaW1pdGl2ZVZhbHVlMSwgd2lk
dGgsIGhlaWdodCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBjYXNlIDE6IHsKLSAgICAgICAgLy8gPGxlbmd0aD4gfCBhdXRv
IHwgPHBhZ2Utc2l6ZT4gfCBbIHBvcnRyYWl0IHwgbGFuZHNjYXBlXQotICAgICAgICBpZiAoIXZh
bHVlTGlzdC0+aXRlbSgwKS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgwKSk7Ci0gICAgICAgIGludCB0
eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1By
aW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7Ci0gICAgICAgICAgICAvLyA8
bGVuZ3RoPgotICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwot
ICAgICAgICAgICAgd2lkdGggPSBoZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19JREVOVCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENT
U1ZhbHVlQXV0bzoKLSAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVU
TzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQb3J0
cmFpdDoKLSAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUT19QT1JU
UkFJVDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVM
YW5kc2NhcGU6Ci0gICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9f
TEFORFNDQVBFOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICAvLyA8cGFnZS1zaXplPgotICAgICAgICAgICAgICAgIHBhZ2VTaXpl
VHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKLSAgICAgICAgICAgICAgICBpZiAoIXBhZ2VTaXpl
RnJvbU5hbWUocHJpbWl0aXZlVmFsdWUsIDAsIHdpZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9zdHls
ZS0+c2V0UGFnZVNpemVUeXBlKHBhZ2VTaXplVHlwZSk7Ci0gICAgbV9zdHlsZS0+c2V0UGFnZVNp
emUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgcmV0dXJuOwotfQotCi1ib29sIENT
U1N0eWxlU2VsZWN0b3I6OnBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VT
aXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VPcmllbnRhdGlvbiwgTGVuZ3RoJiB3aWR0
aCwgTGVuZ3RoJiBoZWlnaHQpCi17Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBhNVdpZHRoID0g
bW1MZW5ndGgoMTQ4KSwgYTVIZWlnaHQgPSBtbUxlbmd0aCgyMTApOwotICAgIHN0YXRpYyBjb25z
dCBMZW5ndGggYTRXaWR0aCA9IG1tTGVuZ3RoKDIxMCksIGE0SGVpZ2h0ID0gbW1MZW5ndGgoMjk3
KTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGEzV2lkdGggPSBtbUxlbmd0aCgyOTcpLCBhM0hl
aWdodCA9IG1tTGVuZ3RoKDQyMCk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBiNVdpZHRoID0g
bW1MZW5ndGgoMTc2KSwgYjVIZWlnaHQgPSBtbUxlbmd0aCgyNTApOwotICAgIHN0YXRpYyBjb25z
dCBMZW5ndGggYjRXaWR0aCA9IG1tTGVuZ3RoKDI1MCksIGI0SGVpZ2h0ID0gbW1MZW5ndGgoMzUz
KTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxldHRlcldpZHRoID0gaW5jaExlbmd0aCg4LjUp
LCBsZXR0ZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDExKTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3Ro
IGxlZ2FsV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxlZ2FsSGVpZ2h0ID0gaW5jaExlbmd0aCgx
NCk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZWRnZXJXaWR0aCA9IGluY2hMZW5ndGgoMTEp
LCBsZWRnZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDE3KTsKLQotICAgIGlmICghcGFnZVNpemVOYW1l
IHx8IHBhZ2VTaXplTmFtZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfSURFTlQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXBhZ2VTaXplTmFtZSB8
fCBwYWdlU2l6ZU5hbWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0lERU5UKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBzd2l0Y2ggKHBhZ2VTaXplTmFt
ZS0+Z2V0SWRlbnQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVBNToKQEAgLTYwMDIsNyArMzU0OCw3
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbENvbXBvc2l0ZSgKICAgICAgICAgbGF5
ZXItPnNldENvbXBvc2l0ZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29tcG9zaXRlKGxheWVyLT50
eXBlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmICghdmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MDk1LDkgKzM2NDEs
OSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKENTU1ByCiAgICAgICAgIGxh
eWVyLT5zZXRTaXplVHlwZShDb3Zlcik7CiAgICAgZWxzZQogICAgICAgICBsYXllci0+c2V0U2l6
ZVR5cGUoU2l6ZUxlbmd0aCk7Ci0gICAgCisKICAgICBMZW5ndGhTaXplIGIgPSBGaWxsTGF5ZXI6
OmluaXRpYWxGaWxsU2l6ZUxlbmd0aChsYXllci0+dHlwZSgpKTsKLSAgICAKKwogICAgIGlmICh2
YWx1ZS0+Y3NzVmFsdWVUeXBlKCkgPT0gQ1NTVmFsdWU6OkNTU19JTklUSUFMIHx8IHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ29udGFpbgogICAgICAgICB8fCBwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvdmVyKSB7CiAgICAgICAgIGxheWVyLT5z
ZXRTaXplTGVuZ3RoKGIpOwpAQCAtNjEwNywxNCArMzY1MywxNCBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6Om1hcEZpbGxTaXplKENTU1ByCiAgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVl
LT5nZXRQYWlyVmFsdWUoKTsKICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBh
aXItPnNlY29uZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogZmlyc3QgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHBhaXItPmZpcnN0
KCkpOwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHBhaXItPnNlY29uZCgpKTsKLSAgICAKKwogICAgIExlbmd0aCBmaXJzdExl
bmd0aCwgc2Vjb25kTGVuZ3RoOwogICAgIGludCBmaXJzdFR5cGUgPSBmaXJzdC0+cHJpbWl0aXZl
VHlwZSgpOwogICAgIGludCBzZWNvbmRUeXBlID0gc2Vjb25kLT5wcmltaXRpdmVUeXBlKCk7Ci0g
ICAgCisKICAgICBmbG9hdCB6b29tRmFjdG9yID0gbV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwog
CiAgICAgaWYgKGZpcnN0VHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV04pCkBA
IC02MTM0LDcgKzM2ODAsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKENT
U1ByCiAgICAgICAgIHNlY29uZExlbmd0aCA9IExlbmd0aChzZWNvbmQtPmdldERvdWJsZVZhbHVl
KCksIFBlcmNlbnQpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgYi5z
ZXRXaWR0aChmaXJzdExlbmd0aCk7CiAgICAgYi5zZXRIZWlnaHQoc2Vjb25kTGVuZ3RoKTsKICAg
ICBsYXllci0+c2V0U2l6ZUxlbmd0aChiKTsKQEAgLTcwNDUsNyArNDU5MSw3IEBAIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3AKICAgICAgICAgICAgICAgICAgICAgdmFs
ID0gY2xhbXBUb1Bvc2l0aXZlSW50ZWdlcih2YWwpOwogICAgICAgICAgICAgICAgICAgICBwID0g
TGVuZ3RoKHN0YXRpY19jYXN0PGludD4odmFsKSwgRml4ZWQpOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmICghb2spCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCShyZXZpc2lvbiA3NzQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsOCBAQCBwdWJsaWM6CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzZXRGb250U2l6ZShGb250RGVzY3JpcHRpb24mLCBm
bG9hdCBzaXplKTsKICAgICAgICAgc3RhdGljIGZsb2F0IGdldENvbXB1dGVkU2l6ZUZyb21TcGVj
aWZpZWRTaXplKERvY3VtZW50KiwgUmVuZGVyU3R5bGUqLCBib29sIGlzQWJzb2x1dGVTaXplLCBm
bG9hdCBzcGVjaWZpZWRTaXplLCBib29sIHVzZVNWR1pvb21SdWxlcyk7Ci0KKyAgICAgICAgc3Rh
dGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHls
ZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAq
b2sgPSAwKTsKKyAgICAgICAgc3RhdGljIHZvaWQgYXBwbHlDb3VudGVyTGlzdChSZW5kZXJTdHls
ZSosIENTU1ZhbHVlTGlzdCosIGJvb2wgaXNSZXNldCk7CiAgICAgcHVibGljOgogICAgICAgICBD
b2xvciBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSopIGNvbnN0
OwogCkBAIC0zMjAsNiArMzIxLDkgQEAgcHVibGljOgogICAgICAgICBIYXNoU2V0PEF0b21pY1N0
cmluZ0ltcGwqPiBtX3NlbGVjdG9yQXR0cnM7CiAgICAgICAgIFZlY3RvcjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbio+IG1fYWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHM7CiAgICAgICAg
IFZlY3RvcjxNZWRpYVF1ZXJ5UmVzdWx0Kj4gbV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlS
ZXN1bHRzOworCisvLyBwdWxsIGluIGF1dG8tZ2VuZXJhdGVkIGFwcGx5IHByb3BlcnR5IHByb3Rv
dHlwZXMKKyNpbmNsdWRlICJDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCIKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCShyZXZpc2lvbiA3
NzQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAkod29ya2luZyBjb3B5KQpA
QCAtMTM4LDMgKzEzOCw1MyBAQCBFT0YKIGNsb3NlIEhFQURFUjsKIAogc3lzdGVtKCJncGVyZiAt
LWtleS1wb3NpdGlvbnM9XCIqXCIgLUQgLW4gLXMgMiBDU1NQcm9wZXJ0eU5hbWVzLmdwZXJmID4g
Q1NTUHJvcGVydHlOYW1lcy5jcHAiKSA9PSAwIHx8IGRpZSAiY2FsbGluZyBncGVyZiBmYWlsZWQ6
ICQ/IjsKKworCitvcGVuIEFQUExZX0hFQURFUiwgIj5DU1NTdHlsZUFwcGx5UHJvcGVydHkuaCIg
fHwgZGllICJDb3VsZCBub3Qgb3BlbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCBmb3Igd3JpdGlu
ZyI7CitwcmludCBBUFBMWV9IRUFERVIgPDwgIkVPRiI7CisvKiBUaGlzIGZpbGUgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBDU1NQcm9wZXJ0eU5hbWVzLmluIGJ5IG1ha2Vwcm9wLCBk
byBub3QgZWRpdCAqLworCitzdGF0aWMgdm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHlJbnZh
bGlkKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRp
YWxDU1NQcm9wZXJ0eUludmFsaWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGlj
IHZvaWQgaGFuZGxlVmFsdWVDU1NQcm9wZXJ0eUludmFsaWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5z
dGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7CisKK0VPRgorCitmb3JlYWNoIG15ICRuYW1lIChAbmFt
ZXMpIHsKKyAgbXkgJGlkID0gJG5hbWU7CisgICRpZCA9fiBzLyheW14tXSl8LSguKS91YygkMXx8
JDIpL2dlOworICBwcmludCBBUFBMWV9IRUFERVIgInN0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRD
U1NQcm9wZXJ0eSIgLiAkaWQgLiAiKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTtcbiI7Cisg
IHByaW50IEFQUExZX0hFQURFUiAic3RhdGljIHZvaWQgaGFuZGxlSW5pdGlhbENTU1Byb3BlcnR5
IiAuICRpZCAuICIoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpO1xuIjsKKyAgcHJpbnQgQVBQ
TFlfSEVBREVSICJzdGF0aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5IiAuICRpZCAuICIo
Q1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7XG5cbiI7Cit9CisK
K3ByaW50IEFQUExZX0hFQURFUiA8PCAiRU9GIjsKKyNpZiBFTkFCTEUoV0NTUykKKy8vIEZJWE1F
OiBXQ1NTIFByb3BlcnRpZXMgYXJlIG5vdCBhY3R1YWxseSBkZWZpbmVkIGluIENTU1Byb3BlcnR5
LmluCitzdGF0aWMgdm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcChD
U1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NT
UHJvcGVydHlXYXBNYXJxdWVlTG9vcChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0
aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3AoQ1NTU3R5bGVTZWxl
Y3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7CisKK3N0YXRpYyB2b2lkIGhhbmRsZUlu
aGVyaXRDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5j
ZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQo
Q1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlVmFsdWVDU1NQ
cm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFs
dWUgKnZhbHVlKTsKKworc3RhdGljIHZvaWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5V2FwTWFy
cXVlZVN0eWxlKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRs
ZUluaXRpYWxDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTdHlsZShDU1NTdHlsZVNlbGVjdG9yICppbnN0
YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxl
KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpOworCitzdGF0aWMg
dm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyKENTU1N0eWxlU2VsZWN0
b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRpYWxDU1NQcm9wZXJ0eVdhcE1h
cnF1ZWVEaXIoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxl
VmFsdWVDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2Us
IENTU1ZhbHVlICp2YWx1ZSk7CisKK3N0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRDU1NQcm9wZXJ0
eVdhcElucHV0Rm9ybWF0KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lk
IGhhbmRsZUluaXRpYWxDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0KENTU1N0eWxlU2VsZWN0b3Ig
Kmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZVZhbHVlQ1NTUHJvcGVydHlXYXBJbnB1dEZv
cm1hdChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKTsKKworc3Rh
dGljIHZvaWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZChDU1NTdHls
ZVNlbGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVy
dHlXYXBJbnB1dFJlcXVpcmVkKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2
b2lkIGhhbmRsZVZhbHVlQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVpcmVkKENTU1N0eWxlU2VsZWN0
b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpOworI2VuZGlmCitFT0YKKworY2xvc2UgQVBQ
TFlfSEVBREVSOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81125</attachid>
            <date>2011-02-03 15:24:50 -0800</date>
            <delta_ts>2011-02-13 16:47:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46592-20110204102446.patch</filename>
            <type>text/plain</type>
            <size>319864</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NTM2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMTkgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkgdG8gdXNlIHNlcGFyYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBjYXNlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTIKKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGxp
Y2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRFRklORV9WQUxVRSk6CisgICAg
ICAgIChXZWJDb3JlOjpERUZJTkVfSU5IRVJJVCk6CisgICAgICAgIChXZWJDb3JlOjpERUZJTkVf
SU5JVElBTCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oOgorCiAyMDExLTAyLTAzICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlz
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gNzc1MzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzc4LDYgKzc3OCw3IEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCiAgICAgY3Nz
L0NTU1NlbGVjdG9yLmNwcAogICAgIGNzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCisgICAgY3NzL0NT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAK
ICAgICBjc3MvQ1NTU3R5bGVSdWxlLmNwcAogICAgIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDc3NTM2KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMjksNiArMTAyOSw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFw
cGx5UHJvcGVydHkuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
Nzc1MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNzUsNiArMTA3NSw4IEBACiAgICAgICAgICAgICAnY3NzL0NTU1NlbGVjdG9yLmgnLAogICAg
ICAgICAgICAgJ2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NT
U2VsZWN0b3JMaXN0LmgnLAorICAgICAgICAgICAgJ2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHku
Y3BwJywKKyAgICAgICAgICAgICdjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmgnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1N0eWxlUnVsZS5jcHAn
LApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDc3NTM2KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTY3Miw2ICs2NzIsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBjc3MvQ1NTU2VsZWN0b3IuY3BwIFwKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNw
cCBcCiAgICAgY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBcCisgICAgY3NzL0NTU1N0eWxl
QXBwbHlQcm9wZXJ0eS5jcHAgXAogICAgIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBcCiAg
ICAgY3NzL0NTU1N0eWxlUnVsZS5jcHAgXAogICAgIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBc
CkBAIC0xNjA4LDYgKzE2MDksNyBAQCBIRUFERVJTICs9IFwKICAgICBjc3MvQ1NTU2VnbWVudGVk
Rm9udEZhY2UuaCBcCiAgICAgY3NzL0NTU1NlbGVjdG9yLmggXAogICAgIGNzcy9DU1NTZWxlY3Rv
ckxpc3QuaCBcCisgICAgY3NzL0NTU1N0eWxlQXBwbHlQcm9wd2VydHkuaCBcCiAgICAgY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaCBcCiAgICAgY3NzL0NTU1N0eWxlUnVsZS5oIFwKICAgICBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA3NzUzNikKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYwNiw2ICsz
MTYwNiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxjc3NcQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3Nc
Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gNzc1MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2OTgsNiArMTY5OCw3IEBACiAJCTdFRTY4NDcwMTJE
MjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZO
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VF
Njg0NUUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgKi87IH07
CiAJCTdFRTY4NDc1MTJEMjZFNzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDc0MTJE
MjZFNzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCAqLzsgfTsKKwkJODAwQ0Y5
NDExMkZCNkQ1MzAwRjdCN0MwIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDBDRjk0MDEyRkI2RDUzMDBG
N0I3QzAgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCAqLzsgfTsKIAkJODFBNzMyNUUxMjEw
MTg5QjAwRkMwRDlFIC8qIElEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODFBNzMyNUQxMjEwMTg5QjAwRkMwRDlFIC8qIElEQkN1cnNvci5o
ICovOyB9OwogCQk4MUE3MzI2MDEyMTAxOEE0MDBGQzBEOUUgLyogSURCQ3Vyc29yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQTczMjVGMTIxMDE4
QTQwMEZDMEQ5RSAvKiBJREJDdXJzb3IuY3BwICovOyB9OwogCQk4MUE3MzI3ODEyMTAxOUUxMDBG
QzBEOUUgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQTczMjc3MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJz
b3JCYWNrZW5kSW1wbC5oICovOyB9OwpAQCAtODE1NSw2ICs4MTU2LDcgQEAKIAkJN0VFNjg0NUQx
MkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RUU2ODQ1RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlUmVzcG9u
c2VDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDc0MTJEMjZF
NzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwOyBwYXRoID0gY2YvUmVz
b3VyY2VMb2FkZXJDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgwMENG
OTQwMTJGQjZENTMwMEY3QjdDMCAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFBNzMyNUQxMjEwMTg5QjAwRkMwRDlFIC8q
IElEQkN1cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFBNzMyNUYxMjEwMThBNDAwRkMwRDlF
IC8qIElEQkN1cnNvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
REJDdXJzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUE3MzI3NzEyMTAx
OUUxMDBGQzBEOUUgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yQmFja2VuZEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE4NjIzLDYgKzE4NjI1LDcgQEAKIAkJCQk4NUM1NkNBMTBBQTg5QUI0MDBE
OTU3NTUgLyogQ1NTU3R5bGVSdWxlLmlkbCAqLywKIAkJCQlCQzc3MkIzOTBDNEVBOTFFMDA4MzI4
NUYgLyogQ1NTU3R5bGVTZWxlY3Rvci5jcHAgKi8sCiAJCQkJQkM3NzJCM0EwQzRFQTkxRTAwODMy
ODVGIC8qIENTU1N0eWxlU2VsZWN0b3IuaCAqLywKKwkJCQk4MDBDRjk0MDEyRkI2RDUzMDBGN0I3
QzAgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCAqLywKIAkJCQlBOEVBODAwMDBBMTk1MTZF
MDBBOEVGNUYgLyogQ1NTU3R5bGVTaGVldC5jcHAgKi8sCiAJCQkJQThFQTdGRkYwQTE5NTE2RTAw
QThFRjVGIC8qIENTU1N0eWxlU2hlZXQuaCAqLywKIAkJCQk4NThDMzkxMDBBQThGRjAwMDBCMTg3
QTQgLyogQ1NTU3R5bGVTaGVldC5pZGwgKi8sCkBAIC0yNTE5MCw2ICsyNTE5Myw3IEBACiAJCQkJ
MTQ5NDdGRkQxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5N0M0NzFEQjEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlGREM4RkYyMTJGQUIwMDYwMDk5QUIxQyAv
KiBKU01lbW9yeUluZm9DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODAwQ0Y5NDExMkZC
NkQ1MzAwRjdCN0MwIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA0LTIw
MDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tzaGFua3MuY29tKQor
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkg
UHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9y
Y2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxl
Y3Rvci5oIgorCisjaW5jbHVkZSAiQ291bnRlckNvbnRlbnQuaCIKKyNpbmNsdWRlICJDdXJzb3JM
aXN0LmgiCisjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Bh
cnNlci5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRl
ICJDU1NSZWZsZWN0VmFsdWUuaCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUg
IkNvdW50ZXIuaCIKKyNpbmNsdWRlICJGb250RmFtaWx5VmFsdWUuaCIKKyNpbmNsdWRlICJGb250
VmFsdWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisjaW5j
bHVkZSAiUmVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKKyNpbmNsdWRlICJTaGFkb3dWYWx1ZS5oIgorI2luY2x1ZGUgIlN0eWxlR2VuZXJhdGVk
SW1hZ2UuaCIKKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorI2luY2x1ZGUgIkRhc2hib2FyZFJl
Z2lvbi5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlhMaW5rTmFtZXMu
aCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoV01MKQorI2lu
Y2x1ZGUgIldNTE5hbWVzLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUg
PHF3ZWJoaXN0b3J5aW50ZXJmYWNlLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIERFRklORV9JTkhFUklUKFByb3BlcnR5
KSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1Byb3BlcnR5KENTU1N0eWxl
U2VsZWN0b3IgKmluc3RhbmNlKQorCisjZGVmaW5lIERFRklORV9JTklUSUFMKFByb3BlcnR5KSB2
b2lkIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI1Byb3BlcnR5KENTU1N0eWxlU2Vs
ZWN0b3IgKmluc3RhbmNlKQorCisjZGVmaW5lIERFRklORV9WQUxVRShQcm9wZXJ0eSkgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVWYWx1ZSMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3RvciAq
aW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSkKKworI2RlZmluZSBERUZJTkVfSEFORExFX0lOSEVS
SVQoUHJvcGVydHksIFNldHRlciwgR2V0dGVyKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkg
XAoreyBcCisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihpbnN0YW5jZS0+bV9wYXJlbnRT
dHlsZS0+R2V0dGVyKCkpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9JTkhFUklUX0JB
Q0tVUChQcm9wZXJ0eSwgU2V0dGVyLCBHZXR0ZXIsIEJhY2t1cCkgXAorREVGSU5FX0lOSEVSSVQo
UHJvcGVydHkpIFwKK3sgXAorICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0dGVy
KCkuaXNWYWxpZCgpKSBcCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoaW5zdGFu
Y2UtPm1fcGFyZW50U3R5bGUtPkdldHRlcigpKTsgXAorICAgIGVsc2UgXAorICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+U2V0dGVyKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5CYWNrdXAoKSk7
IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX0lOSVRJQUwoUHJvcGVydHksIFNldHRlciwg
R2V0dGVyKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPlNldHRlcihSZW5kZXJTdHlsZTo6R2V0dGVyKCkpOyBcCit9CisKKyNkZWZpbmUg
REVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9J
TklUSUFMKFByb3BlcnR5KSBcCit7IFwKKyAgICBDb2xvciBjb2w7IFwKKyAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+U2V0dGVyKGNvbCk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX1ZBTFVF
KFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAg
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsgXAorICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoKnApOyBcCisgICAgfSBcCit9CisKKyNkZWZp
bmUgREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVf
VkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7IFwKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsgXAorICAgICAgICBDb2xvciBjb2wgPSBpbnN0YW5jZS0+Z2V0
Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUocCk7IFwKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PlNldHRlcihjb2wpOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX0lOSEVSSVQoUHJvcGVydHksIGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9w
KSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgRmlsbExheWVyKiBjdXJy
Q2hpbGQgPSBpbnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzIyNMYXllclR5cGUjI0xheWVycygpOyBc
CisgICAgRmlsbExheWVyKiBwcmV2Q2hpbGQgPSAwOyBcCisgICAgY29uc3QgRmlsbExheWVyKiBj
dXJyUGFyZW50ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmxheWVyVHlwZSMjTGF5ZXJzKCk7
IFwKKyAgICB3aGlsZSAoY3VyclBhcmVudCAmJiBjdXJyUGFyZW50LT5pcyMjUHJvcCMjU2V0KCkp
IHsgXAorICAgICAgICBpZiAoIWN1cnJDaGlsZCkgeyBcCisgICAgICAgICAgICAvKiBOZWVkIHRv
IG1ha2UgYSBuZXcgbGF5ZXIuKi8gXAorICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxM
YXllcihMYXllclR5cGUjI0ZpbGxMYXllcik7IFwKKyAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0
TmV4dChjdXJyQ2hpbGQpOyBcCisgICAgICAgIH0gXAorICAgICAgICBjdXJyQ2hpbGQtPnNldCMj
UHJvcChjdXJyUGFyZW50LT5wcm9wKCkpOyBcCisgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGls
ZDsgXAorICAgICAgICBjdXJyQ2hpbGQgPSBwcmV2Q2hpbGQtPm5leHQoKTsgXAorICAgICAgICBj
dXJyUGFyZW50ID0gY3VyclBhcmVudC0+bmV4dCgpOyBcCisgICAgfSBcCisgICAgXAorICAgIHdo
aWxlIChjdXJyQ2hpbGQpIHsgXAorICAgICAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGxheWVy
cyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAgICAgIGN1cnJDaGlsZC0+
Y2xlYXIjI1Byb3AoKTsgXAorICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsg
XAorICAgIH0gXAorfQorCisjZGVmaW5lIERFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFM
KFByb3BlcnR5LCBsYXllclR5cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX0lO
SVRJQUwoUHJvcGVydHkpIFwKK3sgXAorICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gaW5zdGFu
Y2UtPm1fc3R5bGUtPmFjY2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAorICAgIGN1cnJDaGls
ZC0+c2V0IyNQcm9wKEZpbGxMYXllcjo6aW5pdGlhbEZpbGwjI1Byb3AoTGF5ZXJUeXBlIyNGaWxs
TGF5ZXIpKTsgXAorICAgIGZvciAoY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IGN1cnJD
aGlsZDsgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCkpIFwKKyAgICAgICAgY3VyckNoaWxk
LT5jbGVhciMjUHJvcCgpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X1ZBTFVFKFByb3BlcnR5LCBsYXllclR5cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAorREVG
SU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7IFwKKyAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IGlu
c3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7IFwKKyAgICBGaWxs
TGF5ZXIqIHByZXZDaGlsZCA9IDA7IFwKKyAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsg
XAorICAgICAgICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNy
ZWF0aW5nIG5ldyBsYXllcnMgYXMgbmVlZGVkLiAqLyBcCisgICAgICAgIENTU1ZhbHVlTGlzdCog
dmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOyBcCisgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7
IFwKKyAgICAgICAgICAgIGlmICghY3VyckNoaWxkKSB7IFwKKyAgICAgICAgICAgICAgICAvKiBO
ZWVkIHRvIG1ha2UgYSBuZXcgbGF5ZXIgdG8gaG9sZCB0aGlzIHZhbHVlICovIFwKKyAgICAgICAg
ICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKExheWVyVHlwZSMjRmlsbExheWVyKTsg
XAorICAgICAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOyBcCisgICAg
ICAgICAgICB9IFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tYXBGaWxsIyNQcm9wKFByb3BlcnR5
LCBjdXJyQ2hpbGQsIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKKyAg
ICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsgXAorICAgICAgICAgICAgY3VyckNoaWxk
ID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAgICAgICAgfSBcCisgICAgfSBlbHNlIHsgXAorICAg
ICAgICBpbnN0YW5jZS0+bWFwRmlsbCMjUHJvcChQcm9wZXJ0eSwgY3VyckNoaWxkLCB2YWx1ZSk7
IFwKKyAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAgICB9IFwKKyAg
ICB3aGlsZSAoY3VyckNoaWxkKSB7IFwKKyAgICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBs
YXllcnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorICAgICAgICBjdXJyQ2hp
bGQtPmNsZWFyIyNQcm9wKCk7IFwKKyAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0
KCk7IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfTlVMTF9JTkhFUklUKFByb3BlcnR5
KSBERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkge1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7fQorI2Rl
ZmluZSBERUZJTkVfTlVMTF9JTklUSUFMKFByb3BlcnR5KSBERUZJTkVfSU5JVElBTChQcm9wZXJ0
eSkge1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJTkVfTlVMTF9WQUxVRShQ
cm9wZXJ0eSkgREVGSU5FX1ZBTFVFKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsg
VU5VU0VEX1BBUkFNKHZhbHVlKTt9CisKKyNkZWZpbmUgREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVS
SVQoUHJvcGVydHkpIERFRklORV9JTkhFUklUKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3Rh
bmNlKTsgQVNTRVJUX05PVF9SRUFDSEVEKCk7fQorI2RlZmluZSBERUZJTkVfVU5SRUFDSEFCTEVf
SU5JVElBTChQcm9wZXJ0eSkgREVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIHtVTlVTRURfUEFSQU0o
aW5zdGFuY2UpOyBBU1NFUlRfTk9UX1JFQUNIRUQoKTt9CisjZGVmaW5lIERFRklORV9VTlJFQUNI
QUJMRV9WQUxVRShQcm9wZXJ0eSkgREVGSU5FX1ZBTFVFKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFN
KGluc3RhbmNlKTsgVU5VU0VEX1BBUkFNKHZhbHVlKTsgQVNTRVJUX05PVF9SRUFDSEVEKCk7fQor
CisjZGVmaW5lIERFRklORV9FUVVJVkFMRU5UX0lOSEVSSVQoUHJvcGVydHksIEVxdWl2YWxlbnQp
IFwKK0RFRklORV9JTkhFUklUKFByb3BlcnR5KSB7Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5o
ZXJpdCMjRXF1aXZhbGVudChpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9J
TklUSUFMKFByb3BlcnR5LCBFcXVpdmFsZW50KSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkg
e0NTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI0VxdWl2YWxlbnQoaW5zdGFuY2UpO30K
KyNkZWZpbmUgREVGSU5FX0VRVUlWQUxFTlRfVkFMVUUoUHJvcGVydHksIEVxdWl2YWxlbnQpIFwK
K0RFRklORV9WQUxVRShQcm9wZXJ0eSkge0NTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNF
cXVpdmFsZW50KGluc3RhbmNlLCB2YWx1ZSk7fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9Q
Uk9QRVJUWShQcm9wZXJ0eSwgRXF1aXZhbGVudCkgXAorREVGSU5FX0VRVUlWQUxFTlRfSU5IRVJJ
VChQcm9wZXJ0eSwgRXF1aXZhbGVudCkgXAorREVGSU5FX0VRVUlWQUxFTlRfSU5JVElBTChQcm9w
ZXJ0eSwgRXF1aXZhbGVudCkgXAorREVGSU5FX0VRVUlWQUxFTlRfVkFMVUUoUHJvcGVydHksIEVx
dWl2YWxlbnQpCisKKy8vIFhYWCBjb21iaW5lIEVYUEFORElORyBkZWZpbml0aW9ucz8KKyNkZWZp
bmUgREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RXTyhQcm9wZXJ0eSwgRmlyc3QsIFNlY29uZCkg
XAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6
OmhhbmRsZUluaGVyaXQjI0ZpcnN0KGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6
OmhhbmRsZUluaGVyaXQjI1NlY29uZChpbnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVf
RVhQQU5ESU5HX0lOSVRJQUxfVFdPKFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kKSBcCitERUZJTkVf
SU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5p
dGlhbCMjRmlyc3QoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5p
dGlhbCMjU2Vjb25kKGluc3RhbmNlKTsgXAorfQorCisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdf
VkFMVUVfVFdPKFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kKSBcCitERUZJTkVfVkFMVUUoUHJvcGVy
dHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNGaXJzdChpbnN0
YW5jZSwgdmFsdWUpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWUjI1NlY29u
ZChpbnN0YW5jZSwgdmFsdWUpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0VYUEFORElOR19JTkhF
UklUX1RIUkVFKFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kLCBUaGlyZCkgXAorREVGSU5FX0lOSEVS
SVQoUHJvcGVydHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQj
I0ZpcnN0KGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQj
I1NlY29uZChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0
IyNUaGlyZChpbnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSVRJ
QUxfVEhSRUUoUHJvcGVydHksIEZpcnN0LCBTZWNvbmQsIFRoaXJkKSBcCitERUZJTkVfSU5JVElB
TChQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMj
Rmlyc3QoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMj
U2Vjb25kKGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwj
I1RoaXJkKGluc3RhbmNlKTsgXAorfQorCisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdfSU5IRVJJ
VF9GT1VSKFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kLCBUaGlyZCwgRm91cnRoKSBcCitERUZJTkVf
SU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5o
ZXJpdCMjRmlyc3QoaW5zdGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5o
ZXJpdCMjU2Vjb25kKGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUlu
aGVyaXQjI1RoaXJkKGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUlu
aGVyaXQjI0ZvdXJ0aChpbnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5H
X0lOSVRJQUxfRk9VUihQcm9wZXJ0eSwgRmlyc3QsIFNlY29uZCwgVGhpcmQsIEZvdXJ0aCkgXAor
REVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6Omhh
bmRsZUluaXRpYWwjI0ZpcnN0KGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6Omhh
bmRsZUluaXRpYWwjI1NlY29uZChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpo
YW5kbGVJbml0aWFsIyNUaGlyZChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpo
YW5kbGVJbml0aWFsIyNGb3VydGgoaW5zdGFuY2UpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX1NQ
QUNJTkdfVkFMVUUoUHJvcGVydHksIFNldHRlcikgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBc
Cit7IFwKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeyBcCisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7IFwKKyAgICAgICAgYm9vbCB1c2VTVkdab29tUnVsZXMgPSBpbnN0YW5jZS0+bV9lbGVtZW50
ICYmIGluc3RhbmNlLT5tX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOyBcCisgICAgICAgIGludCB3
aWR0aCA9IDA7IFwKKyAgICAgICAgaWYgKHAtPmdldElkZW50KCkgIT0gQ1NTVmFsdWVOb3JtYWwp
IFwKKyAgICAgICAgICAgIHdpZHRoID0gcC0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9z
dHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgdXNlU1ZHWm9vbVJ1bGVz
ID8gMS4wZiA6IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpOyBcCisgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIod2lkdGgpOyBcCisgICAgfSBcCit9CisjZGVmaW5l
IERFRklORV9XSURUSF9WQUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJv
cGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsgXAorICAgICAgICBzaG9ydCB3aWR0aCA9IDM7IFwKKyAgICAgICAgc3dpdGNo
IChwLT5nZXRJZGVudCgpKSB7IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaW46IFwKKyAgICAg
ICAgICAgIHdpZHRoID0gMTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgY2FzZSBD
U1NWYWx1ZU1lZGl1bTogXAorICAgICAgICAgICAgd2lkdGggPSAzOyBcCisgICAgICAgICAgICBi
cmVhazsgXAorICAgICAgICBjYXNlIENTU1ZhbHVlVGhpY2s6IFwKKyAgICAgICAgICAgIHdpZHRo
ID0gNTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUludmFs
aWQ6IFwKKyAgICAgICAgICAgIHdpZHRoID0gcC0+Y29tcHV0ZUxlbmd0aFNob3J0KGluc3RhbmNl
LT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+
bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAg
ICAgZGVmYXVsdDogXAorICAgICAgICAgICAgcmV0dXJuOyBcCisgICAgICAgIH0gXAorICAgICAg
ICBpZiAod2lkdGggPj0gMCkgeyBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0
dGVyKHdpZHRoKTsgXAorICAgICAgICB9IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVf
TEVOR1RIX1ZBTFVFKFByb3BlcnR5LCBTZXR0ZXIsIE5vbmVFbmFibGVkLCBJbnRyaW5zaWNFbmFi
bGVkLCBNaW5JbnRyaW5zaWNFbmFibGVkLCBBdXRvRW5hYmxlZCwgTm9uZVVuZGVmaW5lZCkgXAor
REVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7IFwKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkgeyBcCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAgIGlmIChO
b25lRW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUp
IFwKKyAgICAgICAgICAgIGlmIChOb25lVW5kZWZpbmVkKSBcCisgICAgICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPlNldHRlcihMZW5ndGgodW5kZWZpbmVkTGVuZ3RoLCBGaXhlZCkpOyBc
CisgICAgICAgICAgICBlbHNlIFwKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
U2V0dGVyKExlbmd0aCgpKTsgXAorICAgICAgICBlbHNlIGlmIChJbnRyaW5zaWNFbmFibGVkICYm
IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW50cmluc2ljKSBcCisgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKExlbmd0aChJbnRyaW5zaWMpKTsgXAor
ICAgICAgICBlbHNlIGlmIChNaW5JbnRyaW5zaWNFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlTWluSW50cmluc2ljKSBcCisgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+U2V0dGVyKExlbmd0aChNaW5JbnRyaW5zaWMpKTsgXAorICAgICAgICBlbHNl
IGlmIChBdXRvRW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUF1dG8pIFwKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKCkp
OyBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCk7IFwKKyAgICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1
ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgXAorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9y
TGVuZ3RoKGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0
eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSwgRml4ZWQsIHByaW1pdGl2
ZVZhbHVlLT5pc1F1aXJrVmFsdWUoKSkpOyBcCisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgXAorICAgICAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpLCBQZXJjZW50KSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9CisKKyNkZWZpbmUg
REVGSU5FX1JBRElVU19WQUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJv
cGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7IFwKKyAgICAgICAgUGFpciogcGFpciA9IHByaW1pdGl2
ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsgXAorICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZp
cnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKSBcCisgICAgICAgICAgICByZXR1cm47IFwKKyAgICAg
ICAgTGVuZ3RoIHJhZGl1c1dpZHRoOyBcCisgICAgICAgIExlbmd0aCByYWRpdXNIZWlnaHQ7IFwK
KyAgICAgICAgaWYgKHBhaXItPmZpcnN0KCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIFwKKyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVu
Z3RoKHBhaXItPmZpcnN0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOyBcCisgICAgICAg
IGVsc2UgXAorICAgICAgICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgobWF4KGludE1pbkZvckxl
bmd0aCwgbWluKGludE1heEZvckxlbmd0aCwgcGFpci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aElu
dChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwg
aW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkpKSwgRml4ZWQpOyBcCisgICAgICAg
IGlmIChwYWlyLT5zZWNvbmQoKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSkgXAorICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKHBh
aXItPnNlY29uZCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsgXAorICAgICAgICBlbHNl
IFwKKyAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0aChtYXgoaW50TWluRm9yTGVuZ3Ro
LCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aEludChp
bnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5z
dGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkpKSwgRml4ZWQpOyBcCisgICAgICAgIGlu
dCB3aWR0aCA9IHJhZGl1c1dpZHRoLnJhd1ZhbHVlKCk7IFwKKyAgICAgICAgaW50IGhlaWdodCA9
IHJhZGl1c0hlaWdodC5yYXdWYWx1ZSgpOyBcCisgICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVp
Z2h0IDwgMCkgXAorICAgICAgICAgICAgcmV0dXJuOyBcCisgICAgICAgIGlmICghd2lkdGgpIFwK
KyAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IHJhZGl1c1dpZHRoOyBcCisgICAgICAgIGVsc2Ug
aWYgKCFoZWlnaHQpIFwKKyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gcmFkaXVzSGVpZ2h0OyBc
CisgICAgICAgIExlbmd0aFNpemUgc2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsgXAor
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKHNpemUpOyBcCisgICAgfSBcCit9CisK
KyNkZWZpbmUgREVGSU5FX1NIQURPV19WQUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVf
VkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7IFwKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcigwKTsgXAorICAgIH0gZWxz
ZSBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsgXAorICAgICAgICBDU1NWYWx1ZUxpc3QqIGxp
c3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKKyAgICAgICAgaW50IGxl
biA9IGxpc3QtPmxlbmd0aCgpOyBcCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBp
KyspIHsgXAorICAgICAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGxpc3QtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soaSk7IFwKKyAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1NoYWRv
d1ZhbHVlKCkpIFwKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgXAorICAgICAgICAgICAgU2hh
ZG93VmFsdWUqIGl0ZW0gPSBzdGF0aWNfY2FzdDxTaGFkb3dWYWx1ZSo+KGxpc3QtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soaSkpOyBcCisgICAgICAgICAgICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1
dGVMZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVt
ZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpOyBcCisgICAgICAg
ICAgICBpbnQgeSA9IGl0ZW0tPnktPmNvbXB1dGVMZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUu
Z2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5l
ZmZlY3RpdmVab29tKCkpOyBcCisgICAgICAgICAgICBpbnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBp
dGVtLT5ibHVyLT5jb21wdXRlTGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0
YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9v
bSgpKSA6IDA7IFwKKyAgICAgICAgICAgIGludCBzcHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVt
LT5zcHJlYWQtPmNvbXB1dGVMZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3Rh
bmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29t
KCkpIDogMDsgXAorICAgICAgICAgICAgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUgPSBpdGVtLT5z
dHlsZSAmJiBpdGVtLT5zdHlsZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluc2V0ID8gSW5zZXQg
OiBOb3JtYWw7IFwKKyAgICAgICAgICAgIENvbG9yIGNvbG9yOyBcCisgICAgICAgICAgICBpZiAo
aXRlbS0+Y29sb3IpIFwKKyAgICAgICAgICAgICAgICBjb2xvciA9IGluc3RhbmNlLT5nZXRDb2xv
ckZyb21QcmltaXRpdmVWYWx1ZShpdGVtLT5jb2xvci5nZXQoKSk7IFwKKyAgICAgICAgICAgIFNo
YWRvd0RhdGEqIHNoYWRvd0RhdGEgPSBuZXcgU2hhZG93RGF0YSh4LCB5LCBibHVyLCBzcHJlYWQs
IHNoYWRvd1N0eWxlLCBQcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29s
b3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOyBcCisgICAgICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKHNoYWRvd0RhdGEsICEhaSk7IFwKKyAgICAgICAg
fSBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKFByb3Bl
cnR5LCBwcm9wLCBQcm9wKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAg
QW5pbWF0aW9uTGlzdCogbGlzdCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25z
KCk7IFwKKyAgICBjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gaW5zdGFuY2UtPm1f
cGFyZW50U3R5bGUtPmFuaW1hdGlvbnMoKTsgXAorICAgIHNpemVfdCBpID0gMCwgcGFyZW50U2l6
ZSA9IHBhcmVudExpc3QgPyBwYXJlbnRMaXN0LT5zaXplKCkgOiAwOyBcCisgICAgZm9yICggOyBp
IDwgcGFyZW50U2l6ZSAmJiBwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPmlzIyNQcm9wIyNTZXQo
KTsgKytpKSB7IFwKKyAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBpKSBcCisgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICAgICAgbGlzdC0+YW5p
bWF0aW9uKGkpLT5zZXQjI1Byb3AocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5wcm9wKCkpOyBc
CisgICAgfSBcCisgICAgXAorICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgYW5pbWF0aW9ucyB0
byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAgZm9yICggOyBpIDwgbGlzdC0+
c2l6ZSgpOyArK2kpIFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5jbGVhciMjUHJvcCgp
OyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKFByb3BlcnR5LCBwcm9w
LCBQcm9wKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgQW5pbWF0aW9u
TGlzdCogbGlzdCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKKyAg
ICBpZiAobGlzdC0+aXNFbXB0eSgpKSBcCisgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246
OmNyZWF0ZSgpKTsgXAorICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+c2V0IyNQcm9wKEFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbiMjUHJvcCgpKTsgXAorICAgIGZvciAoc2l6ZV90IGkgPSAxOyBp
IDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKDApLT5jbGVh
ciMjUHJvcCgpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVElPTl9WQUxVRShQcm9wZXJ0
eSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7IFwKKyAgICBBbmlt
YXRpb25MaXN0KiBsaXN0ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2Vzc0FuaW1hdGlvbnMoKTsg
XAorICAgIHNpemVfdCBjaGlsZEluZGV4ID0gMDsgXAorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxp
c3QoKSkgeyBcCisgICAgICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYW4g
YW5pbWF0aW9uLCBjcmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKKyAgICAg
ICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2
YWx1ZSk7IFwKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3Qt
Pmxlbmd0aCgpOyBpKyspIHsgXAorICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+
c2l6ZSgpKSBcCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRl
KCkpOyBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFu
aW1hdGlvbihjaGlsZEluZGV4KSwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkp
KTsgXAorICAgICAgICAgICAgKytjaGlsZEluZGV4OyBcCisgICAgICAgIH0gXAorICAgIH0gZWxz
ZSB7IFwKKyAgICAgICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkgXAorICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgICAgIGluc3RhbmNlLT5tYXBBbmlt
YXRpb24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7IFwKKyAgICAg
ICAgY2hpbGRJbmRleCA9IDE7IFwKKyAgICB9IFwKKyAgICBmb3IgKCA7IGNoaWxkSW5kZXggPCBs
aXN0LT5zaXplKCk7ICsrY2hpbGRJbmRleCkgeyBcCisgICAgICAgIC8qIFJlc2V0IGFsbCByZW1h
aW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAg
ICAgIGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KS0+Y2xlYXIjI1Byb3AoKTsgXAorICAgIH0g
XAorfQorCisjZGVmaW5lIERFRklORV9UUkFOU0lUSU9OX0lOSEVSSVQoUHJvcGVydHksIHByb3As
IFByb3ApIFwKK0RFRklORV9JTkhFUklUKFByb3BlcnR5KSBcCit7IFwKKyAgICBBbmltYXRpb25M
aXN0KiBsaXN0ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2Vzc1RyYW5zaXRpb25zKCk7IFwKKyAg
ICBjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPnRyYW5zaXRpb25zKCk7IFwKKyAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJl
bnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDsgXAorICAgIGZvciAoIDsgaSA8IHBhcmVu
dFNpemUgJiYgcGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5pcyMjUHJvcCMjU2V0KCk7ICsraSkg
eyBcCisgICAgICAgIGlmIChsaXN0LT5zaXplKCkgPD0gaSkgXAorICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbihp
KS0+c2V0IyNQcm9wKHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+cHJvcCgpKTsgXAorICAgIH0g
XAorICAgIFwKKyAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5vdCBo
YXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKKyAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXplKCk7
ICsraSkgXAorICAgICAgICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwKK30K
KworI2RlZmluZSBERUZJTkVfVFJBTlNJVElPTl9JTklUSUFMKFByb3BlcnR5LCBwcm9wLCBQcm9w
KSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgQW5pbWF0aW9uTGlzdCog
bGlzdCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCisgICAgaWYg
KGxpc3QtPmlzRW1wdHkoKSkgXAorICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVh
dGUoKSk7IFwKKyAgICBsaXN0LT5hbmltYXRpb24oMCktPnNldCMjUHJvcChBbmltYXRpb246Omlu
aXRpYWxBbmltYXRpb24jI1Byb3AoKSk7IFwKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxp
c3QtPnNpemUoKTsgKytpKSBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+Y2xlYXIjI1By
b3AoKTsgXAorfQorCisjZGVmaW5lIERFRklORV9UUkFOU0lUSU9OX1ZBTFVFKFByb3BlcnR5LCBw
cm9wLCBQcm9wKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIEFuaW1hdGlv
bkxpc3QqIGxpc3QgPSBpbnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMoKTsgXAor
ICAgIHNpemVfdCBjaGlsZEluZGV4ID0gMDsgXAorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSkgeyBcCisgICAgICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSB0cmFu
c2l0aW9uLCBjcmVhdGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKKyAgICAgICAg
Q1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1
ZSk7IFwKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxl
bmd0aCgpOyBpKyspIHsgXAorICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6
ZSgpKSBcCisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkp
OyBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1h
dGlvbihjaGlsZEluZGV4KSwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsg
XAorICAgICAgICAgICAgKytjaGlsZEluZGV4OyBcCisgICAgICAgIH0gXAorICAgIH0gZWxzZSB7
IFwKKyAgICAgICAgaWYgKGxpc3QtPmlzRW1wdHkoKSkgXAorICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgICAgIGluc3RhbmNlLT5tYXBBbmltYXRp
b24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7IFwKKyAgICAgICAg
Y2hpbGRJbmRleCA9IDE7IFwKKyAgICB9IFwKKyAgICBmb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0
LT5zaXplKCk7ICsrY2hpbGRJbmRleCkgeyBcCisgICAgICAgIC8qIFJlc2V0IGFsbCByZW1haW5p
bmcgdHJhbnNpdGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorICAgICAg
ICBsaXN0LT5hbmltYXRpb24oY2hpbGRJbmRleCktPmNsZWFyIyNQcm9wKCk7IFwKKyAgICB9IFwK
K30KKworLy8gQ1NTUHJvcGVydHlJbnZhbGlkCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3Bl
cnR5SW52YWxpZCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlJbnZhbGlkKQorREVG
SU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlJbnZhbGlkKQorCisvLyBDU1NQcm9wZXJ0eUNvbG9y
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlDb2xvciwgc2V0Q29sb3IsIGNvbG9y
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Q29sb3IsIHNldENvbG9yLCBpbml0
aWFsQ29sb3IpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlDb2xvcikKK3sKKyAgICBpZiAodmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocC0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKKyAgICAgICAgICAgIENTU1N0eWxl
U2VsZWN0b3I6OmhhbmRsZUluaGVyaXRDU1NQcm9wZXJ0eUNvbG9yKGluc3RhbmNlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbG9yKGluc3RhbmNl
LT5nZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShwKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9w
ZXJ0eURpcmVjdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5RGlyZWN0aW9u
LCBzZXREaXJlY3Rpb24sIGRpcmVjdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eURpcmVjdGlvbiwgc2V0RGlyZWN0aW9uLCBpbml0aWFsRGlyZWN0aW9uKQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5RGlyZWN0aW9uKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRE
aXJlY3Rpb24oKnApOworICAgIH0KKyAgICBpZiAoaW5zdGFuY2UtPm1fZWxlbWVudCAmJiBpbnN0
YW5jZS0+bV9lbGVtZW50ID09IGluc3RhbmNlLT5tX2VsZW1lbnQtPmRvY3VtZW50KCktPmRvY3Vt
ZW50RWxlbWVudCgpKQorICAgICAgICBpbnN0YW5jZS0+bV9lbGVtZW50LT5kb2N1bWVudCgpLT5z
ZXREaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudCh0cnVlKTsKK30KKworLy8gQ1NTUHJvcGVy
dHlEaXNwbGF5CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlEaXNwbGF5LCBzZXRE
aXNwbGF5LCBkaXNwbGF5KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5RGlzcGxh
eSwgc2V0RGlzcGxheSwgaW5pdGlhbERpc3BsYXkpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlE
aXNwbGF5KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisjaWYgRU5BQkxFKFdDU1MpCisgICAgICAgIGlmIChwLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlV2FwTWFycXVlZSkgeworICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBXQVAgTWFycXVl
ZSBzdHlsZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE92ZXJmbG93WChPTUFS
UVVFRSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3ZlcmZsb3dZKE9NQVJR
VUVFKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRXaGl0ZVNwYWNlKE5PV1JB
UCk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihN
TEVGVCk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDg1
KTsgLy8gTm9ybWFsIHNwZWVkCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFy
cXVlZUxvb3BDb3VudCgxKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJx
dWVlQmVoYXZpb3IoTVNDUk9MTCk7CisKKyAgICAgICAgICAgIGlmIChpbnN0YW5jZS0+bV9wYXJl
bnRTdHlsZSkgeworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXREaXNwbGF5
KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5kaXNwbGF5KCkpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXREaXNwbGF5KCpwKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5Rm9u
dAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlGb250KQoreworICAgIEZvbnREZXNjcmlwdGlv
biBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldExpbmVIZWlnaHQoaW5zdGFuY2UtPm1f
cGFyZW50U3R5bGUtPmxpbmVIZWlnaHQoKSk7CisgICAgaW5zdGFuY2UtPm1fbGluZUhlaWdodFZh
bHVlID0gMDsKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihm
b250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOwor
fQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlGb250KQoreworICAgIFNldHRpbmdzKiBzZXR0
aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICBB
U1NFUlQoc2V0dGluZ3MpOyAvLyBJZiB3ZSdyZSBkb2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlz
IGRvY3VtZW50IHNob3VsZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRp
bmdzCisgICAgaWYgKCFzZXR0aW5ncykKKyAgICAgICAgcmV0dXJuOworICAgIEZvbnREZXNjcmlw
dGlvbiBmb250RGVzY3JpcHRpb247CisgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1p
bHkoRm9udERlc2NyaXB0aW9uOjpTdGFuZGFyZEZhbWlseSk7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOworICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9j
dW1lbnQtPnByaW50aW5nKCkpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhbmRhcmRGb250
RmFtaWx5ID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpLT5zdGFu
ZGFyZEZvbnRGYW1pbHkoKTsKKyAgICBpZiAoIXN0YW5kYXJkRm9udEZhbWlseS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuc2V0RmFtaWx5KHN0YW5k
YXJkRm9udEZhbWlseSk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLmFw
cGVuZEZhbWlseSgwKTsKKyAgICB9CisgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXpl
KENTU1ZhbHVlTWVkaXVtIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7CisgICAgaW5zdGFuY2UtPnNl
dEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgZm9udFNpemVGb3JLZXl3b3JkKGluc3RhbmNlLT5t
X2NoZWNrZXIubV9kb2N1bWVudCwgQ1NTVmFsdWVNZWRpdW0sIGZhbHNlKSk7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0
KCkpOworICAgIGluc3RhbmNlLT5tX2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisgICAgaWYgKGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAg
ICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eUZvbnQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisKKyAgICAgICAgYm9vbCB1c2VTVkdab29tUnVsZXMgPSBp
bnN0YW5jZS0+bV9lbGVtZW50ICYmIGluc3RhbmNlLT5tX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgp
OworCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxl
Ojppbml0aWFsTGluZUhlaWdodCgpKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fbGluZUhlaWdodFZh
bHVlID0gMDsKKworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOworICAg
ICAgICBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5c3RlbUZvbnQocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCksIGZvbnREZXNjcmlwdGlvbik7CisKKyAgICAgICAgLy8gRG91YmxlLWNo
ZWNrIGFuZCBzZWUgaWYgdGhlIHRoZW1lIGRpZCBhbnl0aGluZy4gIElmIG5vdCwgZG9uJ3QgYm90
aGVyIHVwZGF0aW5nIHRoZSBmb250LgorICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmlzQWJz
b2x1dGVTaXplKCkpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcmVuZGVyaW5nIG1v
ZGUgYW5kIHByaW50ZXIgZm9udCBzZXR0aW5ncyBhcmUgdXBkYXRlZC4KKyAgICAgICAgICAgIFNl
dHRpbmdzKiBzZXR0aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGlu
Z3MoKTsKKyAgICAgICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0
eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1l
IGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKKyAgICAgICAgICAgIGlmICghc2V0dGluZ3MpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRl
cmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOworICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFVzZVByaW50ZXJGb250KGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1
bWVudC0+cHJpbnRpbmcoKSk7CisKKyAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBmYWN0
b3IuCisgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGdldENvbXB1
dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudCwg
aW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgp
LCBmb250RGVzY3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgpLCB1c2VTVkdab29tUnVsZXMpKTsKKyAg
ICAgICAgICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnRE
ZXNjcmlwdGlvbikpCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzRm9udFZhbHVlKCkpIHsKKyAg
ICAgICAgRm9udFZhbHVlKiBmb250ID0gc3RhdGljX2Nhc3Q8Rm9udFZhbHVlKj4odmFsdWUpOwor
ICAgICAgICBpZiAoIWZvbnQtPnN0eWxlIHx8ICFmb250LT52YXJpYW50IHx8ICFmb250LT53ZWln
aHQgfHwgIWZvbnQtPnNpemUgfHwgIWZvbnQtPmxpbmVIZWlnaHQgfHwgIWZvbnQtPmZhbWlseSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFs
dWVDU1NQcm9wZXJ0eUZvbnRTdHlsZShpbnN0YW5jZSwgZm9udC0+c3R5bGUuZ2V0KCkpOworICAg
ICAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5Rm9udFZhcmlhbnQo
aW5zdGFuY2UsIGZvbnQtPnZhcmlhbnQuZ2V0KCkpOworICAgICAgICBDU1NTdHlsZVNlbGVjdG9y
OjpoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5Rm9udFdlaWdodChpbnN0YW5jZSwgZm9udC0+d2VpZ2h0
LmdldCgpKTsKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWVDU1NQcm9wZXJ0
eUZvbnRTaXplKGluc3RhbmNlLCBmb250LT5zaXplLmdldCgpKTsKKworICAgICAgICBpbnN0YW5j
ZS0+bV9saW5lSGVpZ2h0VmFsdWUgPSBmb250LT5saW5lSGVpZ2h0LmdldCgpOworCisgICAgICAg
IENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlQ1NTUHJvcGVydHlGb250RmFtaWx5KGluc3Rh
bmNlLCBmb250LT5mYW1pbHkuZ2V0KCkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlGb250
RmFtaWx5CisvLyBsaXN0IG9mIHN0cmluZ3MgYW5kIGlkcworREVGSU5FX0lOSEVSSVQoQ1NTUHJv
cGVydHlGb250RmFtaWx5KQoreworICAgIEZvbnREZXNjcmlwdGlvbiBwYXJlbnRGb250RGVzY3Jp
cHRpb24gPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAg
Rm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250
RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShwYXJl
bnRGb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpKTsKKyAgICBmb250RGVzY3JpcHRpb24u
c2V0RmFtaWx5KHBhcmVudEZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpKTsKKyAgICBmb250
RGVzY3JpcHRpb24uc2V0SXNTcGVjaWZpZWRGb250KHBhcmVudEZvbnREZXNjcmlwdGlvbi5pc1Nw
ZWNpZmllZEZvbnQoKSk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3Jp
cHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0g
dHJ1ZTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udEZhbWlseSkKK3sKKyAgICBG
b250RGVzY3JpcHRpb24gaW5pdGlhbERlc2MgPSBGb250RGVzY3JpcHRpb24oKTsKKyAgICBGb250
RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNj
cmlwdGlvbigpOworICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IHRoZSBzaXplIHRvIGFjY291bnQg
Zm9yIHRoZSBnZW5lcmljIGZhbWlseSBjaGFuZ2UgZnJvbSBtb25vc3BhY2UKKyAgICAvLyB0byBu
b24tbW9ub3NwYWNlLgorICAgIGlmIChmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBm
b250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpKQorICAgICAgICBpbnN0YW5jZS0+
c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdvcmQoaW5zdGFuY2Ut
Pm1fY2hlY2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24u
a2V5d29yZFNpemUoKSAtIDEsIGZhbHNlKSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVy
aWNGYW1pbHkoaW5pdGlhbERlc2MuZ2VuZXJpY0ZhbWlseSgpKTsKKyAgICBpZiAoIWluaXRpYWxE
ZXNjLmZpcnN0RmFtaWx5KCkuZmFtaWx5SXNFbXB0eSgpKQorICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0RmFtaWx5KGluaXRpYWxEZXNjLmZpcnN0RmFtaWx5KCkpOworICAgIGlmIChpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAg
IGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlGb250RmFtaWx5KQoreworICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCisgICAgICAg
IHJldHVybjsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2Ut
Pm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0
YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAgICBpbnQgbGVuID0gbGlzdC0+bGVu
Z3RoKCk7CisgICAgRm9udEZhbWlseSYgZmlyc3RGYW1pbHkgPSBmb250RGVzY3JpcHRpb24uZmly
c3RGYW1pbHkoKTsKKyAgICBGb250RmFtaWx5KiBjdXJyRmFtaWx5ID0gMDsKKworICAgIC8vIEJl
Zm9yZSBtYXBwaW5nIGluIGEgbmV3IGZvbnQtZmFtaWx5IHByb3BlcnR5LCB3ZSBzaG91bGQgcmVz
ZXQgdGhlIGdlbmVyaWMgZmFtaWx5LgorICAgIGJvb2wgb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVs
dFNpemUgPSBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpOworICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6Tm9GYW1pbHkpOwor
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBDU1NWYWx1ZSog
aXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CisgICAgICAgIGlmICghaXRl
bS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGl0ZW0pOworICAgICAgICBBdG9taWNTdHJpbmcgZmFjZTsKKyAgICAgICAgU2V0dGlu
Z3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygp
OworICAgICAgICBpZiAoY29udGVudFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19TVFJJTkcpIHsKKyAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUtPmlz
Rm9udEZhbWlseVZhbHVlKCkpCisgICAgICAgICAgICAgICAgZmFjZSA9IHN0YXRpY19jYXN0PEZv
bnRGYW1pbHlWYWx1ZSo+KGNvbnRlbnRWYWx1ZSktPmZhbWlseU5hbWUoKTsKKyAgICAgICAgfSBl
bHNlIGlmIChjb250ZW50VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0lERU5UICYmIHNldHRpbmdzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRW
YWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJvZHk6
CisgICAgICAgICAgICAgICAgZmFjZSA9IHNldHRpbmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoK
KyAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtc2VyaWYiOworICAgICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U2VyaWZG
YW1pbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVNhbnNTZXJpZjoKKyAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtc2Fucy1zZXJpZiI7
CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERl
c2NyaXB0aW9uOjpTYW5zU2VyaWZGYW1pbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUN1cnNpdmU6CisgICAgICAgICAgICAgICAgZmFjZSA9ICIt
d2Via2l0LWN1cnNpdmUiOworICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5l
cmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6Q3Vyc2l2ZUZhbWlseSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlRmFudGFzeToKKyAgICAgICAgICAg
ICAgICBmYWNlID0gIi13ZWJraXQtZmFudGFzeSI7CisgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpGYW50YXN5RmFtaWx5KTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNb25vc3Bh
Y2U6CisgICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LW1vbm9zcGFjZSI7CisgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9u
OjpNb25vc3BhY2VGYW1pbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmYWNlLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgaWYgKCFjdXJyRmFtaWx5KSB7CisgICAgICAgICAgICAgICAgLy8gRmlsbGluZyBpbiB0aGUg
Zmlyc3QgZmFtaWx5LgorICAgICAgICAgICAgICAgIGZpcnN0RmFtaWx5LnNldEZhbWlseShmYWNl
KTsKKyAgICAgICAgICAgICAgICBmaXJzdEZhbWlseS5hcHBlbmRGYW1pbHkoMCk7IC8vIFJlbW92
ZSBhbnkgaW5oZXJpdGVkIGZhbWlseS1mYWxsYmFjayBsaXN0LgorICAgICAgICAgICAgICAgIGN1
cnJGYW1pbHkgPSAmZmlyc3RGYW1pbHk7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldElzU3BlY2lmaWVkRm9udChmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpID09IEZv
bnREZXNjcmlwdGlvbjo6Tm9GYW1pbHkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8U2hhcmVkRm9udEZhbWlseT4gbmV3RmFtaWx5ID0gU2hhcmVkRm9udEZh
bWlseTo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgbmV3RmFtaWx5LT5zZXRGYW1pbHkoZmFj
ZSk7CisgICAgICAgICAgICAgICAgY3VyckZhbWlseS0+YXBwZW5kRmFtaWx5KG5ld0ZhbWlseSk7
CisgICAgICAgICAgICAgICAgY3VyckZhbWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFdlIGNhbid0IGNhbGwgdXNlRml4ZWRE
ZWZhdWx0U2l6ZSgpIHVudGlsIGFsbCBuZXcgZm9udCBmYW1pbGllcyBoYXZlIGJlZW4gYWRkZWQK
KyAgICAvLyBJZiBjdXJyRmFtaWx5IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2V0IGF0IGxlYXN0IG9u
ZSBmYW1pbHkgb24gdGhpcyBkZXNjcmlwdGlvbi4KKyAgICBpZiAoY3VyckZhbWlseSkgeworICAg
ICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXplKCkgJiYgZm9udERlc2NyaXB0aW9u
LnVzZUZpeGVkRGVmYXVsdFNpemUoKSAhPSBvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkK
KyAgICAgICAgICAgIGluc3RhbmNlLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRT
aXplRm9yS2V5d29yZChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlWHhT
bWFsbCArIGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwgIW9sZEZhbWlseVVzZWRG
aXhlZERlZmF1bHRTaXplKSk7CisKKyAgICAgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgICAgIGluc3RhbmNlLT5t
X2ZvbnREaXJ0eSA9IHRydWU7CisgICAgfQorICAgIHJldHVybjsKK30KKworLy8gQ1NTUHJvcGVy
dHlGb250U2l6ZQorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlGb250U2l6ZSkKK3sKKyAgICBG
b250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnRE
ZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsKKyAg
ICBmbG9hdCBzaXplID0gMDsKKworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnROb2RlKSB7Cisg
ICAgICAgIHNpemUgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCku
c3BlY2lmaWVkU2l6ZSgpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUo
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmtleXdvcmRTaXplKCkp
OworICAgIH0KKworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5z
dGFuY2UtPnNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgc2l6ZSk7CisgICAgaWYgKGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAg
ICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICByZXR1cm47Cit9CitERUZJTkVf
SU5JVElBTChDU1NQcm9wZXJ0eUZvbnRTaXplKQoreworICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKDApOworICAgIGZsb2F0IHNpemUgPSAwOwor
CisgICAgc2l6ZSA9IENTU1N0eWxlU2VsZWN0b3I6OmZvbnRTaXplRm9yS2V5d29yZChpbnN0YW5j
ZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlTWVkaXVtLCBmb250RGVzY3JpcHRpb24u
dXNlRml4ZWREZWZhdWx0U2l6ZSgpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNp
emUoQ1NTVmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKKworICAgIGlmIChzaXpl
IDwgMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW5zdGFuY2UtPnNldEZvbnRTaXplKGZvbnRE
ZXNjcmlwdGlvbiwgc2l6ZSk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVz
Y3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5
ID0gdHJ1ZTsKKyAgICByZXR1cm47Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlGb250U2l6
ZSkKK3sKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworCisgICAgRm9udERlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBm
b250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUoMCk7CisgICAgZmxvYXQgb2xkU2l6ZSA9IDA7
CisgICAgZmxvYXQgc2l6ZSA9IDA7CisKKyAgICBib29sIHBhcmVudElzQWJzb2x1dGVTaXplID0g
ZmFsc2U7CisgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudE5vZGUpIHsKKyAgICAgICAgb2xkU2l6
ZSA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRT
aXplKCk7CisgICAgICAgIHBhcmVudElzQWJzb2x1dGVTaXplID0gaW5zdGFuY2UtPm1fcGFyZW50
U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmlzQWJzb2x1dGVTaXplKCk7CisgICAgfQorCisgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgIC8vIEtleXdvcmRzIGFy
ZSBiZWluZyB1c2VkLgorICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
KSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVYeFNtYWxsOgorICAgICAgICBjYXNlIENTU1ZhbHVl
WFNtYWxsOgorICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGw6CisgICAgICAgIGNhc2UgQ1NTVmFs
dWVNZWRpdW06CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZVhMYXJnZToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVh4TGFyZ2U6CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVXZWJraXRYeHhMYXJnZToKKyAgICAgICAgICAgIHNpemUgPSBmb250U2l6ZUZvcktl
eXdvcmQoaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LCBwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSk7CisgICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNpemUocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENTU1ZhbHVlTGFyZ2VyOgorICAgICAgICAgICAgc2l6ZSA9IGluc3RhbmNlLT5sYXJn
ZXJGb250U2l6ZShvbGRTaXplLCBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPmluUXVp
cmtzTW9kZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlU21h
bGxlcjoKKyAgICAgICAgICAgIHNpemUgPSBpbnN0YW5jZS0+c21hbGxlckZvbnRTaXplKG9sZFNp
emUsIGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUocGFy
ZW50SXNBYnNvbHV0ZVNpemUgJiYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlTGFyZ2VyIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlU21hbGxl
cikpOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXpl
KHBhcmVudElzQWJzb2x1dGVTaXplIHx8ICh0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSAmJiB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TICYmIHR5cGUg
IT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFMgJiYgdHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1JFTVMpKTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBl
TGVuZ3RoKHR5cGUpKQorICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRl
TGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUsIGluc3RhbmNlLT5tX3Jvb3RFbGVt
ZW50U3R5bGUsIHRydWUpOworICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIHNpemUgPSAocHJpbWl0aXZlVmFsdWUt
PmdldEZsb2F0VmFsdWUoKSAqIG9sZFNpemUpIC8gMTAwLjBmOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1
cm47CisKKyAgICBpbnN0YW5jZS0+c2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzaXplKTsK
KyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQorCisKKy8v
IENTU1Byb3BlcnR5Rm9udFN0eWxlCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRTdHls
ZSkKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1f
c3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMo
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKTsKKwor
ICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlw
dGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitERUZJTkVf
SU5JVElBTChDU1NQcm9wZXJ0eUZvbnRTdHlsZSkKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoZmFsc2UpOworCisgICAgaWYgKGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5z
dGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUZv
bnRTdHlsZSkKK3sKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBzd2l0Y2ggKHAt
PmdldElkZW50KCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlT2JsaXF1ZToKKyAgICAvLyBGSVhNRTog
b2JsaXF1ZSBpcyB0aGUgc2FtZSBhcyBpdGFsaWMgZm9yIHRoZSBtb21lbnQuLi4KKyAgICBjYXNl
IENTU1ZhbHVlSXRhbGljOgorICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKHRydWUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0SXRhbGljKGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9m
b250RGlydHkgPSB0cnVlOworfQorCisvLyBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50CitERUZJTkVf
SU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KQoreworICAgIEZvbnREZXNjcmlwdGlvbiBm
b250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Cisg
ICAgZm9udERlc2NyaXB0aW9uLnNldFNtYWxsQ2FwcyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuc21hbGxDYXBzKCkpOworCisgICAgaWYgKGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFu
Y2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnQpCit7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3Rh
bmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0
U21hbGxDYXBzKGZhbHNlKTsKKworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0
eSA9IHRydWU7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlGb250VmFyaWFudCkKK3sKKyAg
ICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5t
X3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICBpbnQgaWQgPSBwLT5nZXRJZGVudCgpOwor
ICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dFNtYWxsQ2FwcyhmYWxzZSk7CisgICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbENhcHMp
CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHModHJ1ZSk7CisgICAgZWxzZQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkg
PSB0cnVlOworfQorCisvLyBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQKK0RFRklORV9JTkhFUklUKENT
U1Byb3BlcnR5Rm9udFdlaWdodCkKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRXZWlnaHQoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLndlaWdodCgpKTsKKworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2Ny
aXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9
IHRydWU7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCit7CisgICAg
Rm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250
RGVzY3JpcHRpb24oKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHRO
b3JtYWwpOworCisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsK
K30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCit7CisgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCk7CisKKyAgICBzd2l0Y2ggKHAtPmdldElkZW50KCkpIHsKKyAgICBjYXNl
IDA6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgQ1NTVmFsdWVCb2xk
ZXI6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2NyaXB0aW9uLmJv
bGRlcldlaWdodCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUxpZ2h0ZXI6
CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9udERlc2NyaXB0aW9uLmxpZ2h0
ZXJXZWlnaHQoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVCb2xkOgorICAg
IGNhc2UgQ1NTVmFsdWU3MDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFdlaWdodEJvbGQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgor
ICAgIGNhc2UgQ1NTVmFsdWU0MDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQo
Rm9udFdlaWdodE5vcm1hbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU5MDA6
CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDkwMCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU4MDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRXZWlnaHQoRm9udFdlaWdodDgwMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWU2MDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDYw
MCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWU1MDA6CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDUwMCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTVmFsdWUzMDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9u
dFdlaWdodDMwMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWUyMDA6CisgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodDIwMCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTVmFsdWUxMDA6CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRX
ZWlnaHQoRm9udFdlaWdodDEwMCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICBpbnN0YW5jZS0+bV9mb250RGly
dHkgPSB0cnVlOworfQorCisvLyBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcKK0RFRklORV9JTkhF
UklUKENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZykKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRUZXh0UmVuZGVyaW5nTW9kZShpbnN0YW5jZS0+bV9wYXJlbnRT
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCkudGV4dFJlbmRlcmluZ01vZGUoKSk7CisgICAgaWYgKGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAg
ICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9JTklUSUFMKENT
U1Byb3BlcnR5VGV4dFJlbmRlcmluZykKK3sKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRUZXh0UmVuZGVyaW5nTW9kZShBdXRvVGV4dFJlbmRlcmluZyk7CisgICAg
aWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9u
KSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklORV9WQUxV
RShDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIEZvbnREZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRUZXh0UmVuZGVyaW5nTW9kZSgqcHJp
bWl0aXZlVmFsdWUpOworICAgICAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNj
cmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fZm9udERp
cnR5ID0gdHJ1ZTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGlu
ZworREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKQoreworICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoaW5z
dGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9vdGhpbmcoKSk7
CisgICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KK0RFRklO
RV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZykKK3sKKyAgICBGb250RGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlw
dGlvbigpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKEF1dG9TbW9vdGhp
bmcpOworICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnRE
ZXNjcmlwdGlvbikpCisgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKQoreworICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsK
KyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpOworCisgICAgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nOwor
ICAgIHN3aXRjaCAocC0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgorICAg
ICAgICBzbW9vdGhpbmcgPSBBdXRvU21vb3RoaW5nOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1ZhbHVlTm9uZToKKyAgICAgICAgc21vb3RoaW5nID0gTm9TbW9vdGhpbmc7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVBbnRpYWxpYXNlZDoKKyAgICAgICAgc21vb3RoaW5n
ID0gQW50aWFsaWFzZWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVTdWJwaXhl
bEFudGlhbGlhc2VkOgorICAgICAgICBzbW9vdGhpbmcgPSBTdWJwaXhlbEFudGlhbGlhc2VkOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgc21vb3RoaW5nID0gQXV0b1Ntb290aGluZzsKKyAgICB9CisgICAgZm9udERl
c2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoc21vb3RoaW5nKTsKKworICAgIGlmIChpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCisgICAgICAg
IGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0
VGV4dFNpemVBZGp1c3QKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTaXplQWRqdXN0LCBzZXRUZXh0U2l6ZUFkanVzdCwgdGV4dFNpemVBZGp1c3QpCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwgc2V0VGV4dFNp
emVBZGp1c3QsIGluaXRpYWxUZXh0U2l6ZUFkanVzdCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTaXplQWRqdXN0KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRU
ZXh0U2l6ZUFkanVzdChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8p
OworICAgICAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZQorLy8gQ1NTIFRleHQg
TGF5b3V0IE1vZHVsZSBMZXZlbCAzOiBWZXJ0aWNhbCB3cml0aW5nIHN1cHBvcnQKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlLCBzZXRXcml0aW5nTW9k
ZSwgd3JpdGluZ01vZGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRX
cml0aW5nTW9kZSwgc2V0V3JpdGluZ01vZGUsIGluaXRpYWxXcml0aW5nTW9kZSkKK0RFRklORV9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlKQoreworICAgIGlmICh2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0V3JpdGluZ01vZGUoKnByaW1pdGl2ZVZhbHVlKTsKKyAgICB9
CisgICAgaWYgKGluc3RhbmNlLT5tX2VsZW1lbnQgJiYgaW5zdGFuY2UtPm1fZWxlbWVudCA9PSBp
bnN0YW5jZS0+bV9lbGVtZW50LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAg
ICAgaW5zdGFuY2UtPm1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0V3JpdGluZ01vZGVTZXRPbkRv
Y3VtZW50RWxlbWVudCh0cnVlKTsKKyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRPcmllbnRhdGlvbihpbnN0YW5jZS0+bV9zdHlsZS0+aXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IEhvcml6b250YWwgOiBWZXJ0aWNhbCk7CisgICAgaWYgKGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKyAgICAgICAgaW5zdGFu
Y2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKK30KKworLy8gQ1NTUHJvcGVydHlab29tCitERUZJTkVf
SU5IRVJJVChDU1NQcm9wZXJ0eVpvb20pCit7CisgICAgLy8gUmVzZXQgdGhlIHpvb20gaW4gZWZm
ZWN0IGJlZm9yZSB3ZSBkbyBhbnl0aGluZy4gVGhpcyBhbGxvd3MgdGhlIHNldFpvb20gbWV0aG9k
IHRvIGFjY3VyYXRlbHkgY29tcHV0ZSBhIG5ldyB6b29tIGluIGVmZmVjdC4KKyAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0RWZmZWN0aXZlWm9vbShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZSA/IGlu
c3RhbmNlLT5tX3BhcmVudFN0eWxlLT5lZmZlY3RpdmVab29tKCkgOiBSZW5kZXJTdHlsZTo6aW5p
dGlhbFpvb20oKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFpvb20oaW5zdGFuY2UtPm1f
cGFyZW50U3R5bGUtPnpvb20oKSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVpvb20p
Cit7CisgICAgLy8gUmVzZXQgdGhlIHpvb20gaW4gZWZmZWN0IGJlZm9yZSB3ZSBkbyBhbnl0aGlu
Zy4gVGhpcyBhbGxvd3MgdGhlIHNldFpvb20gbWV0aG9kIHRvIGFjY3VyYXRlbHkgY29tcHV0ZSBh
IG5ldyB6b29tIGluIGVmZmVjdC4KKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RWZmZWN0aXZl
Wm9vbShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZSA/IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5l
ZmZlY3RpdmVab29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworfQorREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5Wm9vbSkKK3sKKyAgICAvLyBSZXNldCB0aGUgem9vbSBpbiBl
ZmZlY3QgYmVmb3JlIHdlIGRvIGFueXRoaW5nLiBUaGlzIGFsbG93cyB0aGUgc2V0Wm9vbSBtZXRo
b2QgdG8gYWNjdXJhdGVseSBjb21wdXRlIGEgbmV3IHpvb20gaW4gZWZmZWN0LgorICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRFZmZlY3RpdmVab29tKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlID8g
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA6IFJlbmRlclN0eWxlOjpp
bml0aWFsWm9vbSgpKTsKKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworCisgICAgaW50IHR5
cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOworICAgIGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlUmVzZXQpIHsKKyAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxa
b29tKCkpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6
aW5pdGlhbFpvb20oKSk7CisgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZURvY3VtZW50KSB7CisgICAgICAgIGZsb2F0IGRvY1pvb20gPSBpbnN0YW5j
ZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnpvb20oKTsKKyAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20oZG9jWm9vbSk7CisgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRab29tKGRvY1pvb20pOworICAgIH0gZWxzZSBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIHsKKyAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0Wm9vbShwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwLjBm
KTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
IHsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCisgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRW
YWx1ZSgpKTsKKyAgICB9CisKKyAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworfQor
CisvLyBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eUxpbmVIZWlnaHQsIHNldExpbmVIZWlnaHQsIGxpbmVIZWlnaHQpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBzZXRMaW5lSGVpZ2h0LCBpbml0aWFsTGlu
ZUhlaWdodCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpCit7CisgICAgaWYg
KHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisKKyAgICAgICAgTGVuZ3RoIGxpbmVIZWlnaHQ7CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0
aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICAgICAgbGluZUhlaWdodCA9IExl
bmd0aCgtMTAwLjAsIFBlcmNlbnQpOworICAgICAgICBlbHNlIGlmIChDU1NQcmltaXRpdmVWYWx1
ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgeworICAgICAgICAgICAgZG91YmxlIG11bHRpcGxp
ZXIgPSBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworICAgICAgICAgICAgaWYg
KGluc3RhbmNlLT5tX3N0eWxlLT50ZXh0U2l6ZUFkanVzdCgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+ZnJhbWUo
KSkKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciAqPSBmcmFtZS0+dGV4dFpvb21GYWN0
b3IoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoaW5zdGFuY2UtPm1fc3R5bGUu
Z2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsICBtdWx0aXBsaWVyKSwgRml4ZWQp
OworICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJD
RU5UQUdFKQorICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aCgoaW5zdGFuY2UtPm1fc3R5
bGUtPmZvbnRTaXplKCkgKiBwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSkgLyAxMDAsIEZp
eGVkKTsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikKKyAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdl
dERvdWJsZVZhbHVlKCkgKiAxMDAuMCwgUGVyY2VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldExpbmVIZWlnaHQobGlu
ZUhlaWdodCk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmQKK0RFRklORV9J
TklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
Y2xlYXJCYWNrZ3JvdW5kTGF5ZXJzKCk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJhY2tn
cm91bmRDb2xvcihDb2xvcigpKTsKK30KK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dy
b3VuZCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+aW5oZXJpdEJhY2tncm91bmRMYXllcnMo
Kmluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkpOworICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUt
PmJhY2tncm91bmRDb2xvcigpKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5QmFj
a2dyb3VuZCkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudAorREVGSU5FX0hB
TkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwg
YmFja2dyb3VuZCwgQmFja2dyb3VuZCwgYXR0YWNobWVudCwgQXR0YWNobWVudCkKK0RFRklORV9I
QU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQs
IGJhY2tncm91bmQsIEJhY2tncm91bmQsIGF0dGFjaG1lbnQsIEF0dGFjaG1lbnQpCitERUZJTkVf
SEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwg
YmFja2dyb3VuZCwgQmFja2dyb3VuZCwgYXR0YWNobWVudCwgQXR0YWNobWVudCkKKworLy8gQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ2xpcAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgY2xpcCwg
Q2xpcCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dy
b3VuZENsaXAsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNsaXAsIENsaXApCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3Vu
ZCwgQmFja2dyb3VuZCwgY2xpcCwgQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgc2V0
QmFja2dyb3VuZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxf
Q09MT1IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHNldEJhY2tncm91bmRDb2xvcikKK0RF
RklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIHNldEJh
Y2tncm91bmRDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UKK0RFRklORV9I
QU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBiYWNr
Z3JvdW5kLCBCYWNrZ3JvdW5kLCBpbWFnZSwgSW1hZ2UpCitERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgYmFja2dyb3VuZCwgQmFja2dy
b3VuZCwgaW1hZ2UsIEltYWdlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1By
b3BlcnR5QmFja2dyb3VuZEltYWdlLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBpbWFnZSwgSW1h
Z2UpCisKKy8vIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbgorREVGSU5FX0hBTkRMRV9GSUxM
X0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBiYWNrZ3JvdW5kLCBC
YWNrZ3JvdW5kLCBvcmlnaW4sIE9yaWdpbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklU
SUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwg
b3JpZ2luLCBPcmlnaW4pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kT3JpZ2luLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCBvcmlnaW4sIE9yaWdp
bikKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24KK0RFRklORV9FWFBBTkRJTkdf
SU5IRVJJVF9UV08oQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKQorREVGSU5F
X0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blkpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbikKKwor
Ly8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YCitERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIGJhY2tncm91bmQsIEJh
Y2tncm91bmQsIHhQb3NpdGlvbiwgWFBvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBiYWNrZ3JvdW5kLCBCYWNr
Z3JvdW5kLCB4UG9zaXRpb24sIFhQb3NpdGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9W
QUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIGJhY2tncm91bmQsIEJhY2tncm91
bmQsIHhQb3NpdGlvbiwgWFBvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvblkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uWSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgeVBvc2l0aW9uLCBZUG9zaXRp
b24pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvblksIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHlQb3NpdGlvbiwgWVBvc2l0aW9u
KQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgeVBvc2l0aW9uLCBZUG9zaXRpb24pCisK
Ky8vIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdAorREVGSU5FX0VYUEFORElOR19JTkhFUklU
X1RXTyhDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJl
cGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkpCitERUZJTkVfRVhQQU5ESU5HX0lO
SVRJQUxfVFdPKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSkKK0RFRklORV9OVUxMX1ZB
TFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0WAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0WCwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0WCwgUmVwZWF0
WCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdFgsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHJlcGVhdFgsIFJlcGVhdFgpCitERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwg
YmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0WCwgUmVwZWF0WCkKKworLy8gQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0WQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0
WSwgUmVwZWF0WSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdFksIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHJlcGVhdFksIFJlcGVh
dFkpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UmVwZWF0WSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0WSwgUmVwZWF0WSkKKworLy8g
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVS
SVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgc2l6
ZSwgU2l6ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFj
a2dyb3VuZFNpemUsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHNpemUsIFNpemUpCitERUZJTkVf
SEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSwgYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgc2l6ZSwgU2l6ZSkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXIKK0RF
RklORV9FWFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eUJvcmRlciwgQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJD
b2xvcikKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9USFJFRShDU1NQcm9wZXJ0eUJvcmRlciwg
Q1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJDb2xvcikKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyKQorCisv
LyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbQorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVF
KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRo
KQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20pCit7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnJlc2V0Qm9yZGVyQm90dG9tKCk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbSkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
cgorREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNv
bG9yLCBzZXRCb3JkZXJCb3R0b21Db2xvciwgYm9yZGVyQm90dG9tQ29sb3IsIGNvbG9yKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIHNl
dEJvcmRlckJvdHRvbUNvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yLCBzZXRCb3JkZXJCb3R0b21Db2xvcikKKworLy8gQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBib3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tTGVmdFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywgaW5pdGlhbEJv
cmRlclJhZGl1cykKK0RFRklORV9SQURJVVNfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21M
ZWZ0UmFkaXVzLCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKQorCisvLyBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIGJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tUmlnaHRSYWRpdXMsIHNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBpbml0aWFs
Qm9yZGVyUmFkaXVzKQorREVGSU5FX1JBRElVU19WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzLCBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cykKKworLy8gQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21TdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tU3R5bGUsIHNldEJvcmRlckJvdHRvbVN0eWxlLCBib3JkZXJCb3R0b21TdHlsZSkK
K0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBzZXRC
b3JkZXJCb3R0b21TdHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorREVGSU5FX0hBTkRMRV9WQUxV
RShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBzZXRCb3JkZXJCb3R0b21TdHlsZSkKKwor
Ly8gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIHNldEJvcmRlckJvdHRvbVdpZHRoLCBib3JkZXJC
b3R0b21XaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVdpZHRoLCBzZXRCb3JkZXJCb3R0b21XaWR0aCwgaW5pdGlhbEJvcmRlcldpZHRoKQorREVGSU5F
X1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIHNldEJvcmRlckJvdHRv
bVdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlCitERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgc2V0Qm9yZGVyQ29sbGFwc2UsIGJvcmRl
ckNvbGxhcHNlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFw
c2UsIHNldEJvcmRlckNvbGxhcHNlLCBpbml0aWFsQm9yZGVyQ29sbGFwc2UpCitERUZJTkVfVkFM
VUUoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVlQ29s
bGFwc2U6CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2Uo
dHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVNlcGFyYXRl
OgorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJvcmRlckNvbGxhcHNlKGZhbHNl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQcm9w
ZXJ0eUJvcmRlckNvbG9yCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQcm9wZXJ0
eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX0ZPVVIoQ1NTUHJvcGVydHlC
b3JkZXJDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRDb2xvcikKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpCisK
Ky8vIENTU1Byb3BlcnR5Qm9yZGVyTGVmdAorREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVF
KENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIENTU1By
b3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCkKK0RFRklO
RV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+cmVzZXRCb3JkZXJMZWZ0KCk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJv
cmRlckxlZnQpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yCitERUZJTkVfSEFORExF
X0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBzZXRCb3JkZXJMZWZ0
Q29sb3IsIGJvcmRlckxlZnRDb2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09M
T1IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIHNldEJvcmRlckxlZnRDb2xvcikKK0RFRklO
RV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIHNldEJvcmRl
ckxlZnRDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgc2V0Qm9yZGVyTGVmdFN0eWxl
LCBib3JkZXJMZWZ0U3R5bGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0U3R5bGUsIHNldEJvcmRlckxlZnRTdHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgc2V0Qm9yZGVyTGVm
dFN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aAorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBzZXRCb3JkZXJMZWZ0V2lkdGgsIGJv
cmRlckxlZnRXaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRXaWR0aCwgc2V0Qm9yZGVyTGVmdFdpZHRoLCBpbml0aWFsQm9yZGVyV2lkdGgpCitERUZJTkVf
V0lEVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIHNldEJvcmRlckxlZnRXaWR0
aCkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJ
VF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRS
YWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tTGVmdFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cykKK0RF
RklORV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKQoreworICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5yZXNldEJvcmRlclJhZGl1cygpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJv
cGVydHlCb3JkZXJSYWRpdXMpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQKK0RFRklORV9F
WFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodFdpZHRoKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dCkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRCb3JkZXJSaWdodCgpOworfQorREVG
SU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCkKKworLy8gQ1NTUHJvcGVydHlC
b3JkZXJSaWdodENvbG9yCitERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRDb2xvciwgc2V0Qm9yZGVyUmlnaHRDb2xvciwgYm9yZGVyUmlnaHRDb2xvciwg
Y29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dENvbG9yLCBzZXRCb3JkZXJSaWdodENvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIHNldEJvcmRlclJpZ2h0Q29sb3IpCisKKy8vIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRTdHlsZSwgc2V0Qm9yZGVyUmlnaHRTdHlsZSwgYm9yZGVyUmlnaHRTdHls
ZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIHNl
dEJvcmRlclJpZ2h0U3R5bGUsIGluaXRpYWxCb3JkZXJTdHlsZSkKK0RFRklORV9IQU5ETEVfVkFM
VUUoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBzZXRCb3JkZXJSaWdodFN0eWxlKQorCisv
LyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIHNldEJvcmRlclJpZ2h0V2lkdGgsIGJvcmRlclJpZ2h0
V2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRo
LCBzZXRCb3JkZXJSaWdodFdpZHRoLCBpbml0aWFsQm9yZGVyV2lkdGgpCitERUZJTkVfV0lEVEhf
VkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBzZXRCb3JkZXJSaWdodFdpZHRoKQor
CisvLyBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcKK0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9U
V08oQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6
b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZykKK0RF
RklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclZlcnRpY2FsU3BhY2luZykKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVy
U3BhY2luZykKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJTdHlsZQorREVGSU5FX0VYUEFORElOR19J
TkhFUklUX0ZPVVIoQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BT
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSkKK0RFRklORV9FWFBBTkRJTkdfSU5J
VElBTF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQ
cm9wZXJ0eUJvcmRlclN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclRvcAorREVGSU5FX0VY
UEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBDU1NQcm9wZXJ0eUJv
cmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoKQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJUb3ApCit7CisgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0Qm9yZGVyVG9wKCk7Cit9CitERUZJTkVfTlVMTF9WQUxV
RShDU1NQcm9wZXJ0eUJvcmRlclRvcCkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcgor
REVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBz
ZXRCb3JkZXJUb3BDb2xvciwgYm9yZGVyVG9wQ29sb3IsIGNvbG9yKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIHNldEJvcmRlclRvcENvbG9y
KQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBz
ZXRCb3JkZXJUb3BDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzCitE
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBzZXRC
b3JkZXJUb3BMZWZ0UmFkaXVzLCBib3JkZXJUb3BMZWZ0UmFkaXVzKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgc2V0Qm9yZGVyVG9wTGVmdFJh
ZGl1cywgaW5pdGlhbEJvcmRlclJhZGl1cykKK0RFRklORV9SQURJVVNfVkFMVUUoQ1NTUHJvcGVy
dHlCb3JkZXJUb3BMZWZ0UmFkaXVzLCBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKQorCisvLyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIGJvcmRl
clRvcFJpZ2h0UmFkaXVzKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVy
VG9wUmlnaHRSYWRpdXMsIHNldEJvcmRlclRvcFJpZ2h0UmFkaXVzLCBpbml0aWFsQm9yZGVyUmFk
aXVzKQorREVGSU5FX1JBRElVU19WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVz
LCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cykKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHls
ZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIHNldEJv
cmRlclRvcFN0eWxlLCBib3JkZXJUb3BTdHlsZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBzZXRCb3JkZXJUb3BTdHlsZSwgaW5pdGlhbEJvcmRlclN0
eWxlKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBzZXRC
b3JkZXJUb3BTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aAorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIHNldEJvcmRlclRvcFdpZHRo
LCBib3JkZXJUb3BXaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoLCBzZXRCb3JkZXJUb3BXaWR0aCwgaW5pdGlhbEJvcmRlcldpZHRoKQorREVGSU5F
X1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIHNldEJvcmRlclRvcFdpZHRo
KQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoCitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRf
Rk9VUihDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgs
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoKQorREVGSU5FX0VYUEFORElOR19JTklUSUFMX0ZP
VVIoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5
Qm9yZGVyV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm90dG9tCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlCb3R0b20sIHNldEJvdHRvbSwgYm90dG9tKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5Qm90dG9tLCBzZXRCb3R0b20sIGluaXRpYWxPZmZzZXQpCitERUZJ
TkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5Qm90dG9tLCBzZXRCb3R0b20sIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eUJveFNpemluZworREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm94U2l6aW5nLCBzZXRCb3hTaXppbmcsIGJveFNp
emluZykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJveFNpemluZywgc2V0Qm94
U2l6aW5nLCBpbml0aWFsQm94U2l6aW5nKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Qm94U2l6
aW5nKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVDb250ZW50Qm94KQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEJveFNpemluZyhDT05URU5UX0JPWCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRCb3hTaXppbmcoQk9SREVSX0JPWCk7CisgICAgfQorfQorCisvLyBD
U1NQcm9wZXJ0eUNhcHRpb25TaWRlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlD
YXB0aW9uU2lkZSwgc2V0Q2FwdGlvblNpZGUsIGNhcHRpb25TaWRlKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIHNldENhcHRpb25TaWRlLCBpbml0aWFsQ2Fw
dGlvblNpZGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIHNl
dENhcHRpb25TaWRlKQorCisvLyBDU1NQcm9wZXJ0eUNsZWFyCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlDbGVhciwgc2V0Q2xlYXIsIGNsZWFyKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5Q2xlYXIsIHNldENsZWFyLCBpbml0aWFsQ2xlYXIpCitERUZJTkVfSEFO
RExFX1ZBTFVFKENTU1Byb3BlcnR5Q2xlYXIsIHNldENsZWFyKQorCisvLyBDU1NQcm9wZXJ0eUNs
aXAKKworLy8gQ1NTUHJvcGVydHlDb250ZW50CisvLyBGSVhNRTogSW4gQ1NTMywgaXQgd2lsbCBi
ZSBwb3NzaWJsZSB0byBpbmhlcml0IGNvbnRlbnQuICBJbiBDU1MyIGl0IGlzIG5vdC4gIFRoaXMK
KyAgICAvLyBub3RlIGlzIGEgcmVtaW5kZXIgdGhhdCBldmVudHVhbGx5ICJpbmhlcml0IiBuZWVk
cyB0byBiZSBzdXBwb3J0ZWQuCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5Q29udGVu
dCkKK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Q29udGVudCkKK3sKKyAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+Y2xlYXJDb250ZW50KCk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlDb250
ZW50KQoreworICAgIC8vIGxpc3Qgb2Ygc3RyaW5nLCB1cmksIGNvdW50ZXIsIGF0dHIsIGkKKyAg
ICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NW
YWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAg
aW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworCisgICAgYm9vbCBkaWRTZXQgPSBmYWxzZTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIENTU1ZhbHVlKiBpdGVt
ID0gbGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKKyAgICAgICAgaWYgKGl0ZW0tPmlz
SW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKSB7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0Q29udGVudChzdGF0aWNfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4oaXRlbSktPmdl
bmVyYXRlZEltYWdlKCksIGRpZFNldCk7CisgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgc3dpdGNo
IChjb250ZW50VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSkgeworICAgICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfU1RSSU5HOgorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dENvbnRlbnQoY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgZGlkU2V0KTsK
KyAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0FUVFI6IHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBDYW4gYSBuYW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRyKGZvbyk/CisgICAgICAg
ICAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnN0eWxlVHlwZSgpID09IE5PUFNFVURPKQorICAg
ICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRVbmlxdWUoKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+c2V0VW5pcXVl
KCk7CisgICAgICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20sIGNvbnRlbnRWYWx1
ZS0+Z2V0U3RyaW5nVmFsdWUoKS5pbXBsKCksIG51bGxBdG9tKTsKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRDb250ZW50KGluc3RhbmNlLT5tX2VsZW1lbnQtPmdldEF0dHJpYnV0
ZShhdHRyKS5pbXBsKCksIGRpZFNldCk7CisgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworICAg
ICAgICAgICAgLy8gcmVnaXN0ZXIgdGhlIGZhY3QgdGhhdCB0aGUgYXR0cmlidXRlIHZhbHVlIGFm
ZmVjdHMgdGhlIHN0eWxlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zZWxlY3RvckF0dHJzLmFk
ZChhdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJOiB7CisgICAgICAgICAg
ICBpZiAoIWNvbnRlbnRWYWx1ZS0+aXNJbWFnZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29udGVudChpbnN0YW5jZS0+
Y2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENTU1Byb3BlcnR5Q29udGVudCwgc3RhdGljX2Nhc3Q8
Q1NTSW1hZ2VWYWx1ZSo+KGNvbnRlbnRWYWx1ZSkpLCBkaWRTZXQpOworICAgICAgICAgICAgZGlk
U2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSOiB7CisgICAgICAgICAgICBDb3VudGVyKiBj
b3VudGVyVmFsdWUgPSBjb250ZW50VmFsdWUtPmdldENvdW50ZXJWYWx1ZSgpOworICAgICAgICAg
ICAgT3duUHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyID0gYWRvcHRQdHIobmV3IENvdW50ZXJD
b250ZW50KGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLAorICAgICAgICAgICAgICAgIChFTGlz
dFN0eWxlVHlwZSljb3VudGVyVmFsdWUtPmxpc3RTdHlsZU51bWJlcigpLCBjb3VudGVyVmFsdWUt
PnNlcGFyYXRvcigpKSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29udGVu
dChjb3VudGVyLnJlbGVhc2UoKSwgZGlkU2V0KTsKKyAgICAgICAgICAgIGRpZFNldCA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWRpZFNldCkKKyAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFyQ29udGVudCgpOworICAgIHJldHVybjsKK30KKworLy8g
Q1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50CitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3Bl
cnR5Q291bnRlckluY3JlbWVudCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlDb3Vu
dGVySW5jcmVtZW50KQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCkK
K3sKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjphcHBseUNvdW50ZXJMaXN0KGluc3RhbmNlLT5tX3N0
eWxlLmdldCgpLCB2YWx1ZS0+aXNWYWx1ZUxpc3QoKSA/IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlz
dCo+KHZhbHVlKSA6IDAsIGZhbHNlKTsKK30KKworLy8gQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQK
K0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQpCitERUZJTkVfTlVM
TF9JTklUSUFMKENTU1Byb3BlcnR5Q291bnRlclJlc2V0KQorREVGSU5FX1ZBTFVFKENTU1Byb3Bl
cnR5Q291bnRlclJlc2V0KQoreworICAgIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxp
c3QoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIHZhbHVlLT5pc1ZhbHVlTGlzdCgpID8gc3RhdGlj
X2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpIDogMCwgdHJ1ZSk7Cit9CisKKy8vIENTU1Byb3Bl
cnR5Q3Vyc29yCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUN1cnNvcikKK3sKKyAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Q3Vyc29yKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jdXJzb3Io
KSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvckxpc3QoaW5zdGFuY2UtPm1fcGFy
ZW50U3R5bGUtPmN1cnNvcnMoKSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUN1cnNv
cikKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xlYXJDdXJzb3JMaXN0KCk7CisgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1cnNvcigpKTsK
K30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUN1cnNvcikKK3sKKyAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+Y2xlYXJDdXJzb3JMaXN0KCk7CisgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7
CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHZhbHVlKTsKKyAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOworICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Q3Vyc29yKENVUlNPUl9BVVRPKTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOworICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19VUkkpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzQ3Vy
c29ySW1hZ2VWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIENTU0N1cnNvckltYWdlVmFs
dWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT51cGRhdGVJZlNWR0N1cnNvcklz
VXNlZChpbnN0YW5jZS0+bV9lbGVtZW50KSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vyc29ycyBh
cmUgbm90IGFsbG93ZWQgdG8gc2hhcmUgc3R5bGUuCisgICAgICAgICAgICAgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0VW5pcXVlKCk7CisgICAgICAgICAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5hZGRDdXJzb3IoaW5zdGFuY2UtPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1
ZShDU1NQcm9wZXJ0eUN1cnNvciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19JREVOVCkKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q3Vy
c29yKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW50IHR5cGUgPSBw
LT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfSURFTlQgJiYgaW5zdGFuY2UtPm1fc3R5bGUtPmN1cnNvcigpICE9IEVDdXJzb3IoKnAp
KQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcigqcCk7CisgICAgfQor
fQorCisvLyBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eUVtcHR5Q2VsbHMsIHNldEVtcHR5Q2VsbHMsIGVtcHR5Q2VsbHMpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBzZXRFbXB0eUNlbGxzLCBpbml0aWFs
RW1wdHlDZWxscykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBz
ZXRFbXB0eUNlbGxzKQorCisvLyBDU1NQcm9wZXJ0eUZsb2F0CitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlGbG9hdCwgc2V0RmxvYXRpbmcsIGZsb2F0aW5nKQorREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5RmxvYXQsIHNldEZsb2F0aW5nLCBpbml0aWFsRmxvYXRpbmcp
CitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5RmxvYXQsIHNldEZsb2F0aW5nKQorCisv
LyBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5
Rm9udFN0cmV0Y2gpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gp
CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUZvbnRTdHJldGNoKQorCisvLyBDU1NQcm9w
ZXJ0eUhlaWdodAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5SGVpZ2h0LCBzZXRI
ZWlnaHQsIGhlaWdodCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUhlaWdodCwg
c2V0SGVpZ2h0LCBpbml0aWFsU2l6ZSkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlI
ZWlnaHQsIHNldEhlaWdodCwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlKQorCisvLyBD
U1NQcm9wZXJ0eUxlZnQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxlZnQsIHNl
dExlZnQsIGxlZnQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlMZWZ0LCBzZXRM
ZWZ0LCBpbml0aWFsT2Zmc2V0KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eUxlZnQs
IHNldExlZnQsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9w
ZXJ0eUxldHRlclNwYWNpbmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxldHRl
clNwYWNpbmcsIHNldExldHRlclNwYWNpbmcsIGxldHRlclNwYWNpbmcpCitERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLCBzZXRMZXR0ZXJTcGFjaW5nLCBpbml0
aWFsTGV0dGVyV29yZFNwYWNpbmcpCitERUZJTkVfU1BBQ0lOR19WQUxVRShDU1NQcm9wZXJ0eUxl
dHRlclNwYWNpbmcsIHNldExldHRlclNwYWNpbmcpCisKKy8vIENTU1Byb3BlcnR5TGlzdFN0eWxl
CitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlMaXN0U3R5bGUsIENT
U1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgQ1NTUHJv
cGVydHlMaXN0U3R5bGVQb3NpdGlvbikKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9USFJFRShD
U1NQcm9wZXJ0eUxpc3RTdHlsZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NQcm9wZXJ0
eUxpc3RTdHlsZUltYWdlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKQorREVGSU5FX05V
TExfVkFMVUUoQ1NTUHJvcGVydHlMaXN0U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5TGlzdFN0eWxl
SW1hZ2UKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCBz
ZXRMaXN0U3R5bGVJbWFnZSwgbGlzdFN0eWxlSW1hZ2UpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgc2V0TGlzdFN0eWxlSW1hZ2UsIGluaXRpYWxMaXN0
U3R5bGVJbWFnZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlKQorewor
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRMaXN0U3R5bGVJbWFnZShpbnN0YW5jZS0+c3R5bGVJ
bWFnZShDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCB2YWx1ZSkpOworfQorCisvLyBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVBvc2l0aW9uCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlM
aXN0U3R5bGVQb3NpdGlvbiwgc2V0TGlzdFN0eWxlUG9zaXRpb24sIGxpc3RTdHlsZVBvc2l0aW9u
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIHNl
dExpc3RTdHlsZVBvc2l0aW9uLCBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24pCitERUZJTkVfSEFO
RExFX1ZBTFVFKENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sIHNldExpc3RTdHlsZVBvc2l0
aW9uKQorCisvLyBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUKK0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIHNldExpc3RTdHlsZVR5cGUsIGxpc3RTdHlsZVR5
cGUpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBzZXRM
aXN0U3R5bGVUeXBlLCBpbml0aWFsTGlzdFN0eWxlVHlwZSkKK0RFRklORV9IQU5ETEVfVkFMVUUo
Q1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBzZXRMaXN0U3R5bGVUeXBlKQorCisvLyBDU1NQcm9w
ZXJ0eU1hcmdpbgorREVGSU5FX0VYUEFORElOR19JTkhFUklUX0ZPVVIoQ1NTUHJvcGVydHlNYXJn
aW4sIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NQcm9w
ZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KQorREVGSU5FX0lOSVRJQUwo
Q1NTUHJvcGVydHlNYXJnaW4pCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0TWFyZ2lu
KCk7Cit9CitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpbikKKworLy8gQ1NTUHJv
cGVydHlNYXJnaW5Cb3R0b20KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1hcmdp
bkJvdHRvbSwgc2V0TWFyZ2luQm90dG9tLCBtYXJnaW5Cb3R0b20pCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIHNldE1hcmdpbkJvdHRvbSwgaW5pdGlhbE1h
cmdpbikKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIHNldE1h
cmdpbkJvdHRvbSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1By
b3BlcnR5TWFyZ2luTGVmdAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCwgc2V0TWFyZ2luTGVmdCwgbWFyZ2luTGVmdCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eU1hcmdpbkxlZnQsIHNldE1hcmdpbkxlZnQsIGluaXRpYWxNYXJnaW4pCitERUZJ
TkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgc2V0TWFyZ2luTGVmdCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5TWFyZ2luUmln
aHQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBzZXRNYXJn
aW5SaWdodCwgbWFyZ2luUmlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlN
YXJnaW5SaWdodCwgc2V0TWFyZ2luUmlnaHQsIGluaXRpYWxNYXJnaW4pCitERUZJTkVfTEVOR1RI
X1ZBTFVFKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIHNldE1hcmdpblJpZ2h0LCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNYXJnaW5Ub3AKK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1hcmdpblRvcCwgc2V0TWFyZ2luVG9wLCBtYXJn
aW5Ub3ApCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIHNldE1h
cmdpblRvcCwgaW5pdGlhbE1hcmdpbikKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlN
YXJnaW5Ub3AsIHNldE1hcmdpblRvcCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2Up
CisKKy8vIENTU1Byb3BlcnR5TWF4SGVpZ2h0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlNYXhIZWlnaHQsIHNldE1heEhlaWdodCwgbWF4SGVpZ2h0KQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBzZXRNYXhIZWlnaHQsIGluaXRpYWxNYXhTaXpl
KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1heEhlaWdodCwgc2V0TWF4SGVpZ2h0
LCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkKKworLy8gQ1NTUHJvcGVydHlNYXhXaWR0
aAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWF4V2lkdGgsIHNldE1heFdpZHRo
LCBtYXhXaWR0aCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1heFdpZHRoLCBz
ZXRNYXhXaWR0aCwgaW5pdGlhbE1heFNpemUpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3Bl
cnR5TWF4V2lkdGgsIHNldE1heFdpZHRoLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2Up
CisKKy8vIENTU1Byb3BlcnR5TWluSGVpZ2h0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlNaW5IZWlnaHQsIHNldE1pbkhlaWdodCwgbWluSGVpZ2h0KQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5TWluSGVpZ2h0LCBzZXRNaW5IZWlnaHQsIGluaXRpYWxNaW5TaXpl
KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1pbkhlaWdodCwgc2V0TWluSGVpZ2h0
LCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5TWluV2lk
dGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1pbldpZHRoLCBzZXRNaW5XaWR0
aCwgbWluV2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlNaW5XaWR0aCwg
c2V0TWluV2lkdGgsIGluaXRpYWxNaW5TaXplKQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9w
ZXJ0eU1pbldpZHRoLCBzZXRNaW5XaWR0aCwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNl
KQorCisvLyBDU1NQcm9wZXJ0eU9wYWNpdHkKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eU9wYWNpdHksIHNldE9wYWNpdHksIG9wYWNpdHkpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlPcGFjaXR5LCBzZXRPcGFjaXR5LCBpbml0aWFsT3BhY2l0eSkKK0RFRklORV9W
QUxVRShDU1NQcm9wZXJ0eU9wYWNpdHkpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KQorICAgICAgICAgICAgLy8gQ2xhbXAgb3BhY2l0eSB0byB0aGUgcmFuZ2UgMC0xCisgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3BhY2l0eShtaW4oMS4wZiwgbWF4KDAuMGYsIHBy
aW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9w
ZXJ0eU9ycGhhbnMKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU9ycGhhbnMsIHNl
dE9ycGhhbnMsIG9ycGhhbnMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlPcnBo
YW5zLCBzZXRPcnBoYW5zLCBpbml0aWFsT3JwaGFucykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eU9ycGhhbnMpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldE9ycGhhbnMocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVl
KCkpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlPdXRsaW5lCitERUZJTkVfRVhQQU5ESU5H
X0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlPdXRsaW5lLCBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0
aCwgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlKQorREVG
SU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlPdXRsaW5lKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5yZXNldE91dGxpbmUoKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5T3V0bGlu
ZSkKKworLy8gQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVF9C
QUNLVVAoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsIHNldE91dGxpbmVDb2xvciwgb3V0bGluZUNv
bG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eU91dGxp
bmVDb2xvciwgc2V0T3V0bGluZUNvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQ
cm9wZXJ0eU91dGxpbmVDb2xvciwgc2V0T3V0bGluZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eU91
dGxpbmVPZmZzZXQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU91dGxpbmVPZmZz
ZXQsIHNldE91dGxpbmVPZmZzZXQsIG91dGxpbmVPZmZzZXQpCitERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0LCBzZXRPdXRsaW5lT2Zmc2V0LCBpbml0aWFsT3V0
bGluZU9mZnNldCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQpCit7Cisg
ICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPdXRsaW5lT2Zmc2V0KHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0
YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9v
bSgpKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZQorREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLCBzZXRPdXRsaW5lU3R5bGUsIG91
dGxpbmVTdHlsZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU91dGxpbmVTdHls
ZSwgc2V0T3V0bGluZVN0eWxlLCBpbml0aWFsQm9yZGVyU3R5bGUpCitERUZJTkVfVkFMVUUoQ1NT
UHJvcGVydHlPdXRsaW5lU3R5bGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0T3V0bGluZVN0eWxlKERPVFRFRCwgdHJ1ZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPdXRsaW5lU3R5bGUoKnByaW1pdGl2ZVZh
bHVlKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoCitERUZJTkVfSEFO
RExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIHNldE91dGxpbmVXaWR0aCwgb3V0
bGluZVdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3V0bGluZVdpZHRo
LCBzZXRPdXRsaW5lV2lkdGgsIGluaXRpYWxCb3JkZXJXaWR0aCkKK0RFRklORV9XSURUSF9WQUxV
RShDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgc2V0T3V0bGluZVdpZHRoKQorCisvLyBDU1NQcm9w
ZXJ0eU92ZXJmbG93CitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5T3Zl
cmZsb3csIENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSkKK0RFRklO
RV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlPdmVyZmxvdywgQ1NTUHJvcGVydHlP
dmVyZmxvd1ksIENTU1Byb3BlcnR5T3ZlcmZsb3dZKQorREVGSU5FX0VYUEFORElOR19WQUxVRV9U
V08oQ1NTUHJvcGVydHlPdmVyZmxvdywgQ1NTUHJvcGVydHlPdmVyZmxvd1ksIENTU1Byb3BlcnR5
T3ZlcmZsb3dZKQorCisvLyBDU1NQcm9wZXJ0eU92ZXJmbG93WAorREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBzZXRPdmVyZmxvd1gsIG92ZXJmbG93WCkKK0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU92ZXJmbG93WCwgc2V0T3ZlcmZsb3dYLCBpbml0
aWFsT3ZlcmZsb3dYKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eU92ZXJmbG93WCwg
c2V0T3ZlcmZsb3dYKQorCisvLyBDU1NQcm9wZXJ0eU92ZXJmbG93WQorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBzZXRPdmVyZmxvd1ksIG92ZXJmbG93WSkKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU92ZXJmbG93WSwgc2V0T3ZlcmZsb3dZLCBp
bml0aWFsT3ZlcmZsb3dZKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eU92ZXJmbG93
WSwgc2V0T3ZlcmZsb3dZKQorCisvLyBDU1NQcm9wZXJ0eVBhZGRpbmcKK0RFRklORV9FWFBBTkRJ
TkdfSU5IRVJJVF9GT1VSKENTU1Byb3BlcnR5UGFkZGluZywgQ1NTUHJvcGVydHlQYWRkaW5nVG9w
LCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQ
cm9wZXJ0eVBhZGRpbmdMZWZ0KQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWRkaW5nKQor
eworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldFBhZGRpbmcoKTsKK30KK0RFRklORV9OVUxM
X1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZykKKworLy8gQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9t
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBzZXRQYWRk
aW5nQm90dG9tLCBwYWRkaW5nQm90dG9tKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5UGFkZGluZ0JvdHRvbSwgc2V0UGFkZGluZ0JvdHRvbSwgaW5pdGlhbFBhZGRpbmcpCitERUZJ
TkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgc2V0UGFkZGluZ0JvdHRv
bSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVBh
ZGRpbmdMZWZ0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwg
c2V0UGFkZGluZ0xlZnQsIHBhZGRpbmdMZWZ0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1By
b3BlcnR5UGFkZGluZ0xlZnQsIHNldFBhZGRpbmdMZWZ0LCBpbml0aWFsUGFkZGluZykKK0RFRklO
RV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCwgc2V0UGFkZGluZ0xlZnQsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlQYWRkaW5n
UmlnaHQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgc2V0
UGFkZGluZ1JpZ2h0LCBwYWRkaW5nUmlnaHQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlQYWRkaW5nUmlnaHQsIHNldFBhZGRpbmdSaWdodCwgaW5pdGlhbFBhZGRpbmcpCitERUZJ
TkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LCBzZXRQYWRkaW5nUmlnaHQs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlQYWRk
aW5nVG9wCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBzZXRQ
YWRkaW5nVG9wLCBwYWRkaW5nVG9wKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
UGFkZGluZ1RvcCwgc2V0UGFkZGluZ1RvcCwgaW5pdGlhbFBhZGRpbmcpCitERUZJTkVfTEVOR1RI
X1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgc2V0UGFkZGluZ1RvcCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVBhZ2UKK0RFRklORV9OVUxM
X0lOSEVSSVQoQ1NTUHJvcGVydHlQYWdlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0
eVBhZ2UpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVBhZ2UpCisKKy8vIENTU1Byb3Bl
cnR5UGFnZUJyZWFrQWZ0ZXIKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZ2VC
cmVha0FmdGVyLCBzZXRQYWdlQnJlYWtBZnRlciwgcGFnZUJyZWFrQWZ0ZXIpCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlciwgc2V0UGFnZUJyZWFrQWZ0ZXIs
IGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5UGFnZUJy
ZWFrQWZ0ZXIsIHNldFBhZ2VCcmVha0FmdGVyKQorCisvLyBDU1NQcm9wZXJ0eVBhZ2VCcmVha0Jl
Zm9yZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlLCBz
ZXRQYWdlQnJlYWtCZWZvcmUsIHBhZ2VCcmVha0JlZm9yZSkKK0RFRklORV9IQU5ETEVfSU5JVElB
TChDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSwgc2V0UGFnZUJyZWFrQmVmb3JlLCBpbml0aWFs
UGFnZUJyZWFrKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9y
ZSwgc2V0UGFnZUJyZWFrQmVmb3JlKQorCisvLyBDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZQor
REVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlLCBzZXRQYWdl
QnJlYWtJbnNpZGUsIHBhZ2VCcmVha0luc2lkZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVBhZ2VCcmVha0luc2lkZSwgc2V0UGFnZUJyZWFrSW5zaWRlLCBpbml0aWFsUGFnZUJy
ZWFrKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKQoreworICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgICAgICBFUGFnZUJyZWFrIHBhZ2VCcmVhayA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAg
ICAgaWYgKHBhZ2VCcmVhayAhPSBQQkFMV0FZUykKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRQYWdlQnJlYWtJbnNpZGUocGFnZUJyZWFrKTsKKyAgICB9Cit9CisKKy8vIENTU1By
b3BlcnR5UG9pbnRlckV2ZW50cworI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKy8vIDxy
ZGFyOi8vcHJvYmxlbS82NTYxMDc3PiBXb3JrIGFyb3VuZCB0aGUgU3RvY2tzIHdpZGdldCdzIG1p
c3VzZSBvZiB0aGUKKy8vIHBvaW50ZXItZXZlbnRzIHByb3BlcnR5IGJ5IG5vdCBhcHBseWluZyBp
dCBpbiBEYXNoYm9hcmQuCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMp
Cit7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3Vt
ZW50LT5zZXR0aW5ncygpOworICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+dXNlc0Rhc2hi
b2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRQb2ludGVyRXZlbnRzKGluc3RhbmNlLT5tX3BhcmVudFN0eWxl
LT5wb2ludGVyRXZlbnRzKCkpOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlQb2ludGVy
RXZlbnRzKQoreworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIu
bV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnVz
ZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhSZW5kZXJTdHlsZTo6aW5p
dGlhbFBvaW50ZXJFdmVudHMoKSk7Cit9CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlQb2ludGVy
RXZlbnRzKQoreworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIu
bV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKyAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnVz
ZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFBvaW50ZXJFdmVudHMoKnBy
aW1pdGl2ZVZhbHVlKTsKKyAgICB9Cit9CisjZWxzZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5UG9pbnRlckV2ZW50cywgc2V0UG9pbnRlckV2ZW50cywgcG9pbnRlckV2ZW50cykK
K0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMsIHNldFBvaW50
ZXJFdmVudHMsIGluaXRpYWxQb2ludGVyRXZlbnRzKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQ
cm9wZXJ0eVBvaW50ZXJFdmVudHMsIHNldFBvaW50ZXJFdmVudHMpCisjZW5kaWYKKworLy8gQ1NT
UHJvcGVydHlQb3NpdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UG9zaXRp
b24sIHNldFBvc2l0aW9uLCBwb3NpdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVBvc2l0aW9uLCBzZXRQb3NpdGlvbiwgaW5pdGlhbFBvc2l0aW9uKQorREVGSU5FX0hBTkRM
RV9WQUxVRShDU1NQcm9wZXJ0eVBvc2l0aW9uLCBzZXRQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVy
dHlRdW90ZXMKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlRdW90ZXMpCitERUZJTkVf
TlVMTF9JTklUSUFMKENTU1Byb3BlcnR5UXVvdGVzKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJv
cGVydHlRdW90ZXMpCisKKy8vIENTU1Byb3BlcnR5UmVzaXplCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlSZXNpemUsIHNldFJlc2l6ZSwgcmVzaXplKQorREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5UmVzaXplLCBzZXRSZXNpemUsIGluaXRpYWxSZXNpemUpCitERUZJ
TkVfVkFMVUUoQ1NTUHJvcGVydHlSZXNpemUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICAgICAgRVJlc2l6ZSByZXN1bHQgPSBS
RVNJWkVfTk9ORTsKKyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUF1dG8pIHsKKyAgICAgICAgICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdz
ID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpKQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBzZXR0aW5ncy0+dGV4dEFyZWFzQXJlUmVzaXphYmxlKCkgPyBS
RVNJWkVfQk9USCA6IFJFU0laRV9OT05FOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gKnByaW1pdGl2ZVZhbHVlOworICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldFJlc2l6ZShyZXN1bHQpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQ
cm9wZXJ0eVJpZ2h0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlSaWdodCwgc2V0
UmlnaHQsIHJpZ2h0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UmlnaHQsIHNl
dFJpZ2h0LCBpbml0aWFsT2Zmc2V0KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVJp
Z2h0LCBzZXRSaWdodCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENT
U1Byb3BlcnR5U2l6ZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVNpemUpCitERUZJ
TkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5U2l6ZSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVNpemUpCit7CisgICAgaW5zdGFuY2UtPmFwcGx5UGFnZVNpemVQcm9wZXJ0eSh2YWx1ZSk7Cit9
CisKKy8vIENTU1Byb3BlcnR5U3JjCisvLyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4K
K0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlTcmMpCitERUZJTkVfTlVMTF9JTklUSUFM
KENTU1Byb3BlcnR5U3JjKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlTcmMpCisKKy8v
IENTU1Byb3BlcnR5U3BlYWsKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVNwZWFr
LCBzZXRTcGVhaywgc3BlYWspCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlTcGVh
aywgc2V0U3BlYWssIGluaXRpYWxTcGVhaykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVy
dHlTcGVhaywgc2V0U3BlYWspCisKKy8vIENTU1Byb3BlcnR5VGFibGVMYXlvdXQKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0LCBzZXRUYWJsZUxheW91dCwgdGFi
bGVMYXlvdXQpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlUYWJsZUxheW91dCwg
c2V0VGFibGVMYXlvdXQsIGluaXRpYWxUYWJsZUxheW91dCkKK0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eVRhYmxlTGF5b3V0KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7
CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBFVGFibGVMYXlvdXQgbGF5b3V0
ID0gKnByaW1pdGl2ZVZhbHVlOworICAgICAgICBpZiAobGF5b3V0ID09IFRBVVRPKQorICAgICAg
ICAgICAgbGF5b3V0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJsZUxheW91dCgpOworICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGFibGVMYXlvdXQobGF5b3V0KTsKKyAgICB9Cit9CisK
Ky8vIENTU1Byb3BlcnR5VGV4dEFsaWduCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlUZXh0QWxpZ24sIHNldFRleHRBbGlnbiwgdGV4dEFsaWduKQorREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5VGV4dEFsaWduLCBzZXRUZXh0QWxpZ24sIGluaXRpYWxUZXh0QWxpZ24p
CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlUZXh0QWxpZ24pCit7CisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAg
IGludCBpZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpOworICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVTdGFydCkKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0QWxp
Z24oaW5zdGFuY2UtPm1fc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IExFRlQgOiBS
SUdIVCk7CisgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1ZhbHVlRW5kKQorICAgICAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRBbGlnbihpbnN0YW5jZS0+bV9zdHlsZS0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gUklHSFQgOiBMRUZUKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRBbGlnbigqcHJpbWl0aXZlVmFsdWUpOwor
ICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbgorREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHNldFRleHREZWNvcmF0aW9uLCB0ZXh0
RGVjb3JhdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLCBzZXRUZXh0RGVjb3JhdGlvbiwgaW5pdGlhbFRleHREZWNvcmF0aW9uKQorREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICBD
U1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Cisg
ICAgICAgIGludCB0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbigpOworICAg
ICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjayhpKTsKKyAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
PihpdGVtKTsKKyAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkp
IHsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICAgICAgICAgIHQgPSBU
RE5PTkU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
VW5kZXJsaW5lOgorICAgICAgICAgICAgICAgIHQgfD0gVU5ERVJMSU5FOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU92ZXJsaW5lOgorICAgICAgICAg
ICAgICAgIHQgfD0gT1ZFUkxJTkU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlTGluZVRocm91Z2g6CisgICAgICAgICAgICAgICAgdCB8PSBMSU5FX1RI
Uk9VR0g7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
Qmxpbms6CisgICAgICAgICAgICAgICAgdCB8PSBCTElOSzsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RGVj
b3JhdGlvbih0KTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5VGV4dEluZGVudAorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGV4dEluZGVudCwgc2V0VGV4dEluZGVudCwgdGV4
dEluZGVudCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRJbmRlbnQsIHNl
dFRleHRJbmRlbnQsIGluaXRpYWxUZXh0SW5kZW50KQorREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQ
cm9wZXJ0eVRleHRJbmRlbnQsIHNldFRleHRJbmRlbnQsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2gKK0RFRklORV9OVUxM
X0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2gpCitERUZJTkVfTlVMTF9JTklUSUFM
KENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlUZXh0TGluZVRocm91Z2gpCisKKy8vIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3IK
K0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcikKK0RF
RklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcikKK0RFRklO
RV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3IpCisKKy8vIENTU1By
b3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0
eVRleHRMaW5lVGhyb3VnaE1vZGUpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoTW9kZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dExpbmVU
aHJvdWdoTW9kZSkKKworLy8gQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZQorREVGSU5F
X05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlKQorREVGSU5FX05V
TExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlKQorREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlU
ZXh0TGluZVRocm91Z2hXaWR0aAorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaFdpZHRoKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRMaW5l
VGhyb3VnaFdpZHRoKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91
Z2hXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3cKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdywgc2V0VGV4dE92ZXJmbG93LCB0ZXh0T3ZlcmZs
b3cpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3csIHNldFRl
eHRPdmVyZmxvdywgaW5pdGlhbFRleHRPdmVyZmxvdykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVRleHRPdmVyZmxvdykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewor
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRPdmVyZmxv
dyhwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUVsbGlwc2lzKTsKKyAgICB9
Cit9CisKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lCitERUZJTkVfTlVMTF9JTkhFUklUKENT
U1Byb3BlcnR5VGV4dE92ZXJsaW5lKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRl
eHRPdmVybGluZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lKQor
CisvLyBDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9yCitERUZJTkVfTlVMTF9JTkhFUklUKENT
U1Byb3BlcnR5VGV4dE92ZXJsaW5lQ29sb3IpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3Bl
cnR5VGV4dE92ZXJsaW5lQ29sb3IpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRP
dmVybGluZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGUKK0RFRklORV9O
VUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlKQorREVGSU5FX05VTExfSU5J
VElBTChDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGUpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQ
cm9wZXJ0eVRleHRPdmVybGluZU1vZGUpCisKKy8vIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5
bGUKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSkKK0RF
RklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSkKK0RFRklORV9O
VUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lV2lkdGgKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3Zl
cmxpbmVXaWR0aCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVX
aWR0aCkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpCisK
Ky8vIENTU1Byb3BlcnR5VGV4dFNoYWRvdworREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0
U2hhZG93KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0U2hhZG93KGluc3RhbmNl
LT5tX3BhcmVudFN0eWxlLT50ZXh0U2hhZG93KCkgPyBuZXcgU2hhZG93RGF0YSgqaW5zdGFuY2Ut
Pm1fcGFyZW50U3R5bGUtPnRleHRTaGFkb3coKSkgOiAwKTsKK30KK0RFRklORV9JTklUSUFMKENT
U1Byb3BlcnR5VGV4dFNoYWRvdykKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dFNo
YWRvdygwKTsKK30KK0RFRklORV9TSEFET1dfVkFMVUUoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBz
ZXRUZXh0U2hhZG93KQorCisvLyBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0KK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sIHNldFRleHRUcmFuc2Zvcm0sIHRl
eHRUcmFuc2Zvcm0pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0VHJhbnNm
b3JtLCBzZXRUZXh0VHJhbnNmb3JtLCBpbml0aWFsVGV4dFRyYW5zZm9ybSkKK0RFRklORV9IQU5E
TEVfVkFMVUUoQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtLCBzZXRUZXh0VHJhbnNmb3JtKQorCisv
LyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRVbmRl
cmxpbmUpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCisKKy8v
IENTU1Byb3BlcnR5VGV4dFVuZGVybGluZUNvbG9yCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1By
b3BlcnR5VGV4dFVuZGVybGluZUNvbG9yKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVDb2xvcikKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dFVu
ZGVybGluZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlCitERUZJTkVf
TlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUpCitERUZJTkVfTlVMTF9J
TklUSUFMKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUpCitERUZJTkVfTlVMTF9WQUxVRShD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlKQorCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxp
bmVTdHlsZQorREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHls
ZSkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGUpCitE
RUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSkKKworLy8gQ1NT
UHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lV2lkdGgpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZVdpZHRoKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0VW5kZXJs
aW5lV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5VG9wCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlUb3AsIHNldFRvcCwgdG9wKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5VG9wLCBzZXRUb3AsIGluaXRpYWxPZmZzZXQpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1By
b3BlcnR5VG9wLCBzZXRUb3AsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisv
LyBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlVbmljb2RlQmlkaSwgc2V0VW5pY29kZUJpZGksIHVuaWNvZGVCaWRpKQorREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHNldFVuaWNvZGVCaWRpLCBpbml0aWFs
VW5pY29kZUJpZGkpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5VW5pY29kZUJpZGks
IHNldFVuaWNvZGVCaWRpKQorCisvLyBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZQorLy8gT25seSB1
c2VkIGluIEBmb250LWZhY2UgcnVsZXMuCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5
VW5pY29kZVJhbmdlKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVVuaWNvZGVSYW5n
ZSkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VW5pY29kZVJhbmdlKQorCisvLyBDU1NQ
cm9wZXJ0eVZlcnRpY2FsQWxpZ24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVZl
cnRpY2FsQWxpZ24sIHNldFZlcnRpY2FsQWxpZ24sIHZlcnRpY2FsQWxpZ24pCitERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBzZXRWZXJ0aWNhbEFsaWduLCBp
bml0aWFsVmVydGljYWxBbGlnbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxp
Z24pCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkg
eworICAgICAgICAgICAgRVZlcnRpY2FsQWxpZ24gYWxpZ247CisgICAgICAgICAgICBzd2l0Y2gg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
VG9wOgorICAgICAgICAgICAgICAgIGFsaWduID0gVE9QOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUJvdHRvbToKKyAgICAgICAgICAgICAgICBhbGln
biA9IEJPVFRPTTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVNaWRkbGU6CisgICAgICAgICAgICAgICAgYWxpZ24gPSBNSURETEU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQmFzZWxpbmU6CisgICAgICAg
ICAgICAgICAgYWxpZ24gPSBCQVNFTElORTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVUZXh0Qm90dG9tOgorICAgICAgICAgICAgICAgIGFsaWduID0g
VEVYVF9CT1RUT007CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlVGV4dFRvcDoKKyAgICAgICAgICAgICAgICBhbGlnbiA9IFRFWFRfVE9QOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1YjoKKyAgICAgICAg
ICAgICAgICBhbGlnbiA9IFNVQjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVTdXBlcjoKKyAgICAgICAgICAgICAgICBhbGlnbiA9IFNVUEVSOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJhc2Vs
aW5lTWlkZGxlOgorICAgICAgICAgICAgICAgIGFsaWduID0gQkFTRUxJTkVfTUlERExFOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0VmVydGljYWxBbGlnbihhbGlnbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
bnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICBM
ZW5ndGggbGVuZ3RoOworICAgICAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRU
eXBlTGVuZ3RoKHR5cGUpKQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRp
dmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9zdHlsZS5nZXQo
KSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVj
dGl2ZVpvb20oKSksIEZpeGVkKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IExl
bmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VmVydGljYWxBbGlnbihMRU5HVEgpOworICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFZlcnRpY2FsQWxpZ25MZW5ndGgobGVuZ3RoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlWaXNpYmlsaXR5CitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBzZXRWaXNpYmlsaXR5LCB2aXNp
YmlsaXR5KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgc2V0
VmlzaWJpbGl0eSwgaW5pdGlhbFZpc2liaWxpdHkpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1By
b3BlcnR5VmlzaWJpbGl0eSwgc2V0VmlzaWJpbGl0eSkKKworLy8gQ1NTUHJvcGVydHlXaGl0ZVNw
YWNlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBzZXRXaGl0
ZVNwYWNlLCB3aGl0ZVNwYWNlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2hp
dGVTcGFjZSwgc2V0V2hpdGVTcGFjZSwgaW5pdGlhbFdoaXRlU3BhY2UpCitERUZJTkVfSEFORExF
X1ZBTFVFKENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgc2V0V2hpdGVTcGFjZSkKKworLy8gQ1NTUHJv
cGVydHlXaWRvd3MKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdpZG93cywgc2V0
V2lkb3dzLCB3aWRvd3MpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXaWRvd3Ms
IHNldFdpZG93cywgaW5pdGlhbFdpZG93cykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdpZG93
cykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0V2lkb3dzKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAg
ICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2lkdGgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdpZHRoLCBzZXRXaWR0aCwgd2lkdGgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlXaWR0aCwgc2V0V2lkdGgsIGluaXRpYWxTaXplKQorREVGSU5FX0xFTkdUSF9WQUxV
RShDU1NQcm9wZXJ0eVdpZHRoLCBzZXRXaWR0aCwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZh
bHNlKQorCisvLyBDU1NQcm9wZXJ0eVdvcmRCcmVhaworREVGSU5FX0hBTkRMRV9JTkhFUklUKENT
U1Byb3BlcnR5V29yZEJyZWFrLCBzZXRXb3JkQnJlYWssIHdvcmRCcmVhaykKK0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdvcmRCcmVhaywgc2V0V29yZEJyZWFrLCBpbml0aWFsV29y
ZEJyZWFrKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdvcmRCcmVhaywgc2V0V29y
ZEJyZWFrKQorCisvLyBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgc2V0V29yZFNwYWNpbmcsIHdvcmRTcGFjaW5nKQor
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIHNldFdvcmRTcGFj
aW5nLCBpbml0aWFsTGV0dGVyV29yZFNwYWNpbmcpCitERUZJTkVfU1BBQ0lOR19WQUxVRShDU1NQ
cm9wZXJ0eVdvcmRTcGFjaW5nLCBzZXRXb3JkU3BhY2luZykKKworLy8gQ1NTUHJvcGVydHlXb3Jk
V3JhcAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V29yZFdyYXAsIHNldFdvcmRX
cmFwLCB3b3JkV3JhcCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdvcmRXcmFw
LCBzZXRXb3JkV3JhcCwgaW5pdGlhbFdvcmRXcmFwKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQ
cm9wZXJ0eVdvcmRXcmFwLCBzZXRXb3JkV3JhcCkKKworLy8gQ1NTUHJvcGVydHlaSW5kZXgKK0RF
RklORV9JTkhFUklUKENTU1Byb3BlcnR5WkluZGV4KQoreworICAgIGlmIChpbnN0YW5jZS0+bV9w
YXJlbnRTdHlsZS0+aGFzQXV0b1pJbmRleCgpKQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0SGFzQXV0b1pJbmRleCgpOworICAgIGVsc2UKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldFpJbmRleChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+ekluZGV4KCkpOworfQorREVGSU5F
X0lOSVRJQUwoQ1NTUHJvcGVydHlaSW5kZXgpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEhhc0F1dG9aSW5kZXgoKTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVpJbmRleCkKK3sK
KyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlQXV0bykKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvWkluZGV4
KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBjbGFtcCBh
bGwgc29ydHMgb2Ygb3RoZXIgaW50ZWdlciBwcm9wZXJ0aWVzIHRvby4KKyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRaSW5kZXgoY2xhbXBUb0ludGVnZXIocHJpbWl0aXZlVmFsdWUt
PmdldERvdWJsZVZhbHVlKCkpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb24KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckFuaW1hdGlvbnMoKTsKK30KK0RF
RklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQoreworICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5pbmhlcml0QW5pbWF0aW9ucyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+YW5p
bWF0aW9ucygpKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5CitERUZJTkVfQU5JTUFU
SU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgZGVsYXksIERlbGF5
KQorREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVs
YXksIGRlbGF5LCBEZWxheSkKK0RFRklORV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25EZWxheSwgZGVsYXksIERlbGF5KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkRpcmVjdGlvbgorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRGlyZWN0aW9uLCBkaXJlY3Rpb24sIERpcmVjdGlvbikKK0RFRklORV9BTklN
QVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwgZGlyZWN0
aW9uLCBEaXJlY3Rpb24pCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRGlyZWN0aW9uLCBkaXJlY3Rpb24sIERpcmVjdGlvbikKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25EdXJhdGlvbgorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKK0RFRklO
RV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLCBk
dXJhdGlvbiwgRHVyYXRpb24pCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUsIGZpbGxNb2RlLCBGaWxsTW9kZSkKK0RFRklO
RV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCBm
aWxsTW9kZSwgRmlsbE1vZGUpCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRmlsbE1vZGUsIGZpbGxNb2RlLCBGaWxsTW9kZSkKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudAorREVGSU5FX0FOSU1BVElPTl9JTkhFUklU
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIGl0ZXJhdGlvbkNvdW50
LCBJdGVyYXRpb25Db3VudCkKK0RFRklORV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCBpdGVyYXRpb25Db3VudCwgSXRlcmF0aW9uQ291
bnQpCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRl
cmF0aW9uQ291bnQsIGl0ZXJhdGlvbkNvdW50LCBJdGVyYXRpb25Db3VudCkKKworLy8gQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25OYW1lCitERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25OYW1lLCBuYW1lLCBOYW1lKQorREVGSU5FX0FOSU1BVElPTl9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgbmFtZSwgTmFtZSkKK0RFRklO
RV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLCBuYW1lLCBO
YW1lKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZQorREVGSU5FX0FO
SU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlLCBwbGF5
U3RhdGUsIFBsYXlTdGF0ZSkKK0RFRklORV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvblBsYXlTdGF0ZSwgcGxheVN0YXRlLCBQbGF5U3RhdGUpCitERUZJTkVfQU5J
TUFUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlLCBwbGF5U3Rh
dGUsIFBsYXlTdGF0ZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5j
dGlvbgorREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbikKK0RFRklORV9B
TklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
LCB0aW1pbmdGdW5jdGlvbiwgVGltaW5nRnVuY3Rpb24pCitERUZJTkVfQU5JTUFUSU9OX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIHRpbWluZ0Z1bmN0aW9u
LCBUaW1pbmdGdW5jdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlCitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBzZXRBcHBlYXJh
bmNlLCBhcHBlYXJhbmNlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
QXBwZWFyYW5jZSwgc2V0QXBwZWFyYW5jZSwgaW5pdGlhbEFwcGVhcmFuY2UpCitERUZJTkVfSEFO
RExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgc2V0QXBwZWFyYW5jZSkKKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwgc2V0QmFja2ZhY2VWaXNp
YmlsaXR5LCBiYWNrZmFjZVZpc2liaWxpdHkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHksIHNldEJhY2tmYWNlVmlzaWJpbGl0eSwgaW5p
dGlhbEJhY2tmYWNlVmlzaWJpbGl0eSkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tmYWNlVmlzaWJpbGl0eSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldEJhY2tmYWNlVmlzaWJpbGl0eSgocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVWaXNpYmxlKSA/IEJhY2tmYWNlVmlzaWJpbGl0eVZpc2libGUgOiBCYWNrZmFjZVZpc2li
aWxpdHlIaWRkZW4pOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5k
Q2xpcAorREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3Jv
dW5kQ2xpcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZ3JvdW5kQ29tcG9zaXRlCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tncm91bmQsIEJhY2tncm91
bmQsIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBiYWNrZ3JvdW5kLCBCYWNr
Z3JvdW5kLCBjb21wb3NpdGUsIENvbXBvc2l0ZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tncm91bmQsIEJh
Y2tncm91bmQsIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRPcmlnaW4KK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Vi
a2l0QmFja2dyb3VuZE9yaWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luKQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJU
WShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRT
aXplKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyCitERUZJTkVfVU5SRUFDSEFC
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQorREVGSU5FX1VOUkVBQ0hB
QkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcikKK0RFRklORV9VTlJFQUNI
QUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFM
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJBZnRlcldpZHRoCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJCZWZvcmUpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZSkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVD
b2xvcgorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVDb2xvcikKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQmVmb3JlQ29sb3IpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJCZWZvcmVDb2xvcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmVTdHlsZQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVTdHlsZSkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlU3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVXaWR0aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmVXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmQKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
RW5kKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQp
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IKK0RFRklORV9VTlJFQUNIQUJM
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IpCitERUZJTkVfVU5SRUFD
SEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yKQorREVGSU5FX1VO
UkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IpCisKKy8vIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklU
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlKQorREVGSU5FX1VOUkVBQ0hBQkxF
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRW5kV2lkdGgKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRml0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQs
IHNldEJvcmRlckZpdCwgYm9yZGVyRml0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRml0LCBzZXRCb3JkZXJGaXQsIGluaXRpYWxCb3JkZXJGaXQpCitERUZJ
TkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQpCit7CisgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUJvcmRlcikKKyAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3JkZXJGaXQoQm9yZGVyRml0Qm9yZGVyKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJvcmRlckZp
dChCb3JkZXJGaXRMaW5lcyk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckhvcml6b250YWxTcGFjaW5nCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywgc2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsIGhv
cml6b250YWxCb3JkZXJTcGFjaW5nKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIHNldEhvcml6b250YWxCb3JkZXJTcGFjaW5n
LCBpbml0aWFsSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgZmxv
YXQgem9vbUZhY3RvciA9IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7CisgICAg
ICAgIHNob3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KGlu
c3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB6b29t
RmFjdG9yKTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhvcml6b250YWxCb3JkZXJT
cGFjaW5nKHNwYWNpbmcpOworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJ
bWFnZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2Us
IHNldEJvcmRlckltYWdlLCBib3JkZXJJbWFnZSkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlLCBzZXRCb3JkZXJJbWFnZSwgaW5pdGlhbE5pbmVQaWVj
ZUltYWdlKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UpCit7Cisg
ICAgTmluZVBpZWNlSW1hZ2UgaW1hZ2U7CisgICAgaW5zdGFuY2UtPm1hcE5pbmVQaWVjZUltYWdl
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIHZhbHVlLCBpbWFnZSk7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldEJvcmRlckltYWdlKGltYWdlKTsKK30KKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJSYWRpdXMKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyUmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykKKworLy8gQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dENvbG9yCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clN0YXJ0Q29sb3IpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0Q29sb3IpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
U3R5bGUKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
U3RhcnRTdHlsZSkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRTdHlsZSkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0U3R5bGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRX
aWR0aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJT
dGFydFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJTdGFydFdpZHRoKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNh
bFNwYWNpbmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZl
cnRpY2FsU3BhY2luZywgc2V0VmVydGljYWxCb3JkZXJTcGFjaW5nLCB2ZXJ0aWNhbEJvcmRlclNw
YWNpbmcpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0
aWNhbFNwYWNpbmcsIHNldFZlcnRpY2FsQm9yZGVyU3BhY2luZywgaW5pdGlhbFZlcnRpY2FsQm9y
ZGVyU3BhY2luZykKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2Fs
U3BhY2luZykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IGluc3RhbmNl
LT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7CisgICAgICAgIHNob3J0IHNwYWNpbmcgPSBwcmlt
aXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBp
bnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhzcGFjaW5nKTsKKyAgICB9Cit9
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduLCBzZXRCb3hBbGlnbiwgYm94QWxpZ24pCitERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbiwgc2V0Qm94QWxpZ24sIGlu
aXRpYWxCb3hBbGlnbikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduKQor
eworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOworICAgICAgICBFQm94QWxpZ25tZW50IGJveEFsaWdubWVudCA9ICpwcmltaXRp
dmVWYWx1ZTsKKyAgICAgICAgaWYgKGJveEFsaWdubWVudCAhPSBCSlVTVElGWSkKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hBbGlnbihib3hBbGlnbm1lbnQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbgor
REVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBzZXRC
b3hEaXJlY3Rpb24sIGJveERpcmVjdGlvbikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdEJveERpcmVjdGlvbiwgc2V0Qm94RGlyZWN0aW9uLCBpbml0aWFsQm94RGlyZWN0
aW9uKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbiwg
c2V0Qm94RGlyZWN0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgsIHNldEJveEZsZXgsIGJveEZs
ZXgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4LCBzZXRC
b3hGbGV4LCBpbml0aWFsQm94RmxleCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJv
eEZsZXgpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEJveEZsZXgocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUo
KSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cAorREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwLCBzZXRCb3hGbGV4
R3JvdXAsIGJveEZsZXhHcm91cCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdEJveEZsZXhHcm91cCwgc2V0Qm94RmxleEdyb3VwLCBpbml0aWFsQm94RmxleEdyb3VwKQor
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwKQoreworICAgIGlmICh2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRC
b3hGbGV4R3JvdXAoKHVuc2lnbmVkIGludCkocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVl
KCkpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMKK0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzLCBzZXRCb3hMaW5lcywgYm94
TGluZXMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcywg
c2V0Qm94TGluZXMsIGluaXRpYWxCb3hMaW5lcykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRCb3hMaW5lcywgc2V0Qm94TGluZXMpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
Qm94T3JkaW5hbEdyb3VwCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRC
b3hPcmRpbmFsR3JvdXAsIHNldEJveE9yZGluYWxHcm91cCwgYm94T3JkaW5hbEdyb3VwKQorREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwLCBzZXRC
b3hPcmRpbmFsR3JvdXAsIGluaXRpYWxCb3hPcmRpbmFsR3JvdXApCitERUZJTkVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXApCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveE9yZGluYWxHcm91
cCgodW5zaWduZWQgaW50KShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOworICAg
IH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudCwgc2V0Qm94T3JpZW50LCBib3hPcmllbnQp
CitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIHNldEJv
eE9yaWVudCwgaW5pdGlhbEJveE9yaWVudCkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRCb3hPcmllbnQsIHNldEJveE9yaWVudCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRC
b3hQYWNrCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrLCBz
ZXRCb3hQYWNrLCBib3hQYWNrKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0Qm94UGFjaywgc2V0Qm94UGFjaywgaW5pdGlhbEJveFBhY2spCitERUZJTkVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRCb3hQYWNrKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBFQm94QWxpZ25tZW50
IGJveFBhY2sgPSAqcHJpbWl0aXZlVmFsdWU7CisgICAgICAgIGlmIChib3hQYWNrICE9IEJTVFJF
VENIICYmIGJveFBhY2sgIT0gQkJBU0VMSU5FKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldEJveFBhY2soYm94UGFjayk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dEJveFJlZmxlY3QKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveFJl
ZmxlY3QsIHNldEJveFJlZmxlY3QsIGJveFJlZmxlY3QpCitERUZJTkVfSEFORExFX0lOSVRJQUwo
Q1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0LCBzZXRCb3hSZWZsZWN0LCBpbml0aWFsQm94UmVm
bGVjdCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QpCit7CisgICAg
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldEJveFJlZmxlY3QoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hSZWZsZWN0KCkpOworICAg
IH0gZWxzZSBpZiAodmFsdWUtPmlzUmVmbGVjdFZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUmVmbGVj
dFZhbHVlKiByZWZsZWN0VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NSZWZsZWN0VmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IHJlZmxlY3Rpb24gPSBTdHlsZVJl
ZmxlY3Rpb246OmNyZWF0ZSgpOworICAgICAgICByZWZsZWN0aW9uLT5zZXREaXJlY3Rpb24ocmVm
bGVjdFZhbHVlLT5kaXJlY3Rpb24oKSk7CisgICAgICAgIGlmIChyZWZsZWN0VmFsdWUtPm9mZnNl
dCgpKSB7CisgICAgICAgICAgICBpbnQgdHlwZSA9IHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPnBy
aW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQo
TGVuZ3RoKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQp
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZz
ZXQoTGVuZ3RoKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5n
dGgoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUs
IGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpLCBGaXhlZCkpOworICAgICAgICB9
CisgICAgICAgIE5pbmVQaWVjZUltYWdlIG1hc2s7CisgICAgICAgIGluc3RhbmNlLT5tYXBOaW5l
UGllY2VJbWFnZShDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QsIHJlZmxlY3RWYWx1ZS0+bWFz
aygpLCBtYXNrKTsKKyAgICAgICAgcmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsKKyAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFJlZmxlY3QocmVmbGVjdGlvbi5yZWxlYXNlKCkpOwor
ICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlCb3hTaGFkb3cKK0RFRklORV9JTkhFUklUKENTU1By
b3BlcnR5Qm94U2hhZG93KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hTaGFkb3co
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmJveFNoYWRvdygpID8gbmV3IFNoYWRvd0RhdGEoKmlu
c3RhbmNlLT5tX3BhcmVudFN0eWxlLT5ib3hTaGFkb3coKSkgOiAwKTsKK30KK0RFRklORV9JTklU
SUFMKENTU1Byb3BlcnR5Qm94U2hhZG93KQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRC
b3hTaGFkb3coMCk7Cit9CitERUZJTkVfU0hBRE9XX1ZBTFVFKENTU1Byb3BlcnR5Qm94U2hhZG93
LCBzZXRCb3hTaGFkb3cpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93CitERUZJTkVf
RVFVSVZBTEVOVF9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBDU1NQcm9wZXJ0
eUJveFNoYWRvdykKK0RFRklORV9FUVVJVkFMRU5UX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRC
b3hTaGFkb3csIENTU1Byb3BlcnR5Qm94U2hhZG93KQorREVGSU5FX1NIQURPV19WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgc2V0Qm94U2hhZG93KQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdENvbG9yQ29ycmVjdGlvbgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0Q29sb3JDb3JyZWN0aW9uLCBzZXRDb2xvclNwYWNlLCBjb2xvclNwYWNlKQorREVGSU5FX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb24pCit7CisgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7Cit9CitERUZJTkVf
SEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uLCBzZXRDb2xvclNw
YWNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIHNldENvbHVtbkJy
ZWFrQWZ0ZXIsIGNvbHVtbkJyZWFrQWZ0ZXIpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyLCBzZXRDb2x1bW5CcmVha0FmdGVyLCBpbml0aWFs
UGFnZUJyZWFrKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJy
ZWFrQWZ0ZXIsIHNldENvbHVtbkJyZWFrQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtCZWZvcmUKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbkJyZWFrQmVmb3JlLCBzZXRDb2x1bW5CcmVha0JlZm9yZSwgY29sdW1uQnJlYWtCZWZvcmUp
CitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9y
ZSwgc2V0Q29sdW1uQnJlYWtCZWZvcmUsIGluaXRpYWxQYWdlQnJlYWspCitERUZJTkVfSEFORExF
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUsIHNldENvbHVtbkJyZWFr
QmVmb3JlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZSwgc2V0Q29s
dW1uQnJlYWtJbnNpZGUsIGNvbHVtbkJyZWFrSW5zaWRlKQorREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUsIHNldENvbHVtbkJyZWFrSW5zaWRl
LCBpbml0aWFsUGFnZUJyZWFrKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
QnJlYWtJbnNpZGUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIEVQYWdlQnJlYWsgcGIgPSAqcHJpbWl0
aXZlVmFsdWU7CisgICAgICAgIGlmIChwYiAhPSBQQkFMV0FZUykKKyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5CcmVha0luc2lkZShwYik7CisgICAgfQorfQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50CitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkNvdW50KQoreworICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+aGFz
QXV0b0NvbHVtbkNvdW50KCkpCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRv
Q29sdW1uQ291bnQoKTsKKyAgICBlbHNlCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRD
b2x1bW5Db3VudChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291bnQoKSk7Cit9CitE
RUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50KQoreworICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uQ291bnQoKTsKK30KK0RFRklORV9WQUxVRShD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50KQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5Db3VudCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29sdW1uQ291bnQoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgc2hvcnQ+KHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7CisgICAg
fQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcAorREVGSU5FX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5HYXApCit7CisgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0
eWxlLT5oYXNOb3JtYWxDb2x1bW5HYXAoKSkKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEhhc05vcm1hbENvbHVtbkdhcCgpOworICAgIGVsc2UKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldENvbHVtbkdhcChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uR2FwKCkpOwor
fQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXApCit7CisgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEhhc05vcm1hbENvbHVtbkdhcCgpOworfQorREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2FwKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5HYXAocHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGhGbG9hdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2Ut
Pm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkp
OworICAgIH0KK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlCitERUZJTkVfRVhQ
QU5ESU5HX0lOSEVSSVRfVEhSRUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlLCBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5
bGUsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoKQorREVGSU5FX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5SdWxlKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNl
dENvbHVtblJ1bGUoKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IKK0RFRklORV9I
QU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsIHNl
dENvbHVtblJ1bGVDb2xvciwgY29sdW1uUnVsZUNvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVf
SU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgc2V0Q29sdW1u
UnVsZUNvbG9yKQorREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtblJ1bGVDb2xvciwgc2V0Q29sdW1uUnVsZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGVTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZVN0eWxlLCBzZXRDb2x1bW5SdWxlU3R5bGUsIGNvbHVtblJ1bGVTdHlsZSkKK0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSwgc2V0
Q29sdW1uUnVsZVN0eWxlLCBpbml0aWFsQm9yZGVyU3R5bGUpCitERUZJTkVfSEFORExFX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLCBzZXRDb2x1bW5SdWxlU3R5bGUpCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIHNldENvbHVtblJ1bGVXaWR0aCwg
Y29sdW1uUnVsZVdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uUnVsZVdpZHRoLCBzZXRDb2x1bW5SdWxlV2lkdGgsIGluaXRpYWxCb3JkZXJXaWR0aCkK
K0RFRklORV9XSURUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgc2V0
Q29sdW1uUnVsZVdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4KK0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4sIHNldENvbHVtblNw
YW4sIGNvbHVtblNwYW4pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5TcGFuLCBzZXRDb2x1bW5TcGFuLCBpbml0aWFsQ29sdW1uU3BhbikKK0RFRklORV9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4pCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5TcGFuKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlQWxsKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lk
dGgKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgpCit7CisgICAg
aWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uV2lkdGgoKSkKKyAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOworICAgIGVsc2UK
KyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbldpZHRoKGluc3RhbmNlLT5tX3Bh
cmVudFN0eWxlLT5jb2x1bW5XaWR0aCgpKTsKK30KK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uV2lkdGgpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9D
b2x1bW5XaWR0aCgpOworfQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lk
dGgpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0
b0NvbHVtbldpZHRoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRDb2x1bW5XaWR0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGlu
c3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0
YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbnMKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
cykKK3sKKyAgICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmhhc0F1dG9Db2x1bW5XaWR0
aCgpKQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7
CisgICAgZWxzZQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgoaW5z
dGFuY2UtPm1fcGFyZW50U3R5bGUtPmNvbHVtbldpZHRoKCkpOworICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRDb2x1bW5Db3VudChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291bnQo
KSk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMpCit7CisgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOworICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRDb2x1bW5Db3VudChSZW5kZXJTdHlsZTo6aW5pdGlhbENvbHVtbkNvdW50
KCkpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEpCitERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdEZvbnRTaXplRGVsdGEpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0CitERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQsIHNldEhpZ2hsaWdo
dCwgaGlnaGxpZ2h0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0SGln
aGxpZ2h0LCBzZXRIaWdobGlnaHQsIGluaXRpYWxIaWdobGlnaHQpCitERUZJTkVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRIaWdobGlnaHQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0SGlnaGxpZ2h0KG51bGxBdG9tKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhpZ2hsaWdodChwcmltaXRpdmVWYWx1ZS0+Z2V0
U3RyaW5nVmFsdWUoKSk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0
ZUNoYXJhY3RlcgorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0SHlwaGVu
YXRlQ2hhcmFjdGVyLCBzZXRIeXBoZW5hdGlvblN0cmluZywgaHlwaGVuYXRpb25TdHJpbmcpCitE
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIs
IHNldEh5cGhlbmF0aW9uU3RyaW5nLCBpbml0aWFsSHlwaGVuYXRpb25TdHJpbmcpCitERUZJTkVf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpCit7CisgICAgaWYgKHZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25TdHJpbmcobnVsbEF0
b20pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SHlw
aGVuYXRpb25TdHJpbmcocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOworICAgIH0K
K30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMb2NhbGUKK0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZSwgc2V0SHlwaGVuYXRpb25M
b2NhbGUsIGh5cGhlbmF0aW9uTG9jYWxlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0SHlwaGVuYXRlTG9jYWxlLCBzZXRIeXBoZW5hdGlvbkxvY2FsZSwgaW5pdGlhbEh5
cGhlbmF0aW9uTG9jYWxlKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRl
TG9jYWxlKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEh5
cGhlbmF0aW9uTG9jYWxlKG51bGxBdG9tKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEh5cGhlbmF0aW9uTG9jYWxlKHByaW1pdGl2ZVZhbHVlLT5nZXRT
dHJpbmdWYWx1ZSgpKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0SHlwaGVucwor
REVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0SHlwaGVucywgc2V0SHlwaGVu
cywgaHlwaGVucykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bnMsIHNldEh5cGhlbnMsIGluaXRpYWxIeXBoZW5zKQorREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdEh5cGhlbnMsIHNldEh5cGhlbnMpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
TGluZUJyZWFrCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJl
YWssIHNldEtIVE1MTGluZUJyZWFrLCBraHRtbExpbmVCcmVhaykKK0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgc2V0S0hUTUxMaW5lQnJlYWssIGluaXRp
YWxLSFRNTExpbmVCcmVhaykKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRM
aW5lQnJlYWssIHNldEtIVE1MTGluZUJyZWFrKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdExpbmVD
bGFtcAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wLCBz
ZXRMaW5lQ2xhbXAsIGxpbmVDbGFtcCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdExpbmVDbGFtcCwgc2V0TGluZUNsYW1wLCBpbml0aWFsTGluZUNsYW1wKQorREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wKQoreworICAgIGlmICh2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBp
bnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmICh0
eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZShwcmltaXRpdmVWYWx1ZS0+
Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBMaW5lQ2xhbXBMaW5l
Q291bnQpKTsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGluZUNsYW1w
KExpbmVDbGFtcFZhbHVlKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBMaW5lQ2xhbXBQZXJjZW50YWdlKSk7CisgICAgfQorfQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aAorREVGSU5FX1VOUkVBQ0hBQkxFX0lO
SEVSSVQoQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGgpCitERUZJTkVfVU5SRUFDSEFCTEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aCkKK0RFRklORV9VTlJFQUNIQUJM
RV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRMb2dpY2FsSGVpZ2h0CitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdExvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFm
dGVyQ29sbGFwc2UKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyQ29sbGFwc2UsIHNldE1hcmdpbkFmdGVyQ29sbGFwc2UsIG1hcmdpbkFmdGVyQ29sbGFw
c2UpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNv
bGxhcHNlLCBzZXRNYXJnaW5BZnRlckNvbGxhcHNlLCBpbml0aWFsTWFyZ2luQWZ0ZXJDb2xsYXBz
ZSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxh
cHNlLCBzZXRNYXJnaW5BZnRlckNvbGxhcHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkJlZm9yZUNvbGxhcHNlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5CZWZvcmVDb2xsYXBzZSwgc2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIG1hcmdpbkJlZm9y
ZUNvbGxhcHNlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlQ29sbGFwc2UsIHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBpbml0aWFsTWFyZ2luQmVm
b3JlQ29sbGFwc2UpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlQ29sbGFwc2UsIHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlCitERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkFmdGVyQ29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFw
c2UKK0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9w
Q29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpCisKKy8vIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UKK0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQ29sbGFwc2UpCit7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcmdp
bkJlZm9yZUNvbGxhcHNlKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJnaW5CZWZvcmVDb2xs
YXBzZSgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSgpKTsKK30KK0RFRklO
RV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpCit7CisgICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPnNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKE1DT0xMQVBTRSk7CisgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldE1hcmdpbkFmdGVyQ29sbGFwc2UoTUNPTExBUFNFKTsKK30KK0RF
RklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpCisKKy8vIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXIKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXIpCitERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlCitERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkJlZm9yZSkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQmVmb3JlKQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQmVmb3JlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZAorREVGSU5FX1VOUkVB
Q0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQpCitERUZJTkVfVU5SRUFD
SEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCkKK0RFRklORV9VTlJFQUNI
QUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCkKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5TdGFydAorREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5TdGFydCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luU3RhcnQpCitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5TdGFydCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlCitERUZJTkVf
TlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSkKK0RFRklORV9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFy
cXVlZURpcmVjdGlvbihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFycXVlZURpcmVjdGlvbigp
KTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChpbnN0YW5jZS0+
bV9wYXJlbnRTdHlsZS0+bWFycXVlZUluY3JlbWVudCgpKTsKKyAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0TWFycXVlZVNwZWVkKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5tYXJxdWVlU3BlZWQo
KSk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291bnQoaW5zdGFuY2Ut
Pm1fcGFyZW50U3R5bGUtPm1hcnF1ZWVMb29wQ291bnQoKSk7CisgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldE1hcnF1ZWVCZWhhdmlvcihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFycXVlZUJl
aGF2aW9yKCkpOworfQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24KK0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIHNldE1hcnF1ZWVEaXJl
Y3Rpb24sIG1hcnF1ZWVEaXJlY3Rpb24pCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBzZXRNYXJxdWVlRGlyZWN0aW9uLCBpbml0aWFsTWFy
cXVlZURpcmVjdGlvbikKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlRGlyZWN0aW9uLCBzZXRNYXJxdWVlRGlyZWN0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVJbmNyZW1lbnQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVJbmNyZW1lbnQsIHNldE1hcnF1ZWVJbmNyZW1lbnQsIG1hcnF1ZWVJbmNyZW1lbnQp
CitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50
LCBzZXRNYXJxdWVlSW5jcmVtZW50LCBpbml0aWFsTWFycXVlZUluY3JlbWVudCkKK0RFRklORV9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQpCit7CisgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBzd2l0Y2ggKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFsbDoK
KyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0
aCgxLCBGaXhlZCkpOyAvLyAxcHguCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
U1NWYWx1ZU5vcm1hbDoKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVl
SW5jcmVtZW50KExlbmd0aCg2LCBGaXhlZCkpOyAvLyA2cHguIFRoZSBXaW5JRSBkZWZhdWx0Lgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgzNiwgRml4
ZWQpKTsgLy8gMzZweC4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgIExlbmd0aCBs
ZW5ndGggPSBjb252ZXJ0VG9MZW5ndGgocHJpbWl0aXZlVmFsdWUsIGluc3RhbmNlLT5tX3N0eWxl
LmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOworICAgICAgICAg
ICAgaWYgKG9rKQorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVl
SW5jcmVtZW50KGxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVJlcGV0aXRpb24KK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLCBzZXRNYXJxdWVlTG9vcENvdW50LCBtYXJxdWVlTG9v
cENvdW50KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJl
cGV0aXRpb24sIHNldE1hcnF1ZWVMb29wQ291bnQsIGluaXRpYWxNYXJxdWVlTG9vcENvdW50KQor
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pCit7CisgICAg
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUlu
ZmluaXRlKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVMb29wQ291
bnQoLTEpOyAvLyAtMSBtZWFucyByZXBlYXQgZm9yZXZlci4KKyAgICAgICAgZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50
KHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICB9Cit9CisKKworLy8gQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3BlZWQKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTcGVlZCwgc2V0TWFycXVlZVNwZWVkLCBtYXJxdWVlU3BlZWQpCitERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQsIHNldE1hcnF1
ZWVTcGVlZCwgaW5pdGlhbE1hcnF1ZWVTcGVlZCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVTcGVlZCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2xvdzoKKyAgICAgICAgICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDUwMCk7IC8vIDUwMCBtc2VjLgor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoK
KyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDg1KTsg
Ly8gODVtc2VjLiBUaGUgV2luSUUgZGVmYXVsdC4KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVGYXN0OgorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQoMTApOyAvLyAxMG1zZWMuIFN1cGVyIGZhc3QuCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1Mp
CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDEwMDAgKiBw
cmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7CisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NUykKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQocHJpbWl0aXZlVmFs
dWUtPmdldEludFZhbHVlKCkpOworICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJp
bWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSAvLyBGb3Igc2Ny
b2xsYW1vdW50IHN1cHBvcnQuCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFy
cXVlZVNwZWVkKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKyAgICB9Cit9CisvLyBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZQorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLCBzZXRNYXJxdWVlQmVoYXZpb3IsIG1hcnF1ZWVCZWhh
dmlvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHls
ZSwgc2V0TWFycXVlZUJlaGF2aW9yLCBpbml0aWFsTWFycXVlZUJlaGF2aW9yKQorREVGSU5FX0hB
TkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgc2V0TWFycXVlZUJlaGF2
aW9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2sKK0RFRklORV9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0TWFzaykKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+Y2xlYXJNYXNrTGF5ZXJz
KCk7Cit9CitERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2spCit7CisgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPmluaGVyaXRNYXNrTGF5ZXJzKCppbnN0YW5jZS0+bV9wYXJlbnRTdHls
ZS0+bWFza0xheWVycygpKTsKK30KK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
TWFzaykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudAorREVGSU5FX0hBTkRM
RV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgbWFz
aywgTWFzaywgYXR0YWNobWVudCwgQXR0YWNobWVudCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlF
Ul9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIG1hc2ssIE1hc2ssIGF0
dGFjaG1lbnQsIEF0dGFjaG1lbnQpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgbWFzaywgTWFzaywgYXR0YWNobWVudCwgQXR0
YWNobWVudCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgc2V0TWFza0JveEltYWdl
LCBtYXNrQm94SW1hZ2UpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRN
YXNrQm94SW1hZ2UsIHNldE1hc2tCb3hJbWFnZSwgaW5pdGlhbE5pbmVQaWVjZUltYWdlKQorREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlKQoreworICAgIE5pbmVQaWVj
ZUltYWdlIGltYWdlOworICAgIGluc3RhbmNlLT5tYXBOaW5lUGllY2VJbWFnZShDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tCb3hJbWFnZSwgdmFsdWUsIGltYWdlKTsKKyAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0TWFza0JveEltYWdlKGltYWdlKTsKK30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q2xpcAorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRN
YXNrQ2xpcCwgbWFzaywgTWFzaywgY2xpcCwgQ2xpcCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlF
Ul9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsIG1hc2ssIE1hc2ssIGNsaXAsIENs
aXApCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q2xpcCwgbWFzaywgTWFzaywgY2xpcCwgQ2xpcCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q29tcG9zaXRlCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tDb21wb3NpdGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorREVG
SU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9z
aXRlLCBtYXNrLCBNYXNrLCBjb21wb3NpdGUsIENvbXBvc2l0ZSkKK0RFRklORV9IQU5ETEVfRklM
TF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIG1hc2ssIE1hc2ss
IGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1h
Z2UsIG1hc2ssIE1hc2ssIGltYWdlLCBJbWFnZSkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBtYXNrLCBNYXNrLCBpbWFnZSwgSW1h
Z2UpCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNr
SW1hZ2UsIG1hc2ssIE1hc2ssIGltYWdlLCBJbWFnZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRN
YXNrT3JpZ2luCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tPcmlnaW4sIG1hc2ssIE1hc2ssIG9yaWdpbiwgT3JpZ2luKQorREVGSU5FX0hBTkRM
RV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBtYXNrLCBN
YXNrLCBvcmlnaW4sIE9yaWdpbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIG1hc2ssIE1hc2ssIG9yaWdpbiwgT3JpZ2luKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbgorREVGSU5FX0VYUEFORElOR19JTkhFUklU
X1RXTyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkpCitERUZJTkVfRVhQQU5E
SU5HX0lOSVRJQUxfVFdPKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSkKK0RF
RklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQorCisvLyBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgbWFzaywgTWFzaywgeFBvc2l0aW9u
LCBYUG9zaXRpb24pCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblgsIG1hc2ssIE1hc2ssIHhQb3NpdGlvbiwgWFBvc2l0aW9uKQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uWCwgbWFzaywgTWFzaywgeFBvc2l0aW9uLCBYUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uWQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBtYXNrLCBNYXNrLCB5UG9zaXRpb24sIFlQb3Np
dGlvbikKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uWSwgbWFzaywgTWFzaywgeVBvc2l0aW9uLCBZUG9zaXRpb24pCitERUZJTkVf
SEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBt
YXNrLCBNYXNrLCB5UG9zaXRpb24sIFlQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0CitERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUmVwZWF0WSkKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tSZXBlYXRZKQorREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBtYXNr
LCBNYXNrLCByZXBlYXRYLCBSZXBlYXRYKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgbWFzaywgTWFzaywgcmVwZWF0WCwgUmVw
ZWF0WCkKK0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRYLCBtYXNrLCBNYXNrLCByZXBlYXRYLCBSZXBlYXRYKQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tSZXBlYXRZCitERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBtYXNrLCBNYXNrLCByZXBlYXRZLCBSZXBlYXRZKQor
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0WSwgbWFzaywgTWFzaywgcmVwZWF0WSwgUmVwZWF0WSkKK0RFRklORV9IQU5ETEVfRklMTF9M
QVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBtYXNrLCBNYXNrLCByZXBl
YXRZLCBSZXBlYXRZKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplCitERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNrLCBN
YXNrLCBzaXplLCBTaXplKQorREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRNYXNrU2l6ZSwgbWFzaywgTWFzaywgc2l6ZSwgU2l6ZSkKK0RFRklORV9IQU5E
TEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLCBtYXNrLCBNYXNr
LCBzaXplLCBTaXplKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9j
a3F1b3RlQ29sb3IKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hdGNo
TmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IsIHNldE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3Rl
Q29sb3IsIG1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpCitERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBz
ZXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBpbml0aWFsTWF0Y2hOZWFyZXN0TWFp
bEJsb2NrcXVvdGVDb2xvcikKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRN
YXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBzZXRNYXRjaE5lYXJlc3RNYWlsQmxvY2tx
dW90ZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aAorREVGSU5F
X1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGgpCitE
RUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0
aCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxX
aWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0CitERUZJTkVfVU5S
RUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQpCitERUZJ
TkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQp
CitERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVp
Z2h0KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aAorREVGSU5FX1VOUkVB
Q0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGgpCitERUZJTkVf
VU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKK0RF
RklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0CitERUZJTkVfVU5SRUFDSEFC
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpCitERUZJTkVfVU5S
RUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpCitERUZJ
TkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXROYnNwTW9kZSwgc2V0TkJTUE1vZGUsIG5ic3BNb2RlKQorREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIHNldE5CU1BNb2RlLCBpbml0
aWFsTkJTUE1vZGUpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TmJzcE1v
ZGUsIHNldE5CU1BNb2RlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcgorREVG
SU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXIpCitE
RUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikK
K0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlCitERUZJTkVfVU5SRUFDSEFCTEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUpCitERUZJTkVfVU5SRUFDSEFC
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUpCitERUZJTkVfVU5SRUFD
SEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdFBhZGRpbmdFbmQKK0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0UGFkZGluZ0VuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0UGFkZGluZ0VuZCkKK0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdFBhZGRpbmdFbmQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0CitE
RUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdTdGFydCkK
K0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0
KQorREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0
KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlCitERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSwgc2V0UGVyc3BlY3RpdmUsIHBlcnNwZWN0
aXZlKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUs
IHNldFBlcnNwZWN0aXZlLCBpbml0aWFsUGVyc3BlY3RpdmUpCitERUZJTkVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRQZXJzcGVjdGl2ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0UGVyc3BlY3RpdmUoMCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBmbG9hdCBwZXJzcGVjdGl2ZVZhbHVlOworICAgICAgICBpbnQg
dHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmIChDU1NQ
cmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKKyAgICAgICAgICAgIHBlcnNw
ZWN0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4ocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVM
ZW5ndGhJbnRGb3JMZW5ndGgoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jv
b3RFbGVtZW50U3R5bGUsICBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSk7Cisg
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsK
KyAgICAgICAgICAgIC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0cmVhdCB2YWx1ZWxl
c3MgbnVtYmVycyBhcyBweC4KKyAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y29tcHV0ZUxlbmd0aEZsb2F0KGluc3RhbmNlLT5tX3N0
eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCAgaW5zdGFuY2UtPm1fc3R5
bGUtPmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGlmIChwZXJzcGVjdGl2ZVZhbHVlID49IDAuMGYpCisgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVWYWx1ZSk7CisgICAg
fQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luCitERUZJTkVfRVhQ
QU5ESU5HX0lOSEVSSVRfVFdPKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4sIENT
U1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5YLCBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNw
ZWN0aXZlT3JpZ2luWSkKK0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdp
blgsIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZKQorREVGSU5FX05VTExfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbikKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgc2V0UGVyc3BlY3RpdmVPcmlnaW5YLCBwZXJzcGVj
dGl2ZU9yaWdpblgpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblgsIHNldFBlcnNwZWN0aXZlT3JpZ2luWCwgaW5pdGlhbFBlcnNwZWN0aXZl
T3JpZ2luWCkKK0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZU9yaWdpblgsIHNldFBlcnNwZWN0aXZlT3JpZ2luWCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWQorREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZLCBz
ZXRQZXJzcGVjdGl2ZU9yaWdpblksIHBlcnNwZWN0aXZlT3JpZ2luWSkKK0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgc2V0UGVyc3BlY3Rp
dmVPcmlnaW5ZLCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKQorREVGSU5FX0xFTkdUSF9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgc2V0UGVyc3BlY3RpdmVPcmln
aW5ZLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0UnRsT3JkZXJpbmcKK0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dFJ0bE9yZGVyaW5nLCBzZXRWaXN1YWxseU9yZGVyZWQsIHZpc3VhbGx5T3JkZXJlZCkKK0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBzZXRWaXN1YWxs
eU9yZGVyZWQsIGluaXRpYWxWaXN1YWxseU9yZGVyZWQpCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRSdGxPcmRlcmluZykKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpKQorICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFZpc3Vh
bGx5T3JkZXJlZChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVZpc3VhbCk7
CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lCitERUZJTkVfSEFO
RExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSwgc2V0VGV4dENvbWJpbmUs
IHRleHRDb21iaW5lKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4
dENvbWJpbmUsIHNldFRleHRDb21iaW5lLCBpbml0aWFsVGV4dENvbWJpbmUpCitERUZJTkVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0VGV4dENvbWJpbmUoKnApOworICAgIH0KKyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUt
Pmhhc1RleHRDb21iaW5lKCkpCisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRVbmlxdWUo
KTsgLy8gVGhlIHN0eWxlIGNvdWxkIGJlIG1vZGlmaWVkIGluIFJlbmRlckNvbWJpbmVUZXh0IGRl
cGVuZGluZyBvbiB0ZXh0IG1ldHJpY3MuCit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QKK0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKK0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzCitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzKQorREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
cykKK0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzKQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yCitERUZJTkVfSEFORExFX0lOSEVS
SVRfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIHNldFRleHRFbXBo
YXNpc0NvbG9yLCB0ZXh0RW1waGFzaXNDb2xvciwgY29sb3IpCitERUZJTkVfSEFORExFX0lOSVRJ
QUxfQ09MT1IoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgc2V0VGV4dEVtcGhh
c2lzQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzQ29sb3IsIHNldFRleHRFbXBoYXNpc0NvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgc2V0VGV4dEVtcGhhc2lzUG9zaXRpb24sIHRl
eHRFbXBoYXNpc1Bvc2l0aW9uKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzUG9zaXRpb24sIHNldFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBpbml0aWFs
VGV4dEVtcGhhc2lzUG9zaXRpb24pCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzUG9zaXRpb24sIHNldFRleHRFbXBoYXNpc1Bvc2l0aW9uKQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlCisvLyBOT1RFOiB0aGUgb3JpZ2luYWwg
Y29kZSB3YXMgYnJva2VuIHNvIEkgaGF2ZSBjb252ZXJ0ZWQgdGhpcyB0byBtYXRjaCB0aGUgaW50
ZW50IG9mIHRoZSBvcmlnaW5hbCBjb2RlCitERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpc1N0eWxlKQoreworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1w
aGFzaXNGaWxsKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50ZXh0RW1waGFzaXNGaWxsKCkpOwor
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKGluc3RhbmNlLT5tX3Bh
cmVudFN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50ZXh0RW1w
aGFzaXNDdXN0b21NYXJrKCkpOworfQorREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXNTdHlsZSkKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhh
c2lzRmlsbChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwoKSk7CisgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc01hcmsoUmVuZGVyU3R5bGU6OmluaXRpYWxU
ZXh0RW1waGFzaXNNYXJrKCkpOworICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFz
aXNDdXN0b21NYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygp
KTsKK30KK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKQor
eworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykgeworICAgICAgICAgICAgaW5zdGFuY2Ut
Pm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7Cisg
ICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1w
aGFzaXNNYXJrQ3VzdG9tKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0
RW1waGFzaXNDdXN0b21NYXJrKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUZp
bGxlZCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU9wZW4pIHsKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKCpwcmltaXRp
dmVWYWx1ZSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lz
TWFyayhUZXh0RW1waGFzaXNNYXJrQXV0byk7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0
RW1waGFzaXNGaWxsRmlsbGVkKTsKKyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRU
ZXh0RW1waGFzaXNNYXJrKCpwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgIENTU1ZhbHVl
TGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAgICAgICAg
QVNTRVJUKGxpc3QtPmxlbmd0aCgpID09IDIpOworICAgICAgICBpZiAobGlzdC0+bGVuZ3RoKCkg
IT0gMikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDI7ICsraSkgeworICAgICAgICAgICAgQVNTRVJUKGxpc3QtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soaSktPmlzUHJpbWl0aXZlVmFsdWUoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogdmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGxpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSkpOworICAgICAgICAgICAgaWYgKHZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlRmlsbGVkIHx8IHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikK
KyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgq
dmFsdWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRUZXh0RW1waGFzaXNNYXJrKCp2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20pOworICAg
IH0KK30KKworCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IKK0RFRklORV9IQU5E
TEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCBzZXRUZXh0
RmlsbENvbG9yLCB0ZXh0RmlsbENvbG9yLCBjb2xvcikKK0RFRklORV9IQU5ETEVfSU5JVElBTF9D
T0xPUihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IsIHNldFRleHRGaWxsQ29sb3IpCitE
RUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwg
c2V0VGV4dEZpbGxDb2xvcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHkKK0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwgc2V0VGV4
dFNlY3VyaXR5LCB0ZXh0U2VjdXJpdHkpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U2VjdXJpdHksIHNldFRleHRTZWN1cml0eSwgaW5pdGlhbFRleHRTZWN1cml0
eSkKK0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksIHNl
dFRleHRTZWN1cml0eSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlCitERUZJTkVf
TlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSkKK0RFRklORV9OVUxMX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlKQorREVGSU5FX05VTExfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJv
a2VDb2xvcgorREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2VDb2xvciwgc2V0VGV4dFN0cm9rZUNvbG9yLCB0ZXh0U3Ryb2tlQ29sb3IsIGNvbG9y
KQorREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZUNvbG9yLCBzZXRUZXh0U3Ryb2tlQ29sb3IpCitERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENT
U1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBzZXRUZXh0U3Ryb2tlQ29sb3IpCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoCitERUZJTkVfSEFORExFX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIHNldFRleHRTdHJva2VXaWR0aCwgdGV4
dFN0cm9rZVdpZHRoKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4
dFN0cm9rZVdpZHRoLCBzZXRUZXh0U3Ryb2tlV2lkdGgsIGluaXRpYWxUZXh0U3Ryb2tlV2lkdGgp
CitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgpCit7CisgICAg
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIGZsb2F0IHdpZHRoID0gMDsKKyAgICAgICAgc3dpdGNoIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVlVGhpbjoKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZU1lZGl1bToKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaWNrOiB7CisgICAg
ICAgICAgICBkb3VibGUgcmVzdWx0ID0gMS4wIC8gNDg7CisgICAgICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNZWRpdW0pCisgICAgICAgICAgICAgICAg
cmVzdWx0ICo9IDM7CisgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSA9PSBDU1NWYWx1ZVRoaWNrKQorICAgICAgICAgICAgICAgIHJlc3VsdCAqPSA1OworICAg
ICAgICAgICAgd2lkdGggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlc3VsdCwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FTVMpLT5jb21wdXRlTGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fc3R5
bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxl
LT5lZmZlY3RpdmVab29tKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVM
ZW5ndGhGbG9hdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1l
bnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dFN0
cm9rZVdpZHRoKHdpZHRoKTsKKyAgICB9Cit9CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtCitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIHNl
dFRyYW5zZm9ybSwgdHJhbnNmb3JtKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtLCBzZXRUcmFuc2Zvcm0sIGluaXRpYWxUcmFuc2Zvcm0pCitERUZJTkVf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pCit7CisgICAgVHJhbnNmb3JtT3BlcmF0
aW9ucyBvcGVyYXRpb25zOworICAgIGNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnModmFsdWUsIGlu
c3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBvcGVy
YXRpb25zKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VHJhbnNmb3JtKG9wZXJhdGlvbnMp
OworfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbgorREVGSU5FX0VYUEFO
RElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWSwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKQorREVGSU5FX0VYUEFO
RElOR19JTklUSUFMX1RIUkVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWSwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKQorREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4pCisKKy8vIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtT3JpZ2luWAorREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwgc2V0VHJhbnNmb3JtT3JpZ2luWCwgdHJhbnNmb3JtT3Jp
Z2luWCkKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9y
aWdpblgsIHNldFRyYW5zZm9ybU9yaWdpblgsIGluaXRpYWxUcmFuc2Zvcm1PcmlnaW5YKQorREVG
SU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIHNldFRy
YW5zZm9ybU9yaWdpblgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZCitERUZJTkVfSEFORExFX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBzZXRUcmFuc2Zvcm1PcmlnaW5ZLCB0
cmFuc2Zvcm1PcmlnaW5ZKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luWSwgc2V0VHJhbnNmb3JtT3JpZ2luWSwgaW5pdGlhbFRyYW5zZm9ybU9y
aWdpblkpCitERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWSwgc2V0VHJhbnNmb3JtT3JpZ2luWSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbloKK0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblosIHNldFRyYW5zZm9y
bU9yaWdpblosIHRyYW5zZm9ybU9yaWdpblopCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aLCBzZXRUcmFuc2Zvcm1PcmlnaW5aLCBpbml0aWFs
VHJhbnNmb3JtT3JpZ2luWikKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpblopCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNV
bml0VHlwZUxlbmd0aChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpKSkKKyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUcmFuc2Zvcm1PcmlnaW5aKHN0YXRpY19jYXN0PGZs
b2F0PihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+
bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSkpKTsKKyAgICB9Cit9
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUKK0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlLCBzZXRUcmFuc2Zvcm1TdHlsZTNE
LCB0cmFuc2Zvcm1TdHlsZTNEKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtU3R5bGUsIHNldFRyYW5zZm9ybVN0eWxlM0QsIGluaXRpYWxUcmFuc2Zvcm1T
dHlsZTNEKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUpCit7
CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUcmFuc2Zvcm1TdHlsZTNE
KChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpID8gVHJh
bnNmb3JtU3R5bGUzRFByZXNlcnZlM0QgOiBUcmFuc2Zvcm1TdHlsZTNERmxhdCk7CisgICAgfQor
fQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24KK0RFRklORV9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbikKK3sKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+aW5oZXJp
dFRyYW5zaXRpb25zKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50cmFuc2l0aW9ucygpKTsKK30K
K0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbikKK3sKKyAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+Y2xlYXJUcmFuc2l0aW9ucygpOworfQorREVGSU5FX05VTExfVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
aXRpb25EZWxheQorREVGSU5FX1RSQU5TSVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25EZWxheSwgZGVsYXksIERlbGF5KQorREVGSU5FX1RSQU5TSVRJT05fSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSwgZGVsYXksIERlbGF5KQorREVGSU5FX1RS
QU5TSVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXksIGRlbGF5LCBE
ZWxheSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24KK0RFRklORV9U
UkFOU0lUSU9OX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sIGR1
cmF0aW9uLCBEdXJhdGlvbikKK0RFRklORV9UUkFOU0lUSU9OX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKK0RFRklORV9UUkFO
U0lUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlv
biwgRHVyYXRpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5CitE
RUZJTkVfVFJBTlNJVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3Bl
cnR5LCBwcm9wZXJ0eSwgUHJvcGVydHkpCitERUZJTkVfVFJBTlNJVElPTl9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBwcm9wZXJ0eSwgUHJvcGVydHkpCitERUZJ
TkVfVFJBTlNJVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwg
cHJvcGVydHksIFByb3BlcnR5KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1p
bmdGdW5jdGlvbgorREVGSU5FX1RSQU5TSVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uKQor
REVGSU5FX1RSQU5TSVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1p
bmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uKQorREVGSU5FX1RSQU5T
SVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIHRp
bWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRVc2Vy
RHJhZworREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIHNl
dFVzZXJEcmFnLCB1c2VyRHJhZykKK0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJEcmFnLCBzZXRVc2VyRHJhZywgaW5pdGlhbFVzZXJEcmFnKQorREVGSU5FX0hBTkRM
RV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBzZXRVc2VyRHJhZykKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRVc2VyTW9kaWZ5LCBzZXRVc2VyTW9kaWZ5LCB1c2VyTW9kaWZ5KQorREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgc2V0VXNlck1vZGlmeSwg
aW5pdGlhbFVzZXJNb2RpZnkpCitERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
VXNlck1vZGlmeSwgc2V0VXNlck1vZGlmeSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRVc2VyU2Vs
ZWN0CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBz
ZXRVc2VyU2VsZWN0LCB1c2VyU2VsZWN0KQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0VXNlclNlbGVjdCwgc2V0VXNlclNlbGVjdCwgaW5pdGlhbFVzZXJTZWxlY3QpCitE
RUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgc2V0VXNlclNl
bGVjdCkKKworLy8gQ1NTUHJvcGVydHlDbGlwUGF0aAorREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVy
dHlDbGlwKQoreworICAgIExlbmd0aCB0b3A7CisgICAgTGVuZ3RoIHJpZ2h0OworICAgIExlbmd0
aCBib3R0b207CisgICAgTGVuZ3RoIGxlZnQ7CisgICAgYm9vbCBoYXNDbGlwID0gdHJ1ZTsKKyAg
ICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmhhc0NsaXAoKSkgeworICAgICAgICB0b3Ag
PSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y2xpcFRvcCgpOworICAgICAgICByaWdodCA9IGlu
c3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jbGlwUmlnaHQoKTsKKyAgICAgICAgYm90dG9tID0gaW5z
dGFuY2UtPm1fcGFyZW50U3R5bGUtPmNsaXBCb3R0b20oKTsKKyAgICAgICAgbGVmdCA9IGluc3Rh
bmNlLT5tX3BhcmVudFN0eWxlLT5jbGlwTGVmdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGhh
c0NsaXAgPSBmYWxzZTsKKyAgICAgICAgdG9wID0gcmlnaHQgPSBib3R0b20gPSBsZWZ0ID0gTGVu
Z3RoKCk7CisgICAgfQorICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDbGlwKHRvcCwgcmlnaHQs
IGJvdHRvbSwgbGVmdCk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0NsaXAoaGFzQ2xp
cCk7Cit9CisKK0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Q2xpcCkKK3sKKyAgICBMZW5ndGgg
bGVuZ3RoID0gTGVuZ3RoKCk7CisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENsaXAobGVuZ3Ro
LCBsZW5ndGgsIGxlbmd0aCwgbGVuZ3RoKTsKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFz
Q2xpcChmYWxzZSk7Cit9CisKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUNsaXApCit7CisgICAg
TGVuZ3RoIHRvcDsKKyAgICBMZW5ndGggcmlnaHQ7CisgICAgTGVuZ3RoIGJvdHRvbTsKKyAgICBM
ZW5ndGggbGVmdDsKKyAgICBib29sIGhhc0NsaXAgPSB0cnVlOworICAgIGZsb2F0IHpvb21GYWN0
b3IgPSBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1JFQ1QpIHsKKyAgICAgICAgICAgIFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS0+
Z2V0UmVjdFZhbHVlKCk7CisgICAgICAgICAgICBpZiAoIXJlY3QpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgdG9wID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVu
Z3RoKHJlY3QtPnRvcCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9v
dEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICByaWdodCA9IENTU1N0eWxl
U2VsZWN0b3I6OmNvbnZlcnRUb0xlbmd0aChyZWN0LT5yaWdodCgpLCBpbnN0YW5jZS0+bV9zdHls
ZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAg
ICAgICAgICBib3R0b20gPSBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9MZW5ndGgocmVjdC0+
Ym90dG9tKCksIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVu
dFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIGxlZnQgPSBDU1NTdHlsZVNlbGVjdG9y
Ojpjb252ZXJ0VG9MZW5ndGgocmVjdC0+bGVmdCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwg
aW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgIH0gZWxz
ZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKSB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dENsaXAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldEhhc0NsaXAoaGFzQ2xpcCk7CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0eUNsaXBS
dWxlCisvLyBDU1NQcm9wZXJ0eU1hc2sKKy8vIENTU1Byb3BlcnR5RW5hYmxlQmFja2dyb3VuZAor
Ly8gQ1NTUHJvcGVydHlGaWx0ZXIKKy8vIENTU1Byb3BlcnR5Rmxvb2RDb2xvcgorLy8gQ1NTUHJv
cGVydHlGbG9vZE9wYWNpdHkKKy8vIENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcgorLy8gQ1NTUHJv
cGVydHlTdG9wQ29sb3IKKy8vIENTU1Byb3BlcnR5U3RvcE9wYWNpdHkKKy8vIENTU1Byb3BlcnR5
Q29sb3JJbnRlcnBvbGF0aW9uCisvLyBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMKKy8vIENTU1Byb3BlcnR5Q29sb3JQcm9maWxlCisvLyBDU1NQcm9wZXJ0eUNvbG9yUmVuZGVy
aW5nCisvLyBDU1NQcm9wZXJ0eUZpbGwKKy8vIENTU1Byb3BlcnR5RmlsbE9wYWNpdHkKKy8vIENT
U1Byb3BlcnR5RmlsbFJ1bGUKKy8vIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmcKKy8vIENTU1By
b3BlcnR5TWFya2VyCisvLyBDU1NQcm9wZXJ0eU1hcmtlckVuZAorLy8gQ1NTUHJvcGVydHlNYXJr
ZXJNaWQKKy8vIENTU1Byb3BlcnR5TWFya2VyU3RhcnQKKy8vIENTU1Byb3BlcnR5U2hhcGVSZW5k
ZXJpbmcKKy8vIENTU1Byb3BlcnR5U3Ryb2tlCisvLyBDU1NQcm9wZXJ0eVN0cm9rZURhc2hhcnJh
eQorLy8gQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0CisvLyBDU1NQcm9wZXJ0eVN0cm9rZUxp
bmVjYXAKKy8vIENTU1Byb3BlcnR5U3Ryb2tlTGluZWpvaW4KKy8vIENTU1Byb3BlcnR5U3Ryb2tl
TWl0ZXJsaW1pdAorLy8gQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5CisvLyBDU1NQcm9wZXJ0eVN0
cm9rZVdpZHRoCisvLyBDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lCisvLyBDU1NQcm9wZXJ0
eUJhc2VsaW5lU2hpZnQKKy8vIENTU1Byb3BlcnR5RG9taW5hbnRCYXNlbGluZQorLy8gQ1NTUHJv
cGVydHlHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbAorLy8gQ1NTUHJvcGVydHlHbHlwaE9yaWVu
dGF0aW9uVmVydGljYWwKKy8vIENTU1Byb3BlcnR5S2VybmluZworLy8gQ1NTUHJvcGVydHlUZXh0
QW5jaG9yCisvLyBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdAorLy8gQ1NTUHJvcGVydHlXcml0aW5n
TW9kZQorLy8gQ1NTUHJvcGVydHlXZWJraXRTdmdTaGFkb3cKKworLy8gQ1NTUHJvcGVydHlXZWJr
aXREYXNoYm9hcmRSZWdpb24KKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCitERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24sIHNldERhc2hi
b2FyZFJlZ2lvbnMsIGRhc2hib2FyZFJlZ2lvbnMpCitERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24sIHNldERhc2hib2FyZFJlZ2lvbnMsIGluaXRp
YWxEYXNoYm9hcmRSZWdpb25zKQorREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0RGFzaGJv
YXJkUmVnaW9uKQoreworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0RGFzaGJvYXJkUmVnaW9ucyhSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBEYXNoYm9hcmRSZWdp
b24qIHJlZ2lvbiA9IHByaW1pdGl2ZVZhbHVlLT5nZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOwor
ICAgICAgICBpZiAoIXJlZ2lvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBEYXNo
Ym9hcmRSZWdpb24qIGZpcnN0ID0gcmVnaW9uOworICAgICAgICB3aGlsZSAocmVnaW9uKSB7Cisg
ICAgICAgICAgICBMZW5ndGggdG9wID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+dG9wKCksIGlu
c3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlKTsKKyAg
ICAgICAgICAgIExlbmd0aCByaWdodCA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPnJpZ2h0KCks
IGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlKTsK
KyAgICAgICAgICAgIExlbmd0aCBib3R0b20gPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5ib3R0
b20oKSwgaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5
bGUpOworICAgICAgICAgICAgTGVuZ3RoIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5s
ZWZ0KCksIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0
eWxlKTsKKyAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCisgICAgICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbihTdHlsZURhc2hib2FyZFJl
Z2lvbjo6Q2lyY2xlLCByZWdpb24tPm1fbGFiZWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwg
cmVnaW9uID09IGZpcnN0ID8gZmFsc2UgOiB0cnVlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJl
Z2lvbi0+bV9pc1JlY3RhbmdsZSkKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5nbGUsIHJlZ2lv
bi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBm
YWxzZSA6IHRydWUpOworICAgICAgICAgICAgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCk7
CisgICAgICAgIH0KKyAgICAgICAgaW5zdGFuY2UtPm1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0
SGFzRGFzaGJvYXJkUmVnaW9ucyh0cnVlKTsKKyAgICB9Cit9CisjZW5kaWYKKworI2lmIEVOQUJM
RShXQ1NTKQorLy8gQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcAorREVGSU5FX0VRVUlWQUxFTlRf
UFJPUEVSVFkoQ1NTUHJvcGVydHlXYXBNYXJxdWVlTG9vcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlUmVwZXRpdGlvbikKKworLy8gQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3BlZWQKK0RFRklORV9F
UVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTcGVlZCkKKworLy8gQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3R5bGUKK0RF
RklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGly
CitERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyLCBzZXRNYXJx
dWVlRGlyZWN0aW9uLCBtYXJxdWVlRGlyZWN0aW9uKQorREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5V2FwTWFycXVlZURpciwgc2V0TWFycXVlZURpcmVjdGlvbiwgaW5pdGlhbE1hcnF1
ZWVEaXJlY3Rpb24pCitERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyKQorewor
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVMdHI6CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dE1hcnF1ZWVEaXJlY3Rpb24oTVJJR0hUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVSdGw6CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24oTUxFRlQpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0TWFycXVlZURpcmVjdGlvbigqcHJpbWl0aXZlVmFsdWUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisvLyBDU1NQcm9wZXJ0
eVdhcElucHV0Rm9ybWF0CitERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2FwSW5wdXRG
b3JtYXQpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQpCitE
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdCkKK3sKKyAgICBpZiAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgaWYgKGluc3RhbmNlLT5tX2VsZW1lbnQtPmhhc1RhZ05hbWUoV2ViQ29yZTo6aW5wdXRUYWcp
KSB7CisgICAgICAgICAgICBTdHJpbmcgbWFzayA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdW
YWx1ZSgpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGluc3Rh
bmNlLT5tX2VsZW1lbnQpLT5zZXRXYXBJbnB1dEZvcm1hdChtYXNrKTsKKyAgICAgICAgfQorICAg
IH0KK30KKy8vIENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZAorREVGSU5FX05VTExfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQpCitERUZJTkVfTlVMTF9JTklUSUFMKENTU1By
b3BlcnR5V2FwSW5wdXRSZXF1aXJlZCkKK0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdhcElucHV0
UmVxdWlyZWQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGlmIChpbnN0YW5jZS0+bV9lbGVtZW50LT5p
c0Zvcm1Db250cm9sRWxlbWVudCgpKSB7CisgICAgICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KGluc3Rh
bmNlLT5tX2VsZW1lbnQpOworICAgICAgICAgICAgYm9vbCByZXF1aXJlZCA9IHByaW1pdGl2ZVZh
bHVlLT5nZXRTdHJpbmdWYWx1ZSgpID09ICJ0cnVlIjsKKyAgICAgICAgICAgIGVsZW1lbnQtPnNl
dFJlcXVpcmVkKHJlcXVpcmVkKTsKKyAgICAgICAgfQorICAgIH0KK30KKyNlbmRpZgorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA3NzUz
NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI1LDIzMyArMTI1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi0jZGVmaW5lIEhBTkRMRV9JTkhFUklUKHByb3AsIFByb3Ap
IFwKLWlmIChpc0luaGVyaXQpIHsgXAotICAgIG1fc3R5bGUtPnNldCMjUHJvcChtX3BhcmVudFN0
eWxlLT5wcm9wKCkpOyBcCi0gICAgcmV0dXJuOyBcCi19Ci0KLSNkZWZpbmUgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotSEFORExFX0lOSEVSSVQocHJvcCwgUHJvcCkg
XAotaWYgKGlzSW5pdGlhbCkgeyBcCi0gICAgbV9zdHlsZS0+c2V0IyNQcm9wKFJlbmRlclN0eWxl
Ojppbml0aWFsIyNQcm9wKCkpOyBcCi0gICAgcmV0dXJuOyBcCi19Ci0KLSNkZWZpbmUgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfV0lUSF9WQUxVRShwcm9wLCBQcm9wLCBWYWx1ZSkgXAotSEFO
RExFX0lOSEVSSVQocHJvcCwgUHJvcCkgXAotaWYgKGlzSW5pdGlhbCkgeyBcCi0gICAgbV9zdHls
ZS0+c2V0IyNQcm9wKFJlbmRlclN0eWxlOjppbml0aWFsIyNWYWx1ZSgpKTtcCi0gICAgcmV0dXJu
O1wKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZF
KHByb3AsIFByb3ApIFwKLUhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHByb3AsIFByb3ApIFwK
LWlmIChwcmltaXRpdmVWYWx1ZSkgXAotICAgIG1fc3R5bGUtPnNldCMjUHJvcCgqcHJpbWl0aXZl
VmFsdWUpOwotCi0jZGVmaW5lIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJ
VkVfV0lUSF9WQUxVRShwcm9wLCBQcm9wLCBWYWx1ZSkgXAotSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUxfV0lUSF9WQUxVRShwcm9wLCBQcm9wLCBWYWx1ZSkgXAotaWYgKHByaW1pdGl2ZVZhbHVl
KSBcCi0gICAgbV9zdHlsZS0+c2V0IyNQcm9wKCpwcmltaXRpdmVWYWx1ZSk7Ci0KLSNkZWZpbmUg
SEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVF9BTkRfSU5JVElBTChsYXllclR5cGUsIExheWVyVHlw
ZSwgcHJvcCwgUHJvcCkgXAotaWYgKGlzSW5oZXJpdCkgeyBcCi0gICAgRmlsbExheWVyKiBjdXJy
Q2hpbGQgPSBtX3N0eWxlLT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7IFwKLSAgICBGaWxs
TGF5ZXIqIHByZXZDaGlsZCA9IDA7IFwKLSAgICBjb25zdCBGaWxsTGF5ZXIqIGN1cnJQYXJlbnQg
PSBtX3BhcmVudFN0eWxlLT5sYXllclR5cGUjI0xheWVycygpOyBcCi0gICAgd2hpbGUgKGN1cnJQ
YXJlbnQgJiYgY3VyclBhcmVudC0+aXMjI1Byb3AjI1NldCgpKSB7IFwKLSAgICAgICAgaWYgKCFj
dXJyQ2hpbGQpIHsgXAotICAgICAgICAgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGxheWVyLiov
IFwKLSAgICAgICAgICAgIGN1cnJDaGlsZCA9IG5ldyBGaWxsTGF5ZXIoTGF5ZXJUeXBlIyNGaWxs
TGF5ZXIpOyBcCi0gICAgICAgICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3VyckNoaWxkKTsgXAot
ICAgICAgICB9IFwKLSAgICAgICAgY3VyckNoaWxkLT5zZXQjI1Byb3AoY3VyclBhcmVudC0+cHJv
cCgpKTsgXAotICAgICAgICBwcmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7IFwKLSAgICAgICAgY3VyckNo
aWxkID0gcHJldkNoaWxkLT5uZXh0KCk7IFwKLSAgICAgICAgY3VyclBhcmVudCA9IGN1cnJQYXJl
bnQtPm5leHQoKTsgXAotICAgIH0gXAotICAgIFwKLSAgICB3aGlsZSAoY3VyckNoaWxkKSB7IFwK
LSAgICAgICAgLyogUmVzZXQgYW55IHJlbWFpbmluZyBsYXllcnMgdG8gbm90IGhhdmUgdGhlIHBy
b3BlcnR5IHNldC4gKi8gXAotICAgICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQcm9wKCk7IFwKLSAg
ICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKLSAgICB9IFwKLX0gZWxzZSBp
ZiAoaXNJbml0aWFsKSB7IFwKLSAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IG1fc3R5bGUtPmFj
Y2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAotICAgIGN1cnJDaGlsZC0+c2V0IyNQcm9wKEZp
bGxMYXllcjo6aW5pdGlhbEZpbGwjI1Byb3AoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpKTsgXAotICAg
IGZvciAoY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IGN1cnJDaGlsZDsgY3VyckNoaWxk
ID0gY3VyckNoaWxkLT5uZXh0KCkpIFwKLSAgICAgICAgY3VyckNoaWxkLT5jbGVhciMjUHJvcCgp
OyBcCi19Ci0KLSNkZWZpbmUgSEFORExFX0ZJTExfTEFZRVJfVkFMVUUobGF5ZXJUeXBlLCBMYXll
clR5cGUsIHByb3AsIFByb3AsIHZhbHVlKSB7IFwKLUhBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVRf
QU5EX0lOSVRJQUwobGF5ZXJUeXBlLCBMYXllclR5cGUsIHByb3AsIFByb3ApIFwKLWlmIChpc0lu
aGVyaXQgfHwgaXNJbml0aWFsKSBcCi0gICAgcmV0dXJuOyBcCi1GaWxsTGF5ZXIqIGN1cnJDaGls
ZCA9IG1fc3R5bGUtPmFjY2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAotRmlsbExheWVyKiBw
cmV2Q2hpbGQgPSAwOyBcCi1pZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsgXAotICAgIC8qIFdh
bGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSBsYXllciwgY3JlYXRpbmcgbmV3IGxheWVy
cyBhcyBuZWVkZWQuICovIFwKLSAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRpY19j
YXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsgXAotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7IFwKLSAgICAgICAgaWYgKCFjdXJyQ2hp
bGQpIHsgXAotICAgICAgICAgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGxheWVyIHRvIGhvbGQg
dGhpcyB2YWx1ZSAqLyBcCi0gICAgICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKExh
eWVyVHlwZSMjRmlsbExheWVyKTsgXAotICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1
cnJDaGlsZCk7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIG1hcEZpbGwjI1Byb3AocHJvcGVydHks
IGN1cnJDaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsgXAotICAg
ICAgICBwcmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7IFwKLSAgICAgICAgY3VyckNoaWxkID0gY3VyckNo
aWxkLT5uZXh0KCk7IFwKLSAgICB9IFwKLX0gZWxzZSB7IFwKLSAgICBtYXBGaWxsIyNQcm9wKHBy
b3BlcnR5LCBjdXJyQ2hpbGQsIHZhbHVlKTsgXAotICAgIGN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+
bmV4dCgpOyBcCi19IFwKLXdoaWxlIChjdXJyQ2hpbGQpIHsgXAotICAgIC8qIFJlc2V0IGFsbCBy
ZW1haW5pbmcgbGF5ZXJzIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBj
dXJyQ2hpbGQtPmNsZWFyIyNQcm9wKCk7IFwKLSAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5l
eHQoKTsgXAotfSB9Ci0KLSNkZWZpbmUgSEFORExFX0JBQ0tHUk9VTkRfSU5IRVJJVF9BTkRfSU5J
VElBTChwcm9wLCBQcm9wKSBcCi1IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUX0FORF9JTklUSUFM
KGJhY2tncm91bmQsIEJhY2tncm91bmQsIHByb3AsIFByb3ApCi0KLSNkZWZpbmUgSEFORExFX0JB
Q0tHUk9VTkRfVkFMVUUocHJvcCwgUHJvcCwgdmFsdWUpIFwKLUhBTkRMRV9GSUxMX0xBWUVSX1ZB
TFVFKGJhY2tncm91bmQsIEJhY2tncm91bmQsIHByb3AsIFByb3AsIHZhbHVlKQotCi0jZGVmaW5l
IEhBTkRMRV9NQVNLX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotSEFORExFX0ZJ
TExfTEFZRVJfSU5IRVJJVF9BTkRfSU5JVElBTChtYXNrLCBNYXNrLCBwcm9wLCBQcm9wKQotCi0j
ZGVmaW5lIEhBTkRMRV9NQVNLX1ZBTFVFKHByb3AsIFByb3AsIHZhbHVlKSBcCi1IQU5ETEVfRklM
TF9MQVlFUl9WQUxVRShtYXNrLCBNYXNrLCBwcm9wLCBQcm9wLCB2YWx1ZSkKLQotI2RlZmluZSBI
QU5ETEVfQU5JTUFUSU9OX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotaWYgKGlz
SW5oZXJpdCkgeyBcCi0gICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5bGUtPmFjY2Vzc0Fu
aW1hdGlvbnMoKTsgXAotICAgIGNvbnN0IEFuaW1hdGlvbkxpc3QqIHBhcmVudExpc3QgPSBtX3Bh
cmVudFN0eWxlLT5hbmltYXRpb25zKCk7IFwKLSAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUg
PSBwYXJlbnRMaXN0ID8gcGFyZW50TGlzdC0+c2l6ZSgpIDogMDsgXAotICAgIGZvciAoIDsgaSA8
IHBhcmVudFNpemUgJiYgcGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5pcyMjUHJvcCMjU2V0KCk7
ICsraSkgeyBcCi0gICAgICAgIGlmIChsaXN0LT5zaXplKCkgPD0gaSkgXAotICAgICAgICAgICAg
bGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCi0gICAgICAgIGxpc3QtPmFuaW1h
dGlvbihpKS0+c2V0IyNQcm9wKHBhcmVudExpc3QtPmFuaW1hdGlvbihpKS0+cHJvcCgpKTsgXAot
ICAgIH0gXAotICAgIFwKLSAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGFuaW1hdGlvbnMgdG8g
bm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAotICAgIGZvciAoIDsgaSA8IGxpc3QtPnNp
emUoKTsgKytpKSBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+Y2xlYXIjI1Byb3AoKTsg
XAotfSBlbHNlIGlmIChpc0luaXRpYWwpIHsgXAotICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBt
X3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKLSAgICBpZiAobGlzdC0+aXNFbXB0eSgpKSBc
Ci0gICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAotICAgIGxpc3Qt
PmFuaW1hdGlvbigwKS0+c2V0IyNQcm9wKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbiMjUHJv
cCgpKTsgXAotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwK
LSAgICAgICAgbGlzdC0+YW5pbWF0aW9uKDApLT5jbGVhciMjUHJvcCgpOyBcCi19Ci0KLSNkZWZp
bmUgSEFORExFX0FOSU1BVElPTl9WQUxVRShwcm9wLCBQcm9wLCB2YWx1ZSkgeyBcCi1IQU5ETEVf
QU5JTUFUSU9OX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotaWYgKGlzSW5oZXJp
dCB8fCBpc0luaXRpYWwpIFwKLSAgICByZXR1cm47IFwKLUFuaW1hdGlvbkxpc3QqIGxpc3QgPSBt
X3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKLXNpemVfdCBjaGlsZEluZGV4ID0gMDsgXAot
aWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7IFwKLSAgICAvKiBXYWxrIGVhY2ggdmFsdWUgYW5k
IHB1dCBpdCBpbnRvIGFuIGFuaW1hdGlvbiwgY3JlYXRpbmcgbmV3IGFuaW1hdGlvbnMgYXMgbmVl
ZGVkLiAqLyBcCi0gICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NW
YWx1ZUxpc3QqPih2YWx1ZSk7IFwKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZh
bHVlTGlzdC0+bGVuZ3RoKCk7IGkrKykgeyBcCi0gICAgICAgIGlmIChjaGlsZEluZGV4IDw9IGxp
c3QtPnNpemUoKSkgXAotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRl
KCkpOyBcCi0gICAgICAgIG1hcEFuaW1hdGlvbiMjUHJvcChsaXN0LT5hbmltYXRpb24oY2hpbGRJ
bmRleCksIHZhbHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKLSAgICAgICAg
KytjaGlsZEluZGV4OyBcCi0gICAgfSBcCi19IGVsc2UgeyBcCi0gICAgaWYgKGxpc3QtPmlzRW1w
dHkoKSkgXAotICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAg
ICBtYXBBbmltYXRpb24jI1Byb3AobGlzdC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7
IFwKLSAgICBjaGlsZEluZGV4ID0gMTsgXAotfSBcCi1mb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0
LT5zaXplKCk7ICsrY2hpbGRJbmRleCkgeyBcCi0gICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBh
bmltYXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSBzZXQuICovIFwKLSAgICBsaXN0LT5h
bmltYXRpb24oY2hpbGRJbmRleCktPmNsZWFyIyNQcm9wKCk7IFwKLX0gXAotfQotCi0jZGVmaW5l
IEhBTkRMRV9UUkFOU0lUSU9OX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotaWYg
KGlzSW5oZXJpdCkgeyBcCi0gICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IG1fc3R5bGUtPmFjY2Vz
c1RyYW5zaXRpb25zKCk7IFwKLSAgICBjb25zdCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0g
bV9wYXJlbnRTdHlsZS0+dHJhbnNpdGlvbnMoKTsgXAotICAgIHNpemVfdCBpID0gMCwgcGFyZW50
U2l6ZSA9IHBhcmVudExpc3QgPyBwYXJlbnRMaXN0LT5zaXplKCkgOiAwOyBcCi0gICAgZm9yICgg
OyBpIDwgcGFyZW50U2l6ZSAmJiBwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPmlzIyNQcm9wIyNT
ZXQoKTsgKytpKSB7IFwKLSAgICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBpKSBcCi0gICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAgICAgICAgbGlzdC0+
YW5pbWF0aW9uKGkpLT5zZXQjI1Byb3AocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5wcm9wKCkp
OyBcCi0gICAgfSBcCi0gICAgXAotICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgdHJhbnNpdGlv
bnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAotICAgIGZvciAoIDsgaSA8IGxp
c3QtPnNpemUoKTsgKytpKSBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+Y2xlYXIjI1By
b3AoKTsgXAotfSBlbHNlIGlmIChpc0luaXRpYWwpIHsgXAotICAgIEFuaW1hdGlvbkxpc3QqIGxp
c3QgPSBtX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCi0gICAgaWYgKGxpc3QtPmlzRW1w
dHkoKSkgXAotICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKLSAg
ICBsaXN0LT5hbmltYXRpb24oMCktPnNldCMjUHJvcChBbmltYXRpb246OmluaXRpYWxBbmltYXRp
b24jI1Byb3AoKSk7IFwKLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUoKTsg
KytpKSBcCi0gICAgICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+Y2xlYXIjI1Byb3AoKTsgXAotfQot
Ci0jZGVmaW5lIEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKHByb3AsIFByb3AsIHZhbHVlKSB7IFwK
LUhBTkRMRV9UUkFOU0lUSU9OX0lOSEVSSVRfQU5EX0lOSVRJQUwocHJvcCwgUHJvcCkgXAotaWYg
KGlzSW5oZXJpdCB8fCBpc0luaXRpYWwpIFwKLSAgICByZXR1cm47IFwKLUFuaW1hdGlvbkxpc3Qq
IGxpc3QgPSBtX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCi1zaXplX3QgY2hpbGRJbmRl
eCA9IDA7IFwKLWlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCi0gICAgLyogV2FsayBlYWNo
IHZhbHVlIGFuZCBwdXQgaXQgaW50byBhIHRyYW5zaXRpb24sIGNyZWF0aW5nIG5ldyBhbmltYXRp
b25zIGFzIG5lZWRlZC4gKi8gXAotICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGlj
X2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOyBcCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsgXAotICAgICAgICBpZiAoY2hpbGRJ
bmRleCA8PSBsaXN0LT5zaXplKCkpIFwKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRp
b246OmNyZWF0ZSgpKTsgXAotICAgICAgICBtYXBBbmltYXRpb24jI1Byb3AobGlzdC0+YW5pbWF0
aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOyBc
Ci0gICAgICAgICsrY2hpbGRJbmRleDsgXAotICAgIH0gXAotfSBlbHNlIHsgXAotICAgIGlmIChs
aXN0LT5pc0VtcHR5KCkpIFwKLSAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRl
KCkpOyBcCi0gICAgbWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4
KSwgdmFsdWUpOyBcCi0gICAgY2hpbGRJbmRleCA9IDE7IFwKLX0gXAotZm9yICggOyBjaGlsZElu
ZGV4IDwgbGlzdC0+c2l6ZSgpOyArK2NoaWxkSW5kZXgpIHsgXAotICAgIC8qIFJlc2V0IGFsbCBy
ZW1haW5pbmcgdHJhbnNpdGlvbnMgdG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAot
ICAgIGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4KS0+Y2xlYXIjI1Byb3AoKTsgXAotfSBcCi19
Ci0KLSNkZWZpbmUgSEFORExFX0lOSEVSSVRfQ09ORChwcm9wSUQsIHByb3AsIFByb3ApIFwKLWlm
IChpZCA9PSBwcm9wSUQpIHsgXAotICAgIG1fc3R5bGUtPnNldCMjUHJvcChtX3BhcmVudFN0eWxl
LT5wcm9wKCkpOyBcCi0gICAgcmV0dXJuOyBcCi19Ci0gICAgCi0jZGVmaW5lIEhBTkRMRV9JTkhF
UklUX0NPTkRfV0lUSF9CQUNLVVAocHJvcElELCBwcm9wLCBwcm9wQWx0LCBQcm9wKSBcCi1pZiAo
aWQgPT0gcHJvcElEKSB7IFwKLSAgICBpZiAobV9wYXJlbnRTdHlsZS0+cHJvcCgpLmlzVmFsaWQo
KSkgXAotICAgICAgICBtX3N0eWxlLT5zZXQjI1Byb3AobV9wYXJlbnRTdHlsZS0+cHJvcCgpKTsg
XAotICAgIGVsc2UgXAotICAgICAgICBtX3N0eWxlLT5zZXQjI1Byb3AobV9wYXJlbnRTdHlsZS0+
cHJvcEFsdCgpKTsgXAotICAgIHJldHVybjsgXAotfQotCi0jZGVmaW5lIEhBTkRMRV9JTklUSUFM
X0NPTkQocHJvcElELCBQcm9wKSBcCi1pZiAoaWQgPT0gcHJvcElEKSB7IFwKLSAgICBtX3N0eWxl
LT5zZXQjI1Byb3AoUmVuZGVyU3R5bGU6OmluaXRpYWwjI1Byb3AoKSk7IFwKLSAgICByZXR1cm47
IFwKLX0KLQotI2RlZmluZSBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUocHJvcElELCBQ
cm9wLCBWYWx1ZSkgXAotaWYgKGlkID09IHByb3BJRCkgeyBcCi0gICAgbV9zdHlsZS0+c2V0IyNQ
cm9wKFJlbmRlclN0eWxlOjppbml0aWFsIyNWYWx1ZSgpKTsgXAotICAgIHJldHVybjsgXAotfQot
CiBjbGFzcyBSdWxlRGF0YSB7CiBwdWJsaWM6CiAgICAgUnVsZURhdGEoQ1NTU3R5bGVSdWxlKiBy
dWxlLCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHVuc2lnbmVkIHBvc2l0aW9uKQpAQCAtMzc1LDcg
KzE0OCw3IEBAIGNsYXNzIFJ1bGVTZXQgewogcHVibGljOgogICAgIFJ1bGVTZXQoKTsKICAgICB+
UnVsZVNldCgpOwotICAgIAorCiAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCBWZWN0b3I8UnVsZURhdGE+Kj4gQXRvbVJ1bGVNYXA7CiAgICAgCiAgICAgdm9pZCBhZGRSdWxl
c0Zyb21TaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYsIENT
U1N0eWxlU2VsZWN0b3IqID0gMCk7CkBAIC0zODUsMTEgKzE1OCwxMiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRQYWdlUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUsIENTU1NlbGVjdG9yKiBzZWwpOwog
ICAgIHZvaWQgYWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgQXRvbVJ1bGVNYXAm
IG1hcCwKICAgICAgICAgICAgICAgICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUsIENTU1NlbGVj
dG9yKiBzZWwpOworCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwogICAgIHZvaWQgZGlzYWJsZUF1
dG9TaHJpbmtUb0ZpdCgpIHsgbV9hdXRvU2hyaW5rVG9GaXRFbmFibGVkID0gZmFsc2U7IH0KICAg
ICAKICAgICB2b2lkIGNvbGxlY3RJZHNBbmRTaWJsaW5nUnVsZXMoSGFzaFNldDxBdG9taWNTdHJp
bmdJbXBsKj4mIGlkcywgT3duUHRyPFJ1bGVTZXQ+JiBzaWJsaW5nUnVsZXMpIGNvbnN0OwotICAg
IAorCiAgICAgY29uc3QgVmVjdG9yPFJ1bGVEYXRhPiogZ2V0SURSdWxlcyhBdG9taWNTdHJpbmdJ
bXBsKiBrZXkpIGNvbnN0IHsgcmV0dXJuIG1faWRSdWxlcy5nZXQoa2V5KTsgfQogICAgIGNvbnN0
IFZlY3RvcjxSdWxlRGF0YT4qIGdldENsYXNzUnVsZXMoQXRvbWljU3RyaW5nSW1wbCoga2V5KSBj
b25zdCB7IHJldHVybiBtX2NsYXNzUnVsZXMuZ2V0KGtleSk7IH0KICAgICBjb25zdCBWZWN0b3I8
UnVsZURhdGE+KiBnZXRUYWdSdWxlcyhBdG9taWNTdHJpbmdJbXBsKiBrZXkpIGNvbnN0IHsgcmV0
dXJuIG1fdGFnUnVsZXMuZ2V0KGtleSk7IH0KQEAgLTQxMyw3ICsxODcsNiBAQCBzdGF0aWMgUnVs
ZVNldCogZGVmYXVsdFF1aXJrc1N0eWxlOwogc3RhdGljIFJ1bGVTZXQqIGRlZmF1bHRQcmludFN0
eWxlOwogc3RhdGljIFJ1bGVTZXQqIGRlZmF1bHRWaWV3U291cmNlU3R5bGU7CiBzdGF0aWMgQ1NT
U3R5bGVTaGVldCogc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQ7Ci0gICAgCiBzdGF0aWMgUnVsZVNl
dCogc2libGluZ1J1bGVzSW5EZWZhdWx0U3R5bGU7CiAKIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNl
bGVjdG9yOjpzX3N0eWxlTm90WWV0QXZhaWxhYmxlOwpAQCAtNDUwLDcgKzIyMyw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhc3NlcnROb1NpYmxpbmdSdWxlc0kKICAgICBBU1NFUlQoIXNpYmxpbmdS
dWxlc0luRGVmYXVsdFN0eWxlKTsKICNlbmRpZgogfQotICAgIAorCiBzdGF0aWMgY29uc3QgTWVk
aWFRdWVyeUV2YWx1YXRvciYgc2NyZWVuRXZhbCgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yLCBzdGF0aWNTY3JlZW5FdmFsLCAoInNjcmVlbiIp
KTsKQEAgLTEwMDcsMTAgKzc4MCwxMCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJl
U3R5bGVXaXRoCiAgICAgICAgICAgICAocy0+ZmFzdEdldEF0dHJpYnV0ZShsYW5nQXR0cikgPT0g
bV9lbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGxhbmdBdHRyKSkgJiYKICAgICAgICAgICAgIChz
LT5mYXN0R2V0QXR0cmlidXRlKHJlYWRvbmx5QXR0cikgPT0gbV9lbGVtZW50LT5mYXN0R2V0QXR0
cmlidXRlKHJlYWRvbmx5QXR0cikpICYmCiAgICAgICAgICAgICAocy0+ZmFzdEdldEF0dHJpYnV0
ZShjZWxscGFkZGluZ0F0dHIpID09IG1fZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShjZWxscGFk
ZGluZ0F0dHIpKSkgewotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChzLT5oYXNJRCgp
ICYmIG1faWRzSW5SdWxlcy5jb250YWlucyhzLT5pZEZvclN0eWxlUmVzb2x1dGlvbigpLmltcGwo
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAKKwogICAgICAgICAg
ICAgYm9vbCBpc0NvbnRyb2wgPSBzLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpOwogICAgICAgICAg
ICAgaWYgKGlzQ29udHJvbCAhPSBtX2VsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA4MSw3ICs4NTQsNyBAQCBib29sIENT
U1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVXaXRoCiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKIH0KLSAgICAKKwogaW5saW5lIE5vZGUqIENTU1N0eWxlU2VsZWN0b3I6OmZpbmRTaWJsaW5n
Rm9yU3R5bGVTaGFyaW5nKE5vZGUqIG5vZGUsIHVuc2lnbmVkJiBjb3VudCkgY29uc3QKIHsKICAg
ICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7CkBAIC0xMTEw
LDcgKzg4Myw3IEBAIEFMV0FZU19JTkxJTkUgUmVuZGVyU3R5bGUqIENTU1N0eWxlU2VsZWMKICAg
ICBOb2RlKiBzaGFyZU5vZGUgPSBmaW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhtX3N0eWxlZEVs
ZW1lbnQtPnByZXZpb3VzU2libGluZygpLCBjb3VudCk7CiAgICAgaWYgKCFzaGFyZU5vZGUpIHsK
ICAgICAgICAgTm9kZSogY291c2luTGlzdCA9IGxvY2F0ZUNvdXNpbkxpc3QobV9zdHlsZWRFbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCkpOwotICAgICAgICBzaGFyZU5vZGUgPSBmaW5kU2libGluZ0Zv
clN0eWxlU2hhcmluZyhjb3VzaW5MaXN0LCBjb3VudCk7IAorICAgICAgICBzaGFyZU5vZGUgPSBm
aW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhjb3VzaW5MaXN0LCBjb3VudCk7CiAgICAgICAgIGlm
ICghc2hhcmVOb2RlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTI3MSw3ICsx
MDQ0LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgICAg
ICBDU1NTdHlsZVNoZWV0KiBzdmdTaGVldCA9IHBhcnNlVUFTaGVldChzdmdVc2VyQWdlbnRTdHls
ZVNoZWV0LCBzaXplb2Yoc3ZnVXNlckFnZW50U3R5bGVTaGVldCkpOwogICAgICAgICBkZWZhdWx0
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN2Z1NoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgICAg
ICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsIHByaW50RXZh
bCgpKTsKLSAgICAgICAgYXNzZXJ0Tm9TaWJsaW5nUnVsZXNJbkRlZmF1bHRTdHlsZSgpOworICAg
ICAgICBhc3NlcnROb1NpYmxpbmdSdWxlc0luRGVmYXVsdFN0eWxlKCk7IAogICAgIH0KICNlbmRp
ZgogCkBAIC0xMjgzLDcgKzEwNTYsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHls
ZVNlbGVjdG9yCiAgICAgICAgIENTU1N0eWxlU2hlZXQqIG1hdGhNTFNoZWV0ID0gcGFyc2VVQVNo
ZWV0KG1hdGhtbFVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtYXRobWxVc2VyQWdlbnRTdHls
ZVNoZWV0KSk7CiAgICAgICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobWF0aE1M
U2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxl
c0Zyb21TaGVldChtYXRoTUxTaGVldCwgcHJpbnRFdmFsKCkpOwotICAgICAgICAvLyBUaGVyZSBh
cmUgc29tZSBzaWJsaW5nIHJ1bGVzIGhlcmUuCisgICAgICAgIC8vIFRoZXJlIGFyZSBzb21lIHNp
YmxpbmcgcnVsZXMgaGVyZS4gCiAgICAgICAgIGNvbGxlY3RTaWJsaW5nUnVsZXNJbkRlZmF1bHRT
dHlsZSgpOwogICAgIH0KICNlbmRpZgpAQCAtMTM1Niw3ICsxMTI5LDcgQEAgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3RvcgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIAorCiAgICAgICAgIC8vIDYuIENoZWNrIHRoZSBydWxlcyBp
biBhdXRob3Igc2hlZXRzIG5leHQuCiAgICAgICAgIGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0
eWxlcykKICAgICAgICAgICAgIG1hdGNoUnVsZXMobV9hdXRob3JTdHlsZS5nZXQoKSwgZmlyc3RB
dXRob3JSdWxlLCBsYXN0QXV0aG9yUnVsZSwgZmFsc2UpOwpAQCAtMjk4Niw3ICsyNzU5LDcgQEAg
c3RhdGljIHZvaWQgY29sbGVjdElkc0FuZFNpYmxpbmdSdWxlc0ZybwogICAgICAgICB9CiAgICAg
fQogfQotCisgCiB2b2lkIFJ1bGVTZXQ6OmNvbGxlY3RJZHNBbmRTaWJsaW5nUnVsZXMoSGFzaFNl
dDxBdG9taWNTdHJpbmdJbXBsKj4mIGlkcywgT3duUHRyPFJ1bGVTZXQ+JiBzaWJsaW5nUnVsZXMp
IGNvbnN0CiB7CiAgICAgQXRvbVJ1bGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1faWRSdWxl
cy5lbmQoKTsKQEAgLTMwMjQsNyArMjc5Nyw3IEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQo
KQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gdGhpcyBpcyBtb3N0bHkgYm9y
aW5nIHN0dWZmIG9uIGhvdyB0byBhcHBseSBhIGNlcnRhaW4gcnVsZSB0byB0aGUgcmVuZGVyc3R5
bGUuLi4KIAotc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5
bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSwgYm9vbCAqb2sgPSAwKQorTGVuZ3RoIENTU1N0eWxl
U2VsZWN0b3I6OmNvbnZlcnRUb0xlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11
bHRpcGxpZXIsIGJvb2wgKm9rKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdG9sZXJhbnQg
b2YgYSBudWxsIHN0eWxlIHZhbHVlLiBUaGUgb25seSBwbGFjZSBzdHlsZSBpcyB1c2VkIGlzIGlu
CiAgICAgLy8gbGVuZ3RoIG1lYXN1cmVtZW50cywgbGlrZSAnZW1zJyBhbmQgJ3B4Jy4gQW5kIGlu
IHRob3NlIGNhc2VzIHN0eWxlIGlzIG9ubHkgdXNlZApAQCAtMzE1Nyw3ICsyOTMwLDcgQEAgU3Ry
aW5nIENTU1N0eWxlU2VsZWN0b3I6OnBhZ2VOYW1lKGludCAvKgogICAgIHJldHVybiAiIjsKIH0K
IAotc3RhdGljIHZvaWQgYXBwbHlDb3VudGVyTGlzdChSZW5kZXJTdHlsZSogc3R5bGUsIENTU1Zh
bHVlTGlzdCogbGlzdCwgYm9vbCBpc1Jlc2V0KQordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eUNvdW50ZXJMaXN0KFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTVmFsdWVMaXN0KiBsaXN0LCBib29s
IGlzUmVzZXQpCiB7CiAgICAgQ291bnRlckRpcmVjdGl2ZU1hcCYgbWFwID0gc3R5bGUtPmFjY2Vz
c0NvdW50ZXJEaXJlY3RpdmVzKCk7CiAgICAgdHlwZWRlZiBDb3VudGVyRGlyZWN0aXZlTWFwOjpp
dGVyYXRvciBJdGVyYXRvcjsKQEAgLTMyNDIsMjUgKzMwMTUsNiBAQCBpbmxpbmUgYm9vbCBpc1Zh
bGlkVmlzaXRlZExpbmtQcm9wZXJ0eShpCiAKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKIHsKLSAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSAwOwotICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQotICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOwotCi0gICAgZmxvYXQgem9vbUZhY3RvciA9IG1fc3R5bGUtPmVmZmVjdGl2ZVpv
b20oKTsKLQotICAgIC8vIFNWRyBoYW5kbGVzIHpvb21pbmcgaW4gYSBkaWZmZXJlbnQgd2F5IGNv
bXBhcmVkIHRvIENTUy4gVGhlIHdob2xlIGRvY3VtZW50IGlzIHNjYWxlZCBpbnN0ZWFkCi0gICAg
Ly8gb2YgZWFjaCBpbmRpdmlkdWFsIGxlbmd0aCB2YWx1ZSBpbiB0aGUgcmVuZGVyIHN0eWxlIC8g
dHJlZS4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgqKCkKLSAgICAvLyBtdWx0aXBs
aWVzIGVhY2ggcmVzb2x2ZWQgbGVuZ3RoIHdpdGggdGhlIHpvb20gbXVsdGlwbGllciAtIHNvIGZv
ciBTVkcgd2UgbmVlZCB0byBkaXNhYmxlIHRoYXQuCi0gICAgLy8gVGhvdWdoIGFsbCBDU1MgdmFs
dWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gb3V0ZXJtb3N0IDxzdmc+IGVsZW1lbnRzICh3aWR0
aC9oZWlnaHQvYm9yZGVyL3BhZGRpbmcuLi4pCi0gICAgLy8gbmVlZCB0byByZXNwZWN0IHRoZSBz
Y2FsaW5nLiBSZW5kZXJCb3ggKHRoZSBwYXJlbnQgY2xhc3Mgb2YgUmVuZGVyU1ZHUm9vdCkgZ3Jh
YnMgdmFsdWVzIGxpa2UKLSAgICAvLyB3aWR0aC9oZWlnaHQvYm9yZGVyL3BhZGRpbmcvLi4uIGZy
b20gdGhlIFJlbmRlclN0eWxlIC0+IGZvciBTVkcgdGhlc2UgdmFsdWVzIHdvdWxkIG5ldmVyIHNj
YWxlLAotICAgIC8vIGlmIHdlJ2QgcGFzcyBhIDEuMCB6b29tIGZhY3RvciBldmVyeWh3ZXJlLiBT
byB3ZSBvbmx5IHBhc3MgYSB6b29tIGZhY3RvciBvZiAxLjAgZm9yIHNwZWNpZmljCi0gICAgLy8g
cHJvcGVydGllcyB0aGF0IGFyZSBOT1QgYWxsb3dlZCB0byBzY2FsZSB3aXRoaW4gYSB6b29tZWQg
U1ZHIGRvY3VtZW50IChsZXR0ZXIvd29yZC1zcGFjaW5nL2ZvbnQtc2l6ZSkuCi0gICAgYm9vbCB1
c2VTVkdab29tUnVsZXMgPSBtX2VsZW1lbnQgJiYgbV9lbGVtZW50LT5pc1NWR0VsZW1lbnQoKTsK
LQotICAgIExlbmd0aCBsOwotICAgIGJvb2wgYXBwbHkgPSBmYWxzZTsKLQogICAgIHVuc2lnbmVk
IHNob3J0IHZhbHVlVHlwZSA9IHZhbHVlLT5jc3NWYWx1ZVR5cGUoKTsKIAogICAgIGJvb2wgaXNJ
bmhlcml0ID0gbV9wYXJlbnROb2RlICYmIHZhbHVlVHlwZSA9PSBDU1NWYWx1ZTo6Q1NTX0lOSEVS
SVQ7CkBAIC0zMjcyLDI2MjUgKzMwMjYsNDE3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eShpbnQKICAgICAgICAgLy8gTGltaXQgdGhlIHByb3BlcnRpZXMgdGhhdCBjYW4g
YmUgYXBwbGllZCB0byBvbmx5IHRoZSBvbmVzIGhvbm9yZWQgYnkgOnZpc2l0ZWQuCiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCisKKyNkZWZpbmUgSEFORExFX0NBU0UoUHJvcGVydHkpIFwK
K2Nhc2UgUHJvcGVydHk6IHsgXAorICAgIGlmIChpc0luaGVyaXQpIFwKKyAgICAgICAgaGFuZGxl
SW5oZXJpdCMjUHJvcGVydHkodGhpcyk7IFwKKyAgICBlbHNlIGlmIChpc0luaXRpYWwpIFwKKyAg
ICAgICAgaGFuZGxlSW5pdGlhbCMjUHJvcGVydHkodGhpcyk7IFwKKyAgICBlbHNlIFwKKyAgICAg
ICAgaGFuZGxlVmFsdWUjI1Byb3BlcnR5KHRoaXMsIHZhbHVlKTsgXAorICAgIHJldHVybjsgXAor
fQorCiAgICAgLy8gV2hhdCBmb2xsb3dzIGlzIGEgbGlzdCB0aGF0IG1hcHMgdGhlIENTUyBwcm9w
ZXJ0aWVzIGludG8gdGhlaXIgY29ycmVzcG9uZGluZyBmcm9udC1lbmQKICAgICAvLyBSZW5kZXJT
dHlsZSB2YWx1ZXMuICBTaG9ydGhhbmRzIChlLmcuIGJvcmRlciwgYmFja2dyb3VuZCkgb2NjdXIg
aW4gdGhpcyBsaXN0IGFzIHdlbGwgYW5kCiAgICAgLy8gYXJlIG9ubHkgaGl0IHdoZW4gbWFwcGlu
ZyAiaW5oZXJpdCIgb3IgImluaXRpYWwiIGludG8gZnJvbnQtZW5kIHZhbHVlcy4KICAgICBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5ID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwogICAg
IHN3aXRjaCAocHJvcGVydHkpIHsKLS8vIGlkZW50IG9ubHkgcHJvcGVydGllcwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudDoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9V
TkRfVkFMVUUoYXR0YWNobWVudCwgQXR0YWNobWVudCwgdmFsdWUpCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tncm91bmRDbGlwOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxVRShj
bGlwLCBDbGlwLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlOgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9WQUxV
RShjb21wb3NpdGUsIENvbXBvc2l0ZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
QmFja2dyb3VuZE9yaWdpbjoKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUob3JpZ2lu
LCBPcmlnaW4sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRTaXplOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToK
LSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoc2l6ZSwgU2l6ZSwgdmFsdWUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQ6Ci0g
ICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKGF0dGFjaG1lbnQsIEF0dGFjaG1lbnQsIHZhbHVlKQot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwOgotICAg
ICAgICBIQU5ETEVfTUFTS19WQUxVRShjbGlwLCBDbGlwLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlOgotICAgICAgICBIQU5E
TEVfTUFTS19WQUxVRShjb21wb3NpdGUsIENvbXBvc2l0ZSwgdmFsdWUpCi0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbjoKLSAgICAgICAgSEFORExF
X01BU0tfVkFMVUUob3JpZ2luLCBPcmlnaW4sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplOgotICAgICAgICBIQU5ETEVfTUFTS19WQUxV
RShzaXplLCBTaXplLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJDb2xsYXBzZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm9y
ZGVyQ29sbGFwc2UsIEJvcmRlckNvbGxhcHNlKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ29sbGFwc2U6Ci0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2UodHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2VwYXJhdGU6Ci0gICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQ29sbGFwc2UoZmFsc2UpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BT
dHlsZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9X
SVRIX1ZBTFVFKGJvcmRlclRvcFN0eWxlLCBCb3JkZXJUb3BTdHlsZSwgQm9yZGVyU3R5bGUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZToKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVF
KGJvcmRlclJpZ2h0U3R5bGUsIEJvcmRlclJpZ2h0U3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoYm9y
ZGVyQm90dG9tU3R5bGUsIEJvcmRlckJvdHRvbVN0eWxlLCBCb3JkZXJTdHlsZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGU6Ci0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShib3JkZXJM
ZWZ0U3R5bGUsIEJvcmRlckxlZnRTdHlsZSwgQm9yZGVyU3R5bGUpCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9XSVRIX1ZBTFVFKG91dGxpbmVTdHlsZSwgT3V0bGluZVN0eWxlLCBCb3Jk
ZXJTdHlsZSkKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldE91dGxpbmVTdHlsZShET1RURUQsIHRydWUpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVTdHlsZSgqcHJpbWl0aXZl
VmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5
Q2FwdGlvblNpZGU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklN
SVRJVkUoY2FwdGlvblNpZGUsIENhcHRpb25TaWRlKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eUNsZWFyOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9B
TkRfUFJJTUlUSVZFKGNsZWFyLCBDbGVhcikKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlEaXJlY3Rpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FO
RF9QUklNSVRJVkUoZGlyZWN0aW9uLCBEaXJlY3Rpb24pCi0gICAgICAgIGlmICghaXNJbmhlcml0
ICYmICFpc0luaXRpYWwgJiYgbV9lbGVtZW50ICYmIG1fZWxlbWVudCA9PSBtX2VsZW1lbnQtPmRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQotICAgICAgICAgICAgbV9lbGVtZW50LT5kb2N1
bWVudCgpLT5zZXREaXJlY3Rpb25TZXRPbkRvY3VtZW50RWxlbWVudCh0cnVlKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGRpc3BsYXksIERpc3BsYXkpCi0jaWYgRU5B
QkxFKFdDU1MpCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgewotICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2FwTWFycXVlZSkgewotICAg
ICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgV0FQIE1hcnF1ZWUgc3R5bGUKLSAgICAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRPdmVyZmxvd1goT01BUlFVRUUpOwotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldE92ZXJmbG93WShPTUFSUVVFRSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0V2hpdGVTcGFjZShOT1dSQVApOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1
ZWVEaXJlY3Rpb24oTUxFRlQpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVT
cGVlZCg4NSk7IC8vIE5vcm1hbCBzcGVlZAotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1h
cnF1ZWVMb29wQ291bnQoMSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUJl
aGF2aW9yKE1TQ1JPTEwpOworICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0
dGFjaG1lbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4pCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
QmFja2dyb3VuZFNpemUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3Jv
dW5kU2l6ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0TWFza09yaWdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tTaXplKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2Up
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRTdHlsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUNhcHRpb25TaWRlKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5Q2xlYXIpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlEaXJlY3Rpb24pCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlEaXNwbGF5KQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5RW1wdHlDZWxscykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZsb2F0KQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Rm9udFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5Rm9udFZhcmlhbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250V2VpZ2h0
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24pCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5T3ZlcmZsb3cpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPdmVyZmxvd1gpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPdmVyZmxvd1kpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlQYWdlQnJlYWtCZWZvcmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlQYWdl
QnJlYWtBZnRlcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZSkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBvc2l0aW9uKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5VGFibGVMYXlvdXQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlVbmljb2Rl
QmlkaSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0pCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlWaXNpYmlsaXR5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2hpdGVTcGFjZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUmVwZWF0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRZKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2lu
ZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFj
aW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFj
aW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Q3Vyc29yKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5Q29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eUJvcmRlckxlZnRDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU91dGxpbmVDb2xv
cikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcikKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcikKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRJbWFnZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tJbWFnZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0V2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5TGV0dGVyU3BhY2luZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdvcmRT
cGFjaW5nKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V29yZEJyZWFrKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V29yZFdyYXApCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXROYnNwTW9kZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVh
aykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9j
a3F1b3RlQ29sb3IpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlSZXNpemUpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlNYXhXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eU1pbldpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2lkdGgpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlUb3ApCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlMZWZ0KQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UmlnaHQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlCb3R0b20pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlNYXJnaW5Ub3ApCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eU1hcmdpbkJvdHRvbSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU1hcmdpbkxl
ZnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlQYWRkaW5nVG9wKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
UGFkZGluZ0JvdHRvbSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0KQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dEluZGVudCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eU1heEhlaWdodCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUhlaWdodCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU1pbkhlaWdodCkKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlGb250
U2l6ZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVpJbmRleCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVdpZG93cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eU9ycGhhbnMp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5VGV4dEFsaWduKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Q2xpcCkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUNvbnRlbnQpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlDb3VudGVySW5jcmVtZW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Q291
bnRlclJlc2V0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Rm9udEZhbWlseSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5Wm9vbSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJhY2tncm91bmQpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXNrKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5Qm9yZGVyKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20pCisgICAgSEFORExFX0NBU0UoQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5TWFyZ2luKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFkZGluZykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eUZvbnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlMaXN0U3R5bGUpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlPdXRsaW5lKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0QXBwZWFyYW5jZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckltYWdlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wTGVmdFJhZGl1cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRl
clRvcFJpZ2h0UmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
TGVmdFJhZGl1cykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5T3V0bGluZU9mZnNldCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlUZXh0U2hhZG93KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5Qm94U2hhZG93
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93KQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eU9wYWNpdHkpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hBbGln
bikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVNyYykKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVVuaWNvZGVSYW5nZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tmYWNlVmlzaWJpbGl0eSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveERp
cmVjdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0Qm94UGFjaykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdEJveEZsZXgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3Jv
dXApCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXApCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlCb3hTaXppbmcpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5Db3VudCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkdhcCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNw
YW4pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uUnVsZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbnMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZURpcmVjdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJE
cmFnKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlUZXh0T3ZlcmZsb3cpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5Db2xsYXBzZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkJlZm9yZUNvbGxhcHNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
VG9wQ29sbGFwc2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9t
Q29sbGFwc2UpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXApCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRIaWdobGlnaHQpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Vi
a2l0SHlwaGVuYXRlTG9jYWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRml0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Qp
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHkpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZykKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybU9yaWdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpblgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1Pcmln
aW5ZKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWikK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkRlbGF5KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGly
ZWN0aW9uKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRp
b24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZSkK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSkKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSkKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKQorICAgIEhB
TkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbikKKyAgICBIQU5ETEVfQ0FTRShD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVBvaW50ZXJFdmVudHMpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRDb2xvckNv
cnJlY3Rpb24pCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlTaXplKQorICAgIEhBTkRMRV9D
QVNFKENTU1Byb3BlcnR5U3BlYWspCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlJbnZhbGlk
KQogCi0gICAgICAgICAgICAgICAgaWYgKG1fcGFyZW50U3R5bGUpCi0gICAgICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldERpc3BsYXkobV9wYXJlbnRTdHlsZS0+ZGlzcGxheSgpKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldERpc3BsYXko
KnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldERpc3BsYXkoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQorICAgIC8vIERp
cmVjdGlvbmFsIHByb3BlcnRpZXMgYXJlIHJlc29sdmVkIGJ5IHJlc29sdmVEaXJlY3Rpb25Bd2Fy
ZVByb3BlcnR5KCkgYmVmb3JlIHRoZSBzd2l0Y2guCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJFbmQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0
eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgpCisg
ICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydCkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IpCisgICAgSEFORExFX0NBU0Uo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZUNvbG9yKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlU3R5bGUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmVXaWR0aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcikKKyAgICBI
QU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoKQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luU3RhcnQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5CZWZvcmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcikK
KyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQpCisgICAgSEFORExF
X0NBU0UoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQpCisgICAgSEFORExFX0NBU0UoQ1NT
UHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5
V2Via2l0UGFkZGluZ0FmdGVyKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TG9n
aWNhbFdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdo
dCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQpCisgICAgSEFO
RExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGgpCisgICAgSEFORExFX0NB
U0UoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0KQorICAgIC8vIGVuZCBkaXJlY3Rp
b25hbCBwcm9wZXJ0aWVzCisKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eUZvbnRTdHJldGNo
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5UGFnZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQ
cm9wZXJ0eVF1b3RlcykKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3Vn
aCkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9yKQorICAg
IEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZSkKKyAgICBIQU5ETEVf
Q0FTRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGgpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVy
dHlUZXh0T3ZlcmxpbmUpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVD
b2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGUpCisgICAg
SEFORExFX0NBU0UoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSkKKyAgICBIQU5ETEVfQ0FT
RShDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5VGV4dFVuZGVybGluZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxp
bmVDb2xvcikKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlKQor
ICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVN0eWxlKQorICAgIEhBTkRM
RV9DQVNFKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoKQorICAgIEhBTkRMRV9DQVNFKENT
U1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpcykKKworICAgIC8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVy
dGljYWwgd3JpdGluZyBzdXBwb3J0CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRX
cml0aW5nTW9kZSkKKyAgICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5l
KQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzUG9zaXRpb24p
CisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSkKKyNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisgICAgSEFORExFX0NBU0UoQ1NTUHJvcGVydHlX
ZWJraXREYXNoYm9hcmRSZWdpb24pCisjZW5kaWYKKyNpZiBFTkFCTEUoV0NTUykKKyAgICBIQU5E
TEVfQ0FTRShDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wKQorICAgIEhBTkRMRV9DQVNFKENTU1By
b3BlcnR5V2FwTWFycXVlZVNwZWVkKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2FwTWFy
cXVlZVN0eWxlKQorICAgIEhBTkRMRV9DQVNFKENTU1Byb3BlcnR5V2FwTWFycXVlZURpcikKKyAg
ICBIQU5ETEVfQ0FTRShDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0KQorICAgIEhBTkRMRV9DQVNF
KENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZCkKKyNlbmRpZgorI2lmIEVOQUJMRShTVkcpCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgLy8gVHJ5IHRoZSBTVkcgcHJvcGVydGllcworICAgICAgICBh
cHBseVNWR1Byb3BlcnR5KGlkLCB2YWx1ZSk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlFbXB0eUNlbGxzOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTF9BTkRfUFJJTUlUSVZFKGVtcHR5Q2VsbHMsIEVtcHR5Q2VsbHMpCi0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5RmxvYXQ6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoZmxvYXRpbmcsIEZsb2F0aW5nKQotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRTdHlsZToKLSAgICB7Ci0gICAgICAgIEZv
bnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24o
KTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRJdGFsaWMobV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkuaXRhbGljKCkpOwotICAg
ICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
SXRhbGljKGZhbHNlKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHN3aXRjaCAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
T2JsaXF1ZToKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogb2JsaXF1ZSBpcyB0aGUgc2FtZSBh
cyBpdGFsaWMgZm9yIHRoZSBtb21lbnQuLi4KLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
SXRhbGljOgotICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKHRy
dWUpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENT
U1ZhbHVlTm9ybWFsOgotICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRh
bGljKGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKSkKLSAgICAgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
OwogICAgIH0KK30KIAotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDoKLSAgICB7Ci0g
ICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVz
Y3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgCi0gICAgICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0U21hbGxDYXBzKG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNt
YWxsQ2FwcygpKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFNtYWxsQ2FwcyhmYWxzZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBpbnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKLSAgICAgICAgICAg
IGlmIChpZCA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0U21hbGxDYXBzKGZhbHNlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlkID09IENTU1Zh
bHVlU21hbGxDYXBzKQotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENh
cHModHJ1ZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKSkKLSAgICAgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKK3ZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQYWdlU2l6ZVByb3BlcnR5KENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBt
X3N0eWxlLT5yZXNldFBhZ2VTaXplVHlwZSgpOworICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFdl
aWdodDoKLSAgICB7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBt
X3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkKLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQobV9wYXJlbnRTdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCkud2VpZ2h0KCkpOwotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgQ1NTVmFsdWVM
aXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAg
TGVuZ3RoIHdpZHRoOworICAgIExlbmd0aCBoZWlnaHQ7CisgICAgUGFnZVNpemVUeXBlIHBhZ2VT
aXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOworICAgIHN3aXRjaCAodmFsdWVMaXN0LT5sZW5ndGgo
KSkgeworICAgIGNhc2UgMjogeworICAgICAgICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+
IDxvcmllbnRhdGlvbj4KKyAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVE
OworICAgICAgICBpZiAoIXZhbHVlTGlzdC0+aXRlbSgwKS0+aXNQcmltaXRpdmVWYWx1ZSgpIHx8
ICF2YWx1ZUxpc3QtPml0ZW0oMSktPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlMCA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVMaXN0LT5pdGVtKDApKTsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlMSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWVMaXN0LT5pdGVtKDEpKTsKKyAgICAgICAgaW50IHR5cGUwID0gcHJp
bWl0aXZlVmFsdWUwLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGludCB0eXBlMSA9IHByaW1p
dGl2ZVZhbHVlMS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFs
dWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZTApKSB7CisgICAgICAgICAgICAvLyA8bGVuZ3RoPnsy
fQorICAgICAgICAgICAgaWYgKCFDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0
eXBlMSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2lkdGggPSBMZW5n
dGgocHJpbWl0aXZlVmFsdWUwLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAgICAgICAgICAgIGhlaWdodCA9IExlbmd0aChw
cmltaXRpdmVWYWx1ZTEtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290
RWxlbWVudFN0eWxlKSwgRml4ZWQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
PHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgorICAgICAgICAgICAgLy8gVGhlIHZhbHVlIG9yZGVy
IGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBhcnNlU2l6ZVBhcmFtZXRlci4KKyAgICAg
ICAgICAgIGlmICghcGFnZVNpemVGcm9tTmFtZShwcmltaXRpdmVWYWx1ZTAsIHByaW1pdGl2ZVZh
bHVlMSwgd2lkdGgsIGhlaWdodCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlQm9sZGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldFdlaWdodChmb250RGVzY3JpcHRpb24uYm9sZGVyV2VpZ2h0KCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVM
aWdodGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdo
dChmb250RGVzY3JpcHRpb24ubGlnaHRlcldlaWdodCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQm9sZDoKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZTcwMDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodEJvbGQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3Jt
YWw6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU0MDA6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWU5MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
V2VpZ2h0KEZvbnRXZWlnaHQ5MDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU4MDA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ4MDApOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWU2
MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZv
bnRXZWlnaHQ2MDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWU1MDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ1MDApOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWUzMDA6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQz
MDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWUyMDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQyMDApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWUxMDA6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQxMDApOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1
cm47CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0
eUxpc3RTdHlsZVBvc2l0aW9uOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9B
TkRfUFJJTUlUSVZFKGxpc3RTdHlsZVBvc2l0aW9uLCBMaXN0U3R5bGVQb3NpdGlvbikKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlOgotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGxpc3RTdHlsZVR5cGUsIExp
c3RTdHlsZVR5cGUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZs
b3c6Ci0gICAgewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRPdmVyZmxvd1gobV9wYXJlbnRTdHlsZS0+b3ZlcmZsb3dYKCkpOwotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0T3ZlcmZsb3dZKG1fcGFyZW50U3R5bGUtPm92ZXJmbG93WSgpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGlzSW5pdGlh
bCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3ZlcmZsb3dYKFJlbmRlclN0eWxlOjppbml0
aWFsT3ZlcmZsb3dYKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3ZlcmZsb3dZKFJlbmRl
clN0eWxlOjppbml0aWFsT3ZlcmZsb3dZKCkpOworICAgIGNhc2UgMTogeworICAgICAgICAvLyA8
bGVuZ3RoPiB8IGF1dG8gfCA8cGFnZS1zaXplPiB8IFsgcG9ydHJhaXQgfCBsYW5kc2NhcGVdCisg
ICAgICAgIGlmICghdmFsdWVMaXN0LT5pdGVtKDApLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVMaXN0LT5pdGVtKDApKTsK
KyAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAg
ICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKKyAg
ICAgICAgICAgIC8vIDxsZW5ndGg+CisgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJ
WkVfUkVTT0xWRUQ7CisgICAgICAgICAgICB3aWR0aCA9IGhlaWdodCA9IExlbmd0aChwcmltaXRp
dmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUpLCBGaXhlZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAodHlwZSAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9
IFBBR0VfU0laRV9BVVRPOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVBvcnRyYWl0OgorICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0Vf
U0laRV9BVVRPX1BPUlRSQUlUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKKyAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQ
QUdFX1NJWkVfQVVUT19MQU5EU0NBUEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+CisgICAgICAgICAg
ICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOworICAgICAgICAgICAgICAg
IGlmICghcGFnZVNpemVGcm9tTmFtZShwcmltaXRpdmVWYWx1ZSwgMCwgd2lkdGgsIGhlaWdodCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICAgICAgCi0gICAgICAgIEVPdmVyZmxvdyBvID0gKnByaW1pdGl2ZVZhbHVlOwotCi0g
ICAgICAgIG1fc3R5bGUtPnNldE92ZXJmbG93WChvKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0T3Zl
cmZsb3dZKG8pOwotICAgICAgICByZXR1cm47CisgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvd1g6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMX0FORF9QUklNSVRJVkUob3ZlcmZsb3dYLCBPdmVyZmxvd1gpCi0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dZOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG92ZXJmbG93WSwgT3ZlcmZsb3dZKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZToKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKHBhZ2VC
cmVha0JlZm9yZSwgUGFnZUJyZWFrQmVmb3JlLCBQYWdlQnJlYWspCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkVfV0lUSF9WQUxVRShwYWdlQnJlYWtBZnRlciwg
UGFnZUJyZWFrQWZ0ZXIsIFBhZ2VCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWdlQnJlYWtJbnNpZGU6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUxfV0lUSF9WQUxVRShwYWdlQnJlYWtJbnNpZGUsIFBhZ2VCcmVha0luc2lkZSwgUGFnZUJy
ZWFrKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBFUGFnZUJyZWFrIHBhZ2VCcmVhayA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAg
aWYgKHBhZ2VCcmVhayAhPSBQQkFMV0FZUykKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZ2VC
cmVha0luc2lkZShwYWdlQnJlYWspOworICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKLSAgICAgICAgSEFO
RExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShwb3NpdGlvbiwgUG9zaXRpb24p
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6IHsKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGFibGVMYXlvdXQsIFRhYmxlTGF5b3V0
KQorICAgIG1fc3R5bGUtPnNldFBhZ2VTaXplVHlwZShwYWdlU2l6ZVR5cGUpOworICAgIG1fc3R5
bGUtPnNldFBhZ2VTaXplKExlbmd0aFNpemUod2lkdGgsIGhlaWdodCkpOworICAgIHJldHVybjsK
K30KIAotICAgICAgICBFVGFibGVMYXlvdXQgbCA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAgICAg
aWYgKGwgPT0gVEFVVE8pCi0gICAgICAgICAgICBsID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJs
ZUxheW91dCgpOworYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpwYWdlU2l6ZUZyb21OYW1lKENTU1By
aW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3JpZW50
YXRpb24sIExlbmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KQoreworICAgIHN0YXRpYyBjb25z
dCBMZW5ndGggYTVXaWR0aCA9IG1tTGVuZ3RoKDE0OCksIGE1SGVpZ2h0ID0gbW1MZW5ndGgoMjEw
KTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE0V2lkdGggPSBtbUxlbmd0aCgyMTApLCBhNEhl
aWdodCA9IG1tTGVuZ3RoKDI5Nyk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBhM1dpZHRoID0g
bW1MZW5ndGgoMjk3KSwgYTNIZWlnaHQgPSBtbUxlbmd0aCg0MjApOworICAgIHN0YXRpYyBjb25z
dCBMZW5ndGggYjVXaWR0aCA9IG1tTGVuZ3RoKDE3NiksIGI1SGVpZ2h0ID0gbW1MZW5ndGgoMjUw
KTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI0V2lkdGggPSBtbUxlbmd0aCgyNTApLCBiNEhl
aWdodCA9IG1tTGVuZ3RoKDM1Myk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZXR0ZXJXaWR0
aCA9IGluY2hMZW5ndGgoOC41KSwgbGV0dGVySGVpZ2h0ID0gaW5jaExlbmd0aCgxMSk7CisgICAg
c3RhdGljIGNvbnN0IExlbmd0aCBsZWdhbFdpZHRoID0gaW5jaExlbmd0aCg4LjUpLCBsZWdhbEhl
aWdodCA9IGluY2hMZW5ndGgoMTQpOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGVkZ2VyV2lk
dGggPSBpbmNoTGVuZ3RoKDExKSwgbGVkZ2VySGVpZ2h0ID0gaW5jaExlbmd0aCgxNyk7CiAKLSAg
ICAgICAgbV9zdHlsZS0+c2V0VGFibGVMYXlvdXQobCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlQmlkaTogCi0gICAgICAgIEhB
TkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodW5pY29kZUJpZGksIFVuaWNv
ZGVCaWRpKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm06IAotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHRl
eHRUcmFuc2Zvcm0sIFRleHRUcmFuc2Zvcm0pCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENT
U1Byb3BlcnR5VmlzaWJpbGl0eToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxf
QU5EX1BSSU1JVElWRSh2aXNpYmlsaXR5LCBWaXNpYmlsaXR5KQotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2U6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUod2hpdGVTcGFjZSwgV2hpdGVTcGFjZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKLSAgICAg
ICAgSEFORExFX0JBQ0tHUk9VTkRfSU5IRVJJVF9BTkRfSU5JVElBTCh4UG9zaXRpb24sIFhQb3Np
dGlvbik7Ci0gICAgICAgIEhBTkRMRV9CQUNLR1JPVU5EX0lOSEVSSVRfQU5EX0lOSVRJQUwoeVBv
c2l0aW9uLCBZUG9zaXRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblg6IHsKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUo
eFBvc2l0aW9uLCBYUG9zaXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZOiB7Ci0gICAgICAgIEhBTkRMRV9C
QUNLR1JPVU5EX1ZBTFVFKHlQb3NpdGlvbiwgWVBvc2l0aW9uLCB2YWx1ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uOgotICAg
ICAgICBIQU5ETEVfTUFTS19JTkhFUklUX0FORF9JTklUSUFMKHhQb3NpdGlvbiwgWFBvc2l0aW9u
KTsKLSAgICAgICAgSEFORExFX01BU0tfSU5IRVJJVF9BTkRfSU5JVElBTCh5UG9zaXRpb24sIFlQ
b3NpdGlvbik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWDogewotICAgICAgICBIQU5ETEVfTUFTS19WQUxVRSh4UG9zaXRpb24sIFhQb3Np
dGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblk6IHsKLSAgICAgICAgSEFORExFX01BU0tfVkFMVUUoeVBvc2l0
aW9uLCBZUG9zaXRpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgotICAgICAgICBIQU5ETEVfQkFDS0dST1VORF9J
TkhFUklUX0FORF9JTklUSUFMKHJlcGVhdFgsIFJlcGVhdFgpOwotICAgICAgICBIQU5ETEVfQkFD
S0dST1VORF9JTkhFUklUX0FORF9JTklUSUFMKHJlcGVhdFksIFJlcGVhdFkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYOgotICAgICAgICBI
QU5ETEVfQkFDS0dST1VORF9WQUxVRShyZXBlYXRYLCBSZXBlYXRYLCB2YWx1ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKLSAgICAgICAg
SEFORExFX0JBQ0tHUk9VTkRfVkFMVUUocmVwZWF0WSwgUmVwZWF0WSwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdDoKLSAgICAgICAg
SEFORExFX01BU0tfSU5IRVJJVF9BTkRfSU5JVElBTChyZXBlYXRYLCBSZXBlYXRYKTsKLSAgICAg
ICAgSEFORExFX01BU0tfSU5IRVJJVF9BTkRfSU5JVElBTChyZXBlYXRZLCBSZXBlYXRZKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WDoKLSAg
ICAgICAgSEFORExFX01BU0tfVkFMVUUocmVwZWF0WCwgUmVwZWF0WCwgdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFk6Ci0gICAgICAg
IEhBTkRMRV9NQVNLX1ZBTFVFKHJlcGVhdFksIFJlcGVhdFksIHZhbHVlKQotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmc6IHsKLSAgICAgICAgaWYgKGlz
SW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNp
bmcobV9wYXJlbnRTdHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSk7Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcobV9wYXJlbnRTdHlsZS0+dmVydGlj
YWxCb3JkZXJTcGFjaW5nKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlh
bCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoMCk7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoMCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmc6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUwoaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsIEhvcml6b250YWxCb3JkZXJTcGFjaW5nKQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBzaG9ydCBzcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhTaG9ydChzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICBtX3N0eWxlLT5z
ZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhzcGFjaW5nKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nOiB7Ci0g
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHZlcnRpY2FsQm9yZGVyU3BhY2luZywg
VmVydGljYWxCb3JkZXJTcGFjaW5nKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBzaG9ydCBzcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUt
PmNvbXB1dGVMZW5ndGhTaG9ydChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0
b3IpOwotICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKLSAg
ICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q3Vyc29yKG1f
cGFyZW50U3R5bGUtPmN1cnNvcigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvckxp
c3QobV9wYXJlbnRTdHlsZS0+Y3Vyc29ycygpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgICAgICBtX3N0eWxlLT5jbGVhckN1cnNvckxpc3QoKTsKLSAgICAgICAgaWYgKGlz
SW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q3Vyc29yKFJlbmRlclN0eWxlOjpp
bml0aWFsQ3Vyc29yKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewotICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBs
aXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOwotICAgICAgICAgICAgaW50
IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q3Vyc29yKENV
UlNPUl9BVVRPKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsK
LSAgICAgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soaSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKLSAgICAgICAg
ICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0N1cnNvckltYWdlVmFsdWUo
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogaW1hZ2Ug
PSBzdGF0aWNfY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4ocHJpbWl0aXZlVmFsdWUpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlLT51cGRhdGVJZlNWR0N1cnNvcklzVXNlZCht
X2VsZW1lbnQpKSAvLyBFbGVtZW50cyB3aXRoIFNWRyBjdXJzb3JzIGFyZSBub3QgYWxsb3dlZCB0
byBzaGFyZSBzdHlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRV
bmlxdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPmFkZEN1cnNvcihjYWNo
ZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJvcGVydHlDdXJzb3IsIGltYWdlKSwgaW1hZ2UtPmhv
dFNwb3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKLSAgICAgICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0Q3Vyc29yKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIGludCB0
eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0
eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQgJiYgbV9zdHlsZS0+Y3Vyc29yKCkg
IT0gRUN1cnNvcigqcHJpbWl0aXZlVmFsdWUpKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLS8v
IGNvbG9ycyB8fCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAgICAgICAv
LyBJZiB0aGUgJ2N1cnJlbnRDb2xvcicga2V5d29yZCBpcyBzZXQgb24gdGhlICdjb2xvcicgcHJv
cGVydHkgaXRzZWxmLAotICAgICAgICAvLyBpdCBpcyB0cmVhdGVkIGFzICdjb2xvcjppbmhlcml0
JyBhdCBwYXJzZSB0aW1lCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKLSAgICAgICAgICAgIGlz
SW5oZXJpdCA9IHRydWU7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eU91dGxpbmVDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9y
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RmlsbENvbG9yOiB7Ci0gICAgICAgIENvbG9yIGNvbDsKLSAgICAgICAgaWYgKGlz
SW5oZXJpdCkgewotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgYmFja2dyb3VuZENvbG9yLCBCYWNrZ3JvdW5kQ29sb3IpCi0gICAgICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVyVG9w
Q29sb3IsIGJvcmRlclRvcENvbG9yLCBjb2xvciwgQm9yZGVyVG9wQ29sb3IpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
Q29sb3IsIGJvcmRlckJvdHRvbUNvbG9yLCBjb2xvciwgQm9yZGVyQm90dG9tQ29sb3IpCi0gICAg
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRDb2xvciwgYm9yZGVyUmlnaHRDb2xvciwgY29sb3IsIEJvcmRlclJpZ2h0Q29sb3IpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yLCBib3JkZXJMZWZ0Q29sb3IsIGNvbG9yLCBCb3JkZXJMZWZ0Q29sb3IpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yLCBD
b2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9CQUNLVVAoQ1NTUHJv
cGVydHlPdXRsaW5lQ29sb3IsIG91dGxpbmVDb2xvciwgY29sb3IsIE91dGxpbmVDb2xvcikKLSAg
ICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5SdWxlQ29sb3IsIGNvbHVtblJ1bGVDb2xvciwgY29sb3IsIENvbHVtblJ1bGVDb2xv
cikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9CQUNLVVAoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIHRleHRTdHJva2VDb2xvciwgY29sb3IsIFRleHRTdHJv
a2VDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lUSF9CQUNLVVAoQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgdGV4dEVtcGhhc2lzQ29sb3IsIGNvbG9y
LCBUZXh0RW1waGFzaXNDb2xvcikKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkRfV0lU
SF9CQUNLVVAoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCB0ZXh0RmlsbENvbG9yLCBj
b2xvciwgVGV4dEZpbGxDb2xvcikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICAvLyBUaGUgYm9yZGVyL291dGxpbmUg
Y29sb3JzIHdpbGwganVzdCBtYXAgdG8gdGhlIGludmFsaWQgY29sb3IgfGNvbHwgYWJvdmUuICBU
aGlzIHdpbGwgaGF2ZSB0aGUKLSAgICAgICAgICAgIC8vIGVmZmVjdCBvZiBmb3JjaW5nIHRoZSB1
c2Ugb2YgdGhlIGN1cnJlbnRDb2xvciB3aGVuIGl0IGNvbWVzIHRpbWUgdG8gZHJhdyB0aGUgYm9y
ZGVycyAoYW5kIG9mCi0gICAgICAgICAgICAvLyBub3QgcGFpbnRpbmcgdGhlIGJhY2tncm91bmQg
c2luY2UgdGhlIGNvbG9yIHdvbid0IGJlIHZhbGlkKS4KLSAgICAgICAgICAgIGlmIChpZCA9PSBD
U1NQcm9wZXJ0eUNvbG9yKQotICAgICAgICAgICAgICAgIGNvbCA9IFJlbmRlclN0eWxlOjppbml0
aWFsQ29sb3IoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgY29sID0gZ2V0Q29s
b3JGcm9tUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3dpdGNoIChpZCkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
OgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wQ29sb3IoY29sKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcjoKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0Q29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3I6Ci0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21Db2xvcihjb2wpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRCb3JkZXJMZWZ0Q29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2xv
cihjb2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRs
aW5lQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lQ29sb3IoY29sKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uUnVsZUNvbG9yKGNvbCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJv
a2VDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRTdHJva2VDb2xvcihjb2wpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXNDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0NvbG9yKGNv
bCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRGaWxsQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RmlsbENvbG9yKGNvbCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLS8vIHVyaSB8fCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRJbWFnZToKLSAgICAgICAgSEFORExFX0JBQ0tHUk9VTkRfVkFMVUUoaW1hZ2UsIElt
YWdlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrSW1hZ2U6Ci0gICAgICAgIEhBTkRMRV9NQVNLX1ZBTFVFKGltYWdlLCBJbWFnZSwgdmFsdWUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6Ci0g
ICAgewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChsaXN0U3R5bGVJbWFnZSwg
TGlzdFN0eWxlSW1hZ2UpCi0gICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHlsZUltYWdlKHN0eWxl
SW1hZ2UoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgdmFsdWUpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotLy8gbGVuZ3RoCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRo
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoOgotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21XaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdp
ZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aDoKLSAgICB7Ci0gICAgICAgIGlmIChpc0luaGVyaXQp
IHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3JkZXJUb3BX
aWR0aCwgYm9yZGVyVG9wV2lkdGgsIEJvcmRlclRvcFdpZHRoKQotICAgICAgICAgICAgSEFORExF
X0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIGJvcmRlclJpZ2h0V2lk
dGgsIEJvcmRlclJpZ2h0V2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIGJvcmRlckJvdHRvbVdpZHRoLCBCb3JkZXJCb3R0
b21XaWR0aCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0V2lkdGgsIGJvcmRlckxlZnRXaWR0aCwgQm9yZGVyTGVmdFdpZHRoKQotICAgICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgb3V0bGluZVdp
ZHRoLCBPdXRsaW5lV2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBjb2x1bW5SdWxlV2lkdGgsIENvbHVtblJ1bGVX
aWR0aCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChp
c0luaXRpYWwpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBCb3JkZXJUb3BXaWR0aCwgQm9yZGVyV2lkdGgpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodFdpZHRoLCBCb3JkZXJSaWdodFdpZHRoLCBCb3JkZXJXaWR0aCkKLSAgICAgICAgICAg
IEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBCb3JkZXJCb3R0b21XaWR0aCwgQm9yZGVyV2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVf
SU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIEJvcmRl
ckxlZnRXaWR0aCwgQm9yZGVyV2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05E
X1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsIE91dGxpbmVXaWR0aCwgQm9yZGVy
V2lkdGgpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIENvbHVtblJ1bGVXaWR0aCwgQm9yZGVyV2lkdGgp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzaG9ydCB3aWR0aCA9IDM7Ci0g
ICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVRoaW46Ci0gICAgICAgICAgICB3aWR0aCA9IDE7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKLSAgICAgICAgICAgIHdpZHRoID0gMzsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlVGhpY2s6Ci0gICAgICAg
ICAgICB3aWR0aCA9IDU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1
ZUludmFsaWQ6Ci0gICAgICAgICAgICB3aWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVu
Z3RoU2hvcnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHdpZHRoIDwgMCkgcmV0dXJuOwotICAgICAgICBzd2l0Y2gg
KGlkKSB7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aDoKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aDoKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgod2lkdGgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aDoKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVdpZHRoKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoOgotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyTGVmdFdpZHRoKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoOgotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0T3V0bGluZVdpZHRoKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoOgotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Q29sdW1uUnVsZVdpZHRoKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZzogewot
ICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERl
c2NyaXB0aW9uKCk7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIAotICAgICAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcobV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCkuZm9udFNtb290aGluZygpKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoQXV0b1Ntb290aGluZyk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpbnQgaWQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKTsKLSAgICAgICAgICAgIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZzsKLSAgICAg
ICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoK
LSAgICAgICAgICAgICAgICAgICAgc21vb3RoaW5nID0gQXV0b1Ntb290aGluZzsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0g
ICAgICAgICAgICAgICAgICAgIHNtb290aGluZyA9IE5vU21vb3RoaW5nOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQW50aWFsaWFzZWQ6
Ci0gICAgICAgICAgICAgICAgICAgIHNtb290aGluZyA9IEFudGlhbGlhc2VkOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU3VicGl4ZWxB
bnRpYWxpYXNlZDoKLSAgICAgICAgICAgICAgICAgICAgc21vb3RoaW5nID0gU3VicGl4ZWxBbnRp
YWxpYXNlZDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHNtb290aGluZyA9IEF1dG9TbW9vdGhpbmc7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Rm9udFNtb290aGluZyhzbW9vdGhpbmcpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERl
c2NyaXB0aW9uKSkKLSAgICAgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKLSAgICB7Ci0gICAgICAgIAotICAgICAgICBpZiAo
aXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5
TGV0dGVyU3BhY2luZywgbGV0dGVyU3BhY2luZywgTGV0dGVyU3BhY2luZykKLSAgICAgICAgICAg
IEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgd29yZFNwYWNpbmcs
IFdvcmRTcGFjaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRI
X1ZBTFVFKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgTGV0dGVyU3BhY2luZywgTGV0dGVyV29y
ZFNwYWNpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NT
UHJvcGVydHlXb3JkU3BhY2luZywgV29yZFNwYWNpbmcsIExldHRlcldvcmRTcGFjaW5nKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpbnQgd2lkdGgg
PSAwOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKLSAgICAgICAgICAgIHdpZHRoID0gMDsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0
ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHVzZVNWR1pvb21SdWxlcyA/
IDEuMGYgOiB6b29tRmFjdG9yKTsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOgotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0TGV0dGVyU3BhY2luZyh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0V29y
ZFNwYWNpbmcod2lkdGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAvLyAjIyMg
bmVlZHMgdGhlIGRlZmluaXRpb25zIGluIHJlbmRlcnN0eWxlCi0gICAgICAgIGRlZmF1bHQ6IGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1By
b3BlcnR5V29yZEJyZWFrOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRf
UFJJTUlUSVZFKHdvcmRCcmVhaywgV29yZEJyZWFrKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdvcmRXcmFwOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TF9BTkRfUFJJTUlUSVZFKHdvcmRXcmFwLCBXb3JkV3JhcCkKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShuYnNwTW9kZSwgTkJTUE1vZGUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrOgotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGtodG1sTGluZUJyZWFrLCBLSFRN
TExpbmVCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKG1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3Is
IE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6Ci0gICAgewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9B
TkRfSU5JVElBTChyZXNpemUsIFJlc2l6ZSkKLQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEVSZXNpemUgciA9
IFJFU0laRV9OT05FOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVBdXRvKSB7Ci0gICAgICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gbV9j
aGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCkpCi0gICAgICAgICAgICAgICAgciA9IHNldHRp
bmdzLT50ZXh0QXJlYXNBcmVSZXNpemFibGUoKSA/IFJFU0laRV9CT1RIIDogUkVTSVpFX05PTkU7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgciA9ICpwcmltaXRpdmVWYWx1ZTsKLSAgICAg
ICAgICAgIAotICAgICAgICBtX3N0eWxlLT5zZXRSZXNpemUocik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgLy8gbGVuZ3RoLCBwZXJjZW50Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eU1heFdpZHRoOgotICAgICAgICAvLyArbm9uZSAraW5oZXJpdAotICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKQot
ICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgotICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdpZHRoOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgot
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5TWFy
Z2luQm90dG9tOgotICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0OgotICAgICAgICAvLyAr
aW5oZXJpdCArYXV0bwotICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlXaWR0aCB8fCBpZCA9
PSBDU1NQcm9wZXJ0eU1pbldpZHRoIHx8IGlkID09IENTU1Byb3BlcnR5TWF4V2lkdGgpIHsKLSAg
ICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUludHJpbnNpYykgewotICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgoSW50
cmluc2ljKTsKLSAgICAgICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZU1pbkludHJpbnNpYykgewotICAgICAgICAgICAgICAgIGwgPSBM
ZW5ndGgoTWluSW50cmluc2ljKTsKLSAgICAgICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlkICE9IENTU1Byb3BlcnR5TWF4V2lk
dGggJiYgcHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVBdXRvKQotICAgICAgICAgICAgYXBwbHkgPSB0cnVlOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWRkaW5nVG9wOgotICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQ6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b206Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdM
ZWZ0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0SW5kZW50OgotICAgICAgICAvLyAraW5oZXJp
dAotICAgIHsKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgSEFORExFX0lO
SEVSSVRfQ09ORChDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhXaWR0aCwgTWF4V2lkdGgpCi0gICAg
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5Qm90dG9tLCBib3R0b20sIEJv
dHRvbSkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlUb3AsIHRv
cCwgVG9wKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUxlZnQs
IGxlZnQsIExlZnQpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5
UmlnaHQsIHJpZ2h0LCBSaWdodCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NT
UHJvcGVydHlXaWR0aCwgd2lkdGgsIFdpZHRoKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRf
Q09ORChDU1NQcm9wZXJ0eU1pbldpZHRoLCBtaW5XaWR0aCwgTWluV2lkdGgpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgcGFkZGluZ1RvcCwg
UGFkZGluZ1RvcCkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlQ
YWRkaW5nUmlnaHQsIHBhZGRpbmdSaWdodCwgUGFkZGluZ1JpZ2h0KQotICAgICAgICAgICAgSEFO
RExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sIHBhZGRpbmdCb3R0b20s
IFBhZGRpbmdCb3R0b20pCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3Bl
cnR5UGFkZGluZ0xlZnQsIHBhZGRpbmdMZWZ0LCBQYWRkaW5nTGVmdCkKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIG1hcmdpblRvcCwgTWFyZ2lu
VG9wKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eU1hcmdpblJp
Z2h0LCBtYXJnaW5SaWdodCwgTWFyZ2luUmlnaHQpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9DT05EKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBtYXJnaW5Cb3R0b20sIE1hcmdpbkJvdHRv
bSkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0
LCBtYXJnaW5MZWZ0LCBNYXJnaW5MZWZ0KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09O
RChDU1NQcm9wZXJ0eVRleHRJbmRlbnQsIHRleHRJbmRlbnQsIFRleHRJbmRlbnQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0g
ICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXhX
aWR0aCwgTWF4V2lkdGgsIE1heFNpemUpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05E
X1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3R0b20sIEJvdHRvbSwgT2Zmc2V0KQotICAgICAgICAg
ICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5VG9wLCBUb3AsIE9m
ZnNldCkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9w
ZXJ0eUxlZnQsIExlZnQsIE9mZnNldCkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRf
V0lUSF9WQUxVRShDU1NQcm9wZXJ0eVJpZ2h0LCBSaWdodCwgT2Zmc2V0KQotICAgICAgICAgICAg
SEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5V2lkdGgsIFdpZHRoLCBT
aXplKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3Bl
cnR5TWluV2lkdGgsIE1pbldpZHRoLCBNaW5TaXplKQotICAgICAgICAgICAgSEFORExFX0lOSVRJ
QUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ1RvcCwgUGFkZGluZ1RvcCwgUGFk
ZGluZykKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9w
ZXJ0eVBhZGRpbmdSaWdodCwgUGFkZGluZ1JpZ2h0LCBQYWRkaW5nKQotICAgICAgICAgICAgSEFO
RExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwgUGFk
ZGluZ0JvdHRvbSwgUGFkZGluZykKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lU
SF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBQYWRkaW5nTGVmdCwgUGFkZGluZykKLSAg
ICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdp
blRvcCwgTWFyZ2luVG9wLCBNYXJnaW4pCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05E
X1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgTWFyZ2luUmlnaHQsIE1hcmdpbikK
LSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eU1h
cmdpbkJvdHRvbSwgTWFyZ2luQm90dG9tLCBNYXJnaW4pCi0gICAgICAgICAgICBIQU5ETEVfSU5J
VElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBNYXJnaW5MZWZ0LCBN
YXJnaW4pCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EKENTU1Byb3BlcnR5VGV4dElu
ZGVudCwgVGV4dEluZGVudCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSAKLQotICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgIWFwcGx5KSB7Ci0gICAgICAgICAgICBpbnQgdHlw
ZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAoQ1NT
UHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgICAgICAgICAg
Ly8gSGFuZGxlIG91ciBxdWlya3kgbWFyZ2luIHVuaXRzIGlmIHdlIGhhdmUgdGhlbS4KLSAgICAg
ICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9y
TGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvciksIEZpeGVkLCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlLT5pc1F1aXJrVmFsdWUo
KSk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSkKLSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKCFhcHBseSkgcmV0dXJuOwotICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5TWF4V2lkdGg6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
TWF4V2lkdGgobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIENT
U1Byb3BlcnR5Qm90dG9tOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvdHRvbShsKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6
Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0VG9wKGwpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Ci0gICAgICAgICAgICAgICAg
bV9zdHlsZS0+c2V0TGVmdChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlSaWdodDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRSaWdo
dChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXaWR0aDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRXaWR0aChsKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKLSAg
ICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNaW5XaWR0aChsKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nVG9wOgotICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdUb3AobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldFBhZGRpbmdSaWdodChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tOgotICAgICAgICAgICAg
ICAgIG1fc3R5bGUtPnNldFBhZGRpbmdCb3R0b20obCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQ6Ci0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0UGFkZGluZ0xlZnQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luVG9wOgotICAgICAgICAgICAgICAgIG1f
c3R5bGUtPnNldE1hcmdpblRvcChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5SaWdodDoKLSAgICAgICAgICAgICAgICBtX3N0eWxl
LT5zZXRNYXJnaW5SaWdodChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b206Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0TWFyZ2luQm90dG9tKGwpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQ6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0
TWFyZ2luTGVmdChsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlUZXh0SW5kZW50OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRJ
bmRlbnQobCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKLSAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkg
ewotICAgICAgICAgICAgbCA9IExlbmd0aCh1bmRlZmluZWRMZW5ndGgsIEZpeGVkKTsKLSAgICAg
ICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlIZWln
aHQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKLSAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW50cmluc2lj
KSB7Ci0gICAgICAgICAgICBsID0gTGVuZ3RoKEludHJpbnNpYyk7Ci0gICAgICAgICAgICBhcHBs
eSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVNaW5JbnRyaW5zaWMpIHsKLSAgICAgICAgICAg
IGwgPSBMZW5ndGgoTWluSW50cmluc2ljKTsKLSAgICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAg
ICAgICAgfSBlbHNlIGlmIChpZCAhPSBDU1NQcm9wZXJ0eU1heEhlaWdodCAmJiBwcmltaXRpdmVW
YWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCi0gICAg
ICAgICAgICBhcHBseSA9IHRydWU7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIG1heEhlaWdodCwg
TWF4SGVpZ2h0KQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUhl
aWdodCwgaGVpZ2h0LCBIZWlnaHQpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENT
U1Byb3BlcnR5TWluSGVpZ2h0LCBtaW5IZWlnaHQsIE1pbkhlaWdodCkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBI
QU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIE1heEhl
aWdodCwgTWF4U2l6ZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxV
RShDU1NQcm9wZXJ0eUhlaWdodCwgSGVpZ2h0LCBTaXplKQotICAgICAgICAgICAgSEFORExFX0lO
SVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TWluSGVpZ2h0LCBNaW5IZWlnaHQsIE1p
blNpemUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUgJiYgIWFwcGx5KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBl
ID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmIChDU1NQ
cmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgICAgICBs
ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvciksIEZpeGVkKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAg
ICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCks
IFBlcmNlbnQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIGFwcGx5ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYXBwbHkpCi0g
ICAgICAgICAgICBzd2l0Y2ggKGlkKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eU1heEhlaWdodDoKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWF4SGVpZ2h0KGwp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1By
b3BlcnR5SGVpZ2h0OgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIZWlnaHQobCk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlNaW5IZWlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1pbkhlaWdo
dChsKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduOgotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEFsaWduLCBWZXJ0aWNhbEFsaWduKQot
ICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICBFVmVydGljYWxB
bGlnbiBhbGlnbjsKLQotICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVG9wOgotICAgICAgICAgICAgICAg
ICAgICBhbGlnbiA9IFRPUDsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUJv
dHRvbToKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBCT1RUT007IGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNaWRkbGU6Ci0gICAgICAgICAgICAgICAgICAgIGFsaWdu
ID0gTUlERExFOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQmFzZWxpbmU6
Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gQkFTRUxJTkU7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVUZXh0Qm90dG9tOgotICAgICAgICAgICAgICAgICAgICBhbGln
biA9IFRFWFRfQk9UVE9NOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlVGV4
dFRvcDoKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBURVhUX1RPUDsgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1YjoKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24g
PSBTVUI7IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTdXBlcjoKLSAgICAg
ICAgICAgICAgICAgICAgYWxpZ24gPSBTVVBFUjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVdlYmtpdEJhc2VsaW5lTWlkZGxlOgotICAgICAgICAgICAgICAgICAgICBhbGln
biA9IEJBU0VMSU5FX01JRERMRTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgIG1fc3R5
bGUtPnNldFZlcnRpY2FsQWxpZ24oYWxpZ24pOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVU
eXBlKCk7Ci0gICAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZh
bHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmlt
aXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVt
ZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgICAgZWxzZSBpZiAodHlwZSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBsID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLQotICAgICAg
ICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsKLSAgICAgICAgICBtX3N0eWxl
LT5zZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKGwpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsK
LQotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKLSAgICB7Ci0gICAgICAgIEZvbnREZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKDApOwotICAgICAgICBmbG9hdCBv
bGRTaXplID0gMDsKLSAgICAgICAgZmxvYXQgc2l6ZSA9IDA7Ci0gICAgICAgIAotICAgICAgICBi
b29sIHBhcmVudElzQWJzb2x1dGVTaXplID0gZmFsc2U7Ci0gICAgICAgIGlmIChtX3BhcmVudE5v
ZGUpIHsKLSAgICAgICAgICAgIG9sZFNpemUgPSBtX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRp
b24oKS5zcGVjaWZpZWRTaXplKCk7Ci0gICAgICAgICAgICBwYXJlbnRJc0Fic29sdXRlU2l6ZSA9
IG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLmlzQWJzb2x1dGVTaXplKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBzaXplID0gb2xk
U2l6ZTsKLSAgICAgICAgICAgIGlmIChtX3BhcmVudE5vZGUpCi0gICAgICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKG1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlv
bigpLmtleXdvcmRTaXplKCkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAg
ICAgICAgICAgc2l6ZSA9IGZvbnRTaXplRm9yS2V5d29yZChtX2NoZWNrZXIubV9kb2N1bWVudCwg
Q1NTVmFsdWVNZWRpdW0sIGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpOwot
ICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKENTU1ZhbHVlTWVkaXVt
IC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIC8vIEtleXdvcmRzIGFyZSBiZWluZyB1c2Vk
LgotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVYeFNtYWxsOgotICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVYU21hbGw6Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgotICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06Ci0gICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZUxhcmdlOgotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVYTGFyZ2U6Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVh4TGFyZ2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVdlYmtpdFh4eExhcmdlOgotICAgICAgICAgICAgICAgICAgICBzaXplID0gZm9udFNp
emVGb3JLZXl3b3JkKG1fY2hlY2tlci5tX2RvY3VtZW50LCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSwgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFyZ2VyOgotICAgICAgICAgICAg
ICAgICAgICBzaXplID0gbGFyZ2VyRm9udFNpemUob2xkU2l6ZSwgbV9jaGVja2VyLm1fZG9jdW1l
bnQtPmluUXVpcmtzTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsZXI6Ci0gICAgICAgICAgICAgICAgICAgIHNpemUg
PSBzbWFsbGVyRm9udFNpemUob2xkU2l6ZSwgbV9jaGVja2VyLm1fZG9jdW1lbnQtPmluUXVpcmtz
TW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUocGFyZW50SXNBYnNvbHV0
ZVNpemUgJiYgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTGFyZ2VyIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlU21hbGxlcikpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHBhcmVudElzQWJzb2x1dGVT
aXplIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5
cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFICYmCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19FTVMgJiYgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFMgJiYKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAhPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1JFTVMpKTsKLSAgICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNV
bml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgICAgICBzaXplID0gcHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGhGbG9hdChtX3BhcmVudFN0eWxlLCBtX3Jvb3RFbGVtZW50U3R5bGUs
IHRydWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICAgICAgc2l6ZSA9IChwcmltaXRpdmVWYWx1ZS0+
Z2V0RmxvYXRWYWx1ZSgpICogb2xkU2l6ZSkgLyAxMDAuMGY7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNpemUgPCAw
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHNldEZvbnRTaXplKGZvbnREZXNjcmlw
dGlvbiwgc2l6ZSk7Ci0gICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9u
dERlc2NyaXB0aW9uKSkKLSAgICAgICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGNhc2UgQ1NTUHJvcGVydHlaSW5kZXg6IHsKLSAgICAgICAg
aWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgaWYgKG1fcGFyZW50U3R5bGUtPmhhc0F1dG9a
SW5kZXgoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNBdXRvWkluZGV4KCk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0WkluZGV4KG1fcGFy
ZW50U3R5bGUtPnpJbmRleCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNl
IGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVB
dXRvKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNBdXRvWkluZGV4KCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIEZJWE1FOiBTaG91
bGQgY2xhbXAgYWxsIHNvcnRzIG9mIG90aGVyIGludGVnZXIgcHJvcGVydGllcyB0b28uCi0gICAg
ICAgIG1fc3R5bGUtPnNldFpJbmRleChjbGFtcFRvSW50ZWdlcihwcmltaXRpdmVWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJv
cGVydHlXaWRvd3M6Ci0gICAgewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh3
aWRvd3MsIFdpZG93cykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVW
YWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRXaWRvd3MocHJpbWl0aXZl
VmFsdWUtPmdldEludFZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAK
LSAgICBjYXNlIENTU1Byb3BlcnR5T3JwaGFuczoKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKG9ycGhhbnMsIE9ycGhhbnMpCi0gICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+
c2V0T3JwaGFucyhwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9ICAgICAgICAKLQotLy8gbGVuZ3RoLCBwZXJjZW50LCBudW1iZXIKLSAgICBjYXNl
IENTU1Byb3BlcnR5TGluZUhlaWdodDoKLSAgICB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMKGxpbmVIZWlnaHQsIExpbmVIZWlnaHQpCi0gICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0Owot
ICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAg
ICAgICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgoLTEwMC4wLCBQZXJjZW50KTsKLSAgICAgICAg
ZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKLSAg
ICAgICAgICAgIGRvdWJsZSBtdWx0aXBsaWVyID0gem9vbUZhY3RvcjsKLSAgICAgICAgICAgIGlm
IChtX3N0eWxlLT50ZXh0U2l6ZUFkanVzdCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICAgICAgICAg
ICAgICBtdWx0aXBsaWVyICo9IGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0
ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsICBtdWx0aXBs
aWVyKSwgRml4ZWQpOwotICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aCgobV9z
dHlsZS0+Zm9udFNpemUoKSAqIHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKSAvIDEwMCwg
Rml4ZWQpOwotICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKQotICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Z2V0RG91YmxlVmFsdWUoKSAqIDEwMC4wLCBQZXJjZW50KTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KGxpbmVIZWlnaHQp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0vLyBzdHJpbmcKLSAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dEFsaWduOgotICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
dGV4dEFsaWduLCBUZXh0QWxpZ24pCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGludCBpZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpOwotICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdGFydCkKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldFRleHRBbGlnbihtX3N0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBMRUZU
IDogUklHSFQpOwotICAgICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUVuZCkKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldFRleHRBbGlnbihtX3N0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkgPyBSSUdIVCA6IExFRlQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxlLT5z
ZXRUZXh0QWxpZ24oKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
Ly8gcmVjdAotICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOgotICAgIHsKLSAgICAgICAgTGVuZ3Ro
IHRvcDsKLSAgICAgICAgTGVuZ3RoIHJpZ2h0OwotICAgICAgICBMZW5ndGggYm90dG9tOwotICAg
ICAgICBMZW5ndGggbGVmdDsKLSAgICAgICAgYm9vbCBoYXNDbGlwID0gdHJ1ZTsKLSAgICAgICAg
aWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgaWYgKG1fcGFyZW50U3R5bGUtPmhhc0NsaXAo
KSkgewotICAgICAgICAgICAgICAgIHRvcCA9IG1fcGFyZW50U3R5bGUtPmNsaXBUb3AoKTsKLSAg
ICAgICAgICAgICAgICByaWdodCA9IG1fcGFyZW50U3R5bGUtPmNsaXBSaWdodCgpOwotICAgICAg
ICAgICAgICAgIGJvdHRvbSA9IG1fcGFyZW50U3R5bGUtPmNsaXBCb3R0b20oKTsKLSAgICAgICAg
ICAgICAgICBsZWZ0ID0gbV9wYXJlbnRTdHlsZS0+Y2xpcExlZnQoKTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaGFzQ2xpcCA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IHRvcCA9IHJpZ2h0ID0gYm90dG9tID0gbGVmdCA9IExlbmd0aCgpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgaGFzQ2xpcCA9IGZh
bHNlOwotICAgICAgICAgICAgdG9wID0gcmlnaHQgPSBib3R0b20gPSBsZWZ0ID0gTGVuZ3RoKCk7
Ci0gICAgICAgIH0gZWxzZSBpZiAoIXByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JFQ1QpIHsKLSAgICAgICAgICAgIFJlY3QqIHJlY3Qg
PSBwcmltaXRpdmVWYWx1ZS0+Z2V0UmVjdFZhbHVlKCk7Ci0gICAgICAgICAgICBpZiAoIXJlY3Qp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdG9wID0gY29udmVydFRvTGVu
Z3RoKHJlY3QtPnRvcCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3Ip
OwotICAgICAgICAgICAgcmlnaHQgPSBjb252ZXJ0VG9MZW5ndGgocmVjdC0+cmlnaHQoKSwgc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGJvdHRv
bSA9IGNvbnZlcnRUb0xlbmd0aChyZWN0LT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxlbWVu
dFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGxlZnQgPSBjb252ZXJ0VG9MZW5ndGgo
cmVjdC0+bGVmdCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwot
ICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpICE9IENTU1ZhbHVl
QXV0bykgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUt
PnNldENsaXAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKLSAgICAgICAgbV9zdHlsZS0+c2V0
SGFzQ2xpcChoYXNDbGlwKTsKLSAgICAKLSAgICAgICAgLy8gcmVjdCwgaWRlbnQKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotLy8gbGlzdHMKLSAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVudDoK
LSAgICAgICAgLy8gbGlzdCBvZiBzdHJpbmcsIHVyaSwgY291bnRlciwgYXR0ciwgaQotICAgIHsK
LSAgICAgICAgLy8gRklYTUU6IEluIENTUzMsIGl0IHdpbGwgYmUgcG9zc2libGUgdG8gaW5oZXJp
dCBjb250ZW50LiAgSW4gQ1NTMiBpdCBpcyBub3QuICBUaGlzCi0gICAgICAgIC8vIG5vdGUgaXMg
YSByZW1pbmRlciB0aGF0IGV2ZW50dWFsbHkgImluaGVyaXQiIG5lZWRzIHRvIGJlIHN1cHBvcnRl
ZC4KLQotICAgICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5jbGVh
ckNvbnRlbnQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2
YWx1ZSk7Ci0gICAgICAgIGludCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKLQotICAgICAgICBib29s
IGRpZFNldCA9IGZhbHNlOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7
Ci0gICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSk7Ci0gICAgICAgICAgICBpZiAoaXRlbS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpIHsK
LSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb250ZW50KHN0YXRpY19jYXN0PENTU0ltYWdl
R2VuZXJhdG9yVmFsdWUqPihpdGVtKS0+Z2VuZXJhdGVkSW1hZ2UoKSwgZGlkU2V0KTsKLSAgICAg
ICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzoKLSAgICAgICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29udGVudChjb250ZW50VmFsdWUtPmdldFN0cmluZ1Zh
bHVlKCkuaW1wbCgpLCBkaWRTZXQpOwotICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfQVRUUjogewotICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
Q2FuIGEgbmFtZXNwYWNlIGJlIHNwZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPwotICAgICAgICAg
ICAgICAgICAgICBpZiAobV9zdHlsZS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRVbmlxdWUoKTsKLSAgICAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJlbnRTdHlsZS0+c2V0VW5pcXVl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cihudWxsQXRvbSwgY29u
dGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgbnVsbEF0b20pOwotICAgICAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRDb250ZW50KG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKGF0
dHIpLmltcGwoKSwgZGlkU2V0KTsKLSAgICAgICAgICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgdGhlIGZhY3QgdGhhdCB0aGUgYXR0cmli
dXRlIHZhbHVlIGFmZmVjdHMgdGhlIHN0eWxlCi0gICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0
b3JBdHRycy5hZGQoYXR0ci5sb2NhbE5hbWUoKS5pbXBsKCkpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1VSSTogewotICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRlbnRW
YWx1ZS0+aXNJbWFnZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29udGVudChjYWNoZWRPclBlbmRpbmdGcm9t
VmFsdWUoQ1NTUHJvcGVydHlDb250ZW50LCBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4oY29u
dGVudFZhbHVlKSksIGRpZFNldCk7Ci0gICAgICAgICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUjogewotICAgICAgICAg
ICAgICAgICAgICBDb3VudGVyKiBjb3VudGVyVmFsdWUgPSBjb250ZW50VmFsdWUtPmdldENvdW50
ZXJWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBPd25QdHI8Q291bnRlckNvbnRlbnQ+IGNv
dW50ZXIgPSBhZG9wdFB0cihuZXcgQ291bnRlckNvbnRlbnQoY291bnRlclZhbHVlLT5pZGVudGlm
aWVyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAoRUxpc3RTdHlsZVR5cGUpY291bnRlclZh
bHVlLT5saXN0U3R5bGVOdW1iZXIoKSwgY291bnRlclZhbHVlLT5zZXBhcmF0b3IoKSkpOwotICAg
ICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb250ZW50KGNvdW50ZXIucmVsZWFzZSgpLCBk
aWRTZXQpOwotICAgICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWRpZFNldCkKLSAg
ICAgICAgICAgIG1fc3R5bGUtPmNsZWFyQ29udGVudCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQ6Ci0gICAgICAgIGFwcGx5
Q291bnRlckxpc3Qoc3R5bGUoKSwgdmFsdWUtPmlzVmFsdWVMaXN0KCkgPyBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUxpc3QqPih2YWx1ZSkgOiAwLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENTU1Byb3BlcnR5Q291bnRlclJlc2V0OgotICAgICAgICBhcHBseUNvdW50ZXJMaXN0KHN0
eWxlKCksIHZhbHVlLT5pc1ZhbHVlTGlzdCgpID8gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4o
dmFsdWUpIDogMCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlGb250RmFtaWx5OiB7Ci0gICAgICAgIC8vIGxpc3Qgb2Ygc3RyaW5ncyBhbmQgaWRzCi0gICAg
ICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBwYXJlbnRG
b250RGVzY3JpcHRpb24gPSBtX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAg
ICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVz
Y3JpcHRpb24oKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5
KHBhcmVudEZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkpOwotICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldEZhbWlseShwYXJlbnRGb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHko
KSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNTcGVjaWZpZWRGb250KHBhcmVu
dEZvbnREZXNjcmlwdGlvbi5pc1NwZWNpZmllZEZvbnQoKSk7Ci0gICAgICAgICAgICBpZiAobV9z
dHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAg
ICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVs
c2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGluaXRpYWxE
ZXNjID0gRm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIGFkanVzdCB0aGUgc2l6ZSB0byBhY2NvdW50IGZvciB0aGUgZ2VuZXJpYyBm
YW1pbHkgY2hhbmdlIGZyb20gbW9ub3NwYWNlCi0gICAgICAgICAgICAvLyB0byBub24tbW9ub3Nw
YWNlLgotICAgICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpICYmIGZv
bnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkpCi0gICAgICAgICAgICAgICAgc2V0
Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdvcmQobV9jaGVja2VyLm1f
ZG9jdW1lbnQsIENTU1ZhbHVlWHhTbWFsbCArIGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgp
IC0gMSwgZmFsc2UpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFt
aWx5KGluaXRpYWxEZXNjLmdlbmVyaWNGYW1pbHkoKSk7Ci0gICAgICAgICAgICBpZiAoIWluaXRp
YWxEZXNjLmZpcnN0RmFtaWx5KCkuZmFtaWx5SXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRGYW1pbHkoaW5pdGlhbERlc2MuZmlyc3RGYW1pbHkoKSk7Ci0gICAg
ICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikp
Ci0gICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uID0gbV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIENTU1ZhbHVlTGlz
dCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgaW50
IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotICAgICAgICBGb250RmFtaWx5JiBmaXJzdEZhbWlseSA9
IGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpOwotICAgICAgICBGb250RmFtaWx5KiBjdXJy
RmFtaWx5ID0gMDsKLSAgICAgICAgCi0gICAgICAgIC8vIEJlZm9yZSBtYXBwaW5nIGluIGEgbmV3
IGZvbnQtZmFtaWx5IHByb3BlcnR5LCB3ZSBzaG91bGQgcmVzZXQgdGhlIGdlbmVyaWMgZmFtaWx5
LgotICAgICAgICBib29sIG9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXplID0gZm9udERlc2Ny
aXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKTsKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7Ci0KLSAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0g
PSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwotICAgICAgICAgICAgaWYgKCFpdGVt
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihpdGVtKTsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyBmYWNlOwotICAg
ICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRp
bmdzKCk7Ci0gICAgICAgICAgICBpZiAoY29udGVudFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29u
dGVudFZhbHVlLT5pc0ZvbnRGYW1pbHlWYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBmYWNl
ID0gc3RhdGljX2Nhc3Q8Rm9udEZhbWlseVZhbHVlKj4oY29udGVudFZhbHVlKS0+ZmFtaWx5TmFt
ZSgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUtPnByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UICYmIHNldHRpbmdzKSB7Ci0gICAgICAg
ICAgICAgICAgc3dpdGNoIChjb250ZW50VmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJvZHk6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBmYWNlID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtpdC1zZXJpZiI7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVz
Y3JpcHRpb246OlNlcmlmRmFtaWx5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2Fuc1NlcmlmOgotICAgICAgICAgICAg
ICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LXNhbnMtc2VyaWYiOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9u
OjpTYW5zU2VyaWZGYW1pbHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDdXJzaXZlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgZmFjZSA9ICItd2Via2l0LWN1cnNpdmUiOwotICAgICAgICAgICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpDdXJzaXZl
RmFtaWx5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlRmFudGFzeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2Ug
PSAiLXdlYmtpdC1mYW50YXN5IjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6RmFudGFzeUZhbWlseSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZU1vbm9zcGFjZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSAiLXdlYmtp
dC1tb25vc3BhY2UiOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoIWZhY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjdXJyRmFtaWx5KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZpbGxpbmcgaW4gdGhl
IGZpcnN0IGZhbWlseS4KLSAgICAgICAgICAgICAgICAgICAgZmlyc3RGYW1pbHkuc2V0RmFtaWx5
KGZhY2UpOwotICAgICAgICAgICAgICAgICAgICBmaXJzdEZhbWlseS5hcHBlbmRGYW1pbHkoMCk7
IC8vIFJlbW92ZSBhbnkgaW5oZXJpdGVkIGZhbWlseS1mYWxsYmFjayBsaXN0LgotICAgICAgICAg
ICAgICAgICAgICBjdXJyRmFtaWx5ID0gJmZpcnN0RmFtaWx5OwotICAgICAgICAgICAgICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0SXNTcGVjaWZpZWRGb250KGZvbnREZXNjcmlwdGlvbi5nZW5l
cmljRmFtaWx5KCkgPT0gRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+
IG5ld0ZhbWlseSA9IFNoYXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAg
ICAgICBuZXdGYW1pbHktPnNldEZhbWlseShmYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgY3Vy
ckZhbWlseS0+YXBwZW5kRmFtaWx5KG5ld0ZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAgIGN1
cnJGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgY2FuJ3QgY2FsbCB1c2VGaXhlZERlZmF1
bHRTaXplKCkgdW50aWwgYWxsIG5ldyBmb250IGZhbWlsaWVzIGhhdmUgYmVlbiBhZGRlZAotICAg
ICAgICAvLyBJZiBjdXJyRmFtaWx5IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2V0IGF0IGxlYXN0IG9u
ZSBmYW1pbHkgb24gdGhpcyBkZXNjcmlwdGlvbi4KLSAgICAgICAgaWYgKGN1cnJGYW1pbHkpIHsK
LSAgICAgICAgICAgIGlmIChmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBmb250RGVz
Y3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpICE9IG9sZEZhbWlseVVzZWRGaXhlZERlZmF1
bHRTaXplKQotICAgICAgICAgICAgICAgIHNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgZm9u
dFNpemVGb3JLZXl3b3JkKG1fY2hlY2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZVh4U21hbGwgKyBm
b250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAtIDEsICFvbGRGYW1pbHlVc2VkRml4ZWREZWZh
dWx0U2l6ZSkpOwotCi0gICAgICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9u
KGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRl
eHREZWNvcmF0aW9uOiB7Ci0gICAgICAgIC8vIGxpc3Qgb2YgaWRlbnQKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwodGV4dERlY29yYXRpb24sIFRleHREZWNvcmF0aW9uKQotICAg
ICAgICBpbnQgdCA9IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24oKTsKLSAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgLy8gZG8gbm90aGluZwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBDU1NWYWx1ZUxpc3QgKmxpc3QgPSBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0gICAgICAgICAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3Ro
KCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIENTU1ZhbHVlICppdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjayhpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFs
dWUoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwotICAg
ICAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB0ID0gVEROT05FOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVVu
ZGVybGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHQgfD0gVU5ERVJMSU5FOyBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU92ZXJsaW5lOgotICAgICAgICAgICAg
ICAgICAgICAgICAgdCB8PSBPVkVSTElORTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVMaW5lVGhyb3VnaDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHQgfD0gTElO
RV9USFJPVUdIOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUJsaW5r
OgotICAgICAgICAgICAgICAgICAgICAgICAgdCB8PSBCTElOSzsgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgbV9zdHls
ZS0+c2V0VGV4dERlY29yYXRpb24odCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
YXNlIENTU1Byb3BlcnR5Wm9vbToKLSAgICB7Ci0gICAgICAgIC8vIFJlc2V0IHRoZSB6b29tIGlu
IGVmZmVjdCBiZWZvcmUgd2UgZG8gYW55dGhpbmcuICBUaGlzIGFsbG93cyB0aGUgc2V0Wm9vbSBt
ZXRob2QgdG8gYWNjdXJhdGVseSBjb21wdXRlIGEgbmV3Ci0gICAgICAgIC8vIHpvb20gaW4gZWZm
ZWN0LgotICAgICAgICBtX3N0eWxlLT5zZXRFZmZlY3RpdmVab29tKG1fcGFyZW50U3R5bGUgPyBt
X3BhcmVudFN0eWxlLT5lZmZlY3RpdmVab29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20o
KSk7Ci0gICAgICAgIAotICAgICAgICAvLyBOb3cgd2UgY2FuIGhhbmRsZSBpbmhlcml0IGFuZCBp
bml0aWFsLgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh6b29tLCBab29tKQot
ICAgICAgICAKLSAgICAgICAgLy8gSGFuZGxlIG5vcm1hbC9yZXNldCwgbnVtYmVycyBhbmQgcGVy
Y2VudGFnZXMuCi0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5
cGUoKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
Tm9ybWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlh
bFpvb20oKSk7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlUmVzZXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEVmZmVjdGl2ZVpvb20o
UmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Wm9v
bShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVEb2N1bWVudCkgewotICAgICAgICAgICAg
ZmxvYXQgZG9jWm9vbSA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgp
LT56b29tKCk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRFZmZlY3RpdmVab29tKGRvY1pvb20p
OwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Wm9vbShkb2Nab29tKTsKLSAgICAgICAgfSBlbHNl
IGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgewotICAgICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCi0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Wm9vbShwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAw
LjBmKTsKLSAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKSB7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUo
KSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRab29tKHByaW1pdGl2ZVZhbHVlLT5nZXRG
bG9hdFZhbHVlKCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2ZvbnREaXJ0eSA9
IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0vLyBzaG9ydGhhbmQgcHJvcGVydGllcwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOgotICAgICAgICBpZiAoaXNJbml0aWFsKSB7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5jbGVhckJhY2tncm91bmRMYXllcnMoKTsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJhY2tncm91bmRDb2xvcihDb2xvcigpKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPmluaGVyaXRC
YWNrZ3JvdW5kTGF5ZXJzKCptX3BhcmVudFN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCkpOwotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKG1fcGFyZW50U3R5bGUtPmJhY2tn
cm91bmRDb2xvcigpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2s6Ci0gICAgICAgIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBt
X3N0eWxlLT5jbGVhck1hc2tMYXllcnMoKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbmhlcml0KQot
ICAgICAgICAgICAgbV9zdHlsZS0+aW5oZXJpdE1hc2tMYXllcnMoKm1fcGFyZW50U3R5bGUtPm1h
c2tMYXllcnMoKSk7Ci0gICAgICAgIHJldHVybjsKLQotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6Ci0gICAgICAg
IGlmIChpZCA9PSBDU1NQcm9wZXJ0eUJvcmRlciB8fCBpZCA9PSBDU1NQcm9wZXJ0eUJvcmRlckNv
bG9yKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wQ29sb3IobV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9w
Q29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BDb2xvcigpIDogbV9w
YXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVy
Qm90dG9tQ29sb3IobV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90dG9tQ29sb3IoKS5pc1ZhbGlkKCkg
PyBtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21Db2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29s
b3IoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9yKG1fcGFy
ZW50U3R5bGUtPmJvcmRlckxlZnRDb2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPmJv
cmRlckxlZnRDb2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Qm9yZGVyUmlnaHRDb2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJSaWdo
dENvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRDb2xvcigpOiBt
X3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ug
aWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENv
bG9yKENvbG9yKCkpOyAvLyBSZXNldCB0byBpbnZhbGlkIGNvbG9yIHNvIGN1cnJlbnRDb2xvciBp
cyB1c2VkIGluc3RlYWQuCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9t
Q29sb3IoQ29sb3IoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENv
bG9yKENvbG9yKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0Q29s
b3IoQ29sb3IoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlkID09
IENTU1Byb3BlcnR5Qm9yZGVyIHx8IGlkID09IENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgICAgICBtX3N0
eWxlLT5zZXRCb3JkZXJUb3BTdHlsZShtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BTdHlsZSgpKTsK
LSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0b21TdHlsZShtX3BhcmVudFN0
eWxlLT5ib3JkZXJCb3R0b21TdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRC
b3JkZXJMZWZ0U3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdFN0eWxlKCkpOwotICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0U3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9y
ZGVyUmlnaHRTdHlsZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGlz
SW5pdGlhbCkgewotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFN0eWxlKFJl
bmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Qm9yZGVyQm90dG9tU3R5bGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSgp
KTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0U3R5bGUoUmVuZGVyU3R5
bGU6OmluaXRpYWxCb3JkZXJTdHlsZSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRC
b3JkZXJSaWdodFN0eWxlKFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUoKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5Qm9yZGVy
IHx8IGlkID09IENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BX
aWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKTsKLSAgICAgICAgICAgICAgICBt
X3N0eWxlLT5zZXRCb3JkZXJCb3R0b21XaWR0aChtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21X
aWR0aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgobV9w
YXJlbnRTdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpOwotICAgICAgICAgICAgICAgIG1fc3R5bGUt
PnNldEJvcmRlclJpZ2h0V2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcFdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFs
Qm9yZGVyV2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9t
V2lkdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCgpKTsKLSAgICAgICAgICAgICAg
ICBtX3N0eWxlLT5zZXRCb3JkZXJMZWZ0V2lkdGgoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJX
aWR0aCgpKTsKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodFdpZHRoKFJl
bmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6Ci0gICAg
ICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENv
bG9yKG1fcGFyZW50U3R5bGUtPmJvcmRlclRvcENvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRT
dHlsZS0+Ym9yZGVyVG9wQ29sb3IoKSA6IG1fcGFyZW50U3R5bGUtPmNvbG9yKCkpOwotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVyVG9wU3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyVG9w
U3R5bGUoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BXaWR0aChtX3BhcmVu
dFN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChp
c0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5yZXNldEJvcmRlclRvcCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgotICAgICAgICBpZiAo
aXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodENvbG9yKG1f
cGFyZW50U3R5bGUtPmJvcmRlclJpZ2h0Q29sb3IoKS5pc1ZhbGlkKCkgPyBtX3BhcmVudFN0eWxl
LT5ib3JkZXJSaWdodENvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0U3R5bGUobV9wYXJlbnRTdHlsZS0+Ym9yZGVyUmln
aHRTdHlsZSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclJpZ2h0V2lkdGgobV9w
YXJlbnRTdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5yZXNldEJvcmRlclJpZ2h0KCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgotICAg
ICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJCb3R0
b21Db2xvcihtX3BhcmVudFN0eWxlLT5ib3JkZXJCb3R0b21Db2xvcigpLmlzVmFsaWQoKSA/IG1f
cGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbUNvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigp
KTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbVN0eWxlKG1fcGFyZW50U3R5
bGUtPmJvcmRlckJvdHRvbVN0eWxlKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm9yZGVy
Qm90dG9tV2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKQotICAgICAgICAgICAgbV9zdHlsZS0+cmVz
ZXRCb3JkZXJCb3R0b20oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0OgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRCb3JkZXJMZWZ0Q29sb3IobV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdENvbG9yKCkuaXNW
YWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdENvbG9yKCkgOiBtX3BhcmVudFN0eWxl
LT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckxlZnRTdHlsZShtX3Bh
cmVudFN0eWxlLT5ib3JkZXJMZWZ0U3R5bGUoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRC
b3JkZXJMZWZ0V2lkdGgobV9wYXJlbnRTdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJl
c2V0Qm9yZGVyTGVmdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU1h
cmdpbjoKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
TWFyZ2luVG9wKG1fcGFyZW50U3R5bGUtPm1hcmdpblRvcCgpKTsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldE1hcmdpbkJvdHRvbShtX3BhcmVudFN0eWxlLT5tYXJnaW5Cb3R0b20oKSk7Ci0gICAg
ICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5MZWZ0KG1fcGFyZW50U3R5bGUtPm1hcmdpbkxlZnQo
KSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJnaW5SaWdodChtX3BhcmVudFN0eWxlLT5t
YXJnaW5SaWdodCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0g
ICAgICAgICAgICBtX3N0eWxlLT5yZXNldE1hcmdpbigpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIHsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdUb3AobV9wYXJlbnRTdHlsZS0+cGFkZGluZ1RvcCgp
KTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdCb3R0b20obV9wYXJlbnRTdHlsZS0+
cGFkZGluZ0JvdHRvbSgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFBhZGRpbmdMZWZ0KG1f
cGFyZW50U3R5bGUtPnBhZGRpbmdMZWZ0KCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGFk
ZGluZ1JpZ2h0KG1fcGFyZW50U3R5bGUtPnBhZGRpbmdSaWdodCgpKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5yZXNldFBhZGRp
bmcoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgotICAgICAg
ICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uID0gbV9wYXJlbnRTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRMaW5lSGVpZ2h0KG1fcGFyZW50U3R5bGUtPmxpbmVIZWlnaHQoKSk7Ci0gICAg
ICAgICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7Ci0gICAgICAgICAgICBpZiAobV9zdHlsZS0+
c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgbV9m
b250RGlydHkgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAg
ICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdz
KCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2V0dGluZ3MpOyAvLyBJZiB3ZSdyZSBkb2luZyBzdHls
ZSByZXNvbHV0aW9uLCB0aGlzIGRvY3VtZW50IHNob3VsZCBhbHdheXMgYmUgaW4gYSBmcmFtZSBh
bmQgdGh1cyBoYXZlIHNldHRpbmdzCi0gICAgICAgICAgICBpZiAoIXNldHRpbmdzKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3Jp
cHRpb247Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250
RGVzY3JpcHRpb246OlN0YW5kYXJkRmFtaWx5KTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5mb250UmVuZGVyaW5nTW9kZSgpKTsKLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChtX2NoZWNrZXIubV9kb2N1
bWVudC0+cHJpbnRpbmcoKSk7Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0YW5k
YXJkRm9udEZhbWlseSA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpLT5zdGFuZGFy
ZEZvbnRGYW1pbHkoKTsKLSAgICAgICAgICAgIGlmICghc3RhbmRhcmRGb250RmFtaWx5LmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLnNl
dEZhbWlseShzdGFuZGFyZEZvbnRGYW1pbHkpOwotICAgICAgICAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5maXJzdEZhbWlseSgpLmFwcGVuZEZhbWlseSgwKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZShDU1NWYWx1ZU1lZGl1bSAtIENT
U1ZhbHVlWHhTbWFsbCArIDEpOwotICAgICAgICAgICAgc2V0Rm9udFNpemUoZm9udERlc2NyaXB0
aW9uLCBmb250U2l6ZUZvcktleXdvcmQobV9jaGVja2VyLm1fZG9jdW1lbnQsIENTU1ZhbHVlTWVk
aXVtLCBmYWxzZSkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TGluZUhlaWdodChSZW5kZXJT
dHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1
ZSA9IDA7Ci0gICAgICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnRE
ZXNjcmlwdGlvbikpCi0gICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAg
ICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRM
aW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKLSAgICAgICAgICAg
IG1fbGluZUhlaWdodFZhbHVlID0gMDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgRm9udERl
c2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKLSAgICAgICAgICAgIFJlbmRlclRoZW1lOjpkZWZh
dWx0VGhlbWUoKS0+c3lzdGVtRm9udChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERl
c2NyaXB0aW9uKTsKLQotICAgICAgICAgICAgLy8gRG91YmxlLWNoZWNrIGFuZCBzZWUgaWYgdGhl
IHRoZW1lIGRpZCBhbnl0aGluZy4gIElmIG5vdCwgZG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBm
b250LgotICAgICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSByZW5kZXJpbmcgbW9kZSBhbmQgcHJp
bnRlciBmb250IHNldHRpbmdzIGFyZSB1cGRhdGVkLgotICAgICAgICAgICAgICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRp
b24sIHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhh
dmUgc2V0dGluZ3MKLSAgICAgICAgICAgICAgICBpZiAoIXNldHRpbmdzKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRl
cmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOwotICAgICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9udChtX2NoZWNrZXIubV9kb2N1bWVudC0+
cHJpbnRpbmcoKSk7Ci0gICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUg
em9vbSBmYWN0b3IuCi0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShtX2NoZWNrZXIubV9kb2N1bWVu
dCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnRE
ZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVzZVNWR1pvb21SdWxlcykpOwotICAgICAgICAg
ICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkK
LSAgICAgICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc0ZvbnRWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBG
b250VmFsdWUgKmZvbnQgPSBzdGF0aWNfY2FzdDxGb250VmFsdWUqPih2YWx1ZSk7Ci0gICAgICAg
ICAgICBpZiAoIWZvbnQtPnN0eWxlIHx8ICFmb250LT52YXJpYW50IHx8ICFmb250LT53ZWlnaHQg
fHwKLSAgICAgICAgICAgICAgICAgIWZvbnQtPnNpemUgfHwgIWZvbnQtPmxpbmVIZWlnaHQgfHwg
IWZvbnQtPmZhbWlseSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBhcHBs
eVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBmb250LT5zdHlsZS5nZXQoKSk7Ci0gICAg
ICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIGZvbnQtPnZhcmlh
bnQuZ2V0KCkpOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWln
aHQsIGZvbnQtPndlaWdodC5nZXQoKSk7Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1By
b3BlcnR5Rm9udFNpemUsIGZvbnQtPnNpemUuZ2V0KCkpOwotCi0gICAgICAgICAgICBtX2xpbmVI
ZWlnaHRWYWx1ZSA9IGZvbnQtPmxpbmVIZWlnaHQuZ2V0KCk7Ci0KLSAgICAgICAgICAgIGFwcGx5
UHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBmb250LT5mYW1pbHkuZ2V0KCkpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUxp
c3RTdHlsZToKLSAgICAgICAgaWYgKGlzSW5oZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+
c2V0TGlzdFN0eWxlVHlwZShtX3BhcmVudFN0eWxlLT5saXN0U3R5bGVUeXBlKCkpOwotICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0TGlzdFN0eWxlSW1hZ2UobV9wYXJlbnRTdHlsZS0+bGlzdFN0eWxl
SW1hZ2UoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaXN0U3R5bGVQb3NpdGlvbihtX3Bh
cmVudFN0eWxlLT5saXN0U3R5bGVQb3NpdGlvbigpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHlsZVR5cGUo
UmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVUeXBlKCkpOwotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0TGlzdFN0eWxlSW1hZ2UoUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVJbWFnZSgp
KTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHlsZVBvc2l0aW9uKFJlbmRlclN0eWxl
Ojppbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lV2lkdGgobV9wYXJlbnRTdHlsZS0+b3V0
bGluZVdpZHRoKCkpOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZUNvbG9yKG1fcGFy
ZW50U3R5bGUtPm91dGxpbmVDb2xvcigpLmlzVmFsaWQoKSA/IG1fcGFyZW50U3R5bGUtPm91dGxp
bmVDb2xvcigpIDogbV9wYXJlbnRTdHlsZS0+Y29sb3IoKSk7Ci0gICAgICAgICAgICBtX3N0eWxl
LT5zZXRPdXRsaW5lU3R5bGUobV9wYXJlbnRTdHlsZS0+b3V0bGluZVN0eWxlKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJl
c2V0T3V0bGluZSgpOwotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBDU1MzIFByb3BlcnRpZXMK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZTogewotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTChhcHBlYXJhbmNlLCBBcHBlYXJhbmNlKQotICAgICAgICBpZiAo
IXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0eWxlLT5z
ZXRBcHBlYXJhbmNlKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZTogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAg
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2Us
IGJvcmRlckltYWdlLCBCb3JkZXJJbWFnZSkKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NP
TkQoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIG1hc2tCb3hJbWFnZSwgTWFza0JveElt
YWdlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbCkg
ewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVySW1hZ2UsIEJvcmRlckltYWdlLCBOaW5lUGllY2VJbWFnZSkKLSAgICAgICAg
ICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tC
b3hJbWFnZSwgTWFza0JveEltYWdlLCBOaW5lUGllY2VJbWFnZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIE5pbmVQaWVjZUltYWdlIGltYWdlOwotICAgICAgICBt
YXBOaW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgdmFsdWUsIGltYWdlKTsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKQotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVySW1hZ2UoaW1hZ2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX3N0eWxlLT5zZXRNYXNrQm94SW1hZ2UoaW1hZ2UpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyUmFkaXVzOgotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKG1fcGFyZW50U3R5bGUtPmJvcmRl
clRvcExlZnRSYWRpdXMoKSk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BSaWdo
dFJhZGl1cyhtX3BhcmVudFN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpKTsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbUxlZnRSYWRpdXMobV9wYXJlbnRTdHlsZS0+Ym9y
ZGVyQm90dG9tTGVmdFJhZGl1cygpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJv
dHRvbVJpZ2h0UmFkaXVzKG1fcGFyZW50U3R5bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luaXRpYWwp
IHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0Qm9yZGVyUmFkaXVzKCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRmFsbCB0aHJvdWdoCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
clRvcFJpZ2h0UmFkaXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFk
aXVzOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czogewotICAg
ICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENT
U1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgYm9yZGVyVG9wTGVmdFJhZGl1cywgQm9yZGVy
VG9wTGVmdFJhZGl1cykKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVy
dHlCb3JkZXJUb3BSaWdodFJhZGl1cywgYm9yZGVyVG9wUmlnaHRSYWRpdXMsIEJvcmRlclRvcFJp
Z2h0UmFkaXVzKQotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbUxlZnRSYWRpdXMsIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIEJvcmRlckJvdHRv
bUxlZnRSYWRpdXMpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMsIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzLCBCb3JkZXJC
b3R0b21SaWdodFJhZGl1cykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxf
Q09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgQm9yZGVyVG9w
TGVmdFJhZGl1cywgQm9yZGVyUmFkaXVzKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09O
RF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsIEJvcmRlclRvcFJp
Z2h0UmFkaXVzLCBCb3JkZXJSYWRpdXMpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05E
X1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBCb3JkZXJCb3R0
b21MZWZ0UmFkaXVzLCBCb3JkZXJSYWRpdXMpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9D
T05EX1dJVEhfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgQm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMsIEJvcmRlclJhZGl1cykKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUo
KTsKLSAgICAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQo
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBMZW5ndGggcmFkaXVzV2lkdGg7Ci0g
ICAgICAgIExlbmd0aCByYWRpdXNIZWlnaHQ7Ci0gICAgICAgIGlmIChwYWlyLT5maXJzdCgpLT5w
cmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAg
ICAgICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFs
dWUoKSwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJhZGl1c1dpZHRoID0g
TGVuZ3RoKG1heChpbnRNaW5Gb3JMZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPmZp
cnN0KCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29t
RmFjdG9yKSkpLCBGaXhlZCk7Ci0gICAgICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+cHJpbWl0aXZl
VHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAg
IHJhZGl1c0hlaWdodCA9IExlbmd0aChwYWlyLT5zZWNvbmQoKS0+Z2V0RG91YmxlVmFsdWUoKSwg
UGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0
aChtYXgoaW50TWluRm9yTGVuZ3RoLCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWlyLT5zZWNvbmQo
KS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0
b3IpKSksIEZpeGVkKTsKLSAgICAgICAgaW50IHdpZHRoID0gcmFkaXVzV2lkdGgucmF3VmFsdWUo
KTsKLSAgICAgICAgaW50IGhlaWdodCA9IHJhZGl1c0hlaWdodC5yYXdWYWx1ZSgpOwotICAgICAg
ICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmICh3aWR0aCA9PSAwKQotICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gcmFkaXVzV2lk
dGg7IC8vIE51bGwgb3V0IHRoZSBvdGhlciB2YWx1ZS4KLSAgICAgICAgZWxzZSBpZiAoaGVpZ2h0
ID09IDApCi0gICAgICAgICAgICByYWRpdXNXaWR0aCA9IHJhZGl1c0hlaWdodDsgLy8gTnVsbCBv
dXQgdGhlIG90aGVyIHZhbHVlLgotCi0gICAgICAgIExlbmd0aFNpemUgc2l6ZShyYWRpdXNXaWR0
aCwgcmFkaXVzSGVpZ2h0KTsKLSAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6Ci0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhzaXplKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1czoKLSAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhzaXplKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21MZWZ0UmFkaXVzOgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckJvdHRvbUxl
ZnRSYWRpdXMoc2l6ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6Ci0gICAgICAgICAgICAgICAgbV9z
dHlsZS0+c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoc2l6ZSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEJvcmRlclJhZGl1cyhzaXplKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZz
ZXQ6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG91dGxpbmVPZmZzZXQsIE91
dGxpbmVPZmZzZXQpCi0gICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVPZmZzZXQocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29t
RmFjdG9yKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJlbmRl
cmluZzogewotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gbV9zdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIAotICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFRleHRSZW5kZXJpbmdNb2RlKG1fcGFyZW50U3R5bGUtPmZv
bnREZXNjcmlwdGlvbigpLnRleHRSZW5kZXJpbmdNb2RlKCkpOwotICAgICAgICBlbHNlIGlmIChp
c0luaXRpYWwpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0VGV4dFJlbmRlcmluZ01v
ZGUoQXV0b1RleHRSZW5kZXJpbmcpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICgh
cHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldFRleHRSZW5kZXJpbmdNb2RlKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pKQotICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVlOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0U2hhZG93OgotICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3hTaGFkb3c6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdzogewot
ICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVy
dHlUZXh0U2hhZG93KQotICAgICAgICAgICAgICAgIHJldHVybiBtX3N0eWxlLT5zZXRUZXh0U2hh
ZG93KG1fcGFyZW50U3R5bGUtPnRleHRTaGFkb3coKSA/IG5ldyBTaGFkb3dEYXRhKCptX3BhcmVu
dFN0eWxlLT50ZXh0U2hhZG93KCkpIDogMCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdHlsZS0+
c2V0Qm94U2hhZG93KG1fcGFyZW50U3R5bGUtPmJveFNoYWRvdygpID8gbmV3IFNoYWRvd0RhdGEo
Km1fcGFyZW50U3R5bGUtPmJveFNoYWRvdygpKSA6IDApOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUpIC8vIGluaXRpYWwgfCBub25lCi0gICAgICAg
ICAgICByZXR1cm4gaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93ID8gbV9zdHlsZS0+c2V0VGV4
dFNoYWRvdygwKSA6IG1fc3R5bGUtPnNldEJveFNoYWRvdygwKTsKLQotICAgICAgICBpZiAoIXZh
bHVlLT5pc1ZhbHVlTGlzdCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIENTU1Zh
bHVlTGlzdCAqbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKLSAgICAg
ICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogY3VyclZhbHVlID0gbGlzdC0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjayhpKTsKLSAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1No
YWRvd1ZhbHVlKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBTaGFk
b3dWYWx1ZSogaXRlbSA9IHN0YXRpY19jYXN0PFNoYWRvd1ZhbHVlKj4obGlzdC0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjayhpKSk7Ci0gICAgICAgICAgICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVM
ZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAg
ICAgICAgIGludCB5ID0gaXRlbS0+eS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgaW50IGJsdXIgPSBpdGVtLT5i
bHVyID8gaXRlbS0+Ymx1ci0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUsIHpvb21GYWN0b3IpIDogMDsKLSAgICAgICAgICAgIGludCBzcHJlYWQgPSBpdGVtLT5z
cHJlYWQgPyBpdGVtLT5zcHJlYWQtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlLCB6b29tRmFjdG9yKSA6IDA7Ci0gICAgICAgICAgICBTaGFkb3dTdHlsZSBzaGFk
b3dTdHlsZSA9IGl0ZW0tPnN0eWxlICYmIGl0ZW0tPnN0eWxlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlSW5zZXQgPyBJbnNldCA6IE5vcm1hbDsKLSAgICAgICAgICAgIENvbG9yIGNvbG9yOwotICAg
ICAgICAgICAgaWYgKGl0ZW0tPmNvbG9yKQotICAgICAgICAgICAgICAgIGNvbG9yID0gZ2V0Q29s
b3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+Y29sb3IuZ2V0KCkpOwotICAgICAgICAgICAgU2hh
ZG93RGF0YSogc2hhZG93RGF0YSA9IG5ldyBTaGFkb3dEYXRhKHgsIHksIGJsdXIsIHNwcmVhZCwg
c2hhZG93U3R5bGUsIGlkID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBjb2xvci5pc1Zh
bGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgICAgICAgICBpZiAoaWQg
PT0gQ1NTUHJvcGVydHlUZXh0U2hhZG93KQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFRl
eHRTaGFkb3coc2hhZG93RGF0YSwgaSAhPSAwKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBtX3N0eWxlLT5zZXRCb3hTaGFkb3coc2hhZG93RGF0YSwgaSAhPSAwKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3hSZWZsZWN0OiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJveFJlZmxl
Y3QsIEJveFJlZmxlY3QpCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkgewotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Qm94UmVmbGVjdChSZW5kZXJTdHlsZTo6aW5pdGlhbEJveFJlZmxlY3Qo
KSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlm
ICghdmFsdWUtPmlzUmVmbGVjdFZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgQ1NTUmVmbGVjdFZhbHVlKiByZWZsZWN0VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NSZWZsZWN0
VmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IHJlZmxlY3Rp
b24gPSBTdHlsZVJlZmxlY3Rpb246OmNyZWF0ZSgpOwotICAgICAgICByZWZsZWN0aW9uLT5zZXRE
aXJlY3Rpb24ocmVmbGVjdFZhbHVlLT5kaXJlY3Rpb24oKSk7Ci0gICAgICAgIGlmIChyZWZsZWN0
VmFsdWUtPm9mZnNldCgpKSB7Ci0gICAgICAgICAgICBpbnQgdHlwZSA9IHJlZmxlY3RWYWx1ZS0+
b2Zmc2V0KCktPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgICAgICByZWZsZWN0aW9u
LT5zZXRPZmZzZXQoTGVuZ3RoKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmdldERvdWJsZVZhbHVl
KCksIFBlcmNlbnQpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZWZsZWN0
aW9uLT5zZXRPZmZzZXQoTGVuZ3RoKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbXB1dGVMZW5n
dGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwg
Rml4ZWQpKTsKLSAgICAgICAgfQotICAgICAgICBOaW5lUGllY2VJbWFnZSBtYXNrOwotICAgICAg
ICBtYXBOaW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2sp
OwotICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKG1hc2spOwotICAgICAgICAKLSAgICAgICAg
bV9zdHlsZS0+c2V0Qm94UmVmbGVjdChyZWZsZWN0aW9uLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6Ci0gICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKG9wYWNpdHksIE9wYWNpdHkpCi0gICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAgIHJldHVybjsgLy8gRXJyb3IgY2Fz
ZS4KLSAgICAgICAgLy8gQ2xhbXAgb3BhY2l0eSB0byB0aGUgcmFuZ2UgMC0xCi0gICAgICAgIG1f
c3R5bGUtPnNldE9wYWNpdHkobWluKDEuMGYsIG1heCgwLjBmLCBwcmltaXRpdmVWYWx1ZS0+Z2V0
RmxvYXRWYWx1ZSgpKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveEFsaWduOgotICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
Ym94QWxpZ24sIEJveEFsaWduKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBFQm94QWxpZ25tZW50IGJveEFsaWdubWVudCA9ICpwcmlt
aXRpdmVWYWx1ZTsKLSAgICAgICAgaWYgKGJveEFsaWdubWVudCAhPSBCSlVTVElGWSkKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJveEFsaWduKGJveEFsaWdubWVudCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVNyYzogLy8gT25seSB1c2VkIGluIEBmb250
LWZhY2UgcnVsZXMuCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29k
ZVJhbmdlOiAvLyBPbmx5IHVzZWQgaW4gQGZvbnQtZmFjZSBydWxlcy4KLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6Ci0gICAgICAg
IEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJhY2tmYWNlVmlzaWJpbGl0eSwgQmFja2ZhY2VW
aXNpYmlsaXR5KQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRCYWNrZmFjZVZpc2liaWxpdHkoKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlVmlzaWJsZSkgPyBCYWNrZmFjZVZpc2liaWxpdHlWaXNpYmxlIDogQmFja2ZhY2VW
aXNpYmlsaXR5SGlkZGVuKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRCb3hEaXJlY3Rpb246Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FO
RF9QUklNSVRJVkUoYm94RGlyZWN0aW9uLCBCb3hEaXJlY3Rpb24pCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUoYm94TGluZXMsIEJveExpbmVzKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKLSAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShib3hPcmllbnQsIEJveE9y
aWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNr
OgotICAgIHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94UGFjaywgQm94
UGFjaykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgRUJveEFsaWdubWVudCBib3hQYWNrID0gKnByaW1pdGl2ZVZhbHVlOwotICAgICAg
ICBpZiAoYm94UGFjayAhPSBCU1RSRVRDSCAmJiBib3hQYWNrICE9IEJCQVNFTElORSkKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldEJveFBhY2soYm94UGFjayk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXg6Ci0gICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKGJveEZsZXgsIEJveEZsZXgpCi0gICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikKLSAgICAgICAgICAgIHJldHVybjsgLy8gRXJyb3IgY2FzZS4K
LSAgICAgICAgbV9zdHlsZS0+c2V0Qm94RmxleChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1
ZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4
R3JvdXA6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJveEZsZXhHcm91cCwg
Qm94RmxleEdyb3VwKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlIHx8IHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCi0g
ICAgICAgICAgICByZXR1cm47IC8vIEVycm9yIGNhc2UuCi0gICAgICAgIG1fc3R5bGUtPnNldEJv
eEZsZXhHcm91cCgodW5zaWduZWQgaW50KShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGlu
YWxHcm91cDoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94T3JkaW5hbEdy
b3VwLCBCb3hPcmRpbmFsR3JvdXApCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgcHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikKLSAgICAgICAgICAgIHJldHVybjsgLy8gRXJyb3IgY2FzZS4KLSAgICAgICAgbV9zdHls
ZS0+c2V0Qm94T3JkaW5hbEdyb3VwKCh1bnNpZ25lZCBpbnQpKHByaW1pdGl2ZVZhbHVlLT5nZXRE
b3VibGVWYWx1ZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94
U2l6aW5nOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3hTaXppbmcsIEJv
eFNpemluZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ29u
dGVudEJveCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJveFNpemluZyhDT05URU5UX0JPWCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJveFNpemluZyhCT1JERVJf
Qk9YKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5D
b3VudDogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBpZiAobV9wYXJl
bnRTdHlsZS0+aGFzQXV0b0NvbHVtbkNvdW50KCkpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+
c2V0SGFzQXV0b0NvbHVtbkNvdW50KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Q29sdW1uQ291bnQobV9wYXJlbnRTdHlsZS0+Y29sdW1uQ291bnQoKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsIHx8IHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykgewotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbkNvdW50KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uQ291bnQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgc2hvcnQ+KHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcDogewot
ICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRTdHlsZS0+
aGFzTm9ybWFsQ29sdW1uR2FwKCkpCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzTm9y
bWFsQ29sdW1uR2FwKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHls
ZS0+c2V0Q29sdW1uR2FwKG1fcGFyZW50U3R5bGUtPmNvbHVtbkdhcCgpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwgfHwgcHJpbWl0aXZlVmFsdWUt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dEhhc05vcm1hbENvbHVtbkdhcCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIG1fc3R5bGUtPnNldENvbHVtbkdhcChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0
aEZsb2F0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuOiB7
Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGNvbHVtblNwYW4sIENvbHVtblNw
YW4pCi0gICAgICAgIG1fc3R5bGUtPnNldENvbHVtblNwYW4ocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVBbGwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aDogewotICAgICAgICBpZiAoaXNJbmhlcml0KSB7
Ci0gICAgICAgICAgICBpZiAobV9wYXJlbnRTdHlsZS0+aGFzQXV0b0NvbHVtbldpZHRoKCkpCi0g
ICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgobV9wYXJl
bnRTdHlsZS0+Y29sdW1uV2lkdGgoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlQXV0bykgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbV9zdHlsZS0+c2V0Q29s
dW1uV2lkdGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlOgotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoY29sdW1uUnVsZVN0
eWxlLCBDb2x1bW5SdWxlU3R5bGUsIEJvcmRlclN0eWxlKQotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3JlOgotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFX1dJVEhfVkFMVUUoY29sdW1uQnJlYWtC
ZWZvcmUsIENvbHVtbkJyZWFrQmVmb3JlLCBQYWdlQnJlYWspCi0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRV9XSVRIX1ZBTFVFKGNvbHVtbkJyZWFr
QWZ0ZXIsIENvbHVtbkJyZWFrQWZ0ZXIsIFBhZ2VCcmVhaykKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0luc2lkZTogewotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTF9XSVRIX1ZBTFVFKGNvbHVtbkJyZWFrSW5zaWRlLCBDb2x1
bW5CcmVha0luc2lkZSwgUGFnZUJyZWFrKQotICAgICAgICBFUGFnZUJyZWFrIHBiID0gKnByaW1p
dGl2ZVZhbHVlOwotICAgICAgICBpZiAocGIgIT0gUEJBTFdBWVMpCi0gICAgICAgICAgICBtX3N0
eWxlLT5zZXRDb2x1bW5CcmVha0luc2lkZShwYik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgotICAgICAgICBpZiAoaXNJbmhl
cml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5SdWxlQ29sb3IobV9wYXJlbnRT
dHlsZS0+Y29sdW1uUnVsZUNvbG9yKCkuaXNWYWxpZCgpID8gbV9wYXJlbnRTdHlsZS0+Y29sdW1u
UnVsZUNvbG9yKCkgOiBtX3BhcmVudFN0eWxlLT5jb2xvcigpKTsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldENvbHVtblJ1bGVTdHlsZShtX3BhcmVudFN0eWxlLT5jb2x1bW5SdWxlU3R5bGUoKSk7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5SdWxlV2lkdGgobV9wYXJlbnRTdHlsZS0+
Y29sdW1uUnVsZVdpZHRoKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlh
bCkKLSAgICAgICAgICAgIG1fc3R5bGUtPnJlc2V0Q29sdW1uUnVsZSgpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6Ci0gICAgICAgIGlmIChpc0lu
aGVyaXQpIHsKLSAgICAgICAgICAgIGlmIChtX3BhcmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uV2lk
dGgoKSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5XaWR0
aChtX3BhcmVudFN0eWxlLT5jb2x1bW5XaWR0aCgpKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNl
dENvbHVtbkNvdW50KG1fcGFyZW50U3R5bGUtPmNvbHVtbkNvdW50KCkpOwotICAgICAgICB9IGVs
c2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVt
bldpZHRoKCk7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5Db3VudChSZW5kZXJTdHls
ZTo6aW5pdGlhbENvbHVtbkNvdW50KCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZToKLSAgICAgICAgaWYgKHZhbHVlVHlwZSAh
PSBDU1NWYWx1ZTo6Q1NTX0lOSEVSSVQgfHwgIW1fcGFyZW50Tm9kZSkgcmV0dXJuOwotICAgICAg
ICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVEaXJl
Y3Rpb24oKSk7Ci0gICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNyZW1lbnQobV9wYXJlbnRT
dHlsZS0+bWFycXVlZUluY3JlbWVudCgpKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNw
ZWVkKG1fcGFyZW50U3R5bGUtPm1hcnF1ZWVTcGVlZCgpKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0
TWFycXVlZUxvb3BDb3VudChtX3BhcmVudFN0eWxlLT5tYXJxdWVlTG9vcENvdW50KCkpOwotICAg
ICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlQmVoYXZpb3IobV9wYXJlbnRTdHlsZS0+bWFycXVlZUJl
aGF2aW9yKCkpOwotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKFdDU1MpCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wOgotI2VuZGlmCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVSZXBldGl0aW9uOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKG1hcnF1ZWVMb29wQ291bnQsIE1hcnF1ZWVMb29wQ291bnQpCi0gICAgICAgIGlmICghcHJp
bWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0TWFycXVlZUxvb3BDb3VudCgtMSk7IC8vIC0xIG1lYW5zIHJlcGVhdCBmb3JldmVyLgot
ICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVl
ZUxvb3BDb3VudChwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0jaWYgRU5BQkxFKFdDU1MpCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdhcE1hcnF1
ZWVTcGVlZDoKLSNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQ6
IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFycXVlZVNwZWVkLCBNYXJx
dWVlU3BlZWQpICAgICAgCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAg
ICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVTbG93OgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRNYXJxdWVlU3BlZWQoNTAwKTsgLy8gNTAwIG1zZWMuCi0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgICAgICAg
ICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZCg4NSk7IC8vIDg1bXNlYy4gVGhlIFdpbklF
IGRlZmF1bHQuCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVGYXN0OgotICAgICAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVl
U3BlZWQoMTApOyAvLyAxMG1zZWMuIFN1cGVyIGZhc3QuCi0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKQotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDEwMDAgKiBwcmltaXRpdmVWYWx1ZS0+
Z2V0SW50VmFsdWUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRp
dmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NUykKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldE1hcnF1ZWVTcGVlZChwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpIC8vIEZvciBzY3JvbGxhbW91bnQgc3VwcG9ydC4KLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZChwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFs
dWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVJbmNyZW1lbnQ6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
bWFycXVlZUluY3JlbWVudCwgTWFycXVlZUluY3JlbWVudCkKLSAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgotICAgICAgICAg
ICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgxLCBGaXhlZCkp
OyAvLyAxcHguCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1
ZWVJbmNyZW1lbnQoTGVuZ3RoKDYsIEZpeGVkKSk7IC8vIDZweC4gVGhlIFdpbklFIGRlZmF1bHQu
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVMYXJnZToKLSAgICAgICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVu
dChMZW5ndGgoMzYsIEZpeGVkKSk7IC8vIDM2cHguCi0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
Ym9vbCBvayA9IHRydWU7Ci0gICAgICAgICAgICBMZW5ndGggbCA9IGNvbnZlcnRUb0xlbmd0aChw
cmltaXRpdmVWYWx1ZSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCAxLCAmb2spOwotICAg
ICAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcnF1ZWVJbmNy
ZW1lbnQobCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNpZiBFTkFCTEUo
V0NTUykKLSAgICBjYXNlIENTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlOgotI2VuZGlmCi0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZToKLSAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShtYXJxdWVlQmVoYXZpb3IsIE1hcnF1ZWVCZWhh
dmlvcikgICAgICAKLSAgICAgICAgcmV0dXJuOwotI2lmIEVOQUJMRShXQ1NTKQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTChtYXJxdWVlRGlyZWN0aW9uLCBNYXJxdWVlRGlyZWN0aW9uKQotICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAg
IHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVMdHI6Ci0gICAgICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlv
bihNUklHSFQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZVJ0bDoKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXRNYXJxdWVlRGlyZWN0aW9uKE1M
RUZUKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbigqcHJpbWl0aXZlVmFsdWUp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybjsKLSNlbmRpZgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGly
ZWN0aW9uOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZF
KG1hcnF1ZWVEaXJlY3Rpb24sIE1hcnF1ZWVEaXJlY3Rpb24pCi0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWc6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodXNlckRyYWcsIFVzZXJEcmFnKSAgICAgIAotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnk6Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUodXNlck1vZGlmeSwg
VXNlck1vZGlmeSkgICAgICAKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRVc2VyU2VsZWN0OgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRf
UFJJTUlUSVZFKHVzZXJTZWxlY3QsIFVzZXJTZWxlY3QpICAgICAgCi0gICAgICAgIHJldHVybjsK
LQotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3c6IHsKLSAgICAgICAgLy8gVGhpcyBw
cm9wZXJ0eSBpcyBzdXBwb3J0ZWQgYnkgV2luSUUsIGFuZCBzbyB3ZSBsZWF2ZSBvZmYgdGhlICIt
d2Via2l0LSIgaW4gb3JkZXIgdG8KLSAgICAgICAgLy8gd29yayB3aXRoIFdpbklFLXNwZWNpZmlj
IHBhZ2VzIHRoYXQgdXNlIHRoZSBwcm9wZXJ0eS4KLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwodGV4dE92ZXJmbG93LCBUZXh0T3ZlcmZsb3cpCi0gICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBtX3N0eWxlLT5zZXRUZXh0T3ZlcmZsb3cocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVFbGxpcHNpcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIHsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpbkJlZm9yZUNvbGxhcHNl
KG1fcGFyZW50U3R5bGUtPm1hcmdpbkJlZm9yZUNvbGxhcHNlKCkpOwotICAgICAgICAgICAgbV9z
dHlsZS0+c2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShtX3BhcmVudFN0eWxlLT5tYXJnaW5BZnRlckNv
bGxhcHNlKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0TWFyZ2luQmVmb3JlQ29sbGFwc2UoTUNPTExBUFNFKTsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldE1hcmdpbkFmdGVyQ29sbGFwc2UoTUNPTExBUFNFKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Ub3BDb2xsYXBzZToKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BS
SU1JVElWRShtYXJnaW5CZWZvcmVDb2xsYXBzZSwgTWFyZ2luQmVmb3JlQ29sbGFwc2UpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBz
ZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFwc2U6Ci0gICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJVkUobWFyZ2luQWZ0ZXJD
b2xsYXBzZSwgTWFyZ2luQWZ0ZXJDb2xsYXBzZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXA6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwobGluZUNsYW1wLCBMaW5lQ2xhbXApCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFs
dWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRMaW5lQ2xhbXAoTGluZUNs
YW1wVmFsdWUocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKSwgTGluZUNsYW1wTGluZUNvdW50KSk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBMaW5lQ2xhbXBQZXJjZW50YWdl
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEhp
Z2hsaWdodDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChoaWdobGlnaHQs
IEhpZ2hsaWdodCk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBD
U1NWYWx1ZU5vbmUpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIaWdobGlnaHQobnVsbEF0b20p
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIaWdobGlnaHQocHJpbWl0
aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKGh5cGhlbnMsIEh5cGhlbnMpOwotICAgICAgICBtX3N0eWxlLT5zZXRIeXBo
ZW5zKCpwcmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcjogewotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChoeXBoZW5hdGlvblN0cmluZywgSHlwaGVuYXRpb25TdHJpbmcpOwot
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQot
ICAgICAgICAgICAgbV9zdHlsZS0+c2V0SHlwaGVuYXRpb25TdHJpbmcobnVsbEF0b20pOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIeXBoZW5hdGlvblN0cmluZyhwcmlt
aXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZTogewotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTChoeXBoZW5hdGlvbkxvY2FsZSwgSHlwaGVuYXRpb25Mb2Nh
bGUpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVB
dXRvKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SHlwaGVuYXRpb25Mb2NhbGUobnVsbEF0b20p
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIeXBoZW5hdGlvbkxvY2Fs
ZShwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdDogewotICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTChib3JkZXJGaXQsIEJvcmRlckZpdCk7Ci0gICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUJvcmRlcikKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldEJvcmRlckZpdChCb3JkZXJGaXRCb3JkZXIpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRCb3JkZXJGaXQoQm9yZGVyRml0TGluZXMpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFk
anVzdDogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0U2l6ZUFkanVz
dCwgVGV4dFNpemVBZGp1c3QpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUgfHwgIXByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNldFRleHRT
aXplQWRqdXN0KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0byk7Ci0g
ICAgICAgIG1fZm9udERpcnR5ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5OgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHRleHRTZWN1cml0eSwgVGV4dFNlY3VyaXR5KQot
ICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbjogewotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChkYXNoYm9hcmRSZWdpb25zLCBEYXNoYm9hcmRSZWdpb25zKQotICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldERhc2hib2FyZFJlZ2lvbnMoUmVuZGVyU3R5bGU6Om5vbmVEYXNo
Ym9hcmRSZWdpb25zKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgRGFzaGJvYXJkUmVnaW9uICpyZWdpb24gPSBwcmltaXRpdmVWYWx1ZS0+Z2V0RGFzaGJvYXJk
UmVnaW9uVmFsdWUoKTsKLSAgICAgICAgaWYgKCFyZWdpb24pCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAKLSAgICAgICAgRGFzaGJvYXJkUmVnaW9uICpmaXJzdCA9IHJlZ2lvbjsK
LSAgICAgICAgd2hpbGUgKHJlZ2lvbikgewotICAgICAgICAgICAgTGVuZ3RoIHRvcCA9IGNvbnZl
cnRUb0xlbmd0aChyZWdpb24tPnRvcCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwot
ICAgICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+cmlnaHQo
KSwgc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIExlbmd0aCBib3R0
b20gPSBjb252ZXJ0VG9MZW5ndGgocmVnaW9uLT5ib3R0b20oKSwgc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlKTsKLSAgICAgICAgICAgIExlbmd0aCBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHJl
Z2lvbi0+bGVmdCgpLCBzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICAgICAg
aWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAgICAgICAgICAgICAgICBtX3N0eWxlLT5zZXREYXNo
Ym9hcmRSZWdpb24oU3R5bGVEYXNoYm9hcmRSZWdpb246OkNpcmNsZSwgcmVnaW9uLT5tX2xhYmVs
LCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHJlZ2lvbiA9PSBmaXJzdCA/IGZhbHNlIDogdHJ1
ZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5nbGUpCi0gICAgICAg
ICAgICAgICAgbV9zdHlsZS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9u
OjpSZWN0YW5nbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBy
ZWdpb24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOwotICAgICAgICAgICAgcmVnaW9uID0gcmVn
aW9uLT5tX25leHQuZ2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+c2V0SGFzRGFzaGJvYXJkUmVnaW9ucyh0cnVlKTsKLSAgICAgICAgCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYgICAgICAgIAotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRSdGxPcmRlcmluZzoKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
dmlzdWFsbHlPcmRlcmVkLCBWaXN1YWxseU9yZGVyZWQpCi0gICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUgfHwgIXByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBtX3N0eWxlLT5zZXRWaXN1YWxseU9yZGVyZWQocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVWaXN1YWwpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aDogewotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTCh0ZXh0U3Ryb2tlV2lkdGgsIFRleHRTdHJva2VXaWR0aCkKLSAgICAgICAg
ZmxvYXQgd2lkdGggPSAwOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlVGhpbjoKLSAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVNZWRpdW06Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlVGhpY2s6IHsKLSAgICAg
ICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gMS4wIC8gNDg7Ci0gICAgICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTWVkaXVtKQotICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgKj0gMzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVRoaWNrKQotICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgKj0gNTsKLSAgICAgICAgICAgICAgICB3aWR0aCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUocmVzdWx0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyktPmNvbXB1dGVMZW5n
dGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICB3aWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQo
c3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBtX3N0eWxlLT5zZXRUZXh0U3Ryb2tlV2lkdGgo
d2lkdGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm06IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNm
b3JtLCBUcmFuc2Zvcm0pOwotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7
Ci0gICAgICAgIGNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnModmFsdWUsIHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSwgb3BlcmF0aW9ucyk7Ci0gICAgICAgIG1fc3R5bGUtPnNldFRyYW5zZm9y
bShvcGVyYXRpb25zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTCh0cmFuc2Zvcm1PcmlnaW5YLCBUcmFuc2Zvcm1PcmlnaW5YKQotICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1PcmlnaW5ZLCBUcmFuc2Zvcm1PcmlnaW5ZKQot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1PcmlnaW5aLCBUcmFu
c2Zvcm1PcmlnaW5aKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybU9yaWdpblg6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
dHJhbnNmb3JtT3JpZ2luWCwgVHJhbnNmb3JtT3JpZ2luWCkKLSAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAg
IGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYg
KENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAg
bCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgIGVs
c2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAg
ICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+
c2V0VHJhbnNmb3JtT3JpZ2luWChsKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhF
UklUX0FORF9JTklUSUFMKHRyYW5zZm9ybU9yaWdpblksIFRyYW5zZm9ybU9yaWdpblkpCi0gICAg
ICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIExl
bmd0aCBsOwotICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCk7Ci0gICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBl
KSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJ
bnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4
ZWQpOwotICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJs
ZVZhbHVlKCksIFBlcmNlbnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIG1fc3R5bGUtPnNldFRyYW5zZm9ybU9yaWdpblkobCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWjogewotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0cmFuc2Zvcm1PcmlnaW5aLCBUcmFuc2Zv
cm1PcmlnaW5aKQotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBmbG9hdCBmOwotICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVl
LT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0
VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGYgPSBzdGF0aWNfY2FzdDxmbG9hdD4ocHJp
bWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
bV9zdHlsZS0+c2V0VHJhbnNmb3JtT3JpZ2luWihmKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKLSAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtU3R5bGUzRCwgVHJhbnNmb3JtU3R5bGUzRCkK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VHJh
bnNmb3JtU3R5bGUzRCgocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVQcmVz
ZXJ2ZTNkKSA/IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEIDogVHJhbnNmb3JtU3R5bGUzREZs
YXQpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0
aXZlOiB7Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlLCBQ
ZXJzcGVjdGl2ZSkKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0
UGVyc3BlY3RpdmUoMCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFsdWU7Ci0gICAgICAgIGludCB0eXBlID0gcHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZh
bHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZv
ckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKLSAgICAg
ICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgewotICAg
ICAgICAgICAgLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRyZWF0IHZhbHVlbGVzcyBu
dW1iZXJzIGFzIHB4LgotICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUFgpLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxl
bWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgaWYgKHBlcnNwZWN0aXZlVmFsdWUgPj0gMC4wZikKLSAgICAgICAgICAg
IG1fc3R5bGUtPnNldFBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlVmFsdWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbjoK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmVPcmlnaW5YLCBQ
ZXJzcGVjdGl2ZU9yaWdpblgpCi0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBl
cnNwZWN0aXZlT3JpZ2luWSwgUGVyc3BlY3RpdmVPcmlnaW5ZKQotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWDogewotICAgICAgICBI
QU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwZXJzcGVjdGl2ZU9yaWdpblgsIFBlcnNwZWN0aXZl
T3JpZ2luWCkKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUt
PnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRU
eXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpv
b21GYWN0b3IpLCBGaXhlZCk7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFKQotICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgbV9zdHlsZS0+c2V0UGVyc3BlY3RpdmVPcmlnaW5YKGwpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblk6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocGVyc3Bl
Y3RpdmVPcmlnaW5ZLCBQZXJzcGVjdGl2ZU9yaWdpblkpCi0gICAgICAgIGlmICghcHJpbWl0aXZl
VmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIExlbmd0aCBsOwotICAgICAgICBp
bnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlmIChD
U1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgIGwg
PSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOwotICAgICAgICBlbHNl
IGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAg
ICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3R5bGUtPnNl
dFBlcnNwZWN0aXZlT3JpZ2luWShsKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgotICAgICAgICBpZiAoaXNJbml0aWFsKQotICAg
ICAgICAgICAgbV9zdHlsZS0+Y2xlYXJBbmltYXRpb25zKCk7Ci0gICAgICAgIGVsc2UgaWYgKGlz
SW5oZXJpdCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmluaGVyaXRBbmltYXRpb25zKG1fcGFyZW50
U3R5bGUtPmFuaW1hdGlvbnMoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRGVsYXk6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUo
ZGVsYXksIERlbGF5LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb246Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFM
VUUoZGlyZWN0aW9uLCBEaXJlY3Rpb24sIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uOgotICAgICAgICBIQU5ETEVfQU5J
TUFUSU9OX1ZBTFVFKGR1cmF0aW9uLCBEdXJhdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGU6Ci0gICAgICAgIEhB
TkRMRV9BTklNQVRJT05fVkFMVUUoZmlsbE1vZGUsIEZpbGxNb2RlLCB2YWx1ZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3Vu
dDoKLSAgICAgICAgSEFORExFX0FOSU1BVElPTl9WQUxVRShpdGVyYXRpb25Db3VudCwgSXRlcmF0
aW9uQ291bnQsIHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbk5hbWU6Ci0gICAgICAgIEhBTkRMRV9BTklNQVRJT05fVkFMVUUobmFtZSwg
TmFtZSwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uUGxheVN0YXRlOgotICAgICAgICBIQU5ETEVfQU5JTUFUSU9OX1ZBTFVFKHBsYXlT
dGF0ZSwgUGxheVN0YXRlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbjoKLSAgICAgICAgSEFORExFX0FOSU1B
VElPTl9WQUxVRSh0aW1pbmdGdW5jdGlvbiwgVGltaW5nRnVuY3Rpb24sIHZhbHVlKQotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246Ci0gICAgICAg
IGlmIChpc0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5jbGVhclRyYW5zaXRpb25zKCk7
Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5oZXJpdCkKLSAgICAgICAgICAgIG1fc3R5bGUtPmluaGVy
aXRUcmFuc2l0aW9ucyhtX3BhcmVudFN0eWxlLT50cmFuc2l0aW9ucygpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXk6Ci0gICAgICAg
IEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKGRlbGF5LCBEZWxheSwgdmFsdWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uOgotICAg
ICAgICBIQU5ETEVfVFJBTlNJVElPTl9WQUxVRShkdXJhdGlvbiwgRHVyYXRpb24sIHZhbHVlKQot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9w
ZXJ0eToKLSAgICAgICAgSEFORExFX1RSQU5TSVRJT05fVkFMVUUocHJvcGVydHksIFByb3BlcnR5
LCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uVGltaW5nRnVuY3Rpb246Ci0gICAgICAgIEhBTkRMRV9UUkFOU0lUSU9OX1ZBTFVFKHRp
bWluZ0Z1bmN0aW9uLCBUaW1pbmdGdW5jdGlvbiwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKLSAgICB7Ci0jaWYgRU5BQkxFKERBU0hC
T0FSRF9TVVBQT1JUKQotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNjU2MTA3Nz4gV29yayBh
cm91bmQgdGhlIFN0b2NrcyB3aWRnZXQncyBtaXN1c2Ugb2YgdGhlCi0gICAgICAgIC8vIHBvaW50
ZXItZXZlbnRzIHByb3BlcnR5IGJ5IG5vdCBhcHBseWluZyBpdCBpbiBEYXNoYm9hcmQuCi0gICAg
ICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygp
OwotICAgICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2Fy
ZENvbXBhdGliaWxpdHlNb2RlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0jZW5kaWYKLSAgICAg
ICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwocG9pbnRlckV2ZW50cywgUG9pbnRlckV2ZW50
cykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgbV9zdHlsZS0+c2V0UG9pbnRlckV2ZW50cygqcHJpbWl0aXZlVmFsdWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rp
b246Ci0gICAgICAgIGlmIChpc0luaGVyaXQpIAotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29s
b3JTcGFjZShtX3BhcmVudFN0eWxlLT5jb2xvclNwYWNlKCkpOwotICAgICAgICBlbHNlIGlmIChp
c0luaXRpYWwpCi0gICAgICAgICAgICBtX3N0eWxlLT5zZXRDb2xvclNwYWNlKENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFs
dWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29s
b3JTcGFjZSgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5U2l6ZToKLSAgICAgICAgYXBwbHlQYWdlU2l6ZVByb3BlcnR5KHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazoK
LSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoc3BlYWssIFNwZWFrKTsKLSAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9z
dHlsZS0+c2V0U3BlYWsoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgCi0gICAgY2FzZSBDU1NQcm9wZXJ0eUludmFsaWQ6Ci0gICAgICAgIHJldHVybjsKLQot
ICAgIC8vIERpcmVjdGlvbmFsIHByb3BlcnRpZXMgYXJlIHJlc29sdmVkIGJ5IHJlc29sdmVEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KCkgYmVmb3JlIHRoZSBzd2l0Y2guCi0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5k
Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aDoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyU3RhcnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
Q29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGU6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxl
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aDoKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckFmdGVyQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
U3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGg6Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luU3RhcnQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZToK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXI6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFBhZGRpbmdFbmQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdT
dGFydDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZToKLSAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRMb2dpY2FsV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQ6
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0TWluTG9naWNhbEhlaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWF4TG9naWNhbFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2Fs
SGVpZ2h0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVBh
Z2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVF1b3RlczoKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoTW9kZToKLSAgICBjYXNlIENTU1By
b3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5l
VGhyb3VnaFdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmU6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
T3ZlcmxpbmVNb2RlOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZToKLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6Ci0gICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRVbmRlcmxpbmVTdHlsZToKLSAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZVdpZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOgotICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzOgotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKFdDU1MpCi0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0OgotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYg
bV9lbGVtZW50LT5oYXNUYWdOYW1lKFdlYkNvcmU6OmlucHV0VGFnKSkgewotICAgICAgICAgICAg
U3RyaW5nIG1hc2sgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihtX2VsZW1lbnQpLT5zZXRXYXBJbnB1
dEZvcm1hdChtYXNrKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYXNlIENT
U1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZDoKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYm
IG1fZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkgewotICAgICAgICAgICAgSFRNTEZv
cm1Db250cm9sRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQqPihtX2VsZW1lbnQpOwotICAgICAgICAgICAgYm9vbCByZXF1aXJlZCA9IHByaW1pdGl2
ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpID09ICJ0cnVlIjsKLSAgICAgICAgICAgIGVsZW1lbnQt
PnNldFJlcXVpcmVkKHJlcXVpcmVkKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0jZW5k
aWYgCi0KLSAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdy
aXRpbmcgc3VwcG9ydAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZTogewot
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHdyaXRpbmdN
b2RlLCBXcml0aW5nTW9kZSkKLSAgICAgICAgaWYgKCFpc0luaGVyaXQgJiYgIWlzSW5pdGlhbCAm
JiBtX2VsZW1lbnQgJiYgbV9lbGVtZW50ID09IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCkpCi0gICAgICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPnNldFdyaXRp
bmdNb2RlU2V0T25Eb2N1bWVudEVsZW1lbnQodHJ1ZSk7Ci0gICAgICAgIEZvbnREZXNjcmlwdGlv
biBmb250RGVzY3JpcHRpb24gPSBtX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldE9yaWVudGF0aW9uKG1fc3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBIb3Jpem9udGFsIDogVmVydGljYWwpOwotICAgICAgICBpZiAobV9zdHlsZS0+
c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpCi0gICAgICAgICAgICBtX2ZvbnRE
aXJ0eSA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dENvbWJpbmU6Ci0gICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUodGV4dENvbWJpbmUsIFRleHRDb21iaW5lKQotICAgICAgICBpZiAobV9z
dHlsZS0+aGFzVGV4dENvbWJpbmUoKSkKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFVuaXF1ZSgp
OyAvLyBUaGUgc3R5bGUgY291bGQgYmUgbW9kaWZpZWQgaW4gUmVuZGVyQ29tYmluZVRleHQgZGVw
ZW5kaW5nIG9uIHRleHQgbWV0cmljcy4KLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uOgotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHRleHRFbXBoYXNpc1Bvc2l0aW9uLCBUZXh0RW1w
aGFzaXNQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlOgotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TCh0ZXh0RW1waGFzaXNGaWxsLCBUZXh0RW1waGFzaXNGaWxsKQotICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTCh0ZXh0RW1waGFzaXNNYXJrLCBUZXh0RW1waGFzaXNNYXJrKQotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0ZXh0RW1waGFzaXNDdXN0b21NYXJrLCBU
ZXh0RW1waGFzaXNDdXN0b21NYXJrKQotICAgICAgICBpZiAoaXNJbmhlcml0IHx8IGlzSW5pdGlh
bCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0
KCkpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1Zh
bHVlTGlzdCo+KHZhbHVlKTsKLSAgICAgICAgICAgIEFTU0VSVChsaXN0LT5sZW5ndGgoKSA9PSAy
KTsKLSAgICAgICAgICAgIGlmIChsaXN0LT5sZW5ndGgoKSAhPSAyKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQobGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKS0+
aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
dmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGxpc3QtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soaSkpOwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUZpbGxlZCB8fCB2YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU9wZW4pCi0g
ICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0ZpbGwoKnZhbHVlKTsK
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1fc3R5bGUtPnNldFRl
eHRFbXBoYXNpc01hcmsoKnZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20pOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykgewotICAgICAgICAgICAgbV9zdHls
ZS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFya0N1c3RvbSk7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKHByaW1pdGl2
ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20p
OwotCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUZp
bGxlZCB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU9wZW4pIHsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0ZpbGwoKnByaW1pdGl2ZVZhbHVlKTsK
LSAgICAgICAgICAgIG1fc3R5bGUtPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFy
a0F1dG8pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEVt
cGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKLSAgICAgICAgICAgIG1fc3R5bGUt
PnNldFRleHRFbXBoYXNpc01hcmsoKnByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybjsKLQotI2lmIEVOQUJMRShTVkcpCi0gICAgZGVmYXVsdDoKLSAgICAgICAgLy8g
VHJ5IHRoZSBTVkcgcHJvcGVydGllcwotICAgICAgICBhcHBseVNWR1Byb3BlcnR5KGlkLCB2YWx1
ZSk7Ci0jZW5kaWYKLSAgICB9Ci19Ci0KLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQYWdl
U2l6ZVByb3BlcnR5KENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBtX3N0eWxlLT5yZXNldFBhZ2VT
aXplVHlwZSgpOwotICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlz
dCo+KHZhbHVlKTsKLSAgICBMZW5ndGggd2lkdGg7Ci0gICAgTGVuZ3RoIGhlaWdodDsKLSAgICBQ
YWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87Ci0gICAgc3dpdGNoICh2
YWx1ZUxpc3QtPmxlbmd0aCgpKSB7Ci0gICAgY2FzZSAyOiB7Ci0gICAgICAgIC8vIDxsZW5ndGg+
ezJ9IHwgPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgotICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQ
QUdFX1NJWkVfUkVTT0xWRUQ7Ci0gICAgICAgIGlmICghdmFsdWVMaXN0LT5pdGVtKDApLT5pc1By
aW1pdGl2ZVZhbHVlKCkgfHwgIXZhbHVlTGlzdC0+aXRlbSgxKS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZUxpc3QtPml0
ZW0oMCkpOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUxID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZUxpc3QtPml0ZW0oMSkpOwotICAgICAg
ICBpbnQgdHlwZTAgPSBwcmltaXRpdmVWYWx1ZTAtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAg
aW50IHR5cGUxID0gcHJpbWl0aXZlVmFsdWUxLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlm
IChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlMCkpIHsKLSAgICAgICAg
ICAgIC8vIDxsZW5ndGg+ezJ9Ci0gICAgICAgICAgICBpZiAoIUNTU1ByaW1pdGl2ZVZhbHVlOjpp
c1VuaXRUeXBlTGVuZ3RoKHR5cGUxKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB3aWR0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZTAtPmNvbXB1dGVMZW5ndGhJbnRGb3JM
ZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOwotICAgICAgICAgICAg
aGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlMS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0
aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+Ci0gICAgICAgICAgICAv
LyBUaGUgdmFsdWUgb3JkZXIgaXMgZ3VhcmFudGVlZC4gU2VlIENTU1BhcnNlcjo6cGFyc2VTaXpl
UGFyYW1ldGVyLgotICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKHByaW1pdGl2ZVZh
bHVlMCwgcHJpbWl0aXZlVmFsdWUxLCB3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgMTogewot
ICAgICAgICAvLyA8bGVuZ3RoPiB8IGF1dG8gfCA8cGFnZS1zaXplPiB8IFsgcG9ydHJhaXQgfCBs
YW5kc2NhcGVdCi0gICAgICAgIGlmICghdmFsdWVMaXN0LT5pdGVtKDApLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVMaXN0
LT5pdGVtKDApKTsKLSAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpOwotICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgo
dHlwZSkpIHsKLSAgICAgICAgICAgIC8vIDxsZW5ndGg+Ci0gICAgICAgICAgICBwYWdlU2l6ZVR5
cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7Ci0gICAgICAgICAgICB3aWR0aCA9IGhlaWdodCA9IExl
bmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBt
X3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhlZCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBpZiAodHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICAgICAgICAgIHBh
Z2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVBvcnRyYWl0OgotICAgICAgICAgICAgICAgIHBhZ2VTaXpl
VHlwZSA9IFBBR0VfU0laRV9BVVRPX1BPUlRSQUlUOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKLSAgICAgICAgICAgICAgICBwYWdl
U2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUT19MQU5EU0NBUEU7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+
Ci0gICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwotICAg
ICAgICAgICAgICAgIGlmICghcGFnZVNpemVGcm9tTmFtZShwcmltaXRpdmVWYWx1ZSwgMCwgd2lk
dGgsIGhlaWdodCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBtX3N0eWxlLT5zZXRQYWdlU2l6ZVR5cGUocGFnZVNpemVUeXBl
KTsKLSAgICBtX3N0eWxlLT5zZXRQYWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQpKTsK
LSAgICByZXR1cm47Ci19Ci0KLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFt
ZShDU1NQcmltaXRpdmVWYWx1ZSogcGFnZVNpemVOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFn
ZU9yaWVudGF0aW9uLCBMZW5ndGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCkKLXsKLSAgICBzdGF0
aWMgY29uc3QgTGVuZ3RoIGE1V2lkdGggPSBtbUxlbmd0aCgxNDgpLCBhNUhlaWdodCA9IG1tTGVu
Z3RoKDIxMCk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBhNFdpZHRoID0gbW1MZW5ndGgoMjEw
KSwgYTRIZWlnaHQgPSBtbUxlbmd0aCgyOTcpOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTNX
aWR0aCA9IG1tTGVuZ3RoKDI5NyksIGEzSGVpZ2h0ID0gbW1MZW5ndGgoNDIwKTsKLSAgICBzdGF0
aWMgY29uc3QgTGVuZ3RoIGI1V2lkdGggPSBtbUxlbmd0aCgxNzYpLCBiNUhlaWdodCA9IG1tTGVu
Z3RoKDI1MCk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBiNFdpZHRoID0gbW1MZW5ndGgoMjUw
KSwgYjRIZWlnaHQgPSBtbUxlbmd0aCgzNTMpOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGV0
dGVyV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxldHRlckhlaWdodCA9IGluY2hMZW5ndGgoMTEp
OwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGVnYWxXaWR0aCA9IGluY2hMZW5ndGgoOC41KSwg
bGVnYWxIZWlnaHQgPSBpbmNoTGVuZ3RoKDE0KTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxl
ZGdlcldpZHRoID0gaW5jaExlbmd0aCgxMSksIGxlZGdlckhlaWdodCA9IGluY2hMZW5ndGgoMTcp
OwotCi0gICAgaWYgKCFwYWdlU2l6ZU5hbWUgfHwgcGFnZVNpemVOYW1lLT5wcmltaXRpdmVUeXBl
KCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghcGFnZVNpemVOYW1lIHx8IHBhZ2VTaXplTmFtZS0+cHJpbWl0aXZlVHlwZSgp
ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHN3aXRjaCAocGFnZVNpemVOYW1lLT5nZXRJZGVudCgpKSB7CiAgICAgY2FzZSBDU1NW
YWx1ZUE1OgpAQCAtNjAwMiw3ICszNTQ4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBG
aWxsQ29tcG9zaXRlKAogICAgICAgICBsYXllci0+c2V0Q29tcG9zaXRlKEZpbGxMYXllcjo6aW5p
dGlhbEZpbGxDb21wb3NpdGUobGF5ZXItPnR5cGUoKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAorCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTYwOTUsOSArMzY0MSw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFw
RmlsbFNpemUoQ1NTUHIKICAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKENvdmVyKTsKICAgICBl
bHNlCiAgICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShTaXplTGVuZ3RoKTsKLSAgICAKKwogICAg
IExlbmd0aFNpemUgYiA9IEZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXplTGVuZ3RoKGxheWVyLT50
eXBlKCkpOwotICAgIAorCiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1
ZTo6Q1NTX0lOSVRJQUwgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVD
b250YWluCiAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
Q292ZXIpIHsKICAgICAgICAgbGF5ZXItPnNldFNpemVMZW5ndGgoYik7CkBAIC02MTA3LDE0ICsz
NjUzLDE0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHIKICAgICBQ
YWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOwogICAgIGlmICghcGFp
ciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3QoKSk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNl
Y29uZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkpOwot
ICAgIAorCiAgICAgTGVuZ3RoIGZpcnN0TGVuZ3RoLCBzZWNvbmRMZW5ndGg7CiAgICAgaW50IGZp
cnN0VHlwZSA9IGZpcnN0LT5wcmltaXRpdmVUeXBlKCk7CiAgICAgaW50IHNlY29uZFR5cGUgPSBz
ZWNvbmQtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAKKwogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBt
X3N0eWxlLT5lZmZlY3RpdmVab29tKCk7CiAKICAgICBpZiAoZmlyc3RUeXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVU5LTk9XTikKQEAgLTYxMzQsNyArMzY4MCw3IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHIKICAgICAgICAgc2Vjb25kTGVuZ3RoID0gTGVu
Z3RoKHNlY29uZC0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBiLnNldFdpZHRoKGZpcnN0TGVuZ3RoKTsKICAgICBiLnNl
dEhlaWdodChzZWNvbmRMZW5ndGgpOwogICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIpOwpAQCAt
NzA0NSw3ICs0NTkxLDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1P
cAogICAgICAgICAgICAgICAgICAgICB2YWwgPSBjbGFtcFRvUG9zaXRpdmVJbnRlZ2VyKHZhbCk7
CiAgICAgICAgICAgICAgICAgICAgIHAgPSBMZW5ndGgoc3RhdGljX2Nhc3Q8aW50Pih2YWwpLCBG
aXhlZCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDc3NTM2KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ4LDcgKzE0OCw4IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHNldEZv
bnRTaXplKEZvbnREZXNjcmlwdGlvbiYsIGZsb2F0IHNpemUpOwogICAgICAgICBzdGF0aWMgZmxv
YXQgZ2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQqLCBSZW5kZXJTdHls
ZSosIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgdXNlU1ZH
Wm9vbVJ1bGVzKTsKLQorICAgICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xlbmd0aChDU1NQ
cmltaXRpdmVWYWx1ZSosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91
YmxlIG11bHRpcGxpZXIgPSAxLCBib29sICpvayA9IDApOworICAgICAgICBzdGF0aWMgdm9pZCBh
cHBseUNvdW50ZXJMaXN0KFJlbmRlclN0eWxlKiwgQ1NTVmFsdWVMaXN0KiwgYm9vbCBpc1Jlc2V0
KTsKICAgICBwdWJsaWM6CiAgICAgICAgIENvbG9yIGdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlKikgY29uc3Q7CiAKQEAgLTMyMCw2ICszMjEsOSBAQCBwdWJsaWM6
CiAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IG1fc2VsZWN0b3JBdHRyczsKICAg
ICAgICAgVmVjdG9yPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKj4gbV9hZGRpdGlvbmFsQXR0
cmlidXRlU3R5bGVEZWNsczsKICAgICAgICAgVmVjdG9yPE1lZGlhUXVlcnlSZXN1bHQqPiBtX3Zp
ZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHM7CisKKy8vIHB1bGwgaW4gYXV0by1nZW5l
cmF0ZWQgYXBwbHkgcHJvcGVydHkgcHJvdG90eXBlcworI2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQ
cm9wZXJ0eS5oIgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvbWFrZXByb3AucGwJKHJldmlzaW9uIDc3NTM2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL21h
a2Vwcm9wLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsMyArMTM4LDUzIEBAIEVPRgogY2xvc2Ug
SEVBREVSOwogCiBzeXN0ZW0oImdwZXJmIC0ta2V5LXBvc2l0aW9ucz1cIipcIiAtRCAtbiAtcyAy
IENTU1Byb3BlcnR5TmFtZXMuZ3BlcmYgPiBDU1NQcm9wZXJ0eU5hbWVzLmNwcCIpID09IDAgfHwg
ZGllICJjYWxsaW5nIGdwZXJmIGZhaWxlZDogJD8iOworCisKK29wZW4gQVBQTFlfSEVBREVSLCAi
PkNTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIiB8fCBkaWUgIkNvdWxkIG5vdCBvcGVuIENTU1N0eWxl
QXBwbHlQcm9wZXJ0eS5oIGZvciB3cml0aW5nIjsKK3ByaW50IEFQUExZX0hFQURFUiA8PCAiRU9G
IjsKKy8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIENTU1Byb3Bl
cnR5TmFtZXMuaW4gYnkgbWFrZXByb3AsIGRvIG5vdCBlZGl0ICovCisKK3N0YXRpYyB2b2lkIGhh
bmRsZUluaGVyaXRDU1NQcm9wZXJ0eUludmFsaWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2Up
Oworc3RhdGljIHZvaWQgaGFuZGxlSW5pdGlhbENTU1Byb3BlcnR5SW52YWxpZChDU1NTdHlsZVNl
bGVjdG9yICppbnN0YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5SW52
YWxpZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKTsKKworRU9G
CisKK2ZvcmVhY2ggbXkgJG5hbWUgKEBuYW1lcykgeworICBteSAkaWQgPSAkbmFtZTsKKyAgJGlk
ID1+IHMvKF5bXi1dKXwtKC4pL3VjKCQxfHwkMikvZ2U7CisgIHByaW50IEFQUExZX0hFQURFUiAi
c3RhdGljIHZvaWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5IiAuICRpZCAuICIoQ1NTU3R5bGVT
ZWxlY3RvciAqaW5zdGFuY2UpO1xuIjsKKyAgcHJpbnQgQVBQTFlfSEVBREVSICJzdGF0aWMgdm9p
ZCBoYW5kbGVJbml0aWFsQ1NTUHJvcGVydHkiIC4gJGlkIC4gIihDU1NTdHlsZVNlbGVjdG9yICpp
bnN0YW5jZSk7XG4iOworICBwcmludCBBUFBMWV9IRUFERVIgInN0YXRpYyB2b2lkIGhhbmRsZVZh
bHVlQ1NTUHJvcGVydHkiIC4gJGlkIC4gIihDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NT
VmFsdWUgKnZhbHVlKTtcblxuIjsKK30KKworcHJpbnQgQVBQTFlfSEVBREVSIDw8ICJFT0YiOwor
I2lmIEVOQUJMRShXQ1NTKQorLy8gRklYTUU6IFdDU1MgUHJvcGVydGllcyBhcmUgbm90IGFjdHVh
bGx5IGRlZmluZWQgaW4gQ1NTUHJvcGVydHkuaW4KK3N0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRD
U1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0
YXRpYyB2b2lkIGhhbmRsZUluaXRpYWxDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVMb29wKENTU1N0eWxl
U2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZVZhbHVlQ1NTUHJvcGVydHlX
YXBNYXJxdWVlTG9vcChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVl
KTsKKworc3RhdGljIHZvaWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVk
KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZUluaXRpYWxD
U1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7Citz
dGF0aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkKENTU1N0eWxl
U2VsZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpOworCitzdGF0aWMgdm9pZCBoYW5k
bGVJbmhlcml0Q1NTUHJvcGVydHlXYXBNYXJxdWVlU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciAqaW5z
dGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlSW5pdGlhbENTU1Byb3BlcnR5V2FwTWFycXVlZVN0
eWxlKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2b2lkIGhhbmRsZVZhbHVl
Q1NTUHJvcGVydHlXYXBNYXJxdWVlU3R5bGUoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENT
U1ZhbHVlICp2YWx1ZSk7CisKK3N0YXRpYyB2b2lkIGhhbmRsZUluaGVyaXRDU1NQcm9wZXJ0eVdh
cE1hcnF1ZWVEaXIoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFu
ZGxlSW5pdGlhbENTU1Byb3BlcnR5V2FwTWFycXVlZURpcihDU1NTdHlsZVNlbGVjdG9yICppbnN0
YW5jZSk7CitzdGF0aWMgdm9pZCBoYW5kbGVWYWx1ZUNTU1Byb3BlcnR5V2FwTWFycXVlZURpcihD
U1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKTsKKworc3RhdGljIHZv
aWQgaGFuZGxlSW5oZXJpdENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQoQ1NTU3R5bGVTZWxlY3Rv
ciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlSW5pdGlhbENTU1Byb3BlcnR5V2FwSW5w
dXRGb3JtYXQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxl
VmFsdWVDU1NQcm9wZXJ0eVdhcElucHV0Rm9ybWF0KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNl
LCBDU1NWYWx1ZSAqdmFsdWUpOworCitzdGF0aWMgdm9pZCBoYW5kbGVJbmhlcml0Q1NTUHJvcGVy
dHlXYXBJbnB1dFJlcXVpcmVkKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKK3N0YXRpYyB2
b2lkIGhhbmRsZUluaXRpYWxDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQoQ1NTU3R5bGVTZWxl
Y3RvciAqaW5zdGFuY2UpOworc3RhdGljIHZvaWQgaGFuZGxlVmFsdWVDU1NQcm9wZXJ0eVdhcElu
cHV0UmVxdWlyZWQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSk7
CisjZW5kaWYKK0VPRgorCitjbG9zZSBBUFBMWV9IRUFERVI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82281</attachid>
            <date>2011-02-13 16:47:43 -0800</date>
            <delta_ts>2011-02-14 16:57:09 -0800</delta_ts>
            <desc>Template Demo</desc>
            <filename>bug-46592-20110214114739.patch</filename>
            <type>text/plain</type>
            <size>245483</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3Njg2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDItMDggIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkgdG8gdXNlIHNlcGFyYXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBjYXNlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1OTIKKworICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGxp
Y2F0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRFRklORV9WQUxVRSk6CisgICAg
ICAgIChXZWJDb3JlOjpERUZJTkVfSU5IRVJJVCk6CisgICAgICAgIChXZWJDb3JlOjpERUZJTkVf
SU5JVElBTCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5Q291bnRlckxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oOgorCiAyMDExLTAyLTA0ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmVydCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3OTUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA3NzY4NikK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03Nzgs
NiArNzc4LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGNzcy9DU1NTZWdtZW50ZWRGb250
RmFjZS5jcHAKICAgICBjc3MvQ1NTU2VsZWN0b3IuY3BwCiAgICAgY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAKKyAgICBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAogICAgIGNzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmNwcAogICAgIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiAgICAgY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzc2ODYp
CisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTAy
OSw2ICsxMDI5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBcCisJU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVj
bGFyYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiA3NzY4NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMTA3NSw2ICsxMDc1LDggQEAKICAgICAgICAgICAgICdjc3MvQ1NT
U2VsZWN0b3IuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAnLAogICAg
ICAgICAgICAgJ2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCcsCisgICAgICAgICAgICAnY3NzL0NTU1N0
eWxlQXBwbHlQcm9wZXJ0eS5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NTdHlsZUFwcGx5UHJv
cGVydHkuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwJywKICAg
ICAgICAgICAgICdjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oJywKICAgICAgICAgICAgICdjc3Mv
Q1NTU3R5bGVSdWxlLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNzc2ODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtNjcyLDYgKzY3
Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9DU1NTZWxlY3Rvci5jcHAgXAogICAgIGNzcy9D
U1NTZWxlY3Rvckxpc3QuY3BwIFwKICAgICBjc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwIFwK
KyAgICBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBcCiAgICAgY3NzL0NTU1N0eWxlRGVj
bGFyYXRpb24uY3BwIFwKICAgICBjc3MvQ1NTU3R5bGVSdWxlLmNwcCBcCiAgICAgY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwIFwKQEAgLTE2MDksNiArMTYxMCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oIFwKICAgICBjc3MvQ1NTU2VsZWN0b3IuaCBcCiAg
ICAgY3NzL0NTU1NlbGVjdG9yTGlzdC5oIFwKKyAgICBjc3MvQ1NTU3R5bGVBcHBseVByb3B3ZXJ0
eS5oIFwKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIFwKICAgICBjc3MvQ1NTU3R5bGVS
dWxlLmggXAogICAgIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmggXApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHJldmlzaW9uIDc3Njg2KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYs
NyBAQAogICAgICAgICAgICdvdXRwdXRzJzogWwogICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVS
TUVESUFURV9ESVIpL3dlYmtpdC9DU1NQcm9wZXJ0eU5hbWVzLmNwcCcsCiAgICAgICAgICAgICAn
PChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0NTU1Byb3BlcnR5TmFtZXMuaCcsCisg
ICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0NTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5oJywKICAgICAgICAgICBdLAogICAgICAgICAgICdhY3Rpb24nOiBbCiAgICAg
ICAgICAgICAncHl0aG9uJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA3NzY4NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYwNiw2ICszMTYw
NiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
Llxjc3NcQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIgor
CQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NT
U3R5bGVEZWNsYXJhdGlvbi5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
Nzc2ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTE2OTgsNiArMTY5OCw4IEBACiAJCTdFRTY4NDcwMTJEMjZF
MzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3Vy
Y2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0
NUUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgKi87IH07CiAJ
CTdFRTY4NDc1MTJEMjZFNzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDc0MTJEMjZF
NzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCAqLzsgfTsKKwkJODAwQ0Y5NDEx
MkZCNkQ1MzAwRjdCN0MwIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDBDRjk0MDEyRkI2RDUzMDBGN0I3
QzAgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCAqLzsgfTsKKwkJODBFQjA2MzcxMzA4QTdC
RTAwQUVFOTIyIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODBFQjA2MzYxMzA4QTdCRTAwQUVFOTIyIC8qIENT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5oICovOyB9OwogCQk4MUE3MzI1RTEyMTAxODlCMDBGQzBEOUUg
LyogSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MUE3MzI1RDEyMTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggKi87IH07CiAJCTgx
QTczMjYwMTIxMDE4QTQwMEZDMEQ5RSAvKiBJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMyNUYxMjEwMThBNDAwRkMwRDlFIC8q
IElEQkN1cnNvci5jcHAgKi87IH07CiAJCTgxQTczMjc4MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJD
dXJzb3JCYWNrZW5kSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODFBNzMyNzcxMjEwMTlFMTAwRkMwRDlFIC8qIElEQkN1cnNvckJhY2tlbmRJbXBs
LmggKi87IH07CkBAIC04MTU2LDYgKzgxNTgsOCBAQAogCQk3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0
MTUgLyogUmVzb3VyY2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4
NDVFMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NzQxMkQyNkU3MDAwRTc5NDE1IC8q
IFJlc291cmNlTG9hZGVyQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHA7IHBhdGggPSBjZi9SZXNvdXJjZUxvYWRlckNG
TmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODAwQ0Y5NDAxMkZCNkQ1MzAw
RjdCN0MwIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MEVCMDYzNjEzMDhBN0JFMDBBRUU5MjIgLyogQ1NTU3R5bGVBcHBs
eVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUE3MzI1RDEyMTAx
ODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElEQkN1cnNvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUE3MzI1RjEy
MTAxOEE0MDBGQzBEOUUgLyogSURCQ3Vyc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IElEQkN1cnNvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgxQTczMjc3MTIxMDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3JCYWNrZW5kSW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg1MzQsNiArMTg1MzgsNyBAQAogCQlGNTIzRDE4
NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk4MEVCMDYzNjEzMDhBN0JFMDBBRUU5MjIgLyogQ1NTU3R5bGVBcHBs
eVByb3BlcnR5LmggKi8sCiAJCQkJOTNDQTRDOUMwOURGOTNGQTAwREY4Njc3IC8qIG1ha2V0b2tl
bml6ZXIgKi8sCiAJCQkJQTgwRTZDREEwQTE5ODlDQTAwN0ZCOEM1IC8qIENvdW50ZXIuaCAqLywK
IAkJCQk5MzA3MDVDNzA5RTBDOTVGMDBCMTdGRTQgLyogQ291bnRlci5pZGwgKi8sCkBAIC0xODYy
Niw2ICsxODYzMSw3IEBACiAJCQkJODVDNTZDQTEwQUE4OUFCNDAwRDk1NzU1IC8qIENTU1N0eWxl
UnVsZS5pZGwgKi8sCiAJCQkJQkM3NzJCMzkwQzRFQTkxRTAwODMyODVGIC8qIENTU1N0eWxlU2Vs
ZWN0b3IuY3BwICovLAogCQkJCUJDNzcyQjNBMEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NTdHlsZVNl
bGVjdG9yLmggKi8sCisJCQkJODAwQ0Y5NDAxMkZCNkQ1MzAwRjdCN0MwIC8qIENTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5jcHAgKi8sCiAJCQkJQThFQTgwMDAwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0
eWxlU2hlZXQuY3BwICovLAogCQkJCUE4RUE3RkZGMEExOTUxNkUwMEE4RUY1RiAvKiBDU1NTdHls
ZVNoZWV0LmggKi8sCiAJCQkJODU4QzM5MTAwQUE4RkYwMDAwQjE4N0E0IC8qIENTU1N0eWxlU2hl
ZXQuaWRsICovLApAQCAtMjI0OTIsNiArMjI0OTgsNyBAQAogCQkJCTE0OTQ3RkZFMTJGODBDRDIw
MEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QzQ3
MURDMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RkU4MTlDMTJGQTY3NzcwMDg1MEMxRSAvKiBQcm9ncmVzc0JhclZhbHVlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODBFQjA2MzcxMzA4QTdCRTAwQUVFOTIyIC8qIENT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTE5NCw2ICsyNTIwMSw3
IEBACiAJCQkJMTQ5NDdGRkQxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0M0NzFEQjEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlGREM4RkYyMTJGQUIwMDYw
MDk5QUIxQyAvKiBKU01lbW9yeUluZm9DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODAw
Q0Y5NDExMkZCNkQ1MzAwRjdCN0MwIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVy
dHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQ
cm9wZXJ0eS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYyMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChD
KSAyMDA0LTIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQorICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tzaGFu
a3MuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6
Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NT
U3R5bGVBcHBseVByb3BlcnR5LmgiCisKKyNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgi
CisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oIgorI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1N0eWxl
U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNvdW50ZXIu
aCIKKyNpbmNsdWRlICJDb3VudGVyQ29udGVudC5oIgorI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIK
KyNpbmNsdWRlICJGb250RmFtaWx5VmFsdWUuaCIKKyNpbmNsdWRlICJGb250VmFsdWUuaCIKKyNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAiUmVjdC5o
IgorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlICJTaGFkb3dWYWx1ZS5oIgorI2luY2x1ZGUgIlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIKKwor
I2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIgorI2luY2x1ZGUgIlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKKyNlbmRpZgorCisjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQorI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAi
WExpbmtOYW1lcy5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoV01MKQorI2luY2x1ZGUgIldNTE5h
bWVzLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPHF3ZWJoaXN0b3J5
aW50ZXJmYWNlLmg+CisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBQcm9wZXJ0eVdyYXBwZXJCYXNlIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQcm9wZXJ0eVdyYXBwZXJCYXNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgUHJvcGVydHlXcmFwcGVyQmFzZShpbnQgcHJvcCkKKyAgICAgICAgOiBt
X3Byb3AocHJvcCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB+UHJvcGVydHlXcmFwcGVy
QmFzZSgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGluaGVyaXQoQ1NTU3R5bGVTZWxlY3RvciAq
aW5zdGFuY2UpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbChDU1NTdHlsZVNl
bGVjdG9yICppbnN0YW5jZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2YWx1ZShDU1NT
dHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKSBjb25zdCA9IDA7CisKKyAg
ICBpbnQgcHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX3Byb3A7IH0KKworcHJpdmF0ZToKKyAg
ICBpbnQgbV9wcm9wOworfTsKKworY2xhc3MgUHJvcGVydHlXcmFwcGVyTnVsbCA6IHB1YmxpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eVdyYXBwZXJOdWxsKGlu
dCBwcm9wKSA6IFByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkge30KKyAgICB2aXJ0dWFsIHZvaWQg
aW5oZXJpdChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSkgY29uc3Qge1VOVVNFRF9QQVJBTShp
bnN0YW5jZSk7fQorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsKENTU1N0eWxlU2VsZWN0b3IgKmlu
c3RhbmNlKSBjb25zdCB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTt9CisgICAgdmlydHVhbCB2b2lk
IHZhbHVlKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpIGNvbnN0
IHtVTlVTRURfUEFSQU0oaW5zdGFuY2UpOyBVTlVTRURfUEFSQU0odmFsdWUpO30KK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgUHJvcGVydHlXcmFwcGVyRGVmYXVsdCA6IHB1Ymxp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eVdyYXBwZXJEZWZh
dWx0KGludCBwcm9wLCBUIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVu
ZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBUICgqaW5pdGlhbCkoKSkKKyAgICAgICAgOiBQcm9wZXJ0
eVdyYXBwZXJCYXNlKHByb3ApCisgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQorICAgICAgICAs
IG1fc2V0dGVyKHNldHRlcikKKyAgICAgICAgLCBtX2luaXRpYWwoaW5pdGlhbCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGluaGVyaXQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFu
Y2UpIGNvbnN0CisgICAgeworICAgICAgICAoaW5zdGFuY2UtPnN0eWxlKCktPiptX3NldHRlciko
KGluc3RhbmNlLT5wYXJlbnRTdHlsZSgpLT4qbV9nZXR0ZXIpKCkpOworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKSBjb25zdAorICAg
IHsKKyAgICAgICAgKGluc3RhbmNlLT5zdHlsZSgpLT4qbV9zZXR0ZXIpKCgqbV9pbml0aWFsKSgp
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmFsdWUoQ1NTU3R5bGVTZWxlY3RvciAqaW5z
dGFuY2UsIENTU1ZhbHVlICp2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICAgICAgKGlu
c3RhbmNlLT5zdHlsZSgpLT4qbV9zZXR0ZXIpKCpwKTsKKyAgICAgICAgfQorICAgIH0KKworcHJv
dGVjdGVkOgorICAgIFQgKFJlbmRlclN0eWxlOjoqbV9nZXR0ZXIpKCkgY29uc3Q7CisgICAgdm9p
ZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoVCk7CisgICAgVCAoKm1faW5pdGlhbCkoKTsKK307
CisKKyNpZiAwCisjZGVmaW5lIERFRklORV9JTkhFUklUKFByb3BlcnR5KSB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1Byb3BlcnR5KENTU1N0eWxlU2VsZWN0b3IgKmluc3Rh
bmNlKQorCisjZGVmaW5lIERFRklORV9JTklUSUFMKFByb3BlcnR5KSB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmhhbmRsZUluaXRpYWwjI1Byb3BlcnR5KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNl
KQorCisjZGVmaW5lIERFRklORV9WQUxVRShQcm9wZXJ0eSkgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjpoYW5kbGVWYWx1ZSMjUHJvcGVydHkoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1Zh
bHVlICp2YWx1ZSkKKworI2RlZmluZSBERUZJTkVfSEFORExFX0lOSEVSSVQoUHJvcGVydHksIFNl
dHRlciwgR2V0dGVyKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPlNldHRlcihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0dGVyKCkp
OyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChQcm9wZXJ0eSwg
U2V0dGVyLCBHZXR0ZXIsIEJhY2t1cCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIFwKK3sg
XAorICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+R2V0dGVyKCkuaXNWYWxpZCgpKSBc
CisgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPkdldHRlcigpKTsgXAorICAgIGVsc2UgXAorICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
U2V0dGVyKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5CYWNrdXAoKSk7IFwKK30KKworI2RlZmlu
ZSBERUZJTkVfSEFORExFX0lOSVRJQUwoUHJvcGVydHksIFNldHRlciwgR2V0dGVyKSBcCitERUZJ
TkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRl
cihSZW5kZXJTdHlsZTo6R2V0dGVyKCkpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9J
TklUSUFMX0NPTE9SKFByb3BlcnR5LCBTZXR0ZXIpIFwKK0RFRklORV9JTklUSUFMKFByb3BlcnR5
KSBcCit7IFwKKyAgICBDb2xvciBjb2w7IFwKKyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVy
KGNvbCk7IFwKK30KKworI2RlZmluZSBERUZJTkVfSEFORExFX1ZBTFVFKFByb3BlcnR5LCBTZXR0
ZXIpIFwKK0RFRklORV9WQUxVRShQcm9wZXJ0eSkgXAoreyBcCisgICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsgXAorICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5TZXR0ZXIoKnApOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRM
RV9WQUxVRV9DT0xPUihQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkp
IFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsgXAorICAgICAgICBDb2xvciBjb2wgPSBpbnN0YW5jZS0+Z2V0Q29sb3JGcm9tUHJpbWl0
aXZlVmFsdWUocCk7IFwKKyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcihjb2wpOyBc
CisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQo
UHJvcGVydHksIGxheWVyVHlwZSwgTGF5ZXJUeXBlLCBwcm9wLCBQcm9wKSBcCitERUZJTkVfSU5I
RVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgRmlsbExheWVyKiBjdXJyQ2hpbGQgPSBpbnN0YW5j
ZS0+bV9zdHlsZS0+YWNjZXNzIyNMYXllclR5cGUjI0xheWVycygpOyBcCisgICAgRmlsbExheWVy
KiBwcmV2Q2hpbGQgPSAwOyBcCisgICAgY29uc3QgRmlsbExheWVyKiBjdXJyUGFyZW50ID0gaW5z
dGFuY2UtPm1fcGFyZW50U3R5bGUtPmxheWVyVHlwZSMjTGF5ZXJzKCk7IFwKKyAgICB3aGlsZSAo
Y3VyclBhcmVudCAmJiBjdXJyUGFyZW50LT5pcyMjUHJvcCMjU2V0KCkpIHsgXAorICAgICAgICBp
ZiAoIWN1cnJDaGlsZCkgeyBcCisgICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgbGF5
ZXIuKi8gXAorICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihMYXllclR5cGUj
I0ZpbGxMYXllcik7IFwKKyAgICAgICAgICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQp
OyBcCisgICAgICAgIH0gXAorICAgICAgICBjdXJyQ2hpbGQtPnNldCMjUHJvcChjdXJyUGFyZW50
LT5wcm9wKCkpOyBcCisgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGlsZDsgXAorICAgICAgICBj
dXJyQ2hpbGQgPSBwcmV2Q2hpbGQtPm5leHQoKTsgXAorICAgICAgICBjdXJyUGFyZW50ID0gY3Vy
clBhcmVudC0+bmV4dCgpOyBcCisgICAgfSBcCisgICAgXAorICAgIHdoaWxlIChjdXJyQ2hpbGQp
IHsgXAorICAgICAgICAvKiBSZXNldCBhbnkgcmVtYWluaW5nIGxheWVycyB0byBub3QgaGF2ZSB0
aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAgICAgIGN1cnJDaGlsZC0+Y2xlYXIjI1Byb3AoKTsg
XAorICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsgXAorICAgIH0gXAorfQor
CisjZGVmaW5lIERFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKFByb3BlcnR5LCBsYXll
clR5cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX0lOSVRJQUwoUHJvcGVydHkp
IFwKK3sgXAorICAgIEZpbGxMYXllciogY3VyckNoaWxkID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFj
Y2VzcyMjTGF5ZXJUeXBlIyNMYXllcnMoKTsgXAorICAgIGN1cnJDaGlsZC0+c2V0IyNQcm9wKEZp
bGxMYXllcjo6aW5pdGlhbEZpbGwjI1Byb3AoTGF5ZXJUeXBlIyNGaWxsTGF5ZXIpKTsgXAorICAg
IGZvciAoY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IGN1cnJDaGlsZDsgY3VyckNoaWxk
ID0gY3VyckNoaWxkLT5uZXh0KCkpIFwKKyAgICAgICAgY3VyckNoaWxkLT5jbGVhciMjUHJvcCgp
OyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKFByb3BlcnR5
LCBsYXllclR5cGUsIExheWVyVHlwZSwgcHJvcCwgUHJvcCkgXAorREVGSU5FX1ZBTFVFKFByb3Bl
cnR5KSBcCit7IFwKKyAgICBGaWxsTGF5ZXIqIGN1cnJDaGlsZCA9IGluc3RhbmNlLT5tX3N0eWxl
LT5hY2Nlc3MjI0xheWVyVHlwZSMjTGF5ZXJzKCk7IFwKKyAgICBGaWxsTGF5ZXIqIHByZXZDaGls
ZCA9IDA7IFwKKyAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsgXAorICAgICAgICAvKiBX
YWxrIGVhY2ggdmFsdWUgYW5kIHB1dCBpdCBpbnRvIGEgbGF5ZXIsIGNyZWF0aW5nIG5ldyBsYXll
cnMgYXMgbmVlZGVkLiAqLyBcCisgICAgICAgIENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3Rh
dGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOyBcCisgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgdmFsdWVMaXN0LT5sZW5ndGgoKTsgaSsrKSB7IFwKKyAgICAgICAgICAg
IGlmICghY3VyckNoaWxkKSB7IFwKKyAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIG1ha2UgYSBu
ZXcgbGF5ZXIgdG8gaG9sZCB0aGlzIHZhbHVlICovIFwKKyAgICAgICAgICAgICAgICBjdXJyQ2hp
bGQgPSBuZXcgRmlsbExheWVyKExheWVyVHlwZSMjRmlsbExheWVyKTsgXAorICAgICAgICAgICAg
ICAgIHByZXZDaGlsZC0+c2V0TmV4dChjdXJyQ2hpbGQpOyBcCisgICAgICAgICAgICB9IFwKKyAg
ICAgICAgICAgIGluc3RhbmNlLT5tYXBGaWxsIyNQcm9wKFByb3BlcnR5LCBjdXJyQ2hpbGQsIHZh
bHVlTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7IFwKKyAgICAgICAgICAgIHByZXZD
aGlsZCA9IGN1cnJDaGlsZDsgXAorICAgICAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5u
ZXh0KCk7IFwKKyAgICAgICAgfSBcCisgICAgfSBlbHNlIHsgXAorICAgICAgICBpbnN0YW5jZS0+
bWFwRmlsbCMjUHJvcChQcm9wZXJ0eSwgY3VyckNoaWxkLCB2YWx1ZSk7IFwKKyAgICAgICAgY3Vy
ckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAgICB9IFwKKyAgICB3aGlsZSAoY3VyckNo
aWxkKSB7IFwKKyAgICAgICAgLyogUmVzZXQgYWxsIHJlbWFpbmluZyBsYXllcnMgdG8gbm90IGhh
dmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorICAgICAgICBjdXJyQ2hpbGQtPmNsZWFyIyNQcm9w
KCk7IFwKKyAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0KCk7IFwKKyAgICB9IFwK
K30KKworI2RlZmluZSBERUZJTkVfTlVMTF9JTkhFUklUKFByb3BlcnR5KSBERUZJTkVfSU5IRVJJ
VChQcm9wZXJ0eSkge1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJTkVfTlVM
TF9JTklUSUFMKFByb3BlcnR5KSBERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkge1VOVVNFRF9QQVJB
TShpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJTkVfTlVMTF9WQUxVRShQcm9wZXJ0eSkgREVGSU5F
X1ZBTFVFKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgVU5VU0VEX1BBUkFNKHZh
bHVlKTt9CisKKyNkZWZpbmUgREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoUHJvcGVydHkpIERF
RklORV9JTkhFUklUKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7fQorI2RlZmluZSBERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChQcm9wZXJ0
eSkgREVGSU5FX0lOSVRJQUwoUHJvcGVydHkpIHtVTlVTRURfUEFSQU0oaW5zdGFuY2UpOyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTt9CisjZGVmaW5lIERFRklORV9VTlJFQUNIQUJMRV9WQUxVRShQcm9w
ZXJ0eSkgREVGSU5FX1ZBTFVFKFByb3BlcnR5KSB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTsgVU5V
U0VEX1BBUkFNKHZhbHVlKTsgQVNTRVJUX05PVF9SRUFDSEVEKCk7fQorCisjZGVmaW5lIERFRklO
RV9FUVVJVkFMRU5UX0lOSEVSSVQoUHJvcGVydHksIEVxdWl2YWxlbnQpIFwKK0RFRklORV9JTkhF
UklUKFByb3BlcnR5KSB7Q1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRXF1aXZhbGVu
dChpbnN0YW5jZSk7fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9JTklUSUFMKFByb3BlcnR5
LCBFcXVpdmFsZW50KSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkge0NTU1N0eWxlU2VsZWN0
b3I6OmhhbmRsZUluaXRpYWwjI0VxdWl2YWxlbnQoaW5zdGFuY2UpO30KKyNkZWZpbmUgREVGSU5F
X0VRVUlWQUxFTlRfVkFMVUUoUHJvcGVydHksIEVxdWl2YWxlbnQpIFwKK0RFRklORV9WQUxVRShQ
cm9wZXJ0eSkge0NTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNFcXVpdmFsZW50KGluc3Rh
bmNlLCB2YWx1ZSk7fQorI2RlZmluZSBERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShQcm9wZXJ0
eSwgRXF1aXZhbGVudCkgXAorREVGSU5FX0VRVUlWQUxFTlRfSU5IRVJJVChQcm9wZXJ0eSwgRXF1
aXZhbGVudCkgXAorREVGSU5FX0VRVUlWQUxFTlRfSU5JVElBTChQcm9wZXJ0eSwgRXF1aXZhbGVu
dCkgXAorREVGSU5FX0VRVUlWQUxFTlRfVkFMVUUoUHJvcGVydHksIEVxdWl2YWxlbnQpCisKKy8v
IFhYWCBjb21iaW5lIEVYUEFORElORyBkZWZpbml0aW9ucz8KKyNkZWZpbmUgREVGSU5FX0VYUEFO
RElOR19JTkhFUklUX1RXTyhQcm9wZXJ0eSwgRmlyc3QsIFNlY29uZCkgXAorREVGSU5FX0lOSEVS
SVQoUHJvcGVydHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQj
I0ZpcnN0KGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQj
I1NlY29uZChpbnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSVRJ
QUxfVFdPKFByb3BlcnR5LCBGaXJzdCwgU2Vjb25kKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0
eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjRmlyc3QoaW5z
dGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjU2Vjb25kKGlu
c3RhbmNlKTsgXAorfQorCisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdfVkFMVUVfVFdPKFByb3Bl
cnR5LCBGaXJzdCwgU2Vjb25kKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAg
IENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlIyNGaXJzdChpbnN0YW5jZSwgdmFsdWUpOyBc
CisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWUjI1NlY29uZChpbnN0YW5jZSwgdmFs
dWUpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKFByb3Bl
cnR5LCBGaXJzdCwgU2Vjb25kLCBUaGlyZCkgXAorREVGSU5FX0lOSEVSSVQoUHJvcGVydHkpIFwK
K3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI0ZpcnN0KGluc3RhbmNl
KTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1NlY29uZChpbnN0YW5j
ZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbmhlcml0IyNUaGlyZChpbnN0YW5j
ZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVEhSRUUoUHJvcGVy
dHksIEZpcnN0LCBTZWNvbmQsIFRoaXJkKSBcCitERUZJTkVfSU5JVElBTChQcm9wZXJ0eSkgXAor
eyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjRmlyc3QoaW5zdGFuY2Up
OyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5pdGlhbCMjU2Vjb25kKGluc3RhbmNl
KTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI1RoaXJkKGluc3RhbmNl
KTsgXAorfQorCisjZGVmaW5lIERFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9GT1VSKFByb3BlcnR5
LCBGaXJzdCwgU2Vjb25kLCBUaGlyZCwgRm91cnRoKSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0
eSkgXAoreyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjRmlyc3QoaW5z
dGFuY2UpOyBcCisgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlSW5oZXJpdCMjU2Vjb25kKGlu
c3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI1RoaXJkKGlu
c3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXQjI0ZvdXJ0aChp
bnN0YW5jZSk7IFwKK30KKworI2RlZmluZSBERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfRk9VUihQ
cm9wZXJ0eSwgRmlyc3QsIFNlY29uZCwgVGhpcmQsIEZvdXJ0aCkgXAorREVGSU5FX0lOSVRJQUwo
UHJvcGVydHkpIFwKK3sgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI0Zp
cnN0KGluc3RhbmNlKTsgXAorICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaXRpYWwjI1Nl
Y29uZChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbml0aWFsIyNU
aGlyZChpbnN0YW5jZSk7IFwKKyAgICBDU1NTdHlsZVNlbGVjdG9yOjpoYW5kbGVJbml0aWFsIyNG
b3VydGgoaW5zdGFuY2UpOyBcCit9CisKKyNkZWZpbmUgREVGSU5FX1NQQUNJTkdfVkFMVUUoUHJv
cGVydHksIFNldHRlcikgXAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7IFwKKyAgICBpZiAo
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeyBcCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7IFwKKyAgICAgICAg
Ym9vbCB1c2VTVkdab29tUnVsZXMgPSBpbnN0YW5jZS0+bV9lbGVtZW50ICYmIGluc3RhbmNlLT5t
X2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOyBcCisgICAgICAgIGludCB3aWR0aCA9IDA7IFwKKyAg
ICAgICAgaWYgKHAtPmdldElkZW50KCkgIT0gQ1NTVmFsdWVOb3JtYWwpIFwKKyAgICAgICAgICAg
IHdpZHRoID0gcC0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5z
dGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgdXNlU1ZHWm9vbVJ1bGVzID8gMS4wZiA6IGluc3Rh
bmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpOyBcCisgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5TZXR0ZXIod2lkdGgpOyBcCisgICAgfSBcCit9CisjZGVmaW5lIERFRklORV9XSURUSF9W
QUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAor
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsgXAor
ICAgICAgICBzaG9ydCB3aWR0aCA9IDM7IFwKKyAgICAgICAgc3dpdGNoIChwLT5nZXRJZGVudCgp
KSB7IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaW46IFwKKyAgICAgICAgICAgIHdpZHRoID0g
MTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bTog
XAorICAgICAgICAgICAgd2lkdGggPSAzOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAg
ICBjYXNlIENTU1ZhbHVlVGhpY2s6IFwKKyAgICAgICAgICAgIHdpZHRoID0gNTsgXAorICAgICAg
ICAgICAgYnJlYWs7IFwKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6IFwKKyAgICAgICAg
ICAgIHdpZHRoID0gcC0+Y29tcHV0ZUxlbmd0aFNob3J0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgp
LCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0
aXZlWm9vbSgpKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgZGVmYXVsdDogXAor
ICAgICAgICAgICAgcmV0dXJuOyBcCisgICAgICAgIH0gXAorICAgICAgICBpZiAod2lkdGggPj0g
MCkgeyBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKHdpZHRoKTsgXAor
ICAgICAgICB9IFwKKyAgICB9IFwKK30KKworI2RlZmluZSBERUZJTkVfTEVOR1RIX1ZBTFVFKFBy
b3BlcnR5LCBTZXR0ZXIsIE5vbmVFbmFibGVkLCBJbnRyaW5zaWNFbmFibGVkLCBNaW5JbnRyaW5z
aWNFbmFibGVkLCBBdXRvRW5hYmxlZCwgTm9uZVVuZGVmaW5lZCkgXAorREVGSU5FX1ZBTFVFKFBy
b3BlcnR5KSBcCit7IFwKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeyBcCisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOyBcCisgICAgICAgIGlmIChOb25lRW5hYmxlZCAmJiBw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIFwKKyAgICAgICAgICAg
IGlmIChOb25lVW5kZWZpbmVkKSBcCisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PlNldHRlcihMZW5ndGgodW5kZWZpbmVkTGVuZ3RoLCBGaXhlZCkpOyBcCisgICAgICAgICAgICBl
bHNlIFwKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0dGVyKExlbmd0aCgp
KTsgXAorICAgICAgICBlbHNlIGlmIChJbnRyaW5zaWNFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW50cmluc2ljKSBcCisgICAgICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+U2V0dGVyKExlbmd0aChJbnRyaW5zaWMpKTsgXAorICAgICAgICBlbHNlIGlm
IChNaW5JbnRyaW5zaWNFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlTWluSW50cmluc2ljKSBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+U2V0
dGVyKExlbmd0aChNaW5JbnRyaW5zaWMpKTsgXAorICAgICAgICBlbHNlIGlmIChBdXRvRW5hYmxl
ZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pIFwKKyAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIoTGVuZ3RoKCkpOyBcCisgICAgICAgIGVs
c2UgeyBcCisgICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVU
eXBlKCk7IFwKKyAgICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxl
bmd0aCh0eXBlKSkgXAorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5TZXR0ZXIo
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKGluc3RhbmNl
LT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBpbnN0YW5jZS0+
bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSwgRml4ZWQsIHByaW1pdGl2ZVZhbHVlLT5pc1F1aXJr
VmFsdWUoKSkpOyBcCisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSkgXAorICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5TZXR0ZXIoTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50
KSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5FX1JBRElVU19W
QUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAor
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7IFwKKyAgICAgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWly
VmFsdWUoKTsgXAorICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXIt
PnNlY29uZCgpKSBcCisgICAgICAgICAgICByZXR1cm47IFwKKyAgICAgICAgTGVuZ3RoIHJhZGl1
c1dpZHRoOyBcCisgICAgICAgIExlbmd0aCByYWRpdXNIZWlnaHQ7IFwKKyAgICAgICAgaWYgKHBh
aXItPmZpcnN0KCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpIFwKKyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVuZ3RoKHBhaXItPmZpcnN0
KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOyBcCisgICAgICAgIGVsc2UgXAorICAgICAg
ICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgobWF4KGludE1pbkZvckxlbmd0aCwgbWluKGludE1h
eEZvckxlbmd0aCwgcGFpci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9z
dHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5
bGUtPmVmZmVjdGl2ZVpvb20oKSkpKSwgRml4ZWQpOyBcCisgICAgICAgIGlmIChwYWlyLT5zZWNv
bmQoKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSkgXAorICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKHBhaXItPnNlY29uZCgpLT5n
ZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsgXAorICAgICAgICBlbHNlIFwKKyAgICAgICAgICAg
IHJhZGl1c0hlaWdodCA9IExlbmd0aChtYXgoaW50TWluRm9yTGVuZ3RoLCBtaW4oaW50TWF4Rm9y
TGVuZ3RoLCBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aEludChpbnN0YW5jZS0+bV9zdHls
ZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUt
PmVmZmVjdGl2ZVpvb20oKSkpKSwgRml4ZWQpOyBcCisgICAgICAgIGludCB3aWR0aCA9IHJhZGl1
c1dpZHRoLnJhd1ZhbHVlKCk7IFwKKyAgICAgICAgaW50IGhlaWdodCA9IHJhZGl1c0hlaWdodC5y
YXdWYWx1ZSgpOyBcCisgICAgICAgIGlmICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCkgXAorICAg
ICAgICAgICAgcmV0dXJuOyBcCisgICAgICAgIGlmICghd2lkdGgpIFwKKyAgICAgICAgICAgIHJh
ZGl1c0hlaWdodCA9IHJhZGl1c1dpZHRoOyBcCisgICAgICAgIGVsc2UgaWYgKCFoZWlnaHQpIFwK
KyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gcmFkaXVzSGVpZ2h0OyBcCisgICAgICAgIExlbmd0
aFNpemUgc2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0KTsgXAorICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+U2V0dGVyKHNpemUpOyBcCisgICAgfSBcCit9CisKKyNkZWZpbmUgREVGSU5F
X1NIQURPV19WQUxVRShQcm9wZXJ0eSwgU2V0dGVyKSBcCitERUZJTkVfVkFMVUUoUHJvcGVydHkp
IFwKK3sgXAorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7IFwKKyAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPlNldHRlcigwKTsgXAorICAgIH0gZWxzZSBpZiAodmFsdWUtPmlz
VmFsdWVMaXN0KCkpIHsgXAorICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKKyAgICAgICAgaW50IGxlbiA9IGxpc3QtPmxlbmd0
aCgpOyBcCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsgXAorICAgICAg
ICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
aSk7IFwKKyAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1NoYWRvd1ZhbHVlKCkpIFwKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsgXAorICAgICAgICAgICAgU2hhZG93VmFsdWUqIGl0ZW0g
PSBzdGF0aWNfY2FzdDxTaGFkb3dWYWx1ZSo+KGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
aSkpOyBcCisgICAgICAgICAgICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVMZW5ndGhJbnQoaW5z
dGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3Rh
bmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpOyBcCisgICAgICAgICAgICBpbnQgeSA9IGl0
ZW0tPnktPmNvbXB1dGVMZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNl
LT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkp
OyBcCisgICAgICAgICAgICBpbnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVtLT5ibHVyLT5jb21w
dXRlTGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxl
bWVudFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSA6IDA7IFwKKyAg
ICAgICAgICAgIGludCBzcHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVtLT5zcHJlYWQtPmNvbXB1
dGVMZW5ndGhJbnQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVt
ZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpIDogMDsgXAorICAg
ICAgICAgICAgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUgPSBpdGVtLT5zdHlsZSAmJiBpdGVtLT5z
dHlsZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluc2V0ID8gSW5zZXQgOiBOb3JtYWw7IFwKKyAg
ICAgICAgICAgIENvbG9yIGNvbG9yOyBcCisgICAgICAgICAgICBpZiAoaXRlbS0+Y29sb3IpIFwK
KyAgICAgICAgICAgICAgICBjb2xvciA9IGluc3RhbmNlLT5nZXRDb2xvckZyb21QcmltaXRpdmVW
YWx1ZShpdGVtLT5jb2xvci5nZXQoKSk7IFwKKyAgICAgICAgICAgIFNoYWRvd0RhdGEqIHNoYWRv
d0RhdGEgPSBuZXcgU2hhZG93RGF0YSh4LCB5LCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBQ
cm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8g
Y29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOyBcCisgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+U2V0dGVyKHNoYWRvd0RhdGEsICEhaSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9
CisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKFByb3BlcnR5LCBwcm9wLCBQcm9w
KSBcCitERUZJTkVfSU5IRVJJVChQcm9wZXJ0eSkgXAoreyBcCisgICAgQW5pbWF0aW9uTGlzdCog
bGlzdCA9IGluc3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKKyAgICBjb25z
dCBBbmltYXRpb25MaXN0KiBwYXJlbnRMaXN0ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmFu
aW1hdGlvbnMoKTsgXAorICAgIHNpemVfdCBpID0gMCwgcGFyZW50U2l6ZSA9IHBhcmVudExpc3Qg
PyBwYXJlbnRMaXN0LT5zaXplKCkgOiAwOyBcCisgICAgZm9yICggOyBpIDwgcGFyZW50U2l6ZSAm
JiBwYXJlbnRMaXN0LT5hbmltYXRpb24oaSktPmlzIyNQcm9wIyNTZXQoKTsgKytpKSB7IFwKKyAg
ICAgICAgaWYgKGxpc3QtPnNpemUoKSA8PSBpKSBcCisgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
QW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5zZXQj
I1Byb3AocGFyZW50TGlzdC0+YW5pbWF0aW9uKGkpLT5wcm9wKCkpOyBcCisgICAgfSBcCisgICAg
XAorICAgIC8qIFJlc2V0IGFueSByZW1haW5pbmcgYW5pbWF0aW9ucyB0byBub3QgaGF2ZSB0aGUg
cHJvcGVydHkgc2V0LiAqLyBcCisgICAgZm9yICggOyBpIDwgbGlzdC0+c2l6ZSgpOyArK2kpIFwK
KyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKGkpLT5jbGVhciMjUHJvcCgpOyBcCit9CisKKyNkZWZp
bmUgREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKFByb3BlcnR5LCBwcm9wLCBQcm9wKSBcCitERUZJ
TkVfSU5JVElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGlu
c3RhbmNlLT5tX3N0eWxlLT5hY2Nlc3NBbmltYXRpb25zKCk7IFwKKyAgICBpZiAobGlzdC0+aXNF
bXB0eSgpKSBcCisgICAgICAgIGxpc3QtPmFwcGVuZChBbmltYXRpb246OmNyZWF0ZSgpKTsgXAor
ICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+c2V0IyNQcm9wKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvbiMjUHJvcCgpKTsgXAorICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbGlzdC0+c2l6ZSgp
OyArK2kpIFwKKyAgICAgICAgbGlzdC0+YW5pbWF0aW9uKDApLT5jbGVhciMjUHJvcCgpOyBcCit9
CisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVElPTl9WQUxVRShQcm9wZXJ0eSwgcHJvcCwgUHJvcCkg
XAorREVGSU5FX1ZBTFVFKFByb3BlcnR5KSBcCit7IFwKKyAgICBBbmltYXRpb25MaXN0KiBsaXN0
ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmFjY2Vzc0FuaW1hdGlvbnMoKTsgXAorICAgIHNpemVfdCBj
aGlsZEluZGV4ID0gMDsgXAorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCisgICAg
ICAgIC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYW4gYW5pbWF0aW9uLCBjcmVh
dGluZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKKyAgICAgICAgQ1NTVmFsdWVMaXN0
KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKysp
IHsgXAorICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKSBcCisgICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgICAg
ICAgICBpbnN0YW5jZS0+bWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZElu
ZGV4KSwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsgXAorICAgICAgICAg
ICAgKytjaGlsZEluZGV4OyBcCisgICAgICAgIH0gXAorICAgIH0gZWxzZSB7IFwKKyAgICAgICAg
aWYgKGxpc3QtPmlzRW1wdHkoKSkgXAorICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlv
bjo6Y3JlYXRlKCkpOyBcCisgICAgICAgIGluc3RhbmNlLT5tYXBBbmltYXRpb24jI1Byb3AobGlz
dC0+YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7IFwKKyAgICAgICAgY2hpbGRJbmRleCA9
IDE7IFwKKyAgICB9IFwKKyAgICBmb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0LT5zaXplKCk7ICsr
Y2hpbGRJbmRleCkgeyBcCisgICAgICAgIC8qIFJlc2V0IGFsbCByZW1haW5pbmcgYW5pbWF0aW9u
cyB0byBub3QgaGF2ZSB0aGUgcHJvcGVydHkgc2V0LiAqLyBcCisgICAgICAgIGxpc3QtPmFuaW1h
dGlvbihjaGlsZEluZGV4KS0+Y2xlYXIjI1Byb3AoKTsgXAorICAgIH0gXAorfQorCisjZGVmaW5l
IERFRklORV9UUkFOU0lUSU9OX0lOSEVSSVQoUHJvcGVydHksIHByb3AsIFByb3ApIFwKK0RFRklO
RV9JTkhFUklUKFByb3BlcnR5KSBcCit7IFwKKyAgICBBbmltYXRpb25MaXN0KiBsaXN0ID0gaW5z
dGFuY2UtPm1fc3R5bGUtPmFjY2Vzc1RyYW5zaXRpb25zKCk7IFwKKyAgICBjb25zdCBBbmltYXRp
b25MaXN0KiBwYXJlbnRMaXN0ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPnRyYW5zaXRpb25z
KCk7IFwKKyAgICBzaXplX3QgaSA9IDAsIHBhcmVudFNpemUgPSBwYXJlbnRMaXN0ID8gcGFyZW50
TGlzdC0+c2l6ZSgpIDogMDsgXAorICAgIGZvciAoIDsgaSA8IHBhcmVudFNpemUgJiYgcGFyZW50
TGlzdC0+YW5pbWF0aW9uKGkpLT5pcyMjUHJvcCMjU2V0KCk7ICsraSkgeyBcCisgICAgICAgIGlm
IChsaXN0LT5zaXplKCkgPD0gaSkgXAorICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlv
bjo6Y3JlYXRlKCkpOyBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbihpKS0+c2V0IyNQcm9wKHBh
cmVudExpc3QtPmFuaW1hdGlvbihpKS0+cHJvcCgpKTsgXAorICAgIH0gXAorICAgIFwKKyAgICAv
KiBSZXNldCBhbnkgcmVtYWluaW5nIHRyYW5zaXRpb25zIHRvIG5vdCBoYXZlIHRoZSBwcm9wZXJ0
eSBzZXQuICovIFwKKyAgICBmb3IgKCA7IGkgPCBsaXN0LT5zaXplKCk7ICsraSkgXAorICAgICAg
ICBsaXN0LT5hbmltYXRpb24oaSktPmNsZWFyIyNQcm9wKCk7IFwKK30KKworI2RlZmluZSBERUZJ
TkVfVFJBTlNJVElPTl9JTklUSUFMKFByb3BlcnR5LCBwcm9wLCBQcm9wKSBcCitERUZJTkVfSU5J
VElBTChQcm9wZXJ0eSkgXAoreyBcCisgICAgQW5pbWF0aW9uTGlzdCogbGlzdCA9IGluc3RhbmNl
LT5tX3N0eWxlLT5hY2Nlc3NUcmFuc2l0aW9ucygpOyBcCisgICAgaWYgKGxpc3QtPmlzRW1wdHko
KSkgXAorICAgICAgICBsaXN0LT5hcHBlbmQoQW5pbWF0aW9uOjpjcmVhdGUoKSk7IFwKKyAgICBs
aXN0LT5hbmltYXRpb24oMCktPnNldCMjUHJvcChBbmltYXRpb246OmluaXRpYWxBbmltYXRpb24j
I1Byb3AoKSk7IFwKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGxpc3QtPnNpemUoKTsgKytp
KSBcCisgICAgICAgIGxpc3QtPmFuaW1hdGlvbigwKS0+Y2xlYXIjI1Byb3AoKTsgXAorfQorCisj
ZGVmaW5lIERFRklORV9UUkFOU0lUSU9OX1ZBTFVFKFByb3BlcnR5LCBwcm9wLCBQcm9wKSBcCitE
RUZJTkVfVkFMVUUoUHJvcGVydHkpIFwKK3sgXAorICAgIEFuaW1hdGlvbkxpc3QqIGxpc3QgPSBp
bnN0YW5jZS0+bV9zdHlsZS0+YWNjZXNzVHJhbnNpdGlvbnMoKTsgXAorICAgIHNpemVfdCBjaGls
ZEluZGV4ID0gMDsgXAorICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeyBcCisgICAgICAg
IC8qIFdhbGsgZWFjaCB2YWx1ZSBhbmQgcHV0IGl0IGludG8gYSB0cmFuc2l0aW9uLCBjcmVhdGlu
ZyBuZXcgYW5pbWF0aW9ucyBhcyBuZWVkZWQuICovIFwKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiB2
YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7IFwKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YWx1ZUxpc3QtPmxlbmd0aCgpOyBpKyspIHsg
XAorICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggPD0gbGlzdC0+c2l6ZSgpKSBcCisgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6Y3JlYXRlKCkpOyBcCisgICAgICAgICAg
ICBpbnN0YW5jZS0+bWFwQW5pbWF0aW9uIyNQcm9wKGxpc3QtPmFuaW1hdGlvbihjaGlsZEluZGV4
KSwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsgXAorICAgICAgICAgICAg
KytjaGlsZEluZGV4OyBcCisgICAgICAgIH0gXAorICAgIH0gZWxzZSB7IFwKKyAgICAgICAgaWYg
KGxpc3QtPmlzRW1wdHkoKSkgXAorICAgICAgICAgICAgbGlzdC0+YXBwZW5kKEFuaW1hdGlvbjo6
Y3JlYXRlKCkpOyBcCisgICAgICAgIGluc3RhbmNlLT5tYXBBbmltYXRpb24jI1Byb3AobGlzdC0+
YW5pbWF0aW9uKGNoaWxkSW5kZXgpLCB2YWx1ZSk7IFwKKyAgICAgICAgY2hpbGRJbmRleCA9IDE7
IFwKKyAgICB9IFwKKyAgICBmb3IgKCA7IGNoaWxkSW5kZXggPCBsaXN0LT5zaXplKCk7ICsrY2hp
bGRJbmRleCkgeyBcCisgICAgICAgIC8qIFJlc2V0IGFsbCByZW1haW5pbmcgdHJhbnNpdGlvbnMg
dG8gbm90IGhhdmUgdGhlIHByb3BlcnR5IHNldC4gKi8gXAorICAgICAgICBsaXN0LT5hbmltYXRp
b24oY2hpbGRJbmRleCktPmNsZWFyIyNQcm9wKCk7IFwKKyAgICB9IFwKK30KKyNlbmRpZgorCisv
LyBDU1NQcm9wZXJ0eUludmFsaWQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENT
U1Byb3BlcnR5SW52YWxpZCgpCit7CisgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVdyYXBwZXJOdWxs
KENTU1Byb3BlcnR5SW52YWxpZCk7Cit9CisvL0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVy
dHlJbnZhbGlkKQorLy9ERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5SW52YWxpZCkKKy8v
REVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlJbnZhbGlkKQorCisvLyBDU1NQcm9wZXJ0eUNv
bG9yCitjbGFzcyBQcm9wZXJ0eVdyYXBwZXJDb2xvciA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJC
YXNlIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eVdyYXBwZXJDb2xvcihpbnQgcHJvcCwgY29uc3Qg
Q29sb3ImIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6
OipzZXR0ZXIpKGNvbnN0IENvbG9yJiksIENvbG9yIGluaXRpYWxWYWx1ZSkKKyAgICAgICAgOiBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCisgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQorICAg
ICAgICAsIG1fc2V0dGVyKHNldHRlcikKKyAgICAgICAgLCBtX2luaXRpYWxWYWx1ZShpbml0aWFs
VmFsdWUpCisgICAgeworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5oZXJpdChDU1NTdHlsZVNl
bGVjdG9yICppbnN0YW5jZSkgY29uc3QKKyAgICB7CisgICAgICAgIChpbnN0YW5jZS0+c3R5bGUo
KS0+Km1fc2V0dGVyKSgoaW5zdGFuY2UtPnBhcmVudFN0eWxlKCktPiptX2dldHRlcikoKSk7Cisg
ICAgfQorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNl
KSBjb25zdAorICAgIHsKKyAgICAgICAgKGluc3RhbmNlLT5zdHlsZSgpLT4qbV9zZXR0ZXIpKG1f
aW5pdGlhbFZhbHVlKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAg
ICAgICAgIGlmIChwLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKQorICAgICAg
ICAgICAgICAgIGluaGVyaXQoaW5zdGFuY2UpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGluc3RhbmNlLT5zdHlsZSgpLT5zZXRDb2xvcihpbnN0YW5jZS0+Z2V0Q29sb3JGcm9t
UHJpbWl0aXZlVmFsdWUocCkpOworICAgICAgICB9CisgICAgfQorcHJvdGVjdGVkOgorICAgIGNv
bnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OiptX2dldHRlcikoKSBjb25zdDsKKyAgICB2b2lkIChS
ZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShjb25zdCBDb2xvciYpOworICAgIGNvbnN0IENvbG9yIG1f
aW5pdGlhbFZhbHVlOworfTsKKy8vc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIENTU0FwcGx5
UHJvcGVydHk6OnNldHVwQ1NTUHJvcGVydHlDb2xvcigpCisvL3sKKy8vICAgIHJldHVybiBuZXcg
UHJvcGVydHlXcmFwcGVyQ29sb3IoQ1NTUHJvcGVydHlDb2xvciwgJlJlbmRlclN0eWxlOjpjb2xv
ciwgJlJlbmRlclN0eWxlOjpzZXRDb2xvciwgUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigpKTsK
Ky8vfQorLy8KKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Q29sb3IsIHNldENv
bG9yLCBjb2xvcikKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Q29sb3IsIHNl
dENvbG9yLCBpbml0aWFsQ29sb3IpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUNvbG9yKQor
Ly97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisvLyAgICAgICAgaWYgKHAtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3Ip
CisvLyAgICAgICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZUluaGVyaXRDU1NQcm9wZXJ0
eUNvbG9yKGluc3RhbmNlKTsKKy8vICAgICAgICBlbHNlCisvLyAgICAgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRDb2xvcihpbnN0YW5jZS0+Z2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUo
cCkpOworLy8gICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5RGlyZWN0aW9uCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eURpcmVjdGlvbigpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eURpcmVj
dGlvbiwgc2V0RGlyZWN0aW9uLCBkaXJlY3Rpb24pCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eURpcmVjdGlvbiwgc2V0RGlyZWN0aW9uLCBpbml0aWFsRGlyZWN0aW9uKQorLy9E
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0RGlyZWN0aW9uKCpwKTsKKy8vICAgIH0KKy8vICAgIGlmIChpbnN0YW5j
ZS0+bV9lbGVtZW50ICYmIGluc3RhbmNlLT5tX2VsZW1lbnQgPT0gaW5zdGFuY2UtPm1fZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisvLyAgICAgICAgaW5zdGFuY2UtPm1f
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0RGlyZWN0aW9uU2V0T25Eb2N1bWVudEVsZW1lbnQodHJ1
ZSk7CisvL30KKworLy8gQ1NTUHJvcGVydHlEaXNwbGF5CitzdGF0aWMgUHJvcGVydHlXcmFwcGVy
QmFzZSogc2V0dXBDU1NQcm9wZXJ0eURpc3BsYXkoKQoreworICAgIHJldHVybiAwOworfQorCisK
Ky8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5RGlzcGxheSwgc2V0RGlzcGxheSwg
ZGlzcGxheSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5RGlzcGxheSwgc2V0
RGlzcGxheSwgaW5pdGlhbERpc3BsYXkpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eURpc3Bs
YXkpCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKy8vI2lmIEVOQUJMRShXQ1NTKQorLy8gICAgICAgIGlmIChwLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlV2FwTWFycXVlZSkgeworLy8gICAgICAgICAgICAvLyBJbml0aWFsaXplIFdB
UCBNYXJxdWVlIHN0eWxlCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPdmVy
Zmxvd1goT01BUlFVRUUpOworLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0T3Zl
cmZsb3dZKE9NQVJRVUVFKTsKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFdo
aXRlU3BhY2UoTk9XUkFQKTsKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1h
cnF1ZWVEaXJlY3Rpb24oTUxFRlQpOworLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0TWFycXVlZVNwZWVkKDg1KTsgLy8gTm9ybWFsIHNwZWVkCisvLyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KDEpOworLy8gICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZUJlaGF2aW9yKE1TQ1JPTEwpOworLy8KKy8vICAgICAg
ICAgICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlKSB7CisvLyAgICAgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0RGlzcGxheShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+ZGlz
cGxheSgpKTsKKy8vICAgICAgICAgICAgICAgIHJldHVybjsKKy8vICAgICAgICAgICAgfQorLy8g
ICAgICAgIH0KKy8vI2VuZGlmCisvLyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldERpc3Bs
YXkoKnApOworLy8gICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5Rm9udAorc3RhdGljIFByb3Bl
cnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlGb250KCkKK3sKKyAgICByZXR1cm4gMDsK
K30KKworLy9ERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnQpCisvL3sKKy8vICAgIEZvbnRE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCk7CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGluZUhlaWdodChp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bGluZUhlaWdodCgpKTsKKy8vICAgIGluc3RhbmNlLT5t
X2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisvLyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZv
bnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorLy8gICAgICAgIGluc3RhbmNlLT5tX2Zv
bnREaXJ0eSA9IHRydWU7CisvL30KKy8vREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlGb250KQor
Ly97CisvLyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9j
dW1lbnQtPnNldHRpbmdzKCk7CisvLyAgICBBU1NFUlQoc2V0dGluZ3MpOyAvLyBJZiB3ZSdyZSBk
b2luZyBzdHlsZSByZXNvbHV0aW9uLCB0aGlzIGRvY3VtZW50IHNob3VsZCBhbHdheXMgYmUgaW4g
YSBmcmFtZSBhbmQgdGh1cyBoYXZlIHNldHRpbmdzCisvLyAgICBpZiAoIXNldHRpbmdzKQorLy8g
ICAgICAgIHJldHVybjsKKy8vICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb247Cisv
LyAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlN0
YW5kYXJkRmFtaWx5KTsKKy8vICAgIGZvbnREZXNjcmlwdGlvbi5zZXRSZW5kZXJpbmdNb2RlKHNl
dHRpbmdzLT5mb250UmVuZGVyaW5nTW9kZSgpKTsKKy8vICAgIGZvbnREZXNjcmlwdGlvbi5zZXRV
c2VQcmludGVyRm9udChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnByaW50aW5nKCkp
OworLy8gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGFuZGFyZEZvbnRGYW1pbHkgPSBpbnN0YW5j
ZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCktPnN0YW5kYXJkRm9udEZhbWlseSgp
OworLy8gICAgaWYgKCFzdGFuZGFyZEZvbnRGYW1pbHkuaXNFbXB0eSgpKSB7CisvLyAgICAgICAg
Zm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuc2V0RmFtaWx5KHN0YW5kYXJkRm9udEZhbWls
eSk7CisvLyAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuYXBwZW5kRmFtaWx5
KDApOworLy8gICAgfQorLy8gICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRTaXplKENTU1Zh
bHVlTWVkaXVtIC0gQ1NTVmFsdWVYeFNtYWxsICsgMSk7CisvLyAgICBpbnN0YW5jZS0+c2V0Rm9u
dFNpemUoZm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdvcmQoaW5zdGFuY2UtPm1fY2hl
Y2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZU1lZGl1bSwgZmFsc2UpKTsKKy8vICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRMaW5lSGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgp
KTsKKy8vICAgIGluc3RhbmNlLT5tX2xpbmVIZWlnaHRWYWx1ZSA9IDA7CisvLyAgICBpZiAoaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorLy8g
ICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7CisvL30KKy8vREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5Rm9udCkKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vCisvLyAgICAgICAgYm9vbCB1
c2VTVkdab29tUnVsZXMgPSBpbnN0YW5jZS0+bV9lbGVtZW50ICYmIGluc3RhbmNlLT5tX2VsZW1l
bnQtPmlzU1ZHRWxlbWVudCgpOworLy8KKy8vICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7CisvLyAgICAgICAg
aW5zdGFuY2UtPm1fbGluZUhlaWdodFZhbHVlID0gMDsKKy8vCisvLyAgICAgICAgRm9udERlc2Ny
aXB0aW9uIGZvbnREZXNjcmlwdGlvbjsKKy8vICAgICAgICBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRo
ZW1lKCktPnN5c3RlbUZvbnQocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCksIGZvbnREZXNjcmlw
dGlvbik7CisvLworLy8gICAgICAgIC8vIERvdWJsZS1jaGVjayBhbmQgc2VlIGlmIHRoZSB0aGVt
ZSBkaWQgYW55dGhpbmcuICBJZiBub3QsIGRvbid0IGJvdGhlciB1cGRhdGluZyB0aGUgZm9udC4K
Ky8vICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCkpIHsKKy8vICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSByZW5kZXJpbmcgbW9kZSBhbmQgcHJpbnRlciBmb250
IHNldHRpbmdzIGFyZSB1cGRhdGVkLgorLy8gICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisvLyAgICAgICAg
ICAgIEFTU0VSVChzZXR0aW5ncyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRpb24s
IHRoaXMgZG9jdW1lbnQgc2hvdWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhhdmUg
c2V0dGluZ3MKKy8vICAgICAgICAgICAgaWYgKCFzZXR0aW5ncykKKy8vICAgICAgICAgICAgICAg
IHJldHVybjsKKy8vICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFJlbmRlcmluZ01vZGUo
c2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOworLy8gICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0VXNlUHJpbnRlckZvbnQoaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LT5w
cmludGluZygpKTsKKy8vCisvLyAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBmYWN0b3Iu
CisvLyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZ2V0Q29tcHV0
ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50LCBp
bnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCks
IGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVzZVNWR1pvb21SdWxlcykpOworLy8g
ICAgICAgICAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pKQorLy8gICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0g
dHJ1ZTsKKy8vICAgICAgICB9CisvLyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc0ZvbnRWYWx1ZSgp
KSB7CisvLyAgICAgICAgRm9udFZhbHVlKiBmb250ID0gc3RhdGljX2Nhc3Q8Rm9udFZhbHVlKj4o
dmFsdWUpOworLy8gICAgICAgIGlmICghZm9udC0+c3R5bGUgfHwgIWZvbnQtPnZhcmlhbnQgfHwg
IWZvbnQtPndlaWdodCB8fCAhZm9udC0+c2l6ZSB8fCAhZm9udC0+bGluZUhlaWdodCB8fCAhZm9u
dC0+ZmFtaWx5KQorLy8gICAgICAgICAgICByZXR1cm47CisvLyAgICAgICAgQ1NTU3R5bGVTZWxl
Y3Rvcjo6aGFuZGxlVmFsdWVDU1NQcm9wZXJ0eUZvbnRTdHlsZShpbnN0YW5jZSwgZm9udC0+c3R5
bGUuZ2V0KCkpOworLy8gICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OmhhbmRsZVZhbHVlQ1NTUHJv
cGVydHlGb250VmFyaWFudChpbnN0YW5jZSwgZm9udC0+dmFyaWFudC5nZXQoKSk7CisvLyAgICAg
ICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFsdWVDU1NQcm9wZXJ0eUZvbnRXZWlnaHQoaW5z
dGFuY2UsIGZvbnQtPndlaWdodC5nZXQoKSk7CisvLyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6
aGFuZGxlVmFsdWVDU1NQcm9wZXJ0eUZvbnRTaXplKGluc3RhbmNlLCBmb250LT5zaXplLmdldCgp
KTsKKy8vCisvLyAgICAgICAgaW5zdGFuY2UtPm1fbGluZUhlaWdodFZhbHVlID0gZm9udC0+bGlu
ZUhlaWdodC5nZXQoKTsKKy8vCisvLyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6aGFuZGxlVmFs
dWVDU1NQcm9wZXJ0eUZvbnRGYW1pbHkoaW5zdGFuY2UsIGZvbnQtPmZhbWlseS5nZXQoKSk7Cisv
LyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlGb250RmFtaWx5CitzdGF0aWMgUHJvcGVydHlX
cmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUZvbnRGYW1pbHkoKQoreworICAgIHJldHVybiAw
OworfQorCisvLy8vIGxpc3Qgb2Ygc3RyaW5ncyBhbmQgaWRzCisvL0RFRklORV9JTkhFUklUKENT
U1Byb3BlcnR5Rm9udEZhbWlseSkKKy8veworLy8gICAgRm9udERlc2NyaXB0aW9uIHBhcmVudEZv
bnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24o
KTsKKy8vICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9z
dHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisvLyAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJp
Y0ZhbWlseShwYXJlbnRGb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpKTsKKy8vICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRGYW1pbHkocGFyZW50Rm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5
KCkpOworLy8gICAgZm9udERlc2NyaXB0aW9uLnNldElzU3BlY2lmaWVkRm9udChwYXJlbnRGb250
RGVzY3JpcHRpb24uaXNTcGVjaWZpZWRGb250KCkpOworLy8gICAgaWYgKGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKy8vICAgICAgICBpbnN0
YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy99CisvL0RFRklORV9JTklUSUFMKENTU1Byb3Bl
cnR5Rm9udEZhbWlseSkKKy8veworLy8gICAgRm9udERlc2NyaXB0aW9uIGluaXRpYWxEZXNjID0g
Rm9udERlc2NyaXB0aW9uKCk7CisvLyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworLy8gICAgLy8gV2UgbmVl
ZCB0byBhZGp1c3QgdGhlIHNpemUgdG8gYWNjb3VudCBmb3IgdGhlIGdlbmVyaWMgZmFtaWx5IGNo
YW5nZSBmcm9tIG1vbm9zcGFjZQorLy8gICAgLy8gdG8gbm9uLW1vbm9zcGFjZS4KKy8vICAgIGlm
IChmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBmb250RGVzY3JpcHRpb24udXNlRml4
ZWREZWZhdWx0U2l6ZSgpKQorLy8gICAgICAgIGluc3RhbmNlLT5zZXRGb250U2l6ZShmb250RGVz
Y3JpcHRpb24sIGZvbnRTaXplRm9yS2V5d29yZChpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1l
bnQsIENTU1ZhbHVlWHhTbWFsbCArIGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwg
ZmFsc2UpKTsKKy8vICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KGluaXRpYWxE
ZXNjLmdlbmVyaWNGYW1pbHkoKSk7CisvLyAgICBpZiAoIWluaXRpYWxEZXNjLmZpcnN0RmFtaWx5
KCkuZmFtaWx5SXNFbXB0eSgpKQorLy8gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbHko
aW5pdGlhbERlc2MuZmlyc3RGYW1pbHkoKSk7CisvLyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUt
PnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorLy8gICAgICAgIGluc3RhbmNl
LT5tX2ZvbnREaXJ0eSA9IHRydWU7CisvL30KKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Rm9u
dEZhbWlseSkKKy8veworLy8gICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKy8vICAgICAg
ICByZXR1cm47CisvLyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFu
Y2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworLy8gICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworLy8gICAgaW50IGxlbiA9IGxp
c3QtPmxlbmd0aCgpOworLy8gICAgRm9udEZhbWlseSYgZmlyc3RGYW1pbHkgPSBmb250RGVzY3Jp
cHRpb24uZmlyc3RGYW1pbHkoKTsKKy8vICAgIEZvbnRGYW1pbHkqIGN1cnJGYW1pbHkgPSAwOwor
Ly8KKy8vICAgIC8vIEJlZm9yZSBtYXBwaW5nIGluIGEgbmV3IGZvbnQtZmFtaWx5IHByb3BlcnR5
LCB3ZSBzaG91bGQgcmVzZXQgdGhlIGdlbmVyaWMgZmFtaWx5LgorLy8gICAgYm9vbCBvbGRGYW1p
bHlVc2VkRml4ZWREZWZhdWx0U2l6ZSA9IGZvbnREZXNjcmlwdGlvbi51c2VGaXhlZERlZmF1bHRT
aXplKCk7CisvLyAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3Jp
cHRpb246Ok5vRmFtaWx5KTsKKy8vCisvLyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsr
KSB7CisvLyAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKGkpOworLy8gICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorLy8gICAg
ICAgICAgICBjb250aW51ZTsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKy8vICAgICAgICBB
dG9taWNTdHJpbmcgZmFjZTsKKy8vICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBpbnN0YW5j
ZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCk7CisvLyAgICAgICAgaWYgKGNvbnRl
bnRWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KSB7CisvLyAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUtPmlzRm9udEZhbWlseVZhbHVlKCkp
CisvLyAgICAgICAgICAgICAgICBmYWNlID0gc3RhdGljX2Nhc3Q8Rm9udEZhbWlseVZhbHVlKj4o
Y29udGVudFZhbHVlKS0+ZmFtaWx5TmFtZSgpOworLy8gICAgICAgIH0gZWxzZSBpZiAoY29udGVu
dFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAm
JiBzZXR0aW5ncykgeworLy8gICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRl
bnQoKSkgeworLy8gICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Qm9keToKKy8vICAgICAg
ICAgICAgICAgIGZhY2UgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CisvLyAgICAg
ICAgICAgICAgICBicmVhazsKKy8vICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNlcmlmOgorLy8g
ICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LXNlcmlmIjsKKy8vICAgICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U2VyaWZG
YW1pbHkpOworLy8gICAgICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgICAgIGNhc2UgQ1NT
VmFsdWVTYW5zU2VyaWY6CisvLyAgICAgICAgICAgICAgICBmYWNlID0gIi13ZWJraXQtc2Fucy1z
ZXJpZiI7CisvLyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWls
eShGb250RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseSk7CisvLyAgICAgICAgICAgICAgICBi
cmVhazsKKy8vICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUN1cnNpdmU6CisvLyAgICAgICAgICAg
ICAgICBmYWNlID0gIi13ZWJraXQtY3Vyc2l2ZSI7CisvLyAgICAgICAgICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OkN1cnNpdmVGYW1pbHkp
OworLy8gICAgICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVG
YW50YXN5OgorLy8gICAgICAgICAgICAgICAgZmFjZSA9ICItd2Via2l0LWZhbnRhc3kiOworLy8g
ICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2Ny
aXB0aW9uOjpGYW50YXN5RmFtaWx5KTsKKy8vICAgICAgICAgICAgICAgIGJyZWFrOworLy8gICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlTW9ub3NwYWNlOgorLy8gICAgICAgICAgICAgICAgZmFjZSA9
ICItd2Via2l0LW1vbm9zcGFjZSI7CisvLyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZhbWlseSk7CisvLyAg
ICAgICAgICAgICAgICBicmVhazsKKy8vICAgICAgICAgICAgfQorLy8gICAgICAgIH0KKy8vCisv
LyAgICAgICAgaWYgKCFmYWNlLmlzRW1wdHkoKSkgeworLy8gICAgICAgICAgICBpZiAoIWN1cnJG
YW1pbHkpIHsKKy8vICAgICAgICAgICAgICAgIC8vIEZpbGxpbmcgaW4gdGhlIGZpcnN0IGZhbWls
eS4KKy8vICAgICAgICAgICAgICAgIGZpcnN0RmFtaWx5LnNldEZhbWlseShmYWNlKTsKKy8vICAg
ICAgICAgICAgICAgIGZpcnN0RmFtaWx5LmFwcGVuZEZhbWlseSgwKTsgLy8gUmVtb3ZlIGFueSBp
bmhlcml0ZWQgZmFtaWx5LWZhbGxiYWNrIGxpc3QuCisvLyAgICAgICAgICAgICAgICBjdXJyRmFt
aWx5ID0gJmZpcnN0RmFtaWx5OworLy8gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dElzU3BlY2lmaWVkRm9udChmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpID09IEZvbnRE
ZXNjcmlwdGlvbjo6Tm9GYW1pbHkpOworLy8gICAgICAgICAgICB9IGVsc2UgeworLy8gICAgICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNoYXJlZEZvbnRG
YW1pbHk6OmNyZWF0ZSgpOworLy8gICAgICAgICAgICAgICAgbmV3RmFtaWx5LT5zZXRGYW1pbHko
ZmFjZSk7CisvLyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3RmFt
aWx5KTsKKy8vICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7Cisv
LyAgICAgICAgICAgIH0KKy8vICAgICAgICB9CisvLyAgICB9CisvLworLy8gICAgLy8gV2UgY2Fu
J3QgY2FsbCB1c2VGaXhlZERlZmF1bHRTaXplKCkgdW50aWwgYWxsIG5ldyBmb250IGZhbWlsaWVz
IGhhdmUgYmVlbiBhZGRlZAorLy8gICAgLy8gSWYgY3VyckZhbWlseSBpcyBub24temVybyB0aGVu
IHdlIHNldCBhdCBsZWFzdCBvbmUgZmFtaWx5IG9uIHRoaXMgZGVzY3JpcHRpb24uCisvLyAgICBp
ZiAoY3VyckZhbWlseSkgeworLy8gICAgICAgIGlmIChmb250RGVzY3JpcHRpb24ua2V5d29yZFNp
emUoKSAmJiBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpICE9IG9sZEZhbWls
eVVzZWRGaXhlZERlZmF1bHRTaXplKQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+c2V0Rm9udFNp
emUoZm9udERlc2NyaXB0aW9uLCBmb250U2l6ZUZvcktleXdvcmQoaW5zdGFuY2UtPm1fY2hlY2tl
ci5tX2RvY3VtZW50LCBDU1NWYWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24ua2V5d29yZFNp
emUoKSAtIDEsICFvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkpOworLy8KKy8vICAgICAg
ICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRp
b24pKQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy8gICAg
fQorLy8gICAgcmV0dXJuOworLy99CisKKy8vIENTU1Byb3BlcnR5Rm9udFNpemUKK3N0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Rm9udFNpemUoKSB7CisgICAgcmV0
dXJuIDA7Cit9CisKKworLy9ERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRTaXplKQorLy97
CisvLyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpOworLy8gICAgZm9udERlc2NyaXB0aW9uLnNldEtleXdvcmRT
aXplKDApOworLy8gICAgZmxvYXQgc2l6ZSA9IDA7CisvLworLy8gICAgaWYgKGluc3RhbmNlLT5t
X3BhcmVudE5vZGUpIHsKKy8vICAgICAgICBzaXplID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKTsKKy8vICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0S2V5d29yZFNpemUoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlw
dGlvbigpLmtleXdvcmRTaXplKCkpOworLy8gICAgfQorLy8KKy8vICAgIGlmIChzaXplIDwgMCkK
Ky8vICAgICAgICByZXR1cm47CisvLworLy8gICAgaW5zdGFuY2UtPnNldEZvbnRTaXplKGZvbnRE
ZXNjcmlwdGlvbiwgc2l6ZSk7CisvLyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorLy8gICAgICAgIGluc3RhbmNlLT5tX2ZvbnRE
aXJ0eSA9IHRydWU7CisvLyAgICByZXR1cm47CisvL30KKy8vREVGSU5FX0lOSVRJQUwoQ1NTUHJv
cGVydHlGb250U2l6ZSkKKy8veworLy8gICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlv
biA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKy8vICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsKKy8vICAgIGZsb2F0IHNpemUgPSAwOworLy8KKy8v
ICAgIHNpemUgPSBDU1NTdHlsZVNlbGVjdG9yOjpmb250U2l6ZUZvcktleXdvcmQoaW5zdGFuY2Ut
Pm1fY2hlY2tlci5tX2RvY3VtZW50LCBDU1NWYWx1ZU1lZGl1bSwgZm9udERlc2NyaXB0aW9uLnVz
ZUZpeGVkRGVmYXVsdFNpemUoKSk7CisvLyAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5d29yZFNp
emUoQ1NTVmFsdWVNZWRpdW0gLSBDU1NWYWx1ZVh4U21hbGwgKyAxKTsKKy8vCisvLyAgICBpZiAo
c2l6ZSA8IDApCisvLyAgICAgICAgcmV0dXJuOworLy8KKy8vICAgIGluc3RhbmNlLT5zZXRGb250
U2l6ZShmb250RGVzY3JpcHRpb24sIHNpemUpOworLy8gICAgaWYgKGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKy8vICAgICAgICBpbnN0YW5j
ZS0+bV9mb250RGlydHkgPSB0cnVlOworLy8gICAgcmV0dXJuOworLy99CisvL0RFRklORV9WQUxV
RShDU1NQcm9wZXJ0eUZvbnRTaXplKQorLy97CisvLyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCisvLyAgICAgICAgcmV0dXJuOworLy8KKy8vICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworLy8KKy8vICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+
bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisvLyAgICBmb250RGVzY3JpcHRpb24uc2V0S2V5
d29yZFNpemUoMCk7CisvLyAgICBmbG9hdCBvbGRTaXplID0gMDsKKy8vICAgIGZsb2F0IHNpemUg
PSAwOworLy8KKy8vICAgIGJvb2wgcGFyZW50SXNBYnNvbHV0ZVNpemUgPSBmYWxzZTsKKy8vICAg
IGlmIChpbnN0YW5jZS0+bV9wYXJlbnROb2RlKSB7CisvLyAgICAgICAgb2xkU2l6ZSA9IGluc3Rh
bmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCk7Cisv
LyAgICAgICAgcGFyZW50SXNBYnNvbHV0ZVNpemUgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCkuaXNBYnNvbHV0ZVNpemUoKTsKKy8vICAgIH0KKy8vCisvLyAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKy8vICAgICAgICAvLyBLZXl3b3JkcyBh
cmUgYmVpbmcgdXNlZC4KKy8vICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7CisvLyAgICAgICAgY2FzZSBDU1NWYWx1ZVh4U21hbGw6CisvLyAgICAgICAgY2FzZSBD
U1NWYWx1ZVhTbWFsbDoKKy8vICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGw6CisvLyAgICAgICAg
Y2FzZSBDU1NWYWx1ZU1lZGl1bToKKy8vICAgICAgICBjYXNlIENTU1ZhbHVlTGFyZ2U6CisvLyAg
ICAgICAgY2FzZSBDU1NWYWx1ZVhMYXJnZToKKy8vICAgICAgICBjYXNlIENTU1ZhbHVlWHhMYXJn
ZToKKy8vICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0WHh4TGFyZ2U6CisvLyAgICAgICAgICAg
IHNpemUgPSBmb250U2l6ZUZvcktleXdvcmQoaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50
LCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSwgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVm
YXVsdFNpemUoKSk7CisvLyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6
ZShwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSAtIENTU1ZhbHVlWHhTbWFsbCArIDEpOworLy8g
ICAgICAgICAgICBicmVhazsKKy8vICAgICAgICBjYXNlIENTU1ZhbHVlTGFyZ2VyOgorLy8gICAg
ICAgICAgICBzaXplID0gaW5zdGFuY2UtPmxhcmdlckZvbnRTaXplKG9sZFNpemUsIGluc3RhbmNl
LT5tX2NoZWNrZXIubV9kb2N1bWVudC0+aW5RdWlya3NNb2RlKCkpOworLy8gICAgICAgICAgICBi
cmVhazsKKy8vICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGxlcjoKKy8vICAgICAgICAgICAgc2l6
ZSA9IGluc3RhbmNlLT5zbWFsbGVyRm9udFNpemUob2xkU2l6ZSwgaW5zdGFuY2UtPm1fY2hlY2tl
ci5tX2RvY3VtZW50LT5pblF1aXJrc01vZGUoKSk7CisvLyAgICAgICAgICAgIGJyZWFrOworLy8g
ICAgICAgIGRlZmF1bHQ6CisvLyAgICAgICAgICAgIHJldHVybjsKKy8vICAgICAgICB9CisvLwor
Ly8gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29s
dXRlU2l6ZSAmJiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVMYXJnZXIg
fHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVTbWFsbGVyKSk7CisvLyAg
ICB9IGVsc2UgeworLy8gICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKTsKKy8vICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUocGFy
ZW50SXNBYnNvbHV0ZVNpemUgfHwgKHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJD
RU5UQUdFICYmIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMgJiYgdHlwZSAhPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUyAmJiB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUkVNUykpOworLy8gICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxl
bmd0aCh0eXBlKSkKKy8vICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRl
TGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUsIGluc3RhbmNlLT5tX3Jvb3RFbGVt
ZW50U3R5bGUsIHRydWUpOworLy8gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFKQorLy8gICAgICAgICAgICBzaXplID0gKHByaW1pdGl2ZVZh
bHVlLT5nZXRGbG9hdFZhbHVlKCkgKiBvbGRTaXplKSAvIDEwMC4wZjsKKy8vICAgICAgICBlbHNl
CisvLyAgICAgICAgICAgIHJldHVybjsKKy8vICAgIH0KKy8vCisvLyAgICBpZiAoc2l6ZSA8IDAp
CisvLyAgICAgICAgcmV0dXJuOworLy8KKy8vICAgIGluc3RhbmNlLT5zZXRGb250U2l6ZShmb250
RGVzY3JpcHRpb24sIHNpemUpOworLy8gICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250
RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKy8vICAgICAgICBpbnN0YW5jZS0+bV9mb250
RGlydHkgPSB0cnVlOworLy99CisKKworLy8gQ1NTUHJvcGVydHlGb250U3R5bGUKK3N0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Rm9udFN0eWxlKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRTdHlsZSkKKy8v
eworLy8gICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0
eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKy8vICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMo
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLml0YWxpYygpKTsKKy8v
CisvLyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVz
Y3JpcHRpb24pKQorLy8gICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7CisvL30K
Ky8vREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlGb250U3R5bGUpCisvL3sKKy8vICAgIEZvbnRE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCk7CisvLyAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKGZhbHNlKTsKKy8vCisv
LyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pKQorLy8gICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7CisvL30KKy8v
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Rm9udFN0eWxlKQorLy97CisvLyAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisvLyAgICAgICAgcmV0dXJuOworLy8KKy8vICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisvLyAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5
bGUtPmZvbnREZXNjcmlwdGlvbigpOworLy8gICAgc3dpdGNoIChwLT5nZXRJZGVudCgpKSB7Cisv
LyAgICBjYXNlIENTU1ZhbHVlT2JsaXF1ZToKKy8vICAgIC8vIEZJWE1FOiBvYmxpcXVlIGlzIHRo
ZSBzYW1lIGFzIGl0YWxpYyBmb3IgdGhlIG1vbWVudC4uLgorLy8gICAgY2FzZSBDU1NWYWx1ZUl0
YWxpYzoKKy8vICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXRhbGljKHRydWUpOworLy8gICAg
ICAgIGJyZWFrOworLy8gICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKKy8vICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0SXRhbGljKGZhbHNlKTsKKy8vICAgICAgICBicmVhazsKKy8vICAgIGRlZmF1
bHQ6CisvLyAgICAgICAgcmV0dXJuOworLy8gICAgfQorLy8gICAgaWYgKGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKy8vICAgICAgICBpbnN0
YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy99CisKKy8vIENTU1Byb3BlcnR5Rm9udFZhcmlh
bnQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Rm9udFZhcmlh
bnQoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5
Rm9udFZhcmlhbnQpCisvL3sKKy8vICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24g
PSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisvLyAgICBmb250RGVzY3Jp
cHRpb24uc2V0U21hbGxDYXBzKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5mb250RGVzY3JpcHRp
b24oKS5zbWFsbENhcHMoKSk7CisvLworLy8gICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKy8vICAgICAgICBpbnN0YW5jZS0+bV9m
b250RGlydHkgPSB0cnVlOworLy99CisvL0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Rm9udFZh
cmlhbnQpCisvL3sKKy8vICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0
YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisvLyAgICBmb250RGVzY3JpcHRpb24u
c2V0U21hbGxDYXBzKGZhbHNlKTsKKy8vCisvLyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorLy8gICAgICAgIGluc3RhbmNlLT5t
X2ZvbnREaXJ0eSA9IHRydWU7CisvL30KKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Rm9udFZh
cmlhbnQpCisvL3sKKy8vICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKy8vICAg
ICAgICByZXR1cm47CisvLworLy8gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgIEZvbnREZXNjcmlwdGlvbiBmb250
RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisvLyAg
ICBpbnQgaWQgPSBwLT5nZXRJZGVudCgpOworLy8gICAgaWYgKGlkID09IENTU1ZhbHVlTm9ybWFs
KQorLy8gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTbWFsbENhcHMoZmFsc2UpOworLy8gICAg
ZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVTbWFsbENhcHMpCisvLyAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldFNtYWxsQ2Fwcyh0cnVlKTsKKy8vICAgIGVsc2UKKy8vICAgICAgICByZXR1cm47Cisv
LworLy8gICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERl
c2NyaXB0aW9uKSkKKy8vICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy99
CisKKy8vIENTU1Byb3BlcnR5Rm9udFdlaWdodAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2Uq
IHNldHVwQ1NTUHJvcGVydHlGb250V2VpZ2h0KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9E
RUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCisvL3sKKy8vICAgIEZvbnREZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0
aW9uKCk7CisvLyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KGluc3RhbmNlLT5tX3BhcmVu
dFN0eWxlLT5mb250RGVzY3JpcHRpb24oKS53ZWlnaHQoKSk7CisvLworLy8gICAgaWYgKGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKy8vICAg
ICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy99CisvL0RFRklORV9JTklUSUFM
KENTU1Byb3BlcnR5Rm9udFdlaWdodCkKKy8veworLy8gICAgRm9udERlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKy8vICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7CisvLworLy8gICAg
aWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9u
KSkKKy8vICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy99CisvL0RFRklO
RV9WQUxVRShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpCisvL3sKKy8vICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKKy8vICAgICAgICByZXR1cm47CisvLworLy8gICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8v
ICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+
Zm9udERlc2NyaXB0aW9uKCk7CisvLworLy8gICAgc3dpdGNoIChwLT5nZXRJZGVudCgpKSB7Cisv
LyAgICBjYXNlIDA6CisvLyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisvLyAgICBjYXNl
IENTU1ZhbHVlQm9sZGVyOgorLy8gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZm9u
dERlc2NyaXB0aW9uLmJvbGRlcldlaWdodCgpKTsKKy8vICAgICAgICBicmVhazsKKy8vICAgIGNh
c2UgQ1NTVmFsdWVMaWdodGVyOgorLy8gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQo
Zm9udERlc2NyaXB0aW9uLmxpZ2h0ZXJXZWlnaHQoKSk7CisvLyAgICAgICAgYnJlYWs7CisvLyAg
ICBjYXNlIENTU1ZhbHVlQm9sZDoKKy8vICAgIGNhc2UgQ1NTVmFsdWU3MDA6CisvLyAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0Qm9sZCk7CisvLyAgICAgICAgYnJl
YWs7CisvLyAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorLy8gICAgY2FzZSBDU1NWYWx1ZTQwMDoK
Ky8vICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwor
Ly8gICAgICAgIGJyZWFrOworLy8gICAgY2FzZSBDU1NWYWx1ZTkwMDoKKy8vICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ5MDApOworLy8gICAgICAgIGJyZWFrOwor
Ly8gICAgY2FzZSBDU1NWYWx1ZTgwMDoKKy8vICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2Vp
Z2h0KEZvbnRXZWlnaHQ4MDApOworLy8gICAgICAgIGJyZWFrOworLy8gICAgY2FzZSBDU1NWYWx1
ZTYwMDoKKy8vICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ2MDAp
OworLy8gICAgICAgIGJyZWFrOworLy8gICAgY2FzZSBDU1NWYWx1ZTUwMDoKKy8vICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQ1MDApOworLy8gICAgICAgIGJyZWFr
OworLy8gICAgY2FzZSBDU1NWYWx1ZTMwMDoKKy8vICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
V2VpZ2h0KEZvbnRXZWlnaHQzMDApOworLy8gICAgICAgIGJyZWFrOworLy8gICAgY2FzZSBDU1NW
YWx1ZTIwMDoKKy8vICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQy
MDApOworLy8gICAgICAgIGJyZWFrOworLy8gICAgY2FzZSBDU1NWYWx1ZTEwMDoKKy8vICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRXZWlnaHQxMDApOworLy8gICAgICAgIGJy
ZWFrOworLy8gICAgZGVmYXVsdDoKKy8vICAgICAgICByZXR1cm47CisvLyAgICB9CisvLworLy8g
ICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKSkKKy8vICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy99CisKKy8v
IENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZworc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNl
dHVwQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9E
RUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpCisvL3sKKy8vICAgIEZvbnRE
ZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2Ny
aXB0aW9uKCk7CisvLyAgICBmb250RGVzY3JpcHRpb24uc2V0VGV4dFJlbmRlcmluZ01vZGUoaW5z
dGFuY2UtPm1fcGFyZW50U3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnRleHRSZW5kZXJpbmdNb2Rl
KCkpOworLy8gICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9u
dERlc2NyaXB0aW9uKSkKKy8vICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOwor
Ly99CisvL0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZykKKy8veworLy8g
ICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5m
b250RGVzY3JpcHRpb24oKTsKKy8vICAgIGZvbnREZXNjcmlwdGlvbi5zZXRUZXh0UmVuZGVyaW5n
TW9kZShBdXRvVGV4dFJlbmRlcmluZyk7CisvLyAgICBpZiAoaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorLy8gICAgICAgIGluc3RhbmNlLT5t
X2ZvbnREaXJ0eSA9IHRydWU7CisvL30KKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5VGV4dFJl
bmRlcmluZykKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKy8v
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gaW5zdGFuY2UtPm1fc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworLy8g
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRUZXh0UmVuZGVyaW5nTW9kZSgqcHJpbWl0aXZlVmFs
dWUpOworLy8gICAgICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9u
KGZvbnREZXNjcmlwdGlvbikpCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9
IHRydWU7CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5n
CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRT
bW9vdGhpbmcoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0Rm9udFNtb290aGluZykKKy8veworLy8gICAgRm9udERlc2NyaXB0aW9uIGZv
bnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24oKTsKKy8v
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKGluc3RhbmNlLT5tX3BhcmVudFN0
eWxlLT5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOworLy8gICAgaWYgKGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKy8vICAg
ICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy99CisvL0RFRklORV9JTklUSUFM
KENTU1Byb3BlcnR5V2Via2l0Rm9udFNtb290aGluZykKKy8veworLy8gICAgRm9udERlc2NyaXB0
aW9uIGZvbnREZXNjcmlwdGlvbiA9IGluc3RhbmNlLT5tX3N0eWxlLT5mb250RGVzY3JpcHRpb24o
KTsKKy8vICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGb250U21vb3RoaW5nKEF1dG9TbW9vdGhpbmcp
OworLy8gICAgaWYgKGluc3RhbmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERl
c2NyaXB0aW9uKSkKKy8vICAgICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy99
CisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcpCisvL3sKKy8v
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKy8vICAgICAgICByZXR1cm47Cisv
LworLy8gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKy8vICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBp
bnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisvLworLy8gICAgRm9udFNtb290
aGluZ01vZGUgc21vb3RoaW5nOworLy8gICAgc3dpdGNoIChwLT5nZXRJZGVudCgpKSB7CisvLyAg
ICBjYXNlIENTU1ZhbHVlQXV0bzoKKy8vICAgICAgICBzbW9vdGhpbmcgPSBBdXRvU21vb3RoaW5n
OworLy8gICAgICAgIGJyZWFrOworLy8gICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisvLyAgICAgICAg
c21vb3RoaW5nID0gTm9TbW9vdGhpbmc7CisvLyAgICAgICAgYnJlYWs7CisvLyAgICBjYXNlIENT
U1ZhbHVlQW50aWFsaWFzZWQ6CisvLyAgICAgICAgc21vb3RoaW5nID0gQW50aWFsaWFzZWQ7Cisv
LyAgICAgICAgYnJlYWs7CisvLyAgICBjYXNlIENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxpYXNlZDoK
Ky8vICAgICAgICBzbW9vdGhpbmcgPSBTdWJwaXhlbEFudGlhbGlhc2VkOworLy8gICAgICAgIGJy
ZWFrOworLy8gICAgZGVmYXVsdDoKKy8vICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKy8v
ICAgICAgICBzbW9vdGhpbmcgPSBBdXRvU21vb3RoaW5nOworLy8gICAgfQorLy8gICAgZm9udERl
c2NyaXB0aW9uLnNldEZvbnRTbW9vdGhpbmcoc21vb3RoaW5nKTsKKy8vCisvLyAgICBpZiAoaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQorLy8g
ICAgICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7CisvL30KKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U2l6ZUFkanVzdAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVw
Q1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisK
Ky8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Qs
IHNldFRleHRTaXplQWRqdXN0LCB0ZXh0U2l6ZUFkanVzdCkKKy8vREVGSU5FX0hBTkRMRV9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsIHNldFRleHRTaXplQWRqdXN0LCBp
bml0aWFsVGV4dFNpemVBZGp1c3QpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTaXplQWRqdXN0KQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSkgeworLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
VGV4dFNpemVBZGp1c3QocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRv
KTsKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1fZm9udERpcnR5ID0gdHJ1ZTsKKy8vICAgICAg
ICB9CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZQorc3Rh
dGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9k
ZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTUyBUZXh0IExheW91dCBNb2R1bGUgTGV2
ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBwb3J0CisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlLCBzZXRXcml0aW5nTW9kZSwgd3JpdGluZ01vZGUp
CisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlLCBz
ZXRXcml0aW5nTW9kZSwgaW5pdGlhbFdyaXRpbmdNb2RlKQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJv
cGVydHlXZWJraXRXcml0aW5nTW9kZSkKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0V3JpdGluZ01vZGUoKnByaW1pdGl2ZVZhbHVlKTsKKy8vICAgIH0K
Ky8vICAgIGlmIChpbnN0YW5jZS0+bV9lbGVtZW50ICYmIGluc3RhbmNlLT5tX2VsZW1lbnQgPT0g
aW5zdGFuY2UtPm1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisvLyAg
ICAgICAgaW5zdGFuY2UtPm1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+c2V0V3JpdGluZ01vZGVTZXRP
bkRvY3VtZW50RWxlbWVudCh0cnVlKTsKKy8vICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3Jp
cHRpb24gPSBpbnN0YW5jZS0+bV9zdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CisvLyAgICBmb250
RGVzY3JpcHRpb24uc2V0T3JpZW50YXRpb24oaW5zdGFuY2UtPm1fc3R5bGUtPmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsIDogVmVydGljYWwpOworLy8gICAgaWYgKGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKSkKKy8vICAg
ICAgICBpbnN0YW5jZS0+bV9mb250RGlydHkgPSB0cnVlOworLy99CisKKy8vIENTU1Byb3BlcnR5
Wm9vbQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlab29tKCkK
K3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVpvb20p
CisvL3sKKy8vICAgIC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdCBiZWZvcmUgd2UgZG8gYW55
dGhpbmcuIFRoaXMgYWxsb3dzIHRoZSBzZXRab29tIG1ldGhvZCB0byBhY2N1cmF0ZWx5IGNvbXB1
dGUgYSBuZXcgem9vbSBpbiBlZmZlY3QuCisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RWZm
ZWN0aXZlWm9vbShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZSA/IGluc3RhbmNlLT5tX3BhcmVudFN0
eWxlLT5lZmZlY3RpdmVab29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CisvLyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Wm9vbShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+em9v
bSgpKTsKKy8vfQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVpvb20pCisvL3sKKy8vICAg
IC8vIFJlc2V0IHRoZSB6b29tIGluIGVmZmVjdCBiZWZvcmUgd2UgZG8gYW55dGhpbmcuIFRoaXMg
YWxsb3dzIHRoZSBzZXRab29tIG1ldGhvZCB0byBhY2N1cmF0ZWx5IGNvbXB1dGUgYSBuZXcgem9v
bSBpbiBlZmZlY3QuCisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0RWZmZWN0aXZlWm9vbShp
bnN0YW5jZS0+bV9wYXJlbnRTdHlsZSA/IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5lZmZlY3Rp
dmVab29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CisvLyAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CisvL30KKy8vREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5Wm9vbSkKKy8veworLy8gICAgLy8gUmVzZXQgdGhlIHpvb20g
aW4gZWZmZWN0IGJlZm9yZSB3ZSBkbyBhbnl0aGluZy4gVGhpcyBhbGxvd3MgdGhlIHNldFpvb20g
bWV0aG9kIHRvIGFjY3VyYXRlbHkgY29tcHV0ZSBhIG5ldyB6b29tIGluIGVmZmVjdC4KKy8vICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRFZmZlY3RpdmVab29tKGluc3RhbmNlLT5tX3BhcmVudFN0
eWxlID8gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA6IFJlbmRlclN0
eWxlOjppbml0aWFsWm9vbSgpKTsKKy8vCisvLyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCisvLyAgICAgICAgICAgIHJldHVybjsKKy8vCisvLyAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKKy8vCisvLyAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7
CisvLyAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwp
CisvLyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRp
YWxab29tKCkpOworLy8gICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0g
Q1NTVmFsdWVSZXNldCkgeworLy8gICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRFZmZlY3Rp
dmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKKy8vICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CisvLyAgICB9IGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRG9jdW1lbnQpIHsK
Ky8vICAgICAgICBmbG9hdCBkb2Nab29tID0gaW5zdGFuY2UtPm1fY2hlY2tlci5tX2RvY3VtZW50
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT56b29tKCk7CisvLyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldEVmZmVjdGl2ZVpvb20oZG9jWm9vbSk7CisvLyAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldFpvb20oZG9jWm9vbSk7CisvLyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSB7CisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRGbG9hdFZhbHVlKCkpCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRa
b29tKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkgLyAxMDAuMGYpOworLy8gICAgfSBl
bHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisvLyAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCisvLyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRab29tKHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkp
OworLy8gICAgfQorLy8KKy8vICAgIGluc3RhbmNlLT5tX2ZvbnREaXJ0eSA9IHRydWU7CisvL30K
KworLy8gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSog
c2V0dXBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RF
RklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIHNldExpbmVIZWlnaHQs
IGxpbmVIZWlnaHQpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUxpbmVIZWln
aHQsIHNldExpbmVIZWlnaHQsIGluaXRpYWxMaW5lSGVpZ2h0KQorLy9ERUZJTkVfVkFMVUUoQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0KQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8KKy8vICAgICAgICBMZW5n
dGggbGluZUhlaWdodDsKKy8vICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCk7CisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlTm9ybWFsKQorLy8gICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKC0xMDAu
MCwgUGVyY2VudCk7CisvLyAgICAgICAgZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5p
dFR5cGVMZW5ndGgodHlwZSkpIHsKKy8vICAgICAgICAgICAgZG91YmxlIG11bHRpcGxpZXIgPSBp
bnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworLy8gICAgICAgICAgICBpZiAoaW5z
dGFuY2UtPm1fc3R5bGUtPnRleHRTaXplQWRqdXN0KCkpIHsKKy8vICAgICAgICAgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPmZyYW1lKCkp
CisvLyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciAqPSBmcmFtZS0+dGV4dFpvb21GYWN0
b3IoKTsKKy8vICAgICAgICAgICAgfQorLy8gICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKGluc3RhbmNlLT5tX3N0
eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCAgbXVsdGlwbGllciksIEZp
eGVkKTsKKy8vICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFKQorLy8gICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKChpbnN0YW5j
ZS0+bV9zdHlsZS0+Zm9udFNpemUoKSAqIHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKSAv
IDEwMCwgRml4ZWQpOworLy8gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpCisvLyAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgocHJpbWl0
aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgKiAxMDAuMCwgUGVyY2VudCk7CisvLyAgICAgICAg
ZWxzZQorLy8gICAgICAgICAgICByZXR1cm47CisvLyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUt
PnNldExpbmVIZWlnaHQobGluZUhlaWdodCk7CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0
eUJhY2tncm91bmQoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9JTklUSUFMKENT
U1Byb3BlcnR5QmFja2dyb3VuZCkKKy8veworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFy
QmFja2dyb3VuZExheWVycygpOworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJhY2tncm91
bmRDb2xvcihDb2xvcigpKTsKKy8vfQorLy9ERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tn
cm91bmQpCisvL3sKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5pbmhlcml0QmFja2dyb3VuZExh
eWVycygqaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmJhY2tncm91bmRMYXllcnMoKSk7CisvLyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKGluc3RhbmNlLT5tX3BhcmVu
dFN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKSk7CisvL30KKy8vREVGSU5FX05VTExfVkFMVUUoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50
CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJhY2tncm91bmRB
dHRhY2htZW50KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0ZJTExf
TEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBiYWNrZ3JvdW5k
LCBCYWNrZ3JvdW5kLCBhdHRhY2htZW50LCBBdHRhY2htZW50KQorLy9ERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBiYWNrZ3Jv
dW5kLCBCYWNrZ3JvdW5kLCBhdHRhY2htZW50LCBBdHRhY2htZW50KQorLy9ERUZJTkVfSEFORExF
X0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgYXR0YWNobWVudCwgQXR0YWNobWVudCkKKworLy8gQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ2xpcAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ2xpcCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hB
TkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgY2xpcCwgQ2xpcCkKKy8vREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVS
X0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwgYmFja2dyb3VuZCwgQmFja2dyb3Vu
ZCwgY2xpcCwgQ2xpcCkKKy8vREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENsaXAsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGNsaXAsIENsaXApCisK
Ky8vIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFz
ZSogc2V0dXBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcigpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBz
ZXRCYWNrZ3JvdW5kQ29sb3IsIGJhY2tncm91bmRDb2xvcikKKy8vREVGSU5FX0hBTkRMRV9JTklU
SUFMX0NPTE9SKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBzZXRCYWNrZ3JvdW5kQ29sb3Ip
CisvL0RFRklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Is
IHNldEJhY2tncm91bmRDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdl
KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5I
RVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwg
aW1hZ2UsIEltYWdlKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9w
ZXJ0eUJhY2tncm91bmRJbWFnZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgaW1hZ2UsIEltYWdl
KQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2UsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIGltYWdlLCBJbWFnZSkKKworLy8gQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kT3JpZ2luCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBD
U1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4oKQoreworICAgIHJldHVybiAwOworfQorCisvL0RF
RklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdp
biwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgb3JpZ2luLCBPcmlnaW4pCisvL0RFRklORV9IQU5E
TEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgYmFja2dy
b3VuZCwgQmFja2dyb3VuZCwgb3JpZ2luLCBPcmlnaW4pCisvL0RFRklORV9IQU5ETEVfRklMTF9M
QVlFUl9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIGJhY2tncm91bmQsIEJhY2tn
cm91bmQsIG9yaWdpbiwgT3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
bgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb24oKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FWFBBTkRJTkdfSU5I
RVJJVF9UV08oQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKQorLy9ERUZJTkVf
RVhQQU5ESU5HX0lOSVRJQUxfVFdPKENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9u
WSkKKy8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24pCisK
Ky8vIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWAorc3RhdGljIFByb3BlcnR5V3JhcHBl
ckJhc2UqIHNldHVwQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YKCkKK3sKKyAgICByZXR1
cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblgsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHhQb3NpdGlvbiwg
WFBvc2l0aW9uKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblgsIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHhQb3NpdGlvbiwg
WFBvc2l0aW9uKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb25YLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5kLCB4UG9zaXRpb24sIFhQ
b3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkoKQor
eworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklU
KENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwg
eVBvc2l0aW9uLCBZUG9zaXRpb24pCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFM
KENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwg
eVBvc2l0aW9uLCBZUG9zaXRpb24pCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksIGJhY2tncm91bmQsIEJhY2tncm91bmQsIHlQ
b3NpdGlvbiwgWVBvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVh
dCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RX
TyhDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVh
dFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkpCisvL0RFRklORV9FWFBBTkRJTkdfSU5J
VElBTF9UV08oQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZKQorLy9ERUZJTkVfTlVMTF9W
QUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQpCisKKy8vIENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFgKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdFgoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5E
TEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIGJhY2tn
cm91bmQsIEJhY2tncm91bmQsIHJlcGVhdFgsIFJlcGVhdFgpCisvL0RFRklORV9IQU5ETEVfRklM
TF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIGJhY2tncm91bmQs
IEJhY2tncm91bmQsIHJlcGVhdFgsIFJlcGVhdFgpCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlF
Ul9WQUxVRShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBiYWNrZ3JvdW5kLCBCYWNrZ3Jv
dW5kLCByZXBlYXRYLCBSZXBlYXRYKQorCisvLyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZ
CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJhY2tncm91bmRS
ZXBlYXRZKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfSU5IRVJJVChDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBiYWNrZ3JvdW5kLCBCYWNr
Z3JvdW5kLCByZXBlYXRZLCBSZXBlYXRZKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5J
VElBTChDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBiYWNrZ3JvdW5kLCBCYWNrZ3JvdW5k
LCByZXBlYXRZLCBSZXBlYXRZKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgcmVwZWF0
WSwgUmVwZWF0WSkKKworLy8gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZQorc3RhdGljIFByb3Bl
cnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSgpCit7CisgICAg
cmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kU2l6ZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgc2l6ZSwgU2l6ZSkK
Ky8vREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZSwgYmFja2dyb3VuZCwgQmFja2dyb3VuZCwgc2l6ZSwgU2l6ZSkKKy8vREVGSU5FX0hBTkRM
RV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIGJhY2tncm91bmQs
IEJhY2tncm91bmQsIHNpemUsIFNpemUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyCitzdGF0aWMg
UHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvcmRlcigpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5
Qm9yZGVyLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yKQorLy9ERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfVEhSRUUo
Q1NTUHJvcGVydHlCb3JkZXIsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9y
ZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpCisvL0RFRklORV9OVUxMX1ZBTFVFKENT
U1Byb3BlcnR5Qm9yZGVyKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbQorc3RhdGljIFBy
b3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20oKQoreworICAg
IHJldHVybiAwOworfQorCisvL0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCkKKy8vREVG
SU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20pCisvL3sKKy8vICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5yZXNldEJvcmRlckJvdHRvbSgpOworLy99CisvL0RFRklORV9OVUxMX1ZBTFVF
KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNv
bG9yCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbUNvbG9yKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVS
SVRfQkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIHNldEJvcmRlckJvdHRvbUNv
bG9yLCBib3JkZXJCb3R0b21Db2xvciwgY29sb3IpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTF9D
T0xPUihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBzZXRCb3JkZXJCb3R0b21Db2xvcikK
Ky8vREVGSU5FX0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9y
LCBzZXRCb3JkZXJCb3R0b21Db2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0
UmFkaXVzCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIHNldEJvcmRlckJv
dHRvbUxlZnRSYWRpdXMsIGJvcmRlckJvdHRvbUxlZnRSYWRpdXMpCisvL0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsIHNldEJvcmRlckJvdHRv
bUxlZnRSYWRpdXMsIGluaXRpYWxCb3JkZXJSYWRpdXMpCisvL0RFRklORV9SQURJVVNfVkFMVUUo
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFk
aXVzKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMs
IGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMs
IGluaXRpYWxCb3JkZXJSYWRpdXMpCisvL0RFRklORV9SQURJVVNfVkFMVUUoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cywgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpCisKKy8v
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUoKQoreworICAgIHJldHVybiAwOwor
fQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxl
LCBzZXRCb3JkZXJCb3R0b21TdHlsZSwgYm9yZGVyQm90dG9tU3R5bGUpCisvL0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBzZXRCb3JkZXJCb3R0b21T
dHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorLy9ERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGUsIHNldEJvcmRlckJvdHRvbVN0eWxlKQorCisvLyBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVdpZHRoCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9E
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgc2V0Qm9y
ZGVyQm90dG9tV2lkdGgsIGJvcmRlckJvdHRvbVdpZHRoKQorLy9ERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgc2V0Qm9yZGVyQm90dG9tV2lkdGgsIGlu
aXRpYWxCb3JkZXJXaWR0aCkKKy8vREVGSU5FX1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tV2lkdGgsIHNldEJvcmRlckJvdHRvbVdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRl
ckNvbGxhcHNlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJv
cmRlckNvbGxhcHNlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgc2V0Qm9yZGVyQ29sbGFwc2UsIGJvcmRl
ckNvbGxhcHNlKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJDb2xs
YXBzZSwgc2V0Qm9yZGVyQ29sbGFwc2UsIGluaXRpYWxCb3JkZXJDb2xsYXBzZSkKKy8vREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UpCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisvLyAg
ICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworLy8gICAgICAgIGNh
c2UgQ1NTVmFsdWVDb2xsYXBzZToKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEJvcmRlckNvbGxhcHNlKHRydWUpOworLy8gICAgICAgICAgICBicmVhazsKKy8vICAgICAgICBj
YXNlIENTU1ZhbHVlU2VwYXJhdGU6CisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRCb3JkZXJDb2xsYXBzZShmYWxzZSk7CisvLyAgICAgICAgICAgIGJyZWFrOworLy8gICAgICAg
IH0KKy8vICAgIH0KKy8vfQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworLy9ERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQcm9wZXJ0
eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yKQorLy9ERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxfRk9VUihDU1NQcm9wZXJ0
eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdENvbG9yKQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
KQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlckxlZnQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyTGVmdCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8v
REVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRXaWR0aCkKKy8vREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0KQorLy97CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRCb3JkZXJMZWZ0KCk7
CisvL30KKy8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0KQorCisvLyBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNl
dHVwQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IoKQoreworICAgIHJldHVybiAwOworfQorCisv
L0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3Is
IHNldEJvcmRlckxlZnRDb2xvciwgYm9yZGVyTGVmdENvbG9yLCBjb2xvcikKKy8vREVGSU5FX0hB
TkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBzZXRCb3JkZXJM
ZWZ0Q29sb3IpCisvL0RFRklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0Q29sb3IsIHNldEJvcmRlckxlZnRDb2xvcikKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
U3R5bGUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFN0eWxlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIHNldEJvcmRlckxlZnRTdHlsZSwgYm9yZGVy
TGVmdFN0eWxlKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
U3R5bGUsIHNldEJvcmRlckxlZnRTdHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorLy9ERUZJTkVf
SEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBzZXRCb3JkZXJMZWZ0U3R5
bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoCitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCgpCit7CisgICAgcmV0dXJu
IDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdp
ZHRoLCBzZXRCb3JkZXJMZWZ0V2lkdGgsIGJvcmRlckxlZnRXaWR0aCkKKy8vREVGSU5FX0hBTkRM
RV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBzZXRCb3JkZXJMZWZ0V2lkdGgs
IGluaXRpYWxCb3JkZXJXaWR0aCkKKy8vREVGSU5FX1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFdpZHRoLCBzZXRCb3JkZXJMZWZ0V2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVy
UmFkaXVzCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvcmRl
clJhZGl1cygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0VYUEFORElOR19JTkhF
UklUX0ZPVVIoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVm
dFJhZGl1cywgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21MZWZ0UmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKQor
Ly9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cykKKy8veworLy8gICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnJlc2V0Qm9yZGVyUmFkaXVzKCk7CisvL30KKy8vREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmln
aHQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyUmln
aHQoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9U
SFJFRShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3Is
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRo
KQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0KQorLy97CisvLyAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRCb3JkZXJSaWdodCgpOworLy99CisvL0RFRklORV9OVUxM
X1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRDb2xvcgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodENvbG9yKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lO
SEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgc2V0Qm9yZGVyUmlnaHRD
b2xvciwgYm9yZGVyUmlnaHRDb2xvciwgY29sb3IpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTF9D
T0xPUihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIHNldEJvcmRlclJpZ2h0Q29sb3IpCisv
L0RFRklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBz
ZXRCb3JkZXJSaWdodENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHls
ZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgc2V0Qm9yZGVyUmlnaHRTdHlsZSwgYm9yZGVyUmlnaHRT
dHlsZSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHls
ZSwgc2V0Qm9yZGVyUmlnaHRTdHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQorLy9ERUZJTkVfSEFO
RExFX1ZBTFVFKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgc2V0Qm9yZGVyUmlnaHRTdHls
ZSkKKworLy8gQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoCitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgoKQoreworICAgIHJldHVy
biAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
V2lkdGgsIHNldEJvcmRlclJpZ2h0V2lkdGgsIGJvcmRlclJpZ2h0V2lkdGgpCisvL0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIHNldEJvcmRlclJpZ2h0
V2lkdGgsIGluaXRpYWxCb3JkZXJXaWR0aCkKKy8vREVGSU5FX1dJRFRIX1ZBTFVFKENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRXaWR0aCwgc2V0Qm9yZGVyUmlnaHRXaWR0aCkKKworLy8gQ1NTUHJvcGVy
dHlCb3JkZXJTcGFjaW5nCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9w
ZXJ0eUJvcmRlclNwYWNpbmcoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FWFBB
TkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRp
Y2FsU3BhY2luZykKKy8vREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RXTyhDU1NQcm9wZXJ0eUJv
cmRlclNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nKQorLy9ERUZJTkVfTlVMTF9WQUxV
RShDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUK
K3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUo
KQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9GT1VS
KENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUpCisvL0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9GT1VS
KENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUpCisvL0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5
Qm9yZGVyU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wCitzdGF0aWMgUHJvcGVydHlX
cmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvcmRlclRvcCgpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKKy8vREVGSU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5Qm9yZGVy
VG9wLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxl
LCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoKQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0
eUJvcmRlclRvcCkKKy8veworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnJlc2V0Qm9yZGVyVG9w
KCk7CisvL30KKy8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3ApCisKKy8v
IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBz
ZXR1cENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IoKQoreworICAgIHJldHVybiAwOworfQorCisv
L0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwg
c2V0Qm9yZGVyVG9wQ29sb3IsIGJvcmRlclRvcENvbG9yLCBjb2xvcikKKy8vREVGSU5FX0hBTkRM
RV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIHNldEJvcmRlclRvcENv
bG9yKQorLy9ERUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29s
b3IsIHNldEJvcmRlclRvcENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXMKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyVG9w
TGVmdFJhZGl1cygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1
cywgYm9yZGVyVG9wTGVmdFJhZGl1cykKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cywgaW5pdGlhbEJv
cmRlclJhZGl1cykKKy8vREVGSU5FX1JBRElVU19WQUxVRShDU1NQcm9wZXJ0eUJvcmRlclRvcExl
ZnRSYWRpdXMsIHNldEJvcmRlclRvcExlZnRSYWRpdXMpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVy
VG9wUmlnaHRSYWRpdXMKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3Bl
cnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklO
RV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBzZXRCb3Jk
ZXJUb3BSaWdodFJhZGl1cywgYm9yZGVyVG9wUmlnaHRSYWRpdXMpCisvL0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBzZXRCb3JkZXJUb3BSaWdo
dFJhZGl1cywgaW5pdGlhbEJvcmRlclJhZGl1cykKKy8vREVGSU5FX1JBRElVU19WQUxVRShDU1NQ
cm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cykKKwor
Ly8gQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2Uq
IHNldHVwQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisK
Ky8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIHNldEJv
cmRlclRvcFN0eWxlLCBib3JkZXJUb3BTdHlsZSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENT
U1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIHNldEJvcmRlclRvcFN0eWxlLCBpbml0aWFsQm9yZGVy
U3R5bGUpCisvL0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwg
c2V0Qm9yZGVyVG9wU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgKK3N0YXRp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgoKQor
eworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eUJvcmRlclRvcFdpZHRoLCBzZXRCb3JkZXJUb3BXaWR0aCwgYm9yZGVyVG9wV2lkdGgpCisvL0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBzZXRCb3JkZXJU
b3BXaWR0aCwgaW5pdGlhbEJvcmRlcldpZHRoKQorLy9ERUZJTkVfV0lEVEhfVkFMVUUoQ1NTUHJv
cGVydHlCb3JkZXJUb3BXaWR0aCwgc2V0Qm9yZGVyVG9wV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5
Qm9yZGVyV2lkdGgKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5
Qm9yZGVyV2lkdGgoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FWFBBTkRJTkdf
SU5IRVJJVF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9w
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgpCisvL0RFRklORV9FWFBBTkRJTkdf
SU5JVElBTF9GT1VSKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9w
V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgpCisvL0RFRklORV9OVUxMX1ZBTFVF
KENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5Qm90dG9tCitzdGF0aWMg
UHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJvdHRvbSgpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm90dG9tLCBz
ZXRCb3R0b20sIGJvdHRvbSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm90
dG9tLCBzZXRCb3R0b20sIGluaXRpYWxPZmZzZXQpCisvL0RFRklORV9MRU5HVEhfVkFMVUUoQ1NT
UHJvcGVydHlCb3R0b20sIHNldEJvdHRvbSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFs
c2UpCisKKy8vIENTU1Byb3BlcnR5Qm94U2l6aW5nCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFz
ZSogc2V0dXBDU1NQcm9wZXJ0eUJveFNpemluZygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8v
REVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Qm94U2l6aW5nLCBzZXRCb3hTaXppbmcs
IGJveFNpemluZykKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5Qm94U2l6aW5n
LCBzZXRCb3hTaXppbmcsIGluaXRpYWxCb3hTaXppbmcpCisvL0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eUJveFNpemluZykKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb250ZW50Qm94KQorLy8gICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94U2l6aW5nKENPTlRFTlRfQk9YKTsKKy8vICAgICAgICBl
bHNlCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hTaXppbmcoQk9SREVS
X0JPWCk7CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlDYXB0aW9uU2lkZQorc3RhdGlj
IFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSgpIHsKKyAg
ICByZXR1cm4gbmV3IFByb3BlcnR5V3JhcHBlckRlZmF1bHQ8RUNhcHRpb25TaWRlPihDU1NQcm9w
ZXJ0eUNhcHRpb25TaWRlLCAmUmVuZGVyU3R5bGU6OmNhcHRpb25TaWRlLCAmUmVuZGVyU3R5bGU6
OnNldENhcHRpb25TaWRlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxDYXB0aW9uU2lkZSk7Cit9CisK
Ky8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIHNldENhcHRp
b25TaWRlLCBjYXB0aW9uU2lkZSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
Q2FwdGlvblNpZGUsIHNldENhcHRpb25TaWRlLCBpbml0aWFsQ2FwdGlvblNpZGUpCisvL0RFRklO
RV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSwgc2V0Q2FwdGlvblNpZGUpCisK
Ky8vIENTU1Byb3BlcnR5Q2xlYXIKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENT
U1Byb3BlcnR5Q2xlYXIoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eUNsZWFyLCBzZXRDbGVhciwgY2xlYXIpCisvL0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eUNsZWFyLCBzZXRDbGVhciwgaW5pdGlhbENsZWFyKQorLy9E
RUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5Q2xlYXIsIHNldENsZWFyKQorCisvLyBDU1NQ
cm9wZXJ0eUNsaXAKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5
Q2xpcCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKworLy8gQ1NTUHJvcGVydHlDb250ZW50Citz
dGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUNvbnRlbnQoKQorewor
ICAgIHJldHVybiAwOworfQorCisvLyBGSVhNRTogSW4gQ1NTMywgaXQgd2lsbCBiZSBwb3NzaWJs
ZSB0byBpbmhlcml0IGNvbnRlbnQuICBJbiBDU1MyIGl0IGlzIG5vdC4gIFRoaXMKKyAgICAvLyBu
b3RlIGlzIGEgcmVtaW5kZXIgdGhhdCBldmVudHVhbGx5ICJpbmhlcml0IiBuZWVkcyB0byBiZSBz
dXBwb3J0ZWQuCisvL0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlDb250ZW50KQorLy9E
RUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUNvbnRlbnQpCisvL3sKKy8vICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5jbGVhckNvbnRlbnQoKTsKKy8vfQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlD
b250ZW50KQorLy97CisvLyAgICAvLyBsaXN0IG9mIHN0cmluZywgdXJpLCBjb3VudGVyLCBhdHRy
LCBpCisvLyAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQorLy8gICAgICAgIHJldHVybjsK
Ky8vCisvLyAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3Qq
Pih2YWx1ZSk7CisvLyAgICBpbnQgbGVuID0gbGlzdC0+bGVuZ3RoKCk7CisvLworLy8gICAgYm9v
bCBkaWRTZXQgPSBmYWxzZTsKKy8vICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsK
Ky8vICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
aSk7CisvLyAgICAgICAgaWYgKGl0ZW0tPmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKSB7CisvLyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb250ZW50KHN0YXRpY19jYXN0PENTU0lt
YWdlR2VuZXJhdG9yVmFsdWUqPihpdGVtKS0+Z2VuZXJhdGVkSW1hZ2UoKSwgZGlkU2V0KTsKKy8v
ICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKKy8vICAgICAgICB9CisvLworLy8gICAgICAgIGlm
ICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorLy8gICAgICAgICAgICBjb250aW51ZTsKKy8v
CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisvLyAgICAgICAgc3dpdGNoIChjb250ZW50VmFs
dWUtPnByaW1pdGl2ZVR5cGUoKSkgeworLy8gICAgICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TVFJJTkc6CisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb250ZW50
KGNvbnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKS5pbXBsKCksIGRpZFNldCk7CisvLyAgICAg
ICAgICAgIGRpZFNldCA9IHRydWU7CisvLyAgICAgICAgICAgIGJyZWFrOworLy8gICAgICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19BVFRSOiB7CisvLyAgICAgICAgICAgIC8vIEZJWE1F
OiBDYW4gYSBuYW1lc3BhY2UgYmUgc3BlY2lmaWVkIGZvciBhbiBhdHRyKGZvbyk/CisvLyAgICAg
ICAgICAgIGlmIChpbnN0YW5jZS0+bV9zdHlsZS0+c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCisv
LyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VW5pcXVlKCk7CisvLyAgICAg
ICAgICAgIGVsc2UKKy8vICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5z
ZXRVbmlxdWUoKTsKKy8vICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tLCBj
b250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBudWxsQXRvbSk7CisvLyAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb250ZW50KGluc3RhbmNlLT5tX2VsZW1lbnQt
PmdldEF0dHJpYnV0ZShhdHRyKS5pbXBsKCksIGRpZFNldCk7CisvLyAgICAgICAgICAgIGRpZFNl
dCA9IHRydWU7CisvLyAgICAgICAgICAgIC8vIHJlZ2lzdGVyIHRoZSBmYWN0IHRoYXQgdGhlIGF0
dHJpYnV0ZSB2YWx1ZSBhZmZlY3RzIHRoZSBzdHlsZQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+
bV9zZWxlY3RvckF0dHJzLmFkZChhdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CisvLyAgICAgICAg
ICAgIGJyZWFrOworLy8gICAgICAgIH0KKy8vICAgICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVVJJOiB7CisvLyAgICAgICAgICAgIGlmICghY29udGVudFZhbHVlLT5pc0ltYWdlVmFs
dWUoKSkKKy8vICAgICAgICAgICAgICAgIGJyZWFrOworLy8gICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0Q29udGVudChpbnN0YW5jZS0+Y2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKENT
U1Byb3BlcnR5Q29udGVudCwgc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VWYWx1ZSo+KGNvbnRlbnRWYWx1
ZSkpLCBkaWRTZXQpOworLy8gICAgICAgICAgICBkaWRTZXQgPSB0cnVlOworLy8gICAgICAgICAg
ICBicmVhazsKKy8vICAgICAgICB9CisvLyAgICAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0NPVU5URVI6IHsKKy8vICAgICAgICAgICAgQ291bnRlciogY291bnRlclZhbHVlID0gY29u
dGVudFZhbHVlLT5nZXRDb3VudGVyVmFsdWUoKTsKKy8vICAgICAgICAgICAgT3duUHRyPENvdW50
ZXJDb250ZW50PiBjb3VudGVyID0gYWRvcHRQdHIobmV3IENvdW50ZXJDb250ZW50KGNvdW50ZXJW
YWx1ZS0+aWRlbnRpZmllcigpLAorLy8gICAgICAgICAgICAgICAgKEVMaXN0U3R5bGVUeXBlKWNv
dW50ZXJWYWx1ZS0+bGlzdFN0eWxlTnVtYmVyKCksIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkp
KTsKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbnRlbnQoY291bnRlci5y
ZWxlYXNlKCksIGRpZFNldCk7CisvLyAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CisvLyAgICAg
ICAgfQorLy8gICAgICAgIH0KKy8vICAgIH0KKy8vICAgIGlmICghZGlkU2V0KQorLy8gICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckNvbnRlbnQoKTsKKy8vICAgIHJldHVybjsKKy8vfQor
CisvLyBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJC
YXNlKiBzZXR1cENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCgpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKKy8vREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQp
CisvL0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50KQorLy9E
RUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50KQorLy97CisvLyAgICBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseUNvdW50ZXJMaXN0KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCB2
YWx1ZS0+aXNWYWx1ZUxpc3QoKSA/IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKSA6
IDAsIGZhbHNlKTsKKy8vfQorCisvLyBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldAorc3RhdGljIFBy
b3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQoKQoreworICAg
IHJldHVybiAwOworfQorCisvL0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlDb3VudGVy
UmVzZXQpCisvL0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQpCisv
L0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldCkKKy8veworLy8gICAgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlDb3VudGVyTGlzdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgdmFs
dWUtPmlzVmFsdWVMaXN0KCkgPyBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSkgOiAw
LCB0cnVlKTsKKy8vfQorCisvLyBDU1NQcm9wZXJ0eUN1cnNvcgorc3RhdGljIFByb3BlcnR5V3Jh
cHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlDdXJzb3IoKQoreworICAgIHJldHVybiAwOworfQor
CisvL0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5Q3Vyc29yKQorLy97CisvLyAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0Q3Vyc29yKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jdXJzb3IoKSk7
CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q3Vyc29yTGlzdChpbnN0YW5jZS0+bV9wYXJl
bnRTdHlsZS0+Y3Vyc29ycygpKTsKKy8vfQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUN1
cnNvcikKKy8veworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFyQ3Vyc29yTGlzdCgpOwor
Ly8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEN1
cnNvcigpKTsKKy8vfQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlDdXJzb3IpCisvL3sKKy8v
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhckN1cnNvckxpc3QoKTsKKy8vICAgIGlmICh2YWx1
ZS0+aXNWYWx1ZUxpc3QoKSkgeworLy8gICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRp
Y19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKy8vICAgICAgICBpbnQgbGVuID0gbGlzdC0+
bGVuZ3RoKCk7CisvLyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNvcihDVVJTT1Jf
QVVUTyk7CisvLyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworLy8gICAg
ICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7
CisvLyAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorLy8gICAgICAg
ICAgICAgICAgY29udGludWU7CisvLyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisvLyAg
ICAgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKy8v
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKKy8v
ICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVlKCkp
IHsKKy8vICAgICAgICAgICAgICAgICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBpbWFnZSA9IHN0
YXRpY19jYXN0PENTU0N1cnNvckltYWdlVmFsdWUqPihwcmltaXRpdmVWYWx1ZSk7CisvLyAgICAg
ICAgICAgICAgICAgICAgaWYgKGltYWdlLT51cGRhdGVJZlNWR0N1cnNvcklzVXNlZChpbnN0YW5j
ZS0+bV9lbGVtZW50KSkgLy8gRWxlbWVudHMgd2l0aCBTVkcgY3Vyc29ycyBhcmUgbm90IGFsbG93
ZWQgdG8gc2hhcmUgc3R5bGUuCisvLyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRVbmlxdWUoKTsKKy8vICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dHlsZS0+YWRkQ3Vyc29yKGluc3RhbmNlLT5jYWNoZWRPclBlbmRpbmdGcm9tVmFsdWUoQ1NTUHJv
cGVydHlDdXJzb3IsIGltYWdlKSwgaW1hZ2UtPmhvdFNwb3QoKSk7CisvLyAgICAgICAgICAgICAg
ICB9CisvLyAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0lERU5UKQorLy8gICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEN1cnNv
cigqcHJpbWl0aXZlVmFsdWUpOworLy8gICAgICAgIH0KKy8vICAgIH0gZWxzZSBpZiAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisvLyAgICAgICAgaW50IHR5
cGUgPSBwLT5wcmltaXRpdmVUeXBlKCk7CisvLyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19JREVOVCAmJiBpbnN0YW5jZS0+bV9zdHlsZS0+Y3Vyc29yKCkgIT0gRUN1
cnNvcigqcCkpCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDdXJzb3IoKnAp
OworLy8gICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5RW1wdHlDZWxscworc3RhdGljIFByb3Bl
cnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlFbXB0eUNlbGxzKCkKK3sKKyAgICByZXR1
cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlFbXB0eUNlbGxz
LCBzZXRFbXB0eUNlbGxzLCBlbXB0eUNlbGxzKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlFbXB0eUNlbGxzLCBzZXRFbXB0eUNlbGxzLCBpbml0aWFsRW1wdHlDZWxscykKKy8v
REVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMsIHNldEVtcHR5Q2VsbHMp
CisKKy8vIENTU1Byb3BlcnR5RmxvYXQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1
cENTU1Byb3BlcnR5RmxvYXQoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eUZsb2F0LCBzZXRGbG9hdGluZywgZmxvYXRpbmcpCisvL0RF
RklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eUZsb2F0LCBzZXRGbG9hdGluZywgaW5pdGlh
bEZsb2F0aW5nKQorLy9ERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5RmxvYXQsIHNldEZs
b2F0aW5nKQorCisvLyBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoCitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoKCkKK3sKKyAgICByZXR1cm4gMDsK
K30KKworLy9ERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5Rm9udFN0cmV0Y2gpCisvL0RF
RklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlGb250U3RyZXRjaCkKKy8vREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlGb250U3RyZXRjaCkKKworLy8gQ1NTUHJvcGVydHlIZWlnaHQKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5SGVpZ2h0KCkKK3sKKyAg
ICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlIZWln
aHQsIHNldEhlaWdodCwgaGVpZ2h0KQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlIZWlnaHQsIHNldEhlaWdodCwgaW5pdGlhbFNpemUpCisvL0RFRklORV9MRU5HVEhfVkFMVUUo
Q1NTUHJvcGVydHlIZWlnaHQsIHNldEhlaWdodCwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZh
bHNlKQorCisvLyBDU1NQcm9wZXJ0eUxlZnQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBz
ZXR1cENTU1Byb3BlcnR5TGVmdCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TGVmdCwgc2V0TGVmdCwgbGVmdCkKKy8vREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TGVmdCwgc2V0TGVmdCwgaW5pdGlhbE9mZnNldCkKKy8v
REVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eUxlZnQsIHNldExlZnQsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZygp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5TGV0dGVyU3BhY2luZywgc2V0TGV0dGVyU3BhY2luZywgbGV0dGVyU3BhY2luZykKKy8vREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgc2V0TGV0dGVyU3Bh
Y2luZywgaW5pdGlhbExldHRlcldvcmRTcGFjaW5nKQorLy9ERUZJTkVfU1BBQ0lOR19WQUxVRShD
U1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIHNldExldHRlclNwYWNpbmcpCisKKy8vIENTU1Byb3Bl
cnR5TGlzdFN0eWxlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0
eUxpc3RTdHlsZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0VYUEFORElOR19J
TkhFUklUX1RIUkVFKENTU1Byb3BlcnR5TGlzdFN0eWxlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGUsIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRp
b24pCisvL0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9USFJFRShDU1NQcm9wZXJ0eUxpc3RTdHls
ZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLCBD
U1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9w
ZXJ0eUxpc3RTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZQorc3RhdGljIFBy
b3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSgpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TGlz
dFN0eWxlSW1hZ2UsIHNldExpc3RTdHlsZUltYWdlLCBsaXN0U3R5bGVJbWFnZSkKKy8vREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIHNldExpc3RTdHlsZUlt
YWdlLCBpbml0aWFsTGlzdFN0eWxlSW1hZ2UpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eUxp
c3RTdHlsZUltYWdlKQorLy97CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TGlzdFN0eWxl
SW1hZ2UoaW5zdGFuY2UtPnN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgdmFs
dWUpKTsKKy8vfQorCisvLyBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlM
aXN0U3R5bGVQb3NpdGlvbiwgc2V0TGlzdFN0eWxlUG9zaXRpb24sIGxpc3RTdHlsZVBvc2l0aW9u
KQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwg
c2V0TGlzdFN0eWxlUG9zaXRpb24sIGluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbikKKy8vREVGSU5F
X0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLCBzZXRMaXN0U3R5bGVQ
b3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlCitzdGF0aWMgUHJvcGVydHlX
cmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUoKQoreworICAgIHJldHVy
biAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGUsIHNldExpc3RTdHlsZVR5cGUsIGxpc3RTdHlsZVR5cGUpCisvL0RFRklORV9IQU5ETEVfSU5J
VElBTChDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIHNldExpc3RTdHlsZVR5cGUsIGluaXRpYWxM
aXN0U3R5bGVUeXBlKQorLy9ERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5TGlzdFN0eWxl
VHlwZSwgc2V0TGlzdFN0eWxlVHlwZSkKKworLy8gQ1NTUHJvcGVydHlNYXJnaW4KK3N0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5TWFyZ2luKCkKK3sKKyAgICByZXR1
cm4gMDsKK30KKworLy9ERUZJTkVfRVhQQU5ESU5HX0lOSEVSSVRfRk9VUihDU1NQcm9wZXJ0eU1h
cmdpbiwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1By
b3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQpCisvL0RFRklORV9JTklU
SUFMKENTU1Byb3BlcnR5TWFyZ2luKQorLy97CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVz
ZXRNYXJnaW4oKTsKKy8vfQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpbikK
KworLy8gQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20KK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5TWFyZ2luQm90dG9tKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
Ly9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIHNldE1hcmdp
bkJvdHRvbSwgbWFyZ2luQm90dG9tKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlNYXJnaW5Cb3R0b20sIHNldE1hcmdpbkJvdHRvbSwgaW5pdGlhbE1hcmdpbikKKy8vREVGSU5F
X0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgc2V0TWFyZ2luQm90dG9tLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eU1hcmdpbkxl
ZnQoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eU1hcmdpbkxlZnQsIHNldE1hcmdpbkxlZnQsIG1hcmdpbkxlZnQpCisvL0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIHNldE1hcmdpbkxlZnQsIGluaXRp
YWxNYXJnaW4pCisvL0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBz
ZXRNYXJnaW5MZWZ0LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NT
UHJvcGVydHlNYXJnaW5SaWdodAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NT
UHJvcGVydHlNYXJnaW5SaWdodCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIHNldE1hcmdpblJpZ2h0LCBtYXJn
aW5SaWdodCkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQs
IHNldE1hcmdpblJpZ2h0LCBpbml0aWFsTWFyZ2luKQorLy9ERUZJTkVfTEVOR1RIX1ZBTFVFKENT
U1Byb3BlcnR5TWFyZ2luUmlnaHQsIHNldE1hcmdpblJpZ2h0LCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNYXJnaW5Ub3AKK3N0YXRpYyBQcm9wZXJ0
eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5TWFyZ2luVG9wKCkKK3sKKyAgICByZXR1cm4g
MDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIHNl
dE1hcmdpblRvcCwgbWFyZ2luVG9wKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlNYXJnaW5Ub3AsIHNldE1hcmdpblRvcCwgaW5pdGlhbE1hcmdpbikKKy8vREVGSU5FX0xFTkdU
SF9WQUxVRShDU1NQcm9wZXJ0eU1hcmdpblRvcCwgc2V0TWFyZ2luVG9wLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNYXhIZWlnaHQKK3N0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5TWF4SGVpZ2h0KCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlNYXhIZWln
aHQsIHNldE1heEhlaWdodCwgbWF4SGVpZ2h0KQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlNYXhIZWlnaHQsIHNldE1heEhlaWdodCwgaW5pdGlhbE1heFNpemUpCisvL0RFRklO
RV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXhIZWlnaHQsIHNldE1heEhlaWdodCwgdHJ1ZSwg
dHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpCisKKy8vIENTU1Byb3BlcnR5TWF4V2lkdGgKK3N0YXRp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5TWF4V2lkdGgoKQoreworICAg
IHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eU1heFdp
ZHRoLCBzZXRNYXhXaWR0aCwgbWF4V2lkdGgpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eU1heFdpZHRoLCBzZXRNYXhXaWR0aCwgaW5pdGlhbE1heFNpemUpCisvL0RFRklORV9M
RU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNYXhXaWR0aCwgc2V0TWF4V2lkdGgsIHRydWUsIHRydWUs
IHRydWUsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlNaW5IZWlnaHQKK3N0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5TWluSGVpZ2h0KCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlNaW5IZWln
aHQsIHNldE1pbkhlaWdodCwgbWluSGVpZ2h0KQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlNaW5IZWlnaHQsIHNldE1pbkhlaWdodCwgaW5pdGlhbE1pblNpemUpCisvL0RFRklO
RV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlNaW5IZWlnaHQsIHNldE1pbkhlaWdodCwgZmFsc2Us
IHRydWUsIHRydWUsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eU1pbldpZHRoCitzdGF0
aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eU1pbldpZHRoKCkKK3sKKyAg
ICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlNaW5X
aWR0aCwgc2V0TWluV2lkdGgsIG1pbldpZHRoKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlNaW5XaWR0aCwgc2V0TWluV2lkdGgsIGluaXRpYWxNaW5TaXplKQorLy9ERUZJTkVf
TEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5TWluV2lkdGgsIHNldE1pbldpZHRoLCBmYWxzZSwgdHJ1
ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5T3BhY2l0eQorc3RhdGljIFBy
b3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlPcGFjaXR5KCkKK3sKKyAgICByZXR1
cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPcGFjaXR5LCBz
ZXRPcGFjaXR5LCBvcGFjaXR5KQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlP
cGFjaXR5LCBzZXRPcGFjaXR5LCBpbml0aWFsT3BhY2l0eSkKKy8vREVGSU5FX1ZBTFVFKENTU1By
b3BlcnR5T3BhY2l0eSkKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikK
Ky8vICAgICAgICAgICAgLy8gQ2xhbXAgb3BhY2l0eSB0byB0aGUgcmFuZ2UgMC0xCisvLyAgICAg
ICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRPcGFjaXR5KG1pbigxLjBmLCBtYXgoMC4wZiwg
cHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkpKTsKKy8vICAgIH0KKy8vfQorCisvLyBD
U1NQcm9wZXJ0eU9ycGhhbnMKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1By
b3BlcnR5T3JwaGFucygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5T3JwaGFucywgc2V0T3JwaGFucywgb3JwaGFucykKKy8vREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3JwaGFucywgc2V0T3JwaGFucywgaW5pdGlhbE9y
cGhhbnMpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eU9ycGhhbnMpCisvL3sKKy8vICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRPcnBoYW5zKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKy8vICAgIH0K
Ky8vfQorCisvLyBDU1NQcm9wZXJ0eU91dGxpbmUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5T3V0bGluZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVG
SU5FX0VYUEFORElOR19JTkhFUklUX1RIUkVFKENTU1Byb3BlcnR5T3V0bGluZSwgQ1NTUHJvcGVy
dHlPdXRsaW5lV2lkdGgsIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBDU1NQcm9wZXJ0eU91dGxp
bmVTdHlsZSkKKy8vREVGSU5FX0lOSVRJQUwoQ1NTUHJvcGVydHlPdXRsaW5lKQorLy97CisvLyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+cmVzZXRPdXRsaW5lKCk7CisvL30KKy8vREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlPdXRsaW5lKQorCisvLyBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcgor
c3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3Io
KQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAo
Q1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsIHNldE91dGxpbmVDb2xvciwgb3V0bGluZUNvbG9yLCBj
b2xvcikKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3BlcnR5T3V0bGluZUNv
bG9yLCBzZXRPdXRsaW5lQ29sb3IpCisvL0RFRklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJv
cGVydHlPdXRsaW5lQ29sb3IsIHNldE91dGxpbmVDb2xvcikKKworLy8gQ1NTUHJvcGVydHlPdXRs
aW5lT2Zmc2V0CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eU91
dGxpbmVPZmZzZXQoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5I
RVJJVChDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQsIHNldE91dGxpbmVPZmZzZXQsIG91dGxpbmVP
ZmZzZXQpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQs
IHNldE91dGxpbmVPZmZzZXQsIGluaXRpYWxPdXRsaW5lT2Zmc2V0KQorLy9ERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0KQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRPdXRsaW5lT2Zmc2V0KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRl
TGVuZ3RoSW50KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVu
dFN0eWxlLCBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKSk7CisvLyAgICB9Cisv
L30KKworLy8gQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJC
YXNlKiBzZXR1cENTU1Byb3BlcnR5T3V0bGluZVN0eWxlKCkKK3sKKyAgICByZXR1cm4gMDsKK30K
KworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsIHNldE91
dGxpbmVTdHlsZSwgb3V0bGluZVN0eWxlKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJv
cGVydHlPdXRsaW5lU3R5bGUsIHNldE91dGxpbmVTdHlsZSwgaW5pdGlhbEJvcmRlclN0eWxlKQor
Ly9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUpCisvL3sKKy8vICAgIGlmICh2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0
bykKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE91dGxpbmVTdHlsZShET1RU
RUQsIHRydWUpOworLy8gICAgICAgIGVsc2UKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldE91dGxpbmVTdHlsZSgqcHJpbWl0aXZlVmFsdWUpOworLy8gICAgfQorLy99CisKKy8v
IENTU1Byb3BlcnR5T3V0bGluZVdpZHRoCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0
dXBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBzZXRPdXRsaW5lV2lk
dGgsIG91dGxpbmVXaWR0aCkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoLCBzZXRPdXRsaW5lV2lkdGgsIGluaXRpYWxCb3JkZXJXaWR0aCkKKy8vREVGSU5F
X1dJRFRIX1ZBTFVFKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBzZXRPdXRsaW5lV2lkdGgpCisK
Ky8vIENTU1Byb3BlcnR5T3ZlcmZsb3cKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1
cENTU1Byb3BlcnR5T3ZlcmZsb3coKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9F
WFBBTkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJvcGVydHlPdmVyZmxvdywgQ1NTUHJvcGVydHlPdmVy
Zmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZKQorLy9ERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxf
VFdPKENTU1Byb3BlcnR5T3ZlcmZsb3csIENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBDU1NQcm9wZXJ0
eU92ZXJmbG93WSkKKy8vREVGSU5FX0VYUEFORElOR19WQUxVRV9UV08oQ1NTUHJvcGVydHlPdmVy
ZmxvdywgQ1NTUHJvcGVydHlPdmVyZmxvd1ksIENTU1Byb3BlcnR5T3ZlcmZsb3dZKQorCisvLyBD
U1NQcm9wZXJ0eU92ZXJmbG93WAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NT
UHJvcGVydHlPdmVyZmxvd1goKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eU92ZXJmbG93WCwgc2V0T3ZlcmZsb3dYLCBvdmVyZmxvd1gp
CisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eU92ZXJmbG93WCwgc2V0T3ZlcmZs
b3dYLCBpbml0aWFsT3ZlcmZsb3dYKQorLy9ERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5
T3ZlcmZsb3dYLCBzZXRPdmVyZmxvd1gpCisKKy8vIENTU1Byb3BlcnR5T3ZlcmZsb3dZCitzdGF0
aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eU92ZXJmbG93WSgpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5T3Zl
cmZsb3dZLCBzZXRPdmVyZmxvd1ksIG92ZXJmbG93WSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFM
KENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBzZXRPdmVyZmxvd1ksIGluaXRpYWxPdmVyZmxvd1kpCisv
L0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHNldE92ZXJmbG93WSkK
KworLy8gQ1NTUHJvcGVydHlQYWRkaW5nCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0
dXBDU1NQcm9wZXJ0eVBhZGRpbmcoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9F
WFBBTkRJTkdfSU5IRVJJVF9GT1VSKENTU1Byb3BlcnR5UGFkZGluZywgQ1NTUHJvcGVydHlQYWRk
aW5nVG9wLCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9t
LCBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0KQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVBh
ZGRpbmcpCisvL3sKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldFBhZGRpbmcoKTsKKy8v
fQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmcpCisKKy8vIENTU1Byb3Bl
cnR5UGFkZGluZ0JvdHRvbQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJv
cGVydHlQYWRkaW5nQm90dG9tKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFO
RExFX0lOSEVSSVQoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBzZXRQYWRkaW5nQm90dG9tLCBw
YWRkaW5nQm90dG9tKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tLCBzZXRQYWRkaW5nQm90dG9tLCBpbml0aWFsUGFkZGluZykKKy8vREVGSU5FX0xFTkdU
SF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sIHNldFBhZGRpbmdCb3R0b20sIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlQYWRkaW5nTGVm
dAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlQYWRkaW5nTGVm
dCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5UGFkZGluZ0xlZnQsIHNldFBhZGRpbmdMZWZ0LCBwYWRkaW5nTGVmdCkKKy8vREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UGFkZGluZ0xlZnQsIHNldFBhZGRpbmdMZWZ0LCBp
bml0aWFsUGFkZGluZykKKy8vREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdM
ZWZ0LCBzZXRQYWRkaW5nTGVmdCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQor
CisvLyBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2Uq
IHNldHVwQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQoKQoreworICAgIHJldHVybiAwOworfQorCisv
L0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgc2V0UGFkZGlu
Z1JpZ2h0LCBwYWRkaW5nUmlnaHQpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eVBhZGRpbmdSaWdodCwgc2V0UGFkZGluZ1JpZ2h0LCBpbml0aWFsUGFkZGluZykKKy8vREVGSU5F
X0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgc2V0UGFkZGluZ1JpZ2h0LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5UGFkZGlu
Z1RvcAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlQYWRkaW5n
VG9wKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlQYWRkaW5nVG9wLCBzZXRQYWRkaW5nVG9wLCBwYWRkaW5nVG9wKQorLy9ERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBzZXRQYWRkaW5nVG9wLCBpbml0
aWFsUGFkZGluZykKKy8vREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVBhZGRpbmdUb3As
IHNldFBhZGRpbmdUb3AsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKworLy8g
Q1NTUHJvcGVydHlQYWdlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9w
ZXJ0eVBhZ2UoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9OVUxMX0lOSEVSSVQo
Q1NTUHJvcGVydHlQYWdlKQorLy9ERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5UGFnZSkK
Ky8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlQYWdlKQorCisvLyBDU1NQcm9wZXJ0eVBh
Z2VCcmVha0FmdGVyCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0
eVBhZ2VCcmVha0FmdGVyKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExF
X0lOSEVSSVQoQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlciwgc2V0UGFnZUJyZWFrQWZ0ZXIsIHBh
Z2VCcmVha0FmdGVyKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWdlQnJl
YWtBZnRlciwgc2V0UGFnZUJyZWFrQWZ0ZXIsIGluaXRpYWxQYWdlQnJlYWspCisvL0RFRklORV9I
QU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlciwgc2V0UGFnZUJyZWFrQWZ0ZXIp
CisKKy8vIENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVy
QmFzZSogc2V0dXBDU1NQcm9wZXJ0eVBhZ2VCcmVha0JlZm9yZSgpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3Jl
LCBzZXRQYWdlQnJlYWtCZWZvcmUsIHBhZ2VCcmVha0JlZm9yZSkKKy8vREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlLCBzZXRQYWdlQnJlYWtCZWZvcmUsIGlu
aXRpYWxQYWdlQnJlYWspCisvL0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlQYWdlQnJl
YWtCZWZvcmUsIHNldFBhZ2VCcmVha0JlZm9yZSkKKworLy8gQ1NTUHJvcGVydHlQYWdlQnJlYWtJ
bnNpZGUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5UGFnZUJy
ZWFrSW5zaWRlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVS
SVQoQ1NTUHJvcGVydHlQYWdlQnJlYWtJbnNpZGUsIHNldFBhZ2VCcmVha0luc2lkZSwgcGFnZUJy
ZWFrSW5zaWRlKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlQYWdlQnJlYWtJ
bnNpZGUsIHNldFBhZ2VCcmVha0luc2lkZSwgaW5pdGlhbFBhZ2VCcmVhaykKKy8vREVGSU5FX1ZB
TFVFKENTU1Byb3BlcnR5UGFnZUJyZWFrSW5zaWRlKQorLy97CisvLyAgICBpZiAodmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAg
ICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFrID0gKnByaW1pdGl2ZVZhbHVlOworLy8gICAgICAgIGlm
IChwYWdlQnJlYWsgIT0gUEJBTFdBWVMpCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRQYWdlQnJlYWtJbnNpZGUocGFnZUJyZWFrKTsKKy8vICAgIH0KKy8vfQorCisvLyBDU1NQ
cm9wZXJ0eVBvaW50ZXJFdmVudHMKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENT
U1Byb3BlcnR5UG9pbnRlckV2ZW50cygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKyNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpCisvLyA8cmRhcjovL3Byb2JsZW0vNjU2MTA3Nz4gV29yayBh
cm91bmQgdGhlIFN0b2NrcyB3aWRnZXQncyBtaXN1c2Ugb2YgdGhlCisvLyBwb2ludGVyLWV2ZW50
cyBwcm9wZXJ0eSBieSBub3QgYXBwbHlpbmcgaXQgaW4gRGFzaGJvYXJkLgorLy9ERUZJTkVfSU5I
RVJJVChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpCisvL3sKKy8vICAgIFNldHRpbmdzKiBzZXR0
aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVudC0+c2V0dGluZ3MoKTsKKy8vICAg
IGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJp
bGl0eU1vZGUoKSkKKy8vICAgICAgICByZXR1cm47CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0UG9pbnRlckV2ZW50cyhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+cG9pbnRlckV2ZW50cygp
KTsKKy8vfQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpCisvL3sK
Ky8vICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGluc3RhbmNlLT5tX2NoZWNrZXIubV9kb2N1bWVu
dC0+c2V0dGluZ3MoKTsKKy8vICAgIGlmIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+dXNlc0Rhc2hi
b2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoKSkKKy8vICAgICAgICByZXR1cm47CisvLyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0UG9pbnRlckV2ZW50cyhSZW5kZXJTdHlsZTo6aW5pdGlh
bFBvaW50ZXJFdmVudHMoKSk7CisvL30KKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5UG9pbnRl
ckV2ZW50cykKKy8veworLy8gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gaW5zdGFuY2UtPm1fY2hl
Y2tlci5tX2RvY3VtZW50LT5zZXR0aW5ncygpOworLy8gICAgaWYgKHNldHRpbmdzICYmIHNldHRp
bmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQorLy8gICAgICAg
IHJldHVybjsKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisvLyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFBv
aW50ZXJFdmVudHMoKnByaW1pdGl2ZVZhbHVlKTsKKy8vICAgIH0KKy8vfQorI2Vsc2UKKy8vREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UG9pbnRlckV2ZW50cywgc2V0UG9pbnRlckV2
ZW50cywgcG9pbnRlckV2ZW50cykKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
UG9pbnRlckV2ZW50cywgc2V0UG9pbnRlckV2ZW50cywgaW5pdGlhbFBvaW50ZXJFdmVudHMpCisv
L0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlQb2ludGVyRXZlbnRzLCBzZXRQb2ludGVy
RXZlbnRzKQorI2VuZGlmCisKKy8vIENTU1Byb3BlcnR5UG9zaXRpb24KK3N0YXRpYyBQcm9wZXJ0
eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5UG9zaXRpb24oKQoreworICAgIHJldHVybiAw
OworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVBvc2l0aW9uLCBzZXRQ
b3NpdGlvbiwgcG9zaXRpb24pCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVBv
c2l0aW9uLCBzZXRQb3NpdGlvbiwgaW5pdGlhbFBvc2l0aW9uKQorLy9ERUZJTkVfSEFORExFX1ZB
TFVFKENTU1Byb3BlcnR5UG9zaXRpb24sIHNldFBvc2l0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVF1
b3Rlcworc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlRdW90ZXMo
KQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVy
dHlRdW90ZXMpCisvL0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlRdW90ZXMpCisvL0RF
RklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5UXVvdGVzKQorCisvLyBDU1NQcm9wZXJ0eVJlc2l6
ZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlSZXNpemUoKQor
eworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0
eVJlc2l6ZSwgc2V0UmVzaXplLCByZXNpemUpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVJlc2l6ZSwgc2V0UmVzaXplLCBpbml0aWFsUmVzaXplKQorLy9ERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlSZXNpemUpCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisvLyAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisvLyAgICAgICAgICAgIEVSZXNpemUgcmVzdWx0ID0g
UkVTSVpFX05PTkU7CisvLyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUF1dG8pIHsKKy8vICAgICAgICAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0
dGluZ3MgPSBpbnN0YW5jZS0+bV9jaGVja2VyLm1fZG9jdW1lbnQtPnNldHRpbmdzKCkpCisvLyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0dGluZ3MtPnRleHRBcmVhc0FyZVJlc2l6YWJs
ZSgpID8gUkVTSVpFX0JPVEggOiBSRVNJWkVfTk9ORTsKKy8vICAgICAgICAgICAgfSBlbHNlCisv
LyAgICAgICAgICAgICAgICByZXN1bHQgPSAqcHJpbWl0aXZlVmFsdWU7CisvLyAgICAgICAgICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRSZXNpemUocmVzdWx0KTsKKy8vICAgICAgICB9CisvLyAg
ICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlSaWdodAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJh
c2UqIHNldHVwQ1NTUHJvcGVydHlSaWdodCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5UmlnaHQsIHNldFJpZ2h0LCByaWdodCkKKy8v
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5UmlnaHQsIHNldFJpZ2h0LCBpbml0aWFs
T2Zmc2V0KQorLy9ERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5UmlnaHQsIHNldFJpZ2h0
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlTaXpl
CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVNpemUoKQorewor
ICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlTaXpl
KQorLy9ERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5U2l6ZSkKKy8vREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5U2l6ZSkKKy8veworLy8gICAgaW5zdGFuY2UtPmFwcGx5UGFnZVNpemVQcm9w
ZXJ0eSh2YWx1ZSk7CisvL30KKworLy8gQ1NTUHJvcGVydHlTcmMKK3N0YXRpYyBQcm9wZXJ0eVdy
YXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5U3JjKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
Ly8gT25seSB1c2VkIGluIEBmb250LWZhY2UgcnVsZXMuCisvL0RFRklORV9OVUxMX0lOSEVSSVQo
Q1NTUHJvcGVydHlTcmMpCisvL0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlTcmMpCisv
L0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5U3JjKQorCisvLyBDU1NQcm9wZXJ0eVNwZWFr
CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVNwZWFrKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlT
cGVhaywgc2V0U3BlYWssIHNwZWFrKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVy
dHlTcGVhaywgc2V0U3BlYWssIGluaXRpYWxTcGVhaykKKy8vREVGSU5FX0hBTkRMRV9WQUxVRShD
U1NQcm9wZXJ0eVNwZWFrLCBzZXRTcGVhaykKKworLy8gQ1NTUHJvcGVydHlUYWJsZUxheW91dAor
c3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlUYWJsZUxheW91dCgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5VGFibGVMYXlvdXQsIHNldFRhYmxlTGF5b3V0LCB0YWJsZUxheW91dCkKKy8vREVGSU5FX0hB
TkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VGFibGVMYXlvdXQsIHNldFRhYmxlTGF5b3V0LCBpbml0
aWFsVGFibGVMYXlvdXQpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KQor
Ly97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIEVUYWJsZUxheW91dCBsYXlvdXQgPSAqcHJpbWl0
aXZlVmFsdWU7CisvLyAgICAgICAgaWYgKGxheW91dCA9PSBUQVVUTykKKy8vICAgICAgICAgICAg
bGF5b3V0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJsZUxheW91dCgpOworLy8gICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRUYWJsZUxheW91dChsYXlvdXQpOworLy8gICAgfQorLy99CisK
Ky8vIENTU1Byb3BlcnR5VGV4dEFsaWduCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0
dXBDU1NQcm9wZXJ0eVRleHRBbGlnbigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5F
X0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGV4dEFsaWduLCBzZXRUZXh0QWxpZ24sIHRleHRB
bGlnbikKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VGV4dEFsaWduLCBzZXRU
ZXh0QWxpZ24sIGluaXRpYWxUZXh0QWxpZ24pCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVRl
eHRBbGlnbikKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKy8v
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpbnQgaWQgPSBwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKTsKKy8vICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVTdGFydCkKKy8v
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRBbGlnbihpbnN0YW5jZS0+bV9z
dHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gTEVGVCA6IFJJR0hUKTsKKy8vICAgICAg
ICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUVuZCkKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldFRleHRBbGlnbihpbnN0YW5jZS0+bV9zdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gUklHSFQgOiBMRUZUKTsKKy8vICAgICAgICBlbHNlCisvLyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0QWxpZ24oKnByaW1pdGl2ZVZhbHVlKTsKKy8vICAgIH0K
Ky8vfQorCisvLyBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uCitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKCkKK3sKKyAgICByZXR1cm4g
MDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
biwgc2V0VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uKQorLy9ERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgc2V0VGV4dERlY29yYXRpb24sIGluaXRp
YWxUZXh0RGVjb3JhdGlvbikKKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5VGV4dERlY29yYXRp
b24pCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlTm9uZSkKKy8vICAgICAgICAgICAgcmV0dXJuOworLy8gICAgfQor
Ly8gICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisvLyAgICAgICAgQ1NTVmFsdWVMaXN0
KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworLy8gICAgICAgIGlu
dCB0ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbigpOworLy8gICAgICAgIGlu
dCBsZW4gPSBsaXN0LT5sZW5ndGgoKTsKKy8vICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxl
bjsgaSsrKSB7CisvLyAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjayhpKTsKKy8vICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCisvLyAgICAgICAgICAgICAgICBjb250aW51ZTsKKy8vICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihpdGVtKTsKKy8vICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSkgeworLy8gICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9uZToKKy8vICAgICAgICAgICAg
ICAgIHQgPSBURE5PTkU7CisvLyAgICAgICAgICAgICAgICBicmVhazsKKy8vICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZVVuZGVybGluZToKKy8vICAgICAgICAgICAgICAgIHQgfD0gVU5ERVJMSU5F
OworLy8gICAgICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVP
dmVybGluZToKKy8vICAgICAgICAgICAgICAgIHQgfD0gT1ZFUkxJTkU7CisvLyAgICAgICAgICAg
ICAgICBicmVhazsKKy8vICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmVUaHJvdWdoOgorLy8g
ICAgICAgICAgICAgICAgdCB8PSBMSU5FX1RIUk9VR0g7CisvLyAgICAgICAgICAgICAgICBicmVh
azsKKy8vICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUJsaW5rOgorLy8gICAgICAgICAgICAgICAg
dCB8PSBCTElOSzsKKy8vICAgICAgICAgICAgICAgIGJyZWFrOworLy8gICAgICAgICAgICBkZWZh
dWx0OgorLy8gICAgICAgICAgICAgICAgcmV0dXJuOworLy8gICAgICAgICAgICB9CisvLyAgICAg
ICAgfQorLy8gICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RGVjb3JhdGlvbih0KTsK
Ky8vICAgIH0KKy8vfQorCisvLyBDU1NQcm9wZXJ0eVRleHRJbmRlbnQKK3N0YXRpYyBQcm9wZXJ0
eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5VGV4dEluZGVudCgpCit7CisgICAgcmV0dXJu
IDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5VGV4dEluZGVudCwg
c2V0VGV4dEluZGVudCwgdGV4dEluZGVudCkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1By
b3BlcnR5VGV4dEluZGVudCwgc2V0VGV4dEluZGVudCwgaW5pdGlhbFRleHRJbmRlbnQpCisvL0RF
RklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlUZXh0SW5kZW50LCBzZXRUZXh0SW5kZW50LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVRl
eHRMaW5lVGhyb3VnaCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX05VTExfSU5I
RVJJVChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaCkKKy8vREVGSU5FX05VTExfSU5JVElBTChD
U1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaCkKKy8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVy
dHlUZXh0TGluZVRocm91Z2gpCisKKy8vIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3IK
K3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5VGV4dExpbmVUaHJv
dWdoQ29sb3IoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9OVUxMX0lOSEVSSVQo
Q1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hDb2xvcikKKy8vREVGSU5FX05VTExfSU5JVElBTChD
U1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9yKQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQ
cm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVRleHRMaW5lVGhy
b3VnaE1vZGUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoTW9kZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX05VTExf
SU5IRVJJVChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUpCisvL0RFRklORV9OVUxMX0lO
SVRJQUwoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlKQorLy9ERUZJTkVfTlVMTF9WQUxV
RShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUpCisKKy8vIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoU3R5bGUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3Bl
cnR5VGV4dExpbmVUaHJvdWdoU3R5bGUoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklO
RV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZSkKKy8vREVGSU5F
X05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlKQorLy9ERUZJTkVf
TlVMTF9WQUxVRShDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFN0eWxlKQorCisvLyBDU1NQcm9w
ZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0
dXBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaFdpZHRoKCkKK3sKKyAgICByZXR1cm4gMDsKK30K
KworLy9ERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoV2lkdGgp
CisvL0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aCkK
Ky8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aCkKKwor
Ly8gQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3cKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBz
ZXR1cENTU1Byb3BlcnR5VGV4dE92ZXJmbG93KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9E
RUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3csIHNldFRleHRPdmVy
ZmxvdywgdGV4dE92ZXJmbG93KQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlU
ZXh0T3ZlcmZsb3csIHNldFRleHRPdmVyZmxvdywgaW5pdGlhbFRleHRPdmVyZmxvdykKKy8vREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93KQorLy97CisvLyAgICBpZiAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8g
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkKKy8vICAgICAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldFRleHRPdmVyZmxvdyhwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUVsbGlwc2lzKTsKKy8vICAgIH0KKy8vfQorCisvLyBDU1NQcm9wZXJ0eVRl
eHRPdmVybGluZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlU
ZXh0T3ZlcmxpbmUoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9OVUxMX0lOSEVS
SVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmUpCisvL0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJv
cGVydHlUZXh0T3ZlcmxpbmUpCisvL0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92
ZXJsaW5lKQorCisvLyBDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9yCitzdGF0aWMgUHJvcGVy
dHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9yKCkKK3sKKyAg
ICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dE92
ZXJsaW5lQ29sb3IpCisvL0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3Zlcmxp
bmVDb2xvcikKKy8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xv
cikKKworLy8gQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlCitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGUoKQoreworICAgIHJldHVy
biAwOworfQorCisvL0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVN
b2RlKQorLy9ERUZJTkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lTW9kZSkK
Ky8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlKQorCisvLyBD
U1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSog
c2V0dXBDU1NQcm9wZXJ0eVRleHRPdmVybGluZVN0eWxlKCkKK3sKKyAgICByZXR1cm4gMDsKK30K
KworLy9ERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUpCisv
L0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSkKKy8vREVG
SU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSkKKworLy8gQ1NTUHJv
cGVydHlUZXh0T3ZlcmxpbmVXaWR0aAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVw
Q1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8v
REVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoKQorLy9ERUZJ
TkVfTlVMTF9JTklUSUFMKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpCisvL0RFRklORV9O
VUxMX1ZBTFVFKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5
VGV4dFNoYWRvdworc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlU
ZXh0U2hhZG93KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVRleHRTaGFkb3cpCisvL3sKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0
U2hhZG93KGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT50ZXh0U2hhZG93KCkgPyBuZXcgU2hhZG93
RGF0YSgqaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPnRleHRTaGFkb3coKSkgOiAwKTsKKy8vfQor
Ly9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCisvL3sKKy8vICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRUZXh0U2hhZG93KDApOworLy99CisvL0RFRklORV9TSEFET1dfVkFM
VUUoQ1NTUHJvcGVydHlUZXh0U2hhZG93LCBzZXRUZXh0U2hhZG93KQorCisvLyBDU1NQcm9wZXJ0
eVRleHRUcmFuc2Zvcm0KK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3Bl
cnR5VGV4dFRyYW5zZm9ybSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwgc2V0VGV4dFRyYW5zZm9ybSwgdGV4
dFRyYW5zZm9ybSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VGV4dFRyYW5z
Zm9ybSwgc2V0VGV4dFRyYW5zZm9ybSwgaW5pdGlhbFRleHRUcmFuc2Zvcm0pCisvL0RFRklORV9I
QU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtLCBzZXRUZXh0VHJhbnNmb3JtKQor
CisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5VGV4dFVuZGVybGluZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisK
Ky8vREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCisvL0RFRklO
RV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lKQorLy9ERUZJTkVfTlVMTF9W
QUxVRShDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpCisKKy8vIENTU1Byb3BlcnR5VGV4dFVuZGVy
bGluZUNvbG9yCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVRl
eHRVbmRlcmxpbmVDb2xvcigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX05VTExf
SU5IRVJJVChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcikKKy8vREVGSU5FX05VTExfSU5J
VElBTChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcikKKy8vREVGSU5FX05VTExfVkFMVUUo
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5VGV4dFVuZGVy
bGluZU1vZGUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5VGV4
dFVuZGVybGluZU1vZGUoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9OVUxMX0lO
SEVSSVQoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lTW9kZSkKKy8vREVGSU5FX05VTExfSU5JVElB
TChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlKQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlKQorCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVT
dHlsZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lU3R5bGUoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9OVUxMX0lOSEVS
SVQoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGUpCisvL0RFRklORV9OVUxMX0lOSVRJQUwo
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGUpCisvL0RFRklORV9OVUxMX1ZBTFVFKENTU1By
b3BlcnR5VGV4dFVuZGVybGluZVN0eWxlKQorCisvLyBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVX
aWR0aAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlUZXh0VW5k
ZXJsaW5lV2lkdGgoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9OVUxMX0lOSEVS
SVQoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgpCisvL0RFRklORV9OVUxMX0lOSVRJQUwo
Q1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgpCisvL0RFRklORV9OVUxMX1ZBTFVFKENTU1By
b3BlcnR5VGV4dFVuZGVybGluZVdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVRvcAorc3RhdGljIFBy
b3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlUb3AoKQoreworICAgIHJldHVybiAw
OworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVRvcCwgc2V0VG9wLCB0
b3ApCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVRvcCwgc2V0VG9wLCBpbml0
aWFsT2Zmc2V0KQorLy9ERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5VG9wLCBzZXRUb3As
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQo
Q1NTUHJvcGVydHlVbmljb2RlQmlkaSwgc2V0VW5pY29kZUJpZGksIHVuaWNvZGVCaWRpKQorLy9E
RUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgc2V0VW5pY29kZUJp
ZGksIGluaXRpYWxVbmljb2RlQmlkaSkKKy8vREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0
eVVuaWNvZGVCaWRpLCBzZXRVbmljb2RlQmlkaSkKKworLy8gQ1NTUHJvcGVydHlVbmljb2RlUmFu
Z2UKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5VW5pY29kZVJh
bmdlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy8gT25seSB1c2VkIGluIEBmb250LWZhY2Ug
cnVsZXMuCisvL0RFRklORV9OVUxMX0lOSEVSSVQoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpCisv
L0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpCisvL0RFRklORV9O
VUxMX1ZBTFVFKENTU1Byb3BlcnR5VW5pY29kZVJhbmdlKQorCisvLyBDU1NQcm9wZXJ0eVZlcnRp
Y2FsQWxpZ24KK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5VmVy
dGljYWxBbGlnbigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhF
UklUKENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgc2V0VmVydGljYWxBbGlnbiwgdmVydGljYWxB
bGlnbikKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwg
c2V0VmVydGljYWxBbGlnbiwgaW5pdGlhbFZlcnRpY2FsQWxpZ24pCisvL0RFRklORV9WQUxVRShD
U1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisvLyAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisvLyAgICAgICAgICAgIEVWZXJ0aWNhbEFs
aWduIGFsaWduOworLy8gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7CisvLyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVUb3A6CisvLyAgICAgICAgICAgICAg
ICBhbGlnbiA9IFRPUDsKKy8vICAgICAgICAgICAgICAgIGJyZWFrOworLy8gICAgICAgICAgICBj
YXNlIENTU1ZhbHVlQm90dG9tOgorLy8gICAgICAgICAgICAgICAgYWxpZ24gPSBCT1RUT007Cisv
LyAgICAgICAgICAgICAgICBicmVhazsKKy8vICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU1pZGRs
ZToKKy8vICAgICAgICAgICAgICAgIGFsaWduID0gTUlERExFOworLy8gICAgICAgICAgICAgICAg
YnJlYWs7CisvLyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVCYXNlbGluZToKKy8vICAgICAgICAg
ICAgICAgIGFsaWduID0gQkFTRUxJTkU7CisvLyAgICAgICAgICAgICAgICBicmVhazsKKy8vICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVRleHRCb3R0b206CisvLyAgICAgICAgICAgICAgICBhbGln
biA9IFRFWFRfQk9UVE9NOworLy8gICAgICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVUZXh0VG9wOgorLy8gICAgICAgICAgICAgICAgYWxpZ24gPSBURVhUX1RP
UDsKKy8vICAgICAgICAgICAgICAgIGJyZWFrOworLy8gICAgICAgICAgICBjYXNlIENTU1ZhbHVl
U3ViOgorLy8gICAgICAgICAgICAgICAgYWxpZ24gPSBTVUI7CisvLyAgICAgICAgICAgICAgICBi
cmVhazsKKy8vICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVN1cGVyOgorLy8gICAgICAgICAgICAg
ICAgYWxpZ24gPSBTVVBFUjsKKy8vICAgICAgICAgICAgICAgIGJyZWFrOworLy8gICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlV2Via2l0QmFzZWxpbmVNaWRkbGU6CisvLyAgICAgICAgICAgICAgICBh
bGlnbiA9IEJBU0VMSU5FX01JRERMRTsKKy8vICAgICAgICAgICAgICAgIGJyZWFrOworLy8gICAg
ICAgICAgICBkZWZhdWx0OgorLy8gICAgICAgICAgICAgICAgcmV0dXJuOworLy8gICAgICAgICAg
ICB9CisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRWZXJ0aWNhbEFsaWduKGFs
aWduKTsKKy8vICAgICAgICB9IGVsc2UgeworLy8gICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1p
dGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisvLyAgICAgICAgICAgIExlbmd0aCBsZW5ndGg7
CisvLyAgICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0
eXBlKSkKKy8vICAgICAgICAgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFu
Y2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20o
KSksIEZpeGVkKTsKKy8vICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisvLyAgICAgICAgICAgICAgICBsZW5ndGggPSBMZW5ndGgo
cHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworLy8gICAgICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VmVydGljYWxBbGlnbihMRU5HVEgpOworLy8gICAgICAg
ICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VmVydGljYWxBbGlnbkxlbmd0aChsZW5ndGgpOwor
Ly8gICAgICAgIH0KKy8vICAgIH0KKy8vfQorCisvLyBDU1NQcm9wZXJ0eVZpc2liaWxpdHkKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5VmlzaWJpbGl0eSgpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5
VmlzaWJpbGl0eSwgc2V0VmlzaWJpbGl0eSwgdmlzaWJpbGl0eSkKKy8vREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5VmlzaWJpbGl0eSwgc2V0VmlzaWJpbGl0eSwgaW5pdGlhbFZpc2li
aWxpdHkpCisvL0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBzZXRW
aXNpYmlsaXR5KQorCisvLyBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UKK3N0YXRpYyBQcm9wZXJ0eVdy
YXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2hpdGVTcGFjZSgpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgc2V0
V2hpdGVTcGFjZSwgd2hpdGVTcGFjZSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2hpdGVTcGFjZSwgc2V0V2hpdGVTcGFjZSwgaW5pdGlhbFdoaXRlU3BhY2UpCisvL0RFRklO
RV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBzZXRXaGl0ZVNwYWNlKQorCisv
LyBDU1NQcm9wZXJ0eVdpZG93cworc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NT
UHJvcGVydHlXaWRvd3MoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdpZG93cywgc2V0V2lkb3dzLCB3aWRvd3MpCisvL0RFRklORV9I
QU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdpZG93cywgc2V0V2lkb3dzLCBpbml0aWFsV2lkb3dz
KQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXaWRvd3MpCisvL3sKKy8vICAgIGlmICh2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisv
LyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRXaWRvd3MocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOworLy8gICAgfQorLy99CisK
Ky8vIENTU1Byb3BlcnR5V2lkdGgKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENT
U1Byb3BlcnR5V2lkdGgoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdpZHRoLCBzZXRXaWR0aCwgd2lkdGgpCisvL0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdpZHRoLCBzZXRXaWR0aCwgaW5pdGlhbFNpemUpCisvL0RF
RklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlXaWR0aCwgc2V0V2lkdGgsIGZhbHNlLCB0cnVl
LCB0cnVlLCB0cnVlLCBmYWxzZSkKKworLy8gQ1NTUHJvcGVydHlXb3JkQnJlYWsKK3N0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V29yZEJyZWFrKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXb3JkQnJl
YWssIHNldFdvcmRCcmVhaywgd29yZEJyZWFrKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NT
UHJvcGVydHlXb3JkQnJlYWssIHNldFdvcmRCcmVhaywgaW5pdGlhbFdvcmRCcmVhaykKKy8vREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdvcmRCcmVhaywgc2V0V29yZEJyZWFrKQorCisv
LyBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0
dXBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgc2V0V29yZFNwYWNpbmcs
IHdvcmRTcGFjaW5nKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXb3JkU3Bh
Y2luZywgc2V0V29yZFNwYWNpbmcsIGluaXRpYWxMZXR0ZXJXb3JkU3BhY2luZykKKy8vREVGSU5F
X1NQQUNJTkdfVkFMVUUoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgc2V0V29yZFNwYWNpbmcpCisK
Ky8vIENTU1Byb3BlcnR5V29yZFdyYXAKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1
cENTU1Byb3BlcnR5V29yZFdyYXAoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9I
QU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdvcmRXcmFwLCBzZXRXb3JkV3JhcCwgd29yZFdyYXAp
CisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdvcmRXcmFwLCBzZXRXb3JkV3Jh
cCwgaW5pdGlhbFdvcmRXcmFwKQorLy9ERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V29y
ZFdyYXAsIHNldFdvcmRXcmFwKQorCisvLyBDU1NQcm9wZXJ0eVpJbmRleAorc3RhdGljIFByb3Bl
cnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlaSW5kZXgoKQoreworICAgIHJldHVybiAw
OworfQorCisvL0RFRklORV9JTkhFUklUKENTU1Byb3BlcnR5WkluZGV4KQorLy97CisvLyAgICBp
ZiAoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmhhc0F1dG9aSW5kZXgoKSkKKy8vICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b1pJbmRleCgpOworLy8gICAgZWxzZQorLy8gICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRaSW5kZXgoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUt
PnpJbmRleCgpKTsKKy8vfQorLy8vL0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5WkluZGV4KQor
Ly97CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0b1pJbmRleCgpOworLy99Cisv
Ly8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5WkluZGV4KQorLy97CisvLyAgICBpZiAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8g
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisv
LyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvWkluZGV4KCk7CisvLyAg
ICAgICAgZWxzZSB7CisvLyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgY2xhbXAgYWxsIHNv
cnRzIG9mIG90aGVyIGludGVnZXIgcHJvcGVydGllcyB0b28uCisvLyAgICAgICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRaSW5kZXgoY2xhbXBUb0ludGVnZXIocHJpbWl0aXZlVmFsdWUtPmdl
dERvdWJsZVZhbHVlKCkpKTsKKy8vICAgICAgICB9CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb24KK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJ
TkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbikKKy8veworLy8gICAgaW5zdGFu
Y2UtPm1fc3R5bGUtPmNsZWFyQW5pbWF0aW9ucygpOworLy99CisvL0RFRklORV9JTkhFUklUKENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uKQorLy97CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
aW5oZXJpdEFuaW1hdGlvbnMoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmFuaW1hdGlvbnMoKSk7
CisvL30KKy8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24pCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXkKK3N0YXRpYyBQcm9wZXJ0eVdyYXBw
ZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXkoKQoreworICAgIHJl
dHVybiAwOworfQorCisvL0RFRklORV9BTklNQVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbkRlbGF5LCBkZWxheSwgRGVsYXkpCisvL0RFRklORV9BTklNQVRJT05fSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LCBkZWxheSwgRGVsYXkpCisvL0RFRklO
RV9BTklNQVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgZGVsYXks
IERlbGF5KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbgorc3RhdGlj
IFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJl
Y3Rpb24oKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9BTklNQVRJT05fSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwgZGlyZWN0aW9uLCBEaXJlY3Rp
b24pCisvL0RFRklORV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvbiwgZGlyZWN0aW9uLCBEaXJlY3Rpb24pCisvL0RFRklORV9BTklNQVRJT05fVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sIGRpcmVjdGlvbiwgRGlyZWN0
aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9u
KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfQU5JTUFUSU9OX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwgZHVyYXRpb24sIER1cmF0aW9uKQorLy9E
RUZJTkVfQU5JTUFUSU9OX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlv
biwgZHVyYXRpb24sIER1cmF0aW9uKQorLy9ERUZJTkVfQU5JTUFUSU9OX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24sIGR1cmF0aW9uLCBEdXJhdGlvbikKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJh
c2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZSgpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vREVGSU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRmlsbE1vZGUsIGZpbGxNb2RlLCBGaWxsTW9kZSkKKy8vREVGSU5FX0FOSU1BVElP
Tl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUsIGZpbGxNb2RlLCBG
aWxsTW9kZSkKKy8vREVGSU5FX0FOSU1BVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkZpbGxNb2RlLCBmaWxsTW9kZSwgRmlsbE1vZGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1
cENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoKQoreworICAgIHJldHVy
biAwOworfQorCisvL0RFRklORV9BTklNQVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkl0ZXJhdGlvbkNvdW50LCBpdGVyYXRpb25Db3VudCwgSXRlcmF0aW9uQ291bnQpCisv
L0RFRklORV9BTklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJh
dGlvbkNvdW50LCBpdGVyYXRpb25Db3VudCwgSXRlcmF0aW9uQ291bnQpCisvL0RFRklORV9BTklN
QVRJT05fVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwgaXRl
cmF0aW9uQ291bnQsIEl0ZXJhdGlvbkNvdW50KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbk5hbWUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uTmFtZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0FOSU1B
VElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgbmFtZSwgTmFtZSkK
Ky8vREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFt
ZSwgbmFtZSwgTmFtZSkKKy8vREVGSU5FX0FOSU1BVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbk5hbWUsIG5hbWUsIE5hbWUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uUGxheVN0YXRlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVG
SU5FX0FOSU1BVElPTl9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRl
LCBwbGF5U3RhdGUsIFBsYXlTdGF0ZSkKKy8vREVGSU5FX0FOSU1BVElPTl9JTklUSUFMKENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uUGxheVN0YXRlLCBwbGF5U3RhdGUsIFBsYXlTdGF0ZSkKKy8v
REVGSU5FX0FOSU1BVElPTl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0
ZSwgcGxheVN0YXRlLCBQbGF5U3RhdGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24KK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKQoreworICAgIHJldHVybiAwOworfQor
CisvL0RFRklORV9BTklNQVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRp
bWluZ0Z1bmN0aW9uLCB0aW1pbmdGdW5jdGlvbiwgVGltaW5nRnVuY3Rpb24pCisvL0RFRklORV9B
TklNQVRJT05fSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
LCB0aW1pbmdGdW5jdGlvbiwgVGltaW5nRnVuY3Rpb24pCisvL0RFRklORV9BTklNQVRJT05fVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rp
b24sIFRpbWluZ0Z1bmN0aW9uKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5j
ZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgc2V0QXBwZWFyYW5jZSwgYXBwZWFyYW5jZSkKKy8vREVG
SU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSwgc2V0QXBwZWFy
YW5jZSwgaW5pdGlhbEFwcGVhcmFuY2UpCisvL0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRBcHBlYXJhbmNlLCBzZXRBcHBlYXJhbmNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tmYWNlVmlzaWJpbGl0eQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NT
UHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkoKQoreworICAgIHJldHVybiAwOworfQor
CisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJp
bGl0eSwgc2V0QmFja2ZhY2VWaXNpYmlsaXR5LCBiYWNrZmFjZVZpc2liaWxpdHkpCisvL0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwgc2V0
QmFja2ZhY2VWaXNpYmlsaXR5LCBpbml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5KQorLy9ERUZJTkVf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkpCisvL3sKKy8vICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisvLyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJhY2tmYWNlVmlzaWJpbGl0eSgo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVWaXNpYmxlKSA/IEJhY2tmYWNl
VmlzaWJpbGl0eVZpc2libGUgOiBCYWNrZmFjZVZpc2liaWxpdHlIaWRkZW4pOworLy8gICAgfQor
Ly99CisKKy8vIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXAKK3N0YXRpYyBQcm9wZXJ0
eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXAoKQorewor
ICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3Bl
cnR5V2Via2l0QmFja2dyb3VuZENsaXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXApCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZQorc3RhdGljIFByb3BlcnR5V3Jh
cHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tncm91bmQsIEJhY2tncm91
bmQsIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIGJhY2tncm91bmQsIEJh
Y2tncm91bmQsIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlLCBiYWNrZ3JvdW5k
LCBCYWNrZ3JvdW5kLCBjb21wb3NpdGUsIENvbXBvc2l0ZSkKKworLy8gQ1NTUHJvcGVydHlXZWJr
aXRCYWNrZ3JvdW5kT3JpZ2luCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4oKQoreworICAgIHJldHVybiAwOworfQorCisv
L0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9y
aWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRTaXplCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJ
TkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplLCBD
U1NQcm9wZXJ0eUJhY2tncm91bmRTaXplKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfVU5SRUFDSEFCTEVf
SU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQorLy9ERUZJTkVfVU5SRUFDSEFC
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKQorLy9ERUZJTkVfVU5SRUFD
SEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcikKKworLy8gQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlckNvbG9yCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0
dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IoKQoreworICAgIHJldHVybiAwOwor
fQorCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QWZ0ZXJDb2xvcikKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJBZnRlckNvbG9yKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlckNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyU3R5bGUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQWZ0ZXJTdHlsZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlKQorLy9E
RUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5
bGUpCisvL0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFm
dGVyU3R5bGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aAorc3RhdGlj
IFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgpCisvL0RFRklORV9VTlJFQUNIQUJM
RV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkKKy8vREVGSU5FX1VO
UkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCkKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlKCkKK3sKKyAgICByZXR1cm4gMDsK
K30KKworLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZSkKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmUpCisvL0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcgor
c3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmVDb2xvcigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX1VOUkVBQ0hBQkxF
X0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcikKKy8vREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvcikKKy8v
REVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29s
b3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUKK3N0YXRpYyBQcm9w
ZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUo
KQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUpCisvL0RFRklORV9VTlJFQUNIQUJMRV9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUpCisvL0RFRklORV9VTlJF
QUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlKQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoCitzdGF0aWMgUHJvcGVydHlXcmFwcGVy
QmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVdpZHRoKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJFbmQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfVU5S
RUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCkKKy8vREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQpCisvL0RFRklORV9V
TlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCkKKworLy8gQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNl
dHVwQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcigpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRDb2xvcikKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJFbmRDb2xvcikKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyRW5kQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUK
K3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
RW5kU3R5bGUoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9VTlJFQUNIQUJMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUpCisvL0RFRklORV9VTlJFQUNI
QUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUpCisvL0RFRklORV9V
TlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlKQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFz
ZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFdpZHRoKCkKK3sKKyAgICByZXR1cm4g
MDsKK30KKworLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckVuZFdpZHRoKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckVuZFdpZHRoKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJFbmRXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQK
K3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
Rml0KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJGaXQsIHNldEJvcmRlckZpdCwgYm9yZGVyRml0KQorLy9ERUZJ
TkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQsIHNldEJvcmRlckZp
dCwgaW5pdGlhbEJvcmRlckZpdCkKKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRml0KQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworLy8g
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUJvcmRlcikKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEJvcmRlckZpdChCb3JkZXJGaXRCb3JkZXIpOworLy8gICAgICAgIGVsc2UKKy8v
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJvcmRlckZpdChCb3JkZXJGaXRMaW5l
cyk7CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFs
U3BhY2luZworc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVG
SU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNp
bmcsIHNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nLCBob3Jpem9udGFsQm9yZGVyU3BhY2luZykK
Ky8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRh
bFNwYWNpbmcsIHNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nLCBpbml0aWFsSG9yaXpvbnRhbEJv
cmRlclNwYWNpbmcpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6
b250YWxTcGFjaW5nKQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIGZsb2F0IHpvb21GYWN0
b3IgPSBpbnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworLy8gICAgICAgIHNob3J0
IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KGluc3RhbmNlLT5t
X3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsK
Ky8vICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmco
c3BhY2luZyk7CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFn
ZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJJbWFnZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklU
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UsIHNldEJvcmRlckltYWdlLCBib3JkZXJJbWFn
ZSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2Us
IHNldEJvcmRlckltYWdlLCBpbml0aWFsTmluZVBpZWNlSW1hZ2UpCisvL0RFRklORV9WQUxVRShD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKQorLy97CisvLyAgICBOaW5lUGllY2VJbWFnZSBp
bWFnZTsKKy8vICAgIGluc3RhbmNlLT5tYXBOaW5lUGllY2VJbWFnZShDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckltYWdlLCB2YWx1ZSwgaW1hZ2UpOworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNl
dEJvcmRlckltYWdlKGltYWdlKTsKKy8vfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJh
ZGl1cworc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJSYWRpdXMoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FUVVJVkFMRU5U
X1BST1BFUlRZKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRl
clJhZGl1cykKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydAorc3RhdGljIFByb3Bl
cnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydCgpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJTdGFydCkKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydCkKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3Rh
cnRDb2xvcgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJTdGFydENvbG9yKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfVU5S
RUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Q29sb3IpCisvL0RF
RklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xv
cikKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3Rh
cnRDb2xvcikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlCitzdGF0aWMg
UHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5
bGUoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklU
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSkKKy8vREVGSU5FX1VOUkVBQ0hBQkxF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlKQorLy9ERUZJTkVfVU5S
RUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlKQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJC
YXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRXaWR0aCgpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJTdGFydFdpZHRoKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgpCisvL0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyVmVydGljYWxTcGFjaW5nCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZygpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVy
dGljYWxTcGFjaW5nLCBzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcsIHZlcnRpY2FsQm9yZGVyU3Bh
Y2luZykKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVy
dGljYWxTcGFjaW5nLCBzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcsIGluaXRpYWxWZXJ0aWNhbEJv
cmRlclNwYWNpbmcpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRp
Y2FsU3BhY2luZykKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
Ky8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBmbG9hdCB6b29tRmFjdG9y
ID0gaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKKy8vICAgICAgICBzaG9ydCBz
cGFjaW5nID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhTaG9ydChpbnN0YW5jZS0+bV9z
dHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Cisv
LyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhzcGFj
aW5nKTsKKy8vICAgIH0KKy8vfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduCitzdGF0
aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduKCkK
K3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRCb3hBbGlnbiwgc2V0Qm94QWxpZ24sIGJveEFsaWduKQorLy9ERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbiwgc2V0Qm94QWxpZ24sIGluaXRpYWxC
b3hBbGlnbikKKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24pCisvL3sK
Ky8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisvLyAgICAgICAgRUJveEFsaWdubWVudCBib3hBbGlnbm1lbnQgPSAqcHJp
bWl0aXZlVmFsdWU7CisvLyAgICAgICAgaWYgKGJveEFsaWdubWVudCAhPSBCSlVTVElGWSkKKy8v
ICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveEFsaWduKGJveEFsaWdubWVudCk7
CisvLyAgICAgICAgcmV0dXJuOworLy8gICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5V2Via2l0
Qm94RGlyZWN0aW9uCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0
eVdlYmtpdEJveERpcmVjdGlvbigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hB
TkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uLCBzZXRCb3hEaXJlY3Rp
b24sIGJveERpcmVjdGlvbikKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Vi
a2l0Qm94RGlyZWN0aW9uLCBzZXRCb3hEaXJlY3Rpb24sIGluaXRpYWxCb3hEaXJlY3Rpb24pCisv
L0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb24sIHNldEJv
eERpcmVjdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4CitzdGF0aWMgUHJvcGVy
dHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgoKQoreworICAgIHJl
dHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJv
eEZsZXgsIHNldEJveEZsZXgsIGJveEZsZXgpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdEJveEZsZXgsIHNldEJveEZsZXgsIGluaXRpYWxCb3hGbGV4KQorLy9ERUZJ
TkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4KQorLy97CisvLyAgICBpZiAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8g
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
Qm94RmxleChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsKKy8vICAgIH0KKy8vfQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cAorc3RhdGljIFByb3BlcnR5V3JhcHBl
ckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXAoKQoreworICAgIHJldHVy
biAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveEZs
ZXhHcm91cCwgc2V0Qm94RmxleEdyb3VwLCBib3hGbGV4R3JvdXApCisvL0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXhHcm91cCwgc2V0Qm94RmxleEdyb3VwLCBp
bml0aWFsQm94RmxleEdyb3VwKQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRCb3hG
bGV4R3JvdXApCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Cisv
LyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisvLyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hGbGV4R3JvdXAoKHVuc2lnbmVkIGlu
dCkocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkpKTsKKy8vICAgIH0KKy8vfQorCisv
LyBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSog
c2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
Ly9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hMaW5lcywgc2V0Qm94
TGluZXMsIGJveExpbmVzKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRCb3hMaW5lcywgc2V0Qm94TGluZXMsIGluaXRpYWxCb3hMaW5lcykKKy8vREVGSU5FX0hBTkRM
RV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzLCBzZXRCb3hMaW5lcykKKworLy8gQ1NT
UHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXAKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwKCkKK3sKKyAgICByZXR1cm4g
MDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRp
bmFsR3JvdXAsIHNldEJveE9yZGluYWxHcm91cCwgYm94T3JkaW5hbEdyb3VwKQorLy9ERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3JvdXAsIHNldEJveE9y
ZGluYWxHcm91cCwgaW5pdGlhbEJveE9yZGluYWxHcm91cCkKKy8vREVGSU5FX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwKQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94T3Jk
aW5hbEdyb3VwKCh1bnNpZ25lZCBpbnQpKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgp
KSk7CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQKK3N0YXRp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50KCkK
K3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRCb3hPcmllbnQsIHNldEJveE9yaWVudCwgYm94T3JpZW50KQorLy9ERUZJTkVfSEFO
RExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQsIHNldEJveE9yaWVudCwgaW5p
dGlhbEJveE9yaWVudCkKKy8vREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJv
eE9yaWVudCwgc2V0Qm94T3JpZW50KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2sKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm94UGFjaygp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0Qm94UGFjaywgc2V0Qm94UGFjaywgYm94UGFjaykKKy8vREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm94UGFjaywgc2V0Qm94UGFjaywgaW5pdGlhbEJveFBh
Y2spCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2spCisvL3sKKy8vICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisvLyAgICAgICAgRUJveEFsaWdubWVudCBib3hQYWNrID0gKnByaW1pdGl2ZVZhbHVl
OworLy8gICAgICAgIGlmIChib3hQYWNrICE9IEJTVFJFVENIICYmIGJveFBhY2sgIT0gQkJBU0VM
SU5FKQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Qm94UGFjayhib3hQYWNr
KTsKKy8vICAgIH0KKy8vfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QKK3N0YXRp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0Qm94UmVmbGVjdCwgc2V0Qm94UmVmbGVjdCwgYm94UmVmbGVjdCkKKy8vREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgc2V0Qm94UmVmbGVj
dCwgaW5pdGlhbEJveFJlZmxlY3QpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEJv
eFJlZmxlY3QpCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Cisv
LyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFJlZmxlY3QoUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3hSZWZsZWN0KCkpOworLy8gICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNSZWZsZWN0VmFs
dWUoKSkgeworLy8gICAgICAgIENTU1JlZmxlY3RWYWx1ZSogcmVmbGVjdFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUmVmbGVjdFZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIFJlZlB0cjxTdHlsZVJl
ZmxlY3Rpb24+IHJlZmxlY3Rpb24gPSBTdHlsZVJlZmxlY3Rpb246OmNyZWF0ZSgpOworLy8gICAg
ICAgIHJlZmxlY3Rpb24tPnNldERpcmVjdGlvbihyZWZsZWN0VmFsdWUtPmRpcmVjdGlvbigpKTsK
Ky8vICAgICAgICBpZiAocmVmbGVjdFZhbHVlLT5vZmZzZXQoKSkgeworLy8gICAgICAgICAgICBp
bnQgdHlwZSA9IHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPnByaW1pdGl2ZVR5cGUoKTsKKy8vICAg
ICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQor
Ly8gICAgICAgICAgICAgICAgcmVmbGVjdGlvbi0+c2V0T2Zmc2V0KExlbmd0aChyZWZsZWN0VmFs
dWUtPm9mZnNldCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KSk7CisvLyAgICAgICAgICAg
IGVsc2UKKy8vICAgICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE9mZnNldChMZW5ndGgocmVm
bGVjdFZhbHVlLT5vZmZzZXQoKS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+
bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1f
c3R5bGUtPmVmZmVjdGl2ZVpvb20oKSksIEZpeGVkKSk7CisvLyAgICAgICAgfQorLy8gICAgICAg
IE5pbmVQaWVjZUltYWdlIG1hc2s7CisvLyAgICAgICAgaW5zdGFuY2UtPm1hcE5pbmVQaWVjZUlt
YWdlKENTU1Byb3BlcnR5V2Via2l0Qm94UmVmbGVjdCwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1h
c2spOworLy8gICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2sobWFzayk7CisvLyAgICAgICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldEJveFJlZmxlY3QocmVmbGVjdGlvbi5yZWxlYXNlKCkpOworLy8g
ICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5Qm94U2hhZG93CitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUJveFNoYWRvdygpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKKy8vREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlCb3hTaGFkb3cpCisvL3sKKy8vICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRCb3hTaGFkb3coaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmJv
eFNoYWRvdygpID8gbmV3IFNoYWRvd0RhdGEoKmluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5ib3hT
aGFkb3coKSkgOiAwKTsKKy8vfQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eUJveFNoYWRv
dykKKy8veworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEJveFNoYWRvdygwKTsKKy8vfQor
Ly9ERUZJTkVfU0hBRE9XX1ZBTFVFKENTU1Byb3BlcnR5Qm94U2hhZG93LCBzZXRCb3hTaGFkb3cp
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93CitzdGF0aWMgUHJvcGVydHlXcmFwcGVy
QmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdygpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKKy8vREVGSU5FX0VRVUlWQUxFTlRfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdEJveFNo
YWRvdywgQ1NTUHJvcGVydHlCb3hTaGFkb3cpCisvL0RFRklORV9FUVVJVkFMRU5UX0lOSVRJQUwo
Q1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3csIENTU1Byb3BlcnR5Qm94U2hhZG93KQorLy9ERUZJ
TkVfU0hBRE9XX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93LCBzZXRCb3hTaGFkb3cp
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uCitzdGF0aWMgUHJvcGVydHlX
cmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbigpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0Q29sb3JDb3JyZWN0aW9uLCBzZXRDb2xvclNwYWNlLCBjb2xvclNwYWNlKQorLy9ERUZJTkVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbikKKy8veworLy8gICAgaW5z
dGFuY2UtPm1fc3R5bGUtPnNldENvbG9yU3BhY2UoQ29sb3JTcGFjZURldmljZVJHQik7CisvL30K
Ky8vREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbiwg
c2V0Q29sb3JTcGFjZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyCitz
dGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJy
ZWFrQWZ0ZXIoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIsIHNldENvbHVtbkJyZWFrQWZ0ZXIs
IGNvbHVtbkJyZWFrQWZ0ZXIpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkJyZWFrQWZ0ZXIsIHNldENvbHVtbkJyZWFrQWZ0ZXIsIGluaXRpYWxQYWdlQnJl
YWspCisvL0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0Fm
dGVyLCBzZXRDb2x1bW5CcmVha0FmdGVyKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJy
ZWFrQmVmb3JlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkJyZWFrQmVmb3JlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgc2V0Q29s
dW1uQnJlYWtCZWZvcmUsIGNvbHVtbkJyZWFrQmVmb3JlKQorLy9ERUZJTkVfSEFORExFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgc2V0Q29sdW1uQnJlYWtCZWZv
cmUsIGluaXRpYWxQYWdlQnJlYWspCisvL0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5CcmVha0JlZm9yZSwgc2V0Q29sdW1uQnJlYWtCZWZvcmUpCisKKy8vIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUoKQoreworICAgIHJldHVy
biAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkJyZWFrSW5zaWRlLCBzZXRDb2x1bW5CcmVha0luc2lkZSwgY29sdW1uQnJlYWtJbnNpZGUpCisv
L0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRl
LCBzZXRDb2x1bW5CcmVha0luc2lkZSwgaW5pdGlhbFBhZ2VCcmVhaykKKy8vREVGSU5FX1ZBTFVF
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpCisvL3sKKy8vICAgIGlmICh2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisv
LyAgICAgICAgRVBhZ2VCcmVhayBwYiA9ICpwcmltaXRpdmVWYWx1ZTsKKy8vICAgICAgICBpZiAo
cGIgIT0gUEJBTFdBWVMpCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1
bW5CcmVha0luc2lkZShwYik7CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5Db3VudAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5Db3VudCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3VudCkKKy8veworLy8gICAgaWYgKGluc3RhbmNl
LT5tX3BhcmVudFN0eWxlLT5oYXNBdXRvQ29sdW1uQ291bnQoKSkKKy8vICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0SGFzQXV0b0NvbHVtbkNvdW50KCk7CisvLyAgICBlbHNlCisvLyAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbkNvdW50KGluc3RhbmNlLT5tX3BhcmVudFN0
eWxlLT5jb2x1bW5Db3VudCgpKTsKKy8vfQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkNvdW50KQorLy97CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGFzQXV0
b0NvbHVtbkNvdW50KCk7CisvL30KKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQ291bnQpCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Cisv
LyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEhhc0F1dG9Db2x1bW5Db3VudCgpOworLy8gICAgICAgIGVsc2UKKy8vICAgICAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbkNvdW50KHN0YXRpY19jYXN0PHVuc2ln
bmVkIHNob3J0PihwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSkpOworLy8gICAgfQor
Ly99CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2FwCitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcCgpCit7CisgICAgcmV0dXJu
IDA7Cit9CisKKy8vREVGSU5FX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5HYXApCisv
L3sKKy8vICAgIGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+aGFzTm9ybWFsQ29sdW1uR2Fw
KCkpCisvLyAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc05vcm1hbENvbHVtbkdhcCgp
OworLy8gICAgZWxzZQorLy8gICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5HYXAo
aW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmNvbHVtbkdhcCgpKTsKKy8vfQorLy9ERUZJTkVfSU5J
VElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkdhcCkKKy8veworLy8gICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldEhhc05vcm1hbENvbHVtbkdhcCgpOworLy99CisvL0RFRklORV9WQUxVRShDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkdhcCkKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisvLyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNOb3JtYWxDb2x1bW5HYXAoKTsKKy8vICAgICAg
ICBlbHNlCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5HYXAocHJp
bWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwg
aW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2
ZVpvb20oKSkpOworLy8gICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVs
ZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfRVhQQU5ESU5HX0lOSEVS
SVRfVEhSRUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlLCBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtblJ1bGVDb2xvciwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoKQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGUpCisvL3sKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5yZXNldENvbHVt
blJ1bGUoKTsKKy8vfQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blJ1bGUpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcigp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUX0JBQ0tVUChD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgc2V0Q29sdW1uUnVsZUNvbG9yLCBjb2x1
bW5SdWxlQ29sb3IsIGNvbG9yKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUxfQ09MT1IoQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsIHNldENvbHVtblJ1bGVDb2xvcikKKy8vREVGSU5F
X0hBTkRMRV9WQUxVRV9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwgc2V0
Q29sdW1uUnVsZUNvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZQor
c3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5S
dWxlU3R5bGUoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSwgc2V0Q29sdW1uUnVsZVN0eWxlLCBj
b2x1bW5SdWxlU3R5bGUpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGVTdHlsZSwgc2V0Q29sdW1uUnVsZVN0eWxlLCBpbml0aWFsQm9yZGVyU3R5bGUp
CisvL0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUs
IHNldENvbHVtblJ1bGVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lk
dGgKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZVdpZHRoKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIHNldENvbHVtblJ1bGVXaWR0
aCwgY29sdW1uUnVsZVdpZHRoKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlV2lkdGgsIHNldENvbHVtblJ1bGVXaWR0aCwgaW5pdGlhbEJvcmRlcldp
ZHRoKQorLy9ERUZJTkVfV0lEVEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lk
dGgsIHNldENvbHVtblJ1bGVXaWR0aCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFu
CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blNwYW4oKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4sIHNldENvbHVtblNwYW4sIGNvbHVtblNwYW4pCisv
L0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4sIHNldENv
bHVtblNwYW4sIGluaXRpYWxDb2x1bW5TcGFuKQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5TcGFuKQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRDb2x1bW5TcGFuKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlQWxsKTsKKy8vICAgIH0KKy8vfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRo
CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bldpZHRoKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbldpZHRoKQorLy97CisvLyAgICBpZiAoaW5zdGFuY2UtPm1fcGFyZW50
U3R5bGUtPmhhc0F1dG9Db2x1bW5XaWR0aCgpKQorLy8gICAgICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRIYXNBdXRvQ29sdW1uV2lkdGgoKTsKKy8vICAgIGVsc2UKKy8vICAgICAgICBpbnN0YW5j
ZS0+bV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmNvbHVt
bldpZHRoKCkpOworLy99CisvL0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
V2lkdGgpCisvL3sKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXNBdXRvQ29sdW1uV2lk
dGgoKTsKKy8vfQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCkK
Ky8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKy8vICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVBdXRvKQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0
SGFzQXV0b0NvbHVtbldpZHRoKCk7CisvLyAgICAgICAgZWxzZQorLy8gICAgICAgICAgICBpbnN0
YW5jZS0+bV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGhGbG9hdChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRT
dHlsZSwgaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkpOworLy8gICAgfQorLy99
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucworc3RhdGljIFByb3BlcnR5V3JhcHBlckJh
c2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zKCkKK3sKKyAgICByZXR1cm4gMDsKK30K
KworLy9ERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMpCisvL3sKKy8vICAg
IGlmIChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+aGFzQXV0b0NvbHVtbldpZHRoKCkpCisvLyAg
ICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOworLy8gICAg
ZWxzZQorLy8gICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRDb2x1bW5XaWR0aChpbnN0YW5j
ZS0+bV9wYXJlbnRTdHlsZS0+Y29sdW1uV2lkdGgoKSk7CisvLyAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0Q29sdW1uQ291bnQoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmNvbHVtbkNvdW50KCkp
OworLy99CisvL0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucykKKy8vewor
Ly8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0F1dG9Db2x1bW5XaWR0aCgpOworLy8gICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldENvbHVtbkNvdW50KFJlbmRlclN0eWxlOjppbml0aWFsQ29s
dW1uQ291bnQoKSk7CisvL30KKy8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5zKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEKK3N0YXRpYyBQcm9w
ZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSgpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdEZvbnRTaXplRGVsdGEpCisvL0RFRklORV9OVUxMX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRGb250U2l6ZURlbHRhKQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRTaXplRGVsdGEpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0CitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCgpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0SGlnaGxpZ2h0LCBzZXRIaWdobGlnaHQsIGhpZ2hsaWdodCkKKy8vREVGSU5FX0hBTkRMRV9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0LCBzZXRIaWdobGlnaHQsIGluaXRpYWxI
aWdobGlnaHQpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEhpZ2hsaWdodCkKKy8v
eworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKy8vICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVOb25lKQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SGln
aGxpZ2h0KG51bGxBdG9tKTsKKy8vICAgICAgICBlbHNlCisvLyAgICAgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRIaWdobGlnaHQocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkp
OworLy8gICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVy
CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhl
bmF0ZUNoYXJhY3RlcigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlQ2hhcmFjdGVyLCBzZXRIeXBoZW5hdGlv
blN0cmluZywgaHlwaGVuYXRpb25TdHJpbmcpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3Rlciwgc2V0SHlwaGVuYXRpb25TdHJpbmcsIGlu
aXRpYWxIeXBoZW5hdGlvblN0cmluZykKKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
SHlwaGVuYXRlQ2hhcmFjdGVyKQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUF1dG8pCisvLyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRIeXBoZW5hdGlvblN0cmluZyhudWxsQXRvbSk7CisvLyAgICAg
ICAgZWxzZQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25T
dHJpbmcocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOworLy8gICAgfQorLy99CisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9jYWxlCitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZSgpCit7CisgICAg
cmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0
SHlwaGVuYXRlTG9jYWxlLCBzZXRIeXBoZW5hdGlvbkxvY2FsZSwgaHlwaGVuYXRpb25Mb2NhbGUp
CisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2Fs
ZSwgc2V0SHlwaGVuYXRpb25Mb2NhbGUsIGluaXRpYWxIeXBoZW5hdGlvbkxvY2FsZSkKKy8vREVG
SU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9jYWxlKQorLy97CisvLyAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworLy8gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUF1dG8pCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIeXBoZW5hdGlvbkxv
Y2FsZShudWxsQXRvbSk7CisvLyAgICAgICAgZWxzZQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0SHlwaGVuYXRpb25Mb2NhbGUocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1Zh
bHVlKCkpOworLy8gICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5V2Via2l0SHlwaGVucworc3Rh
dGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zKCkK
K3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRIeXBoZW5zLCBzZXRIeXBoZW5zLCBoeXBoZW5zKQorLy9ERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zLCBzZXRIeXBoZW5zLCBpbml0aWFsSHlwaGVu
cykKKy8vREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMsIHNldEh5
cGhlbnMpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrCitzdGF0aWMgUHJvcGVydHlX
cmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaygpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TGlu
ZUJyZWFrLCBzZXRLSFRNTExpbmVCcmVhaywga2h0bWxMaW5lQnJlYWspCisvL0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgc2V0S0hUTUxMaW5lQnJlYWss
IGluaXRpYWxLSFRNTExpbmVCcmVhaykKKy8vREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdExpbmVCcmVhaywgc2V0S0hUTUxMaW5lQnJlYWspCisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0TGluZUNsYW1wCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0
eVdlYmtpdExpbmVDbGFtcCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRM
RV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1wLCBzZXRMaW5lQ2xhbXAsIGxpbmVD
bGFtcCkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TGluZUNsYW1w
LCBzZXRMaW5lQ2xhbXAsIGluaXRpYWxMaW5lQ2xhbXApCisvL0RFRklORV9WQUxVRShDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVDbGFtcCkKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpbnQgdHlw
ZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisvLyAgICAgICAgaWYgKHR5cGUg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisvLyAgICAgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRMaW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUocHJpbWl0aXZlVmFsdWUtPmdl
dEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgTGluZUNsYW1wTGluZUNv
dW50KSk7CisvLyAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRMaW5lQ2xh
bXAoTGluZUNsYW1wVmFsdWUocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIExpbmVDbGFtcFBlcmNlbnRhZ2UpKTsKKy8vICAgIH0K
Ky8vfQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aAorc3RhdGljIFByb3BlcnR5
V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGgoKQoreworICAg
IHJldHVybiAwOworfQorCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TG9naWNhbFdpZHRoKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElBTChDU1NQcm9w
ZXJ0eVdlYmtpdExvZ2ljYWxXaWR0aCkKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1By
b3BlcnR5V2Via2l0TG9naWNhbFdpZHRoKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxI
ZWlnaHQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0
TG9naWNhbEhlaWdodCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX1VOUkVBQ0hB
QkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0KQorLy9ERUZJTkVfVU5S
RUFDSEFCTEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQpCisvL0RFRklO
RV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdExvZ2ljYWxIZWlnaHQpCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZQorc3RhdGljIFByb3BlcnR5V3Jh
cHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlLCBzZXRNYXJnaW5BZnRlckNvbGxhcHNlLCBtYXJnaW5B
ZnRlckNvbGxhcHNlKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5BZnRlckNvbGxhcHNlLCBzZXRNYXJnaW5BZnRlckNvbGxhcHNlLCBpbml0aWFsTWFyZ2lu
QWZ0ZXJDb2xsYXBzZSkKKy8vREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkFmdGVyQ29sbGFwc2UsIHNldE1hcmdpbkFmdGVyQ29sbGFwc2UpCisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UoKQoreworICAgIHJl
dHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkJlZm9yZUNvbGxhcHNlLCBzZXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgbWFyZ2luQmVmb3Jl
Q29sbGFwc2UpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkJlZm9yZUNvbGxhcHNlLCBzZXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgaW5pdGlhbE1hcmdpbkJl
Zm9yZUNvbGxhcHNlKQorLy9ERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQmVmb3JlQ29sbGFwc2UsIHNldE1hcmdpbkJlZm9yZUNvbGxhcHNlKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFz
ZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworLy9ERUZJTkVfRVFVSVZBTEVOVF9QUk9QRVJUWShDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29s
bGFwc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UKK3N0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFw
c2UoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZ
KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQmVmb3JlQ29sbGFwc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UK
K3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
Q29sbGFwc2UoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpCisvL3sKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxl
LT5zZXRNYXJnaW5CZWZvcmVDb2xsYXBzZShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFyZ2lu
QmVmb3JlQ29sbGFwc2UoKSk7CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2luQWZ0
ZXJDb2xsYXBzZShpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZSgp
KTsKKy8vfQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNl
KQorLy97CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFyZ2luQmVmb3JlQ29sbGFwc2Uo
TUNPTExBUFNFKTsKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJnaW5BZnRlckNvbGxh
cHNlKE1DT0xMQVBTRSk7CisvL30KKy8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5Db2xsYXBzZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcgorc3Rh
dGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
cigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcikKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcikKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXIpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQmVmb3JlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJlZm9yZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmUpCisvL0RFRklO
RV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlKQorLy9E
RUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmUpCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFz
ZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCgpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5F
bmQpCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
RW5kKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5F
bmQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQKK3N0YXRpYyBQcm9wZXJ0eVdy
YXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQoKQoreworICAgIHJl
dHVybiAwOworfQorCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luU3RhcnQpCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luU3RhcnQpCisvL0RFRklORV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpblN0YXJ0KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUKK3N0YXRp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSgpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWUpCisvL0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSkK
Ky8veworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVEaXJlY3Rpb24oaW5zdGFu
Y2UtPm1fcGFyZW50U3R5bGUtPm1hcnF1ZWVEaXJlY3Rpb24oKSk7CisvLyAgICBpbnN0YW5jZS0+
bV9zdHlsZS0+c2V0TWFycXVlZUluY3JlbWVudChpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFy
cXVlZUluY3JlbWVudCgpKTsKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3Bl
ZWQoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPm1hcnF1ZWVTcGVlZCgpKTsKKy8vICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlTG9vcENvdW50KGluc3RhbmNlLT5tX3BhcmVudFN0eWxl
LT5tYXJxdWVlTG9vcENvdW50KCkpOworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1
ZWVCZWhhdmlvcihpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+bWFycXVlZUJlaGF2aW9yKCkpOwor
Ly99CisvL0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSkKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uCitzdGF0aWMgUHJvcGVydHlXcmFwcGVy
QmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24oKQoreworICAgIHJl
dHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVEaXJlY3Rpb24sIHNldE1hcnF1ZWVEaXJlY3Rpb24sIG1hcnF1ZWVEaXJlY3Rpb24pCisv
L0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24s
IHNldE1hcnF1ZWVEaXJlY3Rpb24sIGluaXRpYWxNYXJxdWVlRGlyZWN0aW9uKQorLy9ERUZJTkVf
SEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgc2V0TWFycXVl
ZURpcmVjdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50CitzdGF0
aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNy
ZW1lbnQoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsIHNldE1hcnF1ZWVJbmNyZW1lbnQsIG1h
cnF1ZWVJbmNyZW1lbnQpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVJbmNyZW1lbnQsIHNldE1hcnF1ZWVJbmNyZW1lbnQsIGluaXRpYWxNYXJxdWVlSW5j
cmVtZW50KQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50
KQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworLy8gICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSkgeworLy8gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsK
Ky8vICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGw6CisvLyAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgxLCBGaXhlZCkpOyAvLyAxcHguCisv
LyAgICAgICAgICAgIGJyZWFrOworLy8gICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CisvLyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCg2
LCBGaXhlZCkpOyAvLyA2cHguIFRoZSBXaW5JRSBkZWZhdWx0LgorLy8gICAgICAgICAgICBicmVh
azsKKy8vICAgICAgICBjYXNlIENTU1ZhbHVlTGFyZ2U6CisvLyAgICAgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRNYXJxdWVlSW5jcmVtZW50KExlbmd0aCgzNiwgRml4ZWQpKTsgLy8gMzZw
eC4KKy8vICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgfQorLy8gICAgICAgIH0gZWxzZSB7
CisvLyAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOworLy8gICAgICAgICAgICBMZW5ndGggbGVu
Z3RoID0gY29udmVydFRvTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLCBpbnN0YW5jZS0+bV9zdHlsZS5n
ZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgMSwgJm9rKTsKKy8vICAgICAgICAg
ICAgaWYgKG9rKQorLy8gICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1
ZWVJbmNyZW1lbnQobGVuZ3RoKTsKKy8vICAgICAgICB9CisvLyAgICB9CisvL30KKworLy8gQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJh
c2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbigpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZVJlcGV0aXRpb24sIHNldE1hcnF1ZWVMb29wQ291bnQsIG1hcnF1ZWVMb29wQ291bnQpCisv
L0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9u
LCBzZXRNYXJxdWVlTG9vcENvdW50LCBpbml0aWFsTWFycXVlZUxvb3BDb3VudCkKKy8vREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pCisvL3sKKy8vICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
SW5maW5pdGUpCisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlTG9v
cENvdW50KC0xKTsgLy8gLTEgbWVhbnMgcmVwZWF0IGZvcmV2ZXIuCisvLyAgICAgICAgZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUikKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVM
b29wQ291bnQocHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkpOworLy8gICAgfQorLy99CisK
KworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBw
ZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkKCkKK3sKKyAgICByZXR1
cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlU3BlZWQsIHNldE1hcnF1ZWVTcGVlZCwgbWFycXVlZVNwZWVkKQorLy9ERUZJTkVfSEFORExF
X0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQsIHNldE1hcnF1ZWVTcGVlZCwg
aW5pdGlhbE1hcnF1ZWVTcGVlZCkKKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZVNwZWVkKQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewor
Ly8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSkgeworLy8gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKSB7CisvLyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbG93OgorLy8gICAgICAg
ICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1ZWVTcGVlZCg1MDApOyAvLyA1MDAg
bXNlYy4KKy8vICAgICAgICAgICAgICAgIGJyZWFrOworLy8gICAgICAgICAgICBjYXNlIENTU1Zh
bHVlTm9ybWFsOgorLy8gICAgICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hcnF1
ZWVTcGVlZCg4NSk7IC8vIDg1bXNlYy4gVGhlIFdpbklFIGRlZmF1bHQuCisvLyAgICAgICAgICAg
ICAgICBicmVhazsKKy8vICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUZhc3Q6CisvLyAgICAgICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZVNwZWVkKDEwKTsgLy8gMTBtc2Vj
LiBTdXBlciBmYXN0LgorLy8gICAgICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgICAgIH0K
Ky8vICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TKQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0TWFycXVlZVNwZWVkKDEwMDAgKiBwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKSk7
CisvLyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01TKQorLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHls
ZS0+c2V0TWFycXVlZVNwZWVkKHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpKTsKKy8vICAg
ICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSAvLyBGb3Igc2Nyb2xsYW1vdW50IHN1cHBvcnQuCisvLyAg
ICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVlU3BlZWQocHJpbWl0aXZlVmFs
dWUtPmdldEludFZhbHVlKCkpOworLy8gICAgfQorLy99CisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTdHlsZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlU3R5bGUoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5E
TEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwgc2V0TWFycXVlZUJlaGF2
aW9yLCBtYXJxdWVlQmVoYXZpb3IpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTdHlsZSwgc2V0TWFycXVlZUJlaGF2aW9yLCBpbml0aWFsTWFycXVlZUJl
aGF2aW9yKQorLy9ERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0
eWxlLCBzZXRNYXJxdWVlQmVoYXZpb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFzaworc3Rh
dGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXNrKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1h
c2spCisvL3sKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5jbGVhck1hc2tMYXllcnMoKTsKKy8v
fQorLy9ERUZJTkVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2spCisvL3sKKy8vICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5pbmhlcml0TWFza0xheWVycygqaW5zdGFuY2UtPm1fcGFyZW50U3R5
bGUtPm1hc2tMYXllcnMoKSk7CisvL30KKy8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50CitzdGF0aWMg
UHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50
KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBtYXNrLCBNYXNrLCBhdHRhY2ht
ZW50LCBBdHRhY2htZW50KQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBtYXNrLCBNYXNrLCBhdHRhY2htZW50LCBBdHRh
Y2htZW50KQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQXR0YWNobWVudCwgbWFzaywgTWFzaywgYXR0YWNobWVudCwgQXR0YWNobWVudCkKKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJC
YXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlKCkKK3sKKyAgICByZXR1cm4g
MDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2UsIHNldE1hc2tCb3hJbWFnZSwgbWFza0JveEltYWdlKQorLy9ERUZJTkVfSEFORExFX0lO
SVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIHNldE1hc2tCb3hJbWFnZSwgaW5p
dGlhbE5pbmVQaWVjZUltYWdlKQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNr
Qm94SW1hZ2UpCisvL3sKKy8vICAgIE5pbmVQaWVjZUltYWdlIGltYWdlOworLy8gICAgaW5zdGFu
Y2UtPm1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCB2YWx1
ZSwgaW1hZ2UpOworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldE1hc2tCb3hJbWFnZShpbWFn
ZSk7CisvL30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcAorc3RhdGljIFByb3BlcnR5
V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCgpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQ2xpcCwgbWFzaywgTWFzaywgY2xpcCwgQ2xpcCkKKy8vREVGSU5FX0hBTkRM
RV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgbWFzaywgTWFz
aywgY2xpcCwgQ2xpcCkKKy8vREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZBTFVFKENTU1Byb3Bl
cnR5V2Via2l0TWFza0NsaXAsIG1hc2ssIE1hc2ssIGNsaXAsIENsaXApCisKKy8vIENTU1Byb3Bl
cnR5V2Via2l0TWFza0NvbXBvc2l0ZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVw
Q1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
Ly9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tD
b21wb3NpdGUsIG1hc2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorLy9ERUZJTkVfSEFO
RExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIG1h
c2ssIE1hc2ssIGNvbXBvc2l0ZSwgQ29tcG9zaXRlKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBtYXNrLCBNYXNrLCBjb21w
b3NpdGUsIENvbXBvc2l0ZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UKK3N0YXRp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlKCkK
K3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgbWFzaywgTWFzaywgaW1hZ2UsIEltYWdlKQor
Ly9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tJ
bWFnZSwgbWFzaywgTWFzaywgaW1hZ2UsIEltYWdlKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZ
RVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIG1hc2ssIE1hc2ssIGltYWdlLCBJ
bWFnZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luCitzdGF0aWMgUHJvcGVydHlX
cmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4oKQoreworICAgIHJl
dHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0TWFza09yaWdpbiwgbWFzaywgTWFzaywgb3JpZ2luLCBPcmlnaW4pCisvL0RFRklO
RV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwg
bWFzaywgTWFzaywgb3JpZ2luLCBPcmlnaW4pCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9W
QUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIG1hc2ssIE1hc2ssIG9yaWdpbiwgT3Jp
Z2luKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbgorc3RhdGljIFByb3BlcnR5
V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24oKQoreworICAg
IHJldHVybiAwOworfQorCisvL0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9UV08oQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKQorLy9ERUZJTkVfRVhQQU5ESU5HX0lOSVRJQUxf
VFdPKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSkKKy8vREVGSU5FX05VTExf
VkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uWAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb25YKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJ
TkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blgsIG1hc2ssIE1hc2ssIHhQb3NpdGlvbiwgWFBvc2l0aW9uKQorLy9ERUZJTkVfSEFORExFX0ZJ
TExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIG1hc2ssIE1h
c2ssIHhQb3NpdGlvbiwgWFBvc2l0aW9uKQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBtYXNrLCBNYXNrLCB4UG9zaXRpb24s
IFhQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZCitzdGF0aWMg
UHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblko
KQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhF
UklUKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgbWFzaywgTWFzaywgeVBvc2l0aW9u
LCBZUG9zaXRpb24pCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uWSwgbWFzaywgTWFzaywgeVBvc2l0aW9uLCBZUG9zaXRpb24p
CisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvblksIG1hc2ssIE1hc2ssIHlQb3NpdGlvbiwgWVBvc2l0aW9uKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVG
SU5FX0VYUEFORElOR19JTkhFUklUX1RXTyhDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkp
CisvL0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tS
ZXBlYXRZKQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQp
CisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgKK3N0YXRpYyBQcm9wZXJ0eVdyYXBw
ZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgoKQoreworICAgIHJldHVy
biAwOworfQorCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlFUl9JTkhFUklUKENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdFgsIG1hc2ssIE1hc2ssIHJlcGVhdFgsIFJlcGVhdFgpCisvL0RFRklO
RV9IQU5ETEVfRklMTF9MQVlFUl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgs
IG1hc2ssIE1hc2ssIHJlcGVhdFgsIFJlcGVhdFgpCisvL0RFRklORV9IQU5ETEVfRklMTF9MQVlF
Ul9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBtYXNrLCBNYXNrLCByZXBlYXRY
LCBSZXBlYXRYKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBtYXNrLCBNYXNrLCByZXBlYXRZLCBSZXBlYXRZ
KQorLy9ERUZJTkVfSEFORExFX0ZJTExfTEFZRVJfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRZLCBtYXNrLCBNYXNrLCByZXBlYXRZLCBSZXBlYXRZKQorLy9ERUZJTkVfSEFORExF
X0ZJTExfTEFZRVJfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgbWFzaywgTWFz
aywgcmVwZWF0WSwgUmVwZWF0WSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZQorc3Rh
dGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSEVS
SVQoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgbWFzaywgTWFzaywgc2l6ZSwgU2l6ZSkKKy8v
REVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6
ZSwgbWFzaywgTWFzaywgc2l6ZSwgU2l6ZSkKKy8vREVGSU5FX0hBTkRMRV9GSUxMX0xBWUVSX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUsIG1hc2ssIE1hc2ssIHNpemUsIFNpemUpCisK
Ky8vIENTU1Byb3BlcnR5V2Via2l0TWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcgorc3Rh
dGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJl
c3RNYWlsQmxvY2txdW90ZUNvbG9yKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVf
SEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90
ZUNvbG9yLCBzZXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBtYXRjaE5lYXJlc3RN
YWlsQmxvY2txdW90ZUNvbG9yKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yLCBzZXRNYXRjaE5lYXJlc3RNYWls
QmxvY2txdW90ZUNvbG9yLCBpbml0aWFsTWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcikK
Ky8vREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxC
bG9ja3F1b3RlQ29sb3IsIHNldE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbFdpZHRoCitzdGF0aWMgUHJvcGVydHlXcmFwcGVy
QmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxXaWR0aCgpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJr
aXRNYXhMb2dpY2FsV2lkdGgpCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0TWF4TG9naWNhbFdpZHRoKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NT
UHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGgpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0TWF4
TG9naWNhbEhlaWdodAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVy
dHlXZWJraXRNYXhMb2dpY2FsSGVpZ2h0KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJ
TkVfVU5SRUFDSEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQp
CisvL0RFRklORV9VTlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNh
bEhlaWdodCkKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0TWF4
TG9naWNhbEhlaWdodCkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGgKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNh
bFdpZHRoKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5I
RVJJVChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKKy8vREVGSU5FX1VOUkVBQ0hB
QkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsV2lkdGgpCisvL0RFRklORV9V
TlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCkKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0CitzdGF0aWMgUHJvcGVydHlXcmFwcGVy
QmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxIZWlnaHQoKQoreworICAgIHJl
dHVybiAwOworfQorCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Vi
a2l0TWluTG9naWNhbEhlaWdodCkKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJv
cGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2FsSGVpZ2h0KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtp
dE5ic3BNb2RlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdl
YmtpdE5ic3BNb2RlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lO
SEVSSVQoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgc2V0TkJTUE1vZGUsIG5ic3BNb2RlKQor
Ly9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgc2V0TkJT
UE1vZGUsIGluaXRpYWxOQlNQTW9kZSkKKy8vREVGSU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdE5ic3BNb2RlLCBzZXROQlNQTW9kZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRQYWRk
aW5nQWZ0ZXIKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Vi
a2l0UGFkZGluZ0FmdGVyKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfVU5SRUFD
SEFCTEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKKy8vREVGSU5FX1VO
UkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXIpCisvL0RFRklO
RV9VTlJFQUNIQUJMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcikKKworLy8g
Q1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQmVmb3JlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFz
ZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUoKQoreworICAgIHJldHVybiAw
OworfQorCisvL0RFRklORV9VTlJFQUNIQUJMRV9JTkhFUklUKENTU1Byb3BlcnR5V2Via2l0UGFk
ZGluZ0JlZm9yZSkKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRQYWRkaW5nQmVmb3JlKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRQYWRkaW5nQmVmb3JlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0Vu
ZCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX1VOUkVBQ0hBQkxFX0lOSEVSSVQo
Q1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kKQorLy9ERUZJTkVfVU5SRUFDSEFCTEVfSU5JVElB
TChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQpCisvL0RFRklORV9VTlJFQUNIQUJMRV9WQUxV
RShDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdFbmQpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UGFk
ZGluZ1N0YXJ0CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdl
YmtpdFBhZGRpbmdTdGFydCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX1VOUkVB
Q0hBQkxFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQpCisvL0RFRklORV9V
TlJFQUNIQUJMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KQorLy9ERUZJ
TkVfVU5SRUFDSEFCTEVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQpCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUoKQoreworICAgIHJldHVybiAwOwor
fQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
LCBzZXRQZXJzcGVjdGl2ZSwgcGVyc3BlY3RpdmUpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlLCBzZXRQZXJzcGVjdGl2ZSwgaW5pdGlhbFBlcnNw
ZWN0aXZlKQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSkKKy8v
eworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKy8vICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKy8vCisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlTm9uZSkgeworLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0UGVyc3BlY3RpdmUoMCk7CisvLyAgICAgICAgICAgIHJldHVybjsKKy8vICAgICAgICB9Cisv
LworLy8gICAgICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFsdWU7CisvLyAgICAgICAgaW50IHR5cGUg
PSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworLy8gICAgICAgIGlmIChDU1NQcmlt
aXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKKy8vICAgICAgICAgICAgcGVyc3Bl
Y3RpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9v
dEVsZW1lbnRTdHlsZSwgIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkpKTsKKy8v
ICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7
CisvLyAgICAgICAgICAgIC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0cmVhdCB2YWx1
ZWxlc3MgbnVtYmVycyBhcyBweC4KKy8vICAgICAgICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5jb21wdXRlTGVuZ3RoRmxvYXQoaW5zdGFuY2Ut
Pm1fc3R5bGUuZ2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsICBpbnN0YW5jZS0+
bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsKKy8vICAgICAgICB9IGVsc2UKKy8vICAgICAgICAg
ICAgcmV0dXJuOworLy8KKy8vICAgICAgICBpZiAocGVyc3BlY3RpdmVWYWx1ZSA+PSAwLjBmKQor
Ly8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0UGVyc3BlY3RpdmUocGVyc3BlY3Rp
dmVWYWx1ZSk7CisvLyAgICB9CisvL30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZU9yaWdpbgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZU9yaWdpbigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0VY
UEFORElOR19JTkhFUklUX1RXTyhDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luLCBD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgQ1NTUHJvcGVydHlXZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblkpCisvL0RFRklORV9FWFBBTkRJTkdfSU5JVElBTF9UV08oQ1NTUHJvcGVy
dHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9y
aWdpblgsIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZKQorLy9ERUZJTkVfTlVM
TF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2Uq
IHNldHVwQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgoKQoreworICAgIHJldHVy
biAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNw
ZWN0aXZlT3JpZ2luWCwgc2V0UGVyc3BlY3RpdmVPcmlnaW5YLCBwZXJzcGVjdGl2ZU9yaWdpblgp
CisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3Jp
Z2luWCwgc2V0UGVyc3BlY3RpdmVPcmlnaW5YLCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKQor
Ly9ERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5Y
LCBzZXRQZXJzcGVjdGl2ZU9yaWdpblgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblkKK3N0YXRpYyBQcm9w
ZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5Z
KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJv
cGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblksIHNldFBlcnNwZWN0aXZlT3JpZ2luWSwgcGVy
c3BlY3RpdmVPcmlnaW5ZKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZU9yaWdpblksIHNldFBlcnNwZWN0aXZlT3JpZ2luWSwgaW5pdGlhbFBlcnNw
ZWN0aXZlT3JpZ2luWSkKKy8vREVGSU5FX0xFTkdUSF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFBl
cnNwZWN0aXZlT3JpZ2luWSwgc2V0UGVyc3BlY3RpdmVPcmlnaW5ZLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJp
bmcoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLCBzZXRWaXN1YWxseU9yZGVyZWQsIHZpc3VhbGx5T3Jk
ZXJlZCkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJp
bmcsIHNldFZpc3VhbGx5T3JkZXJlZCwgaW5pdGlhbFZpc3VhbGx5T3JkZXJlZCkKKy8vREVGSU5F
X1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcpCisvL3sKKy8vICAgIGlmICh2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisv
LyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKQorLy8gICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0VmlzdWFsbHlPcmRlcmVkKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlVmlzdWFsKTsKKy8vICAgIH0KKy8vfQorCisvLyBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRDb21iaW5lCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSwgc2V0VGV4dENv
bWJpbmUsIHRleHRDb21iaW5lKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0Q29tYmluZSwgc2V0VGV4dENvbWJpbmUsIGluaXRpYWxUZXh0Q29tYmluZSkKKy8v
REVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUpCisvL3sKKy8vICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHAgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dENvbWJpbmUoKnApOworLy8gICAgfQorLy8gICAg
aWYgKGluc3RhbmNlLT5tX3N0eWxlLT5oYXNUZXh0Q29tYmluZSgpKQorLy8gICAgICAgIGluc3Rh
bmNlLT5tX3N0eWxlLT5zZXRVbmlxdWUoKTsgLy8gVGhlIHN0eWxlIGNvdWxkIGJlIG1vZGlmaWVk
IGluIFJlbmRlckNvbWJpbmVUZXh0IGRlcGVuZGluZyBvbiB0ZXh0IG1ldHJpY3MuCisvL30KKwor
Ly8gQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdAorc3RhdGljIFByb3Bl
cnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX05VTExfSU5IRVJJVChDU1NQ
cm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KQorLy9ERUZJTkVfTlVMTF9JTklU
SUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpCisvL0RFRklORV9O
VUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFz
ZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcygpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKKy8vREVGSU5FX05VTExfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
cykKKy8vREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcykK
Ky8vREVGSU5FX05VTExfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMpCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IKK3N0YXRpYyBQcm9wZXJ0eVdyYXBw
ZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IoKQoreworICAg
IHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVF9CQUNLVVAoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwgc2V0VGV4dEVtcGhhc2lzQ29sb3IsIHRleHRFbXBo
YXNpc0NvbG9yLCBjb2xvcikKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMX0NPTE9SKENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIHNldFRleHRFbXBoYXNpc0NvbG9yKQorLy9ERUZJ
TkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3Is
IHNldFRleHRFbXBoYXNpc0NvbG9yKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c1Bvc2l0aW9uCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJ
TkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwg
c2V0VGV4dEVtcGhhc2lzUG9zaXRpb24sIHRleHRFbXBoYXNpc1Bvc2l0aW9uKQorLy9ERUZJTkVf
SEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbiwgc2V0
VGV4dEVtcGhhc2lzUG9zaXRpb24sIGluaXRpYWxUZXh0RW1waGFzaXNQb3NpdGlvbikKKy8vREVG
SU5FX0hBTkRMRV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1Bvc2l0aW9uLCBz
ZXRUZXh0RW1waGFzaXNQb3NpdGlvbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXNTdHlsZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXNTdHlsZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIE5PVEU6IHRo
ZSBvcmlnaW5hbCBjb2RlIHdhcyBicm9rZW4gc28gSSBoYXZlIGNvbnZlcnRlZCB0aGlzIHRvIG1h
dGNoIHRoZSBpbnRlbnQgb2YgdGhlIG9yaWdpbmFsIGNvZGUKKy8vREVGSU5FX0lOSEVSSVQoQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSkKKy8veworLy8gICAgaW5zdGFuY2UtPm1f
c3R5bGUtPnNldFRleHRFbXBoYXNpc0ZpbGwoaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPnRleHRF
bXBoYXNpc0ZpbGwoKSk7CisvLyAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lz
TWFyayhpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+dGV4dEVtcGhhc2lzTWFyaygpKTsKKy8vICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKGluc3RhbmNlLT5t
X3BhcmVudFN0eWxlLT50ZXh0RW1waGFzaXNDdXN0b21NYXJrKCkpOworLy99CisvL0RFRklORV9J
TklUSUFMKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpCisvL3sKKy8vICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKFJlbmRlclN0eWxlOjppbml0aWFs
VGV4dEVtcGhhc2lzRmlsbCgpKTsKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1w
aGFzaXNNYXJrKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEVtcGhhc2lzTWFyaygpKTsKKy8vICAg
IGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKFJlbmRlclN0eWxl
Ojppbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpKTsKKy8vfQorLy9ERUZJTkVfVkFMVUUo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSkKKy8veworLy8gICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8v
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1NUUklORykgeworLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKKy8vICAgICAgICAg
ICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFy
a0N1c3RvbSk7CisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFz
aXNDdXN0b21NYXJrKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKKy8vICAgICAg
ICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmlsbGVk
IHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikgeworLy8gICAg
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmlsbCgqcHJpbWl0aXZl
VmFsdWUpOworLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lz
TWFyayhUZXh0RW1waGFzaXNNYXJrQXV0byk7CisvLyAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0
eWxlLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51bGxBdG9tKTsKKy8vICAgICAgICB9IGVs
c2UgeworLy8gICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VGV4dEVtcGhhc2lzRmls
bChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKKy8vICAgICAgICAgICAgaW5zdGFuY2UtPm1fc3R5
bGUtPnNldFRleHRFbXBoYXNpc01hcmsoKnByaW1pdGl2ZVZhbHVlKTsKKy8vICAgICAgICAgICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20pOwor
Ly8gICAgICAgIH0KKy8vICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKy8v
ICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2
YWx1ZSk7CisvLyAgICAgICAgQVNTRVJUKGxpc3QtPmxlbmd0aCgpID09IDIpOworLy8gICAgICAg
IGlmIChsaXN0LT5sZW5ndGgoKSAhPSAyKQorLy8gICAgICAgICAgICByZXR1cm47CisvLyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI7ICsraSkgeworLy8gICAgICAgICAgICBBU1NF
UlQobGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsK
Ky8vICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKy8vICAg
ICAgICAgICAgaWYgKHZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlT3BlbikKKy8vICAgICAgICAgICAgICAgIGluc3RhbmNl
LT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2YWx1ZSk7CisvLyAgICAgICAgICAgIGVs
c2UKKy8vICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNN
YXJrKCp2YWx1ZSk7CisvLyAgICAgICAgfQorLy8gICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5z
ZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51bGxBdG9tKTsKKy8vICAgIH0KKy8vfQorCisKKy8v
IENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJh
c2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKCkKK3sKKyAgICByZXR1cm4g
MDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVRfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0
VGV4dEZpbGxDb2xvciwgc2V0VGV4dEZpbGxDb2xvciwgdGV4dEZpbGxDb2xvciwgY29sb3IpCisv
L0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29s
b3IsIHNldFRleHRGaWxsQ29sb3IpCisvL0RFRklORV9IQU5ETEVfVkFMVUVfQ09MT1IoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCBzZXRUZXh0RmlsbENvbG9yKQorCisvLyBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTZWN1cml0eQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVw
Q1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHkoKQoreworICAgIHJldHVybiAwOworfQorCisv
L0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwgc2V0
VGV4dFNlY3VyaXR5LCB0ZXh0U2VjdXJpdHkpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwgc2V0VGV4dFNlY3VyaXR5LCBpbml0aWFsVGV4dFNl
Y3VyaXR5KQorLy9ERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3Vy
aXR5LCBzZXRUZXh0U2VjdXJpdHkpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZQor
c3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfTlVMTF9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZSkKKy8vREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTdHJva2UpCisvL0RFRklORV9OVUxMX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZSkKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IKK3N0YXRp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNv
bG9yKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVRfQkFD
S1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBzZXRUZXh0U3Ryb2tlQ29sb3Is
IHRleHRTdHJva2VDb2xvciwgY29sb3IpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTF9DT0xPUihD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgc2V0VGV4dFN0cm9rZUNvbG9yKQorLy9E
RUZJTkVfSEFORExFX1ZBTFVFX0NPTE9SKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9y
LCBzZXRUZXh0U3Ryb2tlQ29sb3IpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdp
ZHRoCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2VXaWR0aCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBzZXRUZXh0U3Ryb2tlV2lk
dGgsIHRleHRTdHJva2VXaWR0aCkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBzZXRUZXh0U3Ryb2tlV2lkdGgsIGluaXRpYWxUZXh0U3Ry
b2tlV2lkdGgpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0
aCkKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKy8vICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBmbG9hdCB3aWR0aCA9IDA7CisvLyAgICAg
ICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworLy8gICAgICAgIGNhc2Ug
Q1NTVmFsdWVUaGluOgorLy8gICAgICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06CisvLyAgICAgICAg
Y2FzZSBDU1NWYWx1ZVRoaWNrOiB7CisvLyAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSAxLjAg
LyA0ODsKKy8vICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlTWVkaXVtKQorLy8gICAgICAgICAgICAgICAgcmVzdWx0ICo9IDM7CisvLyAgICAgICAg
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlVGhpY2sp
CisvLyAgICAgICAgICAgICAgICByZXN1bHQgKj0gNTsKKy8vICAgICAgICAgICAgd2lkdGggPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlc3VsdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19F
TVMpLT5jb21wdXRlTGVuZ3RoRmxvYXQoaW5zdGFuY2UtPm1fc3R5bGUuZ2V0KCksIGluc3RhbmNl
LT5tX3Jvb3RFbGVtZW50U3R5bGUsIGluc3RhbmNlLT5tX3N0eWxlLT5lZmZlY3RpdmVab29tKCkp
OworLy8gICAgICAgICAgICBicmVhazsKKy8vICAgICAgICB9CisvLyAgICAgICAgZGVmYXVsdDoK
Ky8vICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEZsb2F0
KGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlLCBp
bnN0YW5jZS0+bV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsKKy8vICAgICAgICAgICAgYnJlYWs7
CisvLyAgICAgICAgfQorLy8gICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRUZXh0U3Ryb2tl
V2lkdGgod2lkdGgpOworLy8gICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zZm9ybSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklU
KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBzZXRUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKKy8v
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLCBzZXRUcmFu
c2Zvcm0sIGluaXRpYWxUcmFuc2Zvcm0pCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybSkKKy8veworLy8gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOwor
Ly8gICAgY3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZSwgaW5zdGFuY2UtPm1fc3R5bGUu
Z2V0KCksIGluc3RhbmNlLT5tX3Jvb3RFbGVtZW50U3R5bGUsIG9wZXJhdGlvbnMpOworLy8gICAg
aW5zdGFuY2UtPm1fc3R5bGUtPnNldFRyYW5zZm9ybShvcGVyYXRpb25zKTsKKy8vfQorCisvLyBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJh
c2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4oKQoreworICAgIHJldHVy
biAwOworfQorCisvL0RFRklORV9FWFBBTkRJTkdfSU5IRVJJVF9USFJFRShDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpbiwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLCBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblksIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtT3JpZ2luWikKKy8vREVGSU5FX0VYUEFORElOR19JTklUSUFMX1RIUkVFKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtT3JpZ2luLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgs
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW5aKQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybU9yaWdpbikKKworLy8gQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YCitzdGF0
aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9y
aWdpblgoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsIHNldFRyYW5zZm9ybU9yaWdpblgsIHRy
YW5zZm9ybU9yaWdpblgpCisvL0RFRklORV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybU9yaWdpblgsIHNldFRyYW5zZm9ybU9yaWdpblgsIGluaXRpYWxUcmFuc2Zvcm1P
cmlnaW5YKQorLy9ERUZJTkVfTEVOR1RIX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWCwgc2V0VHJhbnNmb3JtT3JpZ2luWCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IGZhbHNlKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkKK3N0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSwgc2V0VHJhbnNmb3JtT3JpZ2luWSwgdHJhbnNm
b3JtT3JpZ2luWSkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJh
bnNmb3JtT3JpZ2luWSwgc2V0VHJhbnNmb3JtT3JpZ2luWSwgaW5pdGlhbFRyYW5zZm9ybU9yaWdp
blkpCisvL0RFRklORV9MRU5HVEhfVkFMVUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1Pcmln
aW5ZLCBzZXRUcmFuc2Zvcm1PcmlnaW5ZLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWgorc3RhdGljIFByb3Bl
cnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKCkK
K3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aLCBzZXRUcmFuc2Zvcm1PcmlnaW5aLCB0cmFuc2Zvcm1P
cmlnaW5aKQorLy9ERUZJTkVfSEFORExFX0lOSVRJQUwoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1PcmlnaW5aLCBzZXRUcmFuc2Zvcm1PcmlnaW5aLCBpbml0aWFsVHJhbnNmb3JtT3JpZ2luWikK
Ky8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWikKKy8vewor
Ly8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKy8vICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVM
ZW5ndGgocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSkpCisvLyAgICAgICAgICAgIGlu
c3RhbmNlLT5tX3N0eWxlLT5zZXRUcmFuc2Zvcm1PcmlnaW5aKHN0YXRpY19jYXN0PGZsb2F0Pihw
cmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChpbnN0YW5jZS0+bV9zdHls
ZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSkpKTsKKy8vICAgIH0KKy8vfQor
CisvLyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlCitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1TdHlsZSwgc2V0VHJhbnNmb3JtU3R5bGUzRCwgdHJhbnNmb3JtU3R5bGUzRCkKKy8v
REVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGUsIHNl
dFRyYW5zZm9ybVN0eWxlM0QsIGluaXRpYWxUcmFuc2Zvcm1TdHlsZTNEKQorLy9ERUZJTkVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZSkKKy8veworLy8gICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8v
ICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0VHJhbnNmb3JtU3R5bGUzRCgocHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKSA/IFRyYW5zZm9ybVN0eWxl
M0RQcmVzZXJ2ZTNEIDogVHJhbnNmb3JtU3R5bGUzREZsYXQpOworLy8gICAgfQorLy99CisKKy8v
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2Uq
IHNldHVwQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKCkKK3sKKyAgICByZXR1cm4gMDsKK30K
KworLy9ERUZJTkVfSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24pCisvL3sKKy8v
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5pbmhlcml0VHJhbnNpdGlvbnMoaW5zdGFuY2UtPm1fcGFy
ZW50U3R5bGUtPnRyYW5zaXRpb25zKCkpOworLy99CisvL0RFRklORV9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvbikKKy8veworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPmNsZWFy
VHJhbnNpdGlvbnMoKTsKKy8vfQorLy9ERUZJTkVfTlVMTF9WQUxVRShDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5CitzdGF0
aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25E
ZWxheSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX1RSQU5TSVRJT05fSU5IRVJJ
VChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSwgZGVsYXksIERlbGF5KQorLy9ERUZJ
TkVfVFJBTlNJVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5LCBk
ZWxheSwgRGVsYXkpCisvL0RFRklORV9UUkFOU0lUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvbkRlbGF5LCBkZWxheSwgRGVsYXkpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvbkR1cmF0aW9uCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8v
REVGSU5FX1RSQU5TSVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJh
dGlvbiwgZHVyYXRpb24sIER1cmF0aW9uKQorLy9ERUZJTkVfVFJBTlNJVElPTl9JTklUSUFMKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBkdXJhdGlvbiwgRHVyYXRpb24pCisv
L0RFRklORV9UUkFOU0lUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0
aW9uLCBkdXJhdGlvbiwgRHVyYXRpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlv
blByb3BlcnR5CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5F
X1RSQU5TSVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwg
cHJvcGVydHksIFByb3BlcnR5KQorLy9ERUZJTkVfVFJBTlNJVElPTl9JTklUSUFMKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBwcm9wZXJ0eSwgUHJvcGVydHkpCisvL0RFRklO
RV9UUkFOU0lUSU9OX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBw
cm9wZXJ0eSwgUHJvcGVydHkpCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8v
REVGSU5FX1RSQU5TSVRJT05fSU5IRVJJVChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1p
bmdGdW5jdGlvbiwgdGltaW5nRnVuY3Rpb24sIFRpbWluZ0Z1bmN0aW9uKQorLy9ERUZJTkVfVFJB
TlNJVElPTl9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9u
LCB0aW1pbmdGdW5jdGlvbiwgVGltaW5nRnVuY3Rpb24pCisvL0RFRklORV9UUkFOU0lUSU9OX1ZB
TFVFKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLCB0aW1pbmdGdW5j
dGlvbiwgVGltaW5nRnVuY3Rpb24pCisKKy8vIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcKK3N0
YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWco
KQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9w
ZXJ0eVdlYmtpdFVzZXJEcmFnLCBzZXRVc2VyRHJhZywgdXNlckRyYWcpCisvL0RFRklORV9IQU5E
TEVfSU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBzZXRVc2VyRHJhZywgaW5pdGlh
bFVzZXJEcmFnKQorLy9ERUZJTkVfSEFORExFX1ZBTFVFKENTU1Byb3BlcnR5V2Via2l0VXNlckRy
YWcsIHNldFVzZXJEcmFnKQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnkKK3N0YXRp
YyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9JTkhFUklUKENTU1Byb3Bl
cnR5V2Via2l0VXNlck1vZGlmeSwgc2V0VXNlck1vZGlmeSwgdXNlck1vZGlmeSkKKy8vREVGSU5F
X0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgc2V0VXNlck1vZGlm
eSwgaW5pdGlhbFVzZXJNb2RpZnkpCisvL0RFRklORV9IQU5ETEVfVkFMVUUoQ1NTUHJvcGVydHlX
ZWJraXRVc2VyTW9kaWZ5LCBzZXRVc2VyTW9kaWZ5KQorCisvLyBDU1NQcm9wZXJ0eVdlYmtpdFVz
ZXJTZWxlY3QKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Vi
a2l0VXNlclNlbGVjdCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vREVGSU5FX0hBTkRMRV9J
TkhFUklUKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgc2V0VXNlclNlbGVjdCwgdXNlclNl
bGVjdCkKKy8vREVGSU5FX0hBTkRMRV9JTklUSUFMKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVj
dCwgc2V0VXNlclNlbGVjdCwgaW5pdGlhbFVzZXJTZWxlY3QpCisvL0RFRklORV9IQU5ETEVfVkFM
VUUoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBzZXRVc2VyU2VsZWN0KQorCisvLyBDU1NQ
cm9wZXJ0eUNsaXBQYXRoCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9w
ZXJ0eUNsaXBQYXRoKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfSU5IRVJJVChD
U1NQcm9wZXJ0eUNsaXApCisvL3sKKy8vICAgIExlbmd0aCB0b3A7CisvLyAgICBMZW5ndGggcmln
aHQ7CisvLyAgICBMZW5ndGggYm90dG9tOworLy8gICAgTGVuZ3RoIGxlZnQ7CisvLyAgICBib29s
IGhhc0NsaXAgPSB0cnVlOworLy8gICAgaWYgKGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5oYXND
bGlwKCkpIHsKKy8vICAgICAgICB0b3AgPSBpbnN0YW5jZS0+bV9wYXJlbnRTdHlsZS0+Y2xpcFRv
cCgpOworLy8gICAgICAgIHJpZ2h0ID0gaW5zdGFuY2UtPm1fcGFyZW50U3R5bGUtPmNsaXBSaWdo
dCgpOworLy8gICAgICAgIGJvdHRvbSA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jbGlwQm90
dG9tKCk7CisvLyAgICAgICAgbGVmdCA9IGluc3RhbmNlLT5tX3BhcmVudFN0eWxlLT5jbGlwTGVm
dCgpOworLy8gICAgfSBlbHNlIHsKKy8vICAgICAgICBoYXNDbGlwID0gZmFsc2U7CisvLyAgICAg
ICAgdG9wID0gcmlnaHQgPSBib3R0b20gPSBsZWZ0ID0gTGVuZ3RoKCk7CisvLyAgICB9CisvLyAg
ICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q2xpcCh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOwor
Ly8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldEhhc0NsaXAoaGFzQ2xpcCk7CisvL30KKy8vCisv
L0RFRklORV9JTklUSUFMKENTU1Byb3BlcnR5Q2xpcCkKKy8veworLy8gICAgTGVuZ3RoIGxlbmd0
aCA9IExlbmd0aCgpOworLy8gICAgaW5zdGFuY2UtPm1fc3R5bGUtPnNldENsaXAobGVuZ3RoLCBs
ZW5ndGgsIGxlbmd0aCwgbGVuZ3RoKTsKKy8vICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRIYXND
bGlwKGZhbHNlKTsKKy8vfQorLy8KKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5Q2xpcCkKKy8v
eworLy8gICAgTGVuZ3RoIHRvcDsKKy8vICAgIExlbmd0aCByaWdodDsKKy8vICAgIExlbmd0aCBi
b3R0b207CisvLyAgICBMZW5ndGggbGVmdDsKKy8vICAgIGJvb2wgaGFzQ2xpcCA9IHRydWU7Cisv
LyAgICBmbG9hdCB6b29tRmFjdG9yID0gaW5zdGFuY2UtPm1fc3R5bGUtPmVmZmVjdGl2ZVpvb20o
KTsKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisvLyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVU
eXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRUNUKSB7CisvLyAgICAgICAgICAgIFJl
Y3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UmVjdFZhbHVlKCk7CisvLyAgICAgICAgICAg
IGlmICghcmVjdCkKKy8vICAgICAgICAgICAgICAgIHJldHVybjsKKy8vICAgICAgICAgICAgdG9w
ID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKHJlY3QtPnRvcCgpLCBpbnN0YW5j
ZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rv
cik7CisvLyAgICAgICAgICAgIHJpZ2h0ID0gQ1NTU3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVu
Z3RoKHJlY3QtPnJpZ2h0KCksIGluc3RhbmNlLT5tX3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9y
b290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKy8vICAgICAgICAgICAgYm90dG9tID0gQ1NT
U3R5bGVTZWxlY3Rvcjo6Y29udmVydFRvTGVuZ3RoKHJlY3QtPmJvdHRvbSgpLCBpbnN0YW5jZS0+
bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7
CisvLyAgICAgICAgICAgIGxlZnQgPSBDU1NTdHlsZVNlbGVjdG9yOjpjb252ZXJ0VG9MZW5ndGgo
cmVjdC0+bGVmdCgpLCBpbnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVs
ZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CisvLyAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pIHsKKy8vICAgICAgICAgICAgcmV0dXJu
OworLy8gICAgICAgIH0KKy8vICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0Q2xpcCh0b3As
IHJpZ2h0LCBib3R0b20sIGxlZnQpOworLy8gICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRI
YXNDbGlwKGhhc0NsaXApOworLy8gICAgfQorLy99CisKKy8vIENTU1Byb3BlcnR5Q2xpcFJ1bGUK
K3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5Q2xpcFJ1bGUoKQor
eworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eU1hc2sKK3N0YXRpYyBQcm9wZXJ0
eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5TWFzaygpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKKy8vIENTU1Byb3BlcnR5RW5hYmxlQmFja2dyb3VuZAorc3RhdGljIFByb3BlcnR5V3JhcHBl
ckJhc2UqIHNldHVwQ1NTUHJvcGVydHlFbmFibGVCYWNrZ3JvdW5kKCkKK3sKKyAgICByZXR1cm4g
MDsKK30KKworLy8gQ1NTUHJvcGVydHlGaWx0ZXIKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBzZXR1cENTU1Byb3BlcnR5RmlsdGVyKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy8gQ1NT
UHJvcGVydHlGbG9vZENvbG9yCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQ
cm9wZXJ0eUZsb29kQ29sb3IoKQoreworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0
eUZsb29kT3BhY2l0eQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVy
dHlGbG9vZE9wYWNpdHkoKQoreworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eUxp
Z2h0aW5nQ29sb3IKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5
TGlnaHRpbmdDb2xvcigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5U3Rv
cENvbG9yCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVN0b3BD
b2xvcigpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5U3RvcE9wYWNpdHkK
K3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5U3RvcE9wYWNpdHko
KQoreworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlv
bgorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlDb2xvckludGVy
cG9sYXRpb24oKQoreworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eUNvbG9ySW50
ZXJwb2xhdGlvbkZpbHRlcnMKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1By
b3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpCit7CisgICAgcmV0dXJuIDA7Cit9CisK
Ky8vIENTU1Byb3BlcnR5Q29sb3JQcm9maWxlCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSog
c2V0dXBDU1NQcm9wZXJ0eUNvbG9yUHJvZmlsZSgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8v
IENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmcKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBz
ZXR1cENTU1Byb3BlcnR5Q29sb3JSZW5kZXJpbmcoKQoreworICAgIHJldHVybiAwOworfQorCisv
LyBDU1NQcm9wZXJ0eUZpbGwKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1By
b3BlcnR5RmlsbCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5RmlsbE9w
YWNpdHkKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5RmlsbE9w
YWNpdHkoKQoreworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eUZpbGxSdWxlCitz
dGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUZpbGxSdWxlKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworLy8gQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZworc3RhdGlj
IFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmluZygpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5TWFya2VyCitzdGF0aWMgUHJvcGVy
dHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eU1hcmtlcigpCit7CisgICAgcmV0dXJuIDA7
Cit9CisKKy8vIENTU1Byb3BlcnR5TWFya2VyRW5kCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFz
ZSogc2V0dXBDU1NQcm9wZXJ0eU1hcmtlckVuZCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8v
IENTU1Byb3BlcnR5TWFya2VyTWlkCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBD
U1NQcm9wZXJ0eU1hcmtlck1pZCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3Bl
cnR5TWFya2VyU3RhcnQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3Bl
cnR5TWFya2VyU3RhcnQoKQoreworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eVNo
YXBlUmVuZGVyaW5nCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0
eVNoYXBlUmVuZGVyaW5nKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy8gQ1NTUHJvcGVydHlT
dHJva2UKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5U3Ryb2tl
KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy8gQ1NTUHJvcGVydHlTdHJva2VEYXNoYXJyYXkK
K3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5U3Ryb2tlRGFzaGFy
cmF5KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy8gQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zm
c2V0CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVN0cm9rZURh
c2hvZmZzZXQoKQoreworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eVN0cm9rZUxp
bmVjYXAKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5U3Ryb2tl
TGluZWNhcCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5U3Ryb2tlTGlu
ZWpvaW4KK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5U3Ryb2tl
TGluZWpvaW4oKQoreworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eVN0cm9rZU1p
dGVybGltaXQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5U3Ry
b2tlTWl0ZXJsaW1pdCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5U3Ry
b2tlT3BhY2l0eQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlT
dHJva2VPcGFjaXR5KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy8gQ1NTUHJvcGVydHlTdHJv
a2VXaWR0aAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlTdHJv
a2VXaWR0aCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5QWxpZ25tZW50
QmFzZWxpbmUKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5QWxp
Z25tZW50QmFzZWxpbmUoKQoreworICAgIHJldHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eUJh
c2VsaW5lU2hpZnQKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5
QmFzZWxpbmVTaGlmdCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5RG9t
aW5hbnRCYXNlbGluZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVy
dHlEb21pbmFudEJhc2VsaW5lKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy8gQ1NTUHJvcGVy
dHlHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2Uq
IHNldHVwQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCgpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsCitzdGF0
aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25W
ZXJ0aWNhbCgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIENTU1Byb3BlcnR5S2VybmluZwor
c3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlLZXJuaW5nKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworLy8gQ1NTUHJvcGVydHlUZXh0QW5jaG9yCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVRleHRBbmNob3IoKQoreworICAgIHJl
dHVybiAwOworfQorCisvLyBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdAorc3RhdGljIFByb3BlcnR5
V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3QoKQoreworICAgIHJldHVy
biAwOworfQorCisvLyBDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlCitzdGF0aWMgUHJvcGVydHlXcmFw
cGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlKCkKK3sKKyAgICByZXR1cm4gMDsK
K30KKworLy8gQ1NTUHJvcGVydHlXZWJraXRTdmdTaGFkb3cKK3N0YXRpYyBQcm9wZXJ0eVdyYXBw
ZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2Via2l0U3ZnU2hhZG93KCkKK3sKKyAgICByZXR1cm4g
MDsKK30KKworCisvLyBDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbgorI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkKK3N0YXRpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENT
U1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
Ly9ERUZJTkVfSEFORExFX0lOSEVSSVQoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24s
IHNldERhc2hib2FyZFJlZ2lvbnMsIGRhc2hib2FyZFJlZ2lvbnMpCisvL0RFRklORV9IQU5ETEVf
SU5JVElBTChDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbiwgc2V0RGFzaGJvYXJkUmVn
aW9ucywgaW5pdGlhbERhc2hib2FyZFJlZ2lvbnMpCisvL0RFRklORV9WQUxVRShDU1NQcm9wZXJ0
eVdlYmtpdERhc2hib2FyZFJlZ2lvbikKKy8veworLy8gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKy8vICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKy8vICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7CisvLyAgICAgICAg
ICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXREYXNoYm9hcmRSZWdpb25zKFJlbmRlclN0eWxlOjpu
b25lRGFzaGJvYXJkUmVnaW9ucygpKTsKKy8vICAgICAgICAgICAgcmV0dXJuOworLy8gICAgICAg
IH0KKy8vCisvLyAgICAgICAgRGFzaGJvYXJkUmVnaW9uKiByZWdpb24gPSBwcmltaXRpdmVWYWx1
ZS0+Z2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsKKy8vICAgICAgICBpZiAoIXJlZ2lvbikKKy8v
ICAgICAgICAgICAgcmV0dXJuOworLy8KKy8vICAgICAgICBEYXNoYm9hcmRSZWdpb24qIGZpcnN0
ID0gcmVnaW9uOworLy8gICAgICAgIHdoaWxlIChyZWdpb24pIHsKKy8vICAgICAgICAgICAgTGVu
Z3RoIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPnRvcCgpLCBpbnN0YW5jZS0+bV9zdHls
ZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSk7CisvLyAgICAgICAgICAgIExl
bmd0aCByaWdodCA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPnJpZ2h0KCksIGluc3RhbmNlLT5t
X3N0eWxlLmdldCgpLCBpbnN0YW5jZS0+bV9yb290RWxlbWVudFN0eWxlKTsKKy8vICAgICAgICAg
ICAgTGVuZ3RoIGJvdHRvbSA9IGNvbnZlcnRUb0xlbmd0aChyZWdpb24tPmJvdHRvbSgpLCBpbnN0
YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSk7CisvLyAg
ICAgICAgICAgIExlbmd0aCBsZWZ0ID0gY29udmVydFRvTGVuZ3RoKHJlZ2lvbi0+bGVmdCgpLCBp
bnN0YW5jZS0+bV9zdHlsZS5nZXQoKSwgaW5zdGFuY2UtPm1fcm9vdEVsZW1lbnRTdHlsZSk7Cisv
LyAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCisvLyAgICAgICAgICAgICAgICBp
bnN0YW5jZS0+bV9zdHlsZS0+c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9u
OjpDaXJjbGUsIHJlZ2lvbi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdp
b24gPT0gZmlyc3QgPyBmYWxzZSA6IHRydWUpOworLy8gICAgICAgICAgICBlbHNlIGlmIChyZWdp
b24tPm1faXNSZWN0YW5nbGUpCisvLyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+
c2V0RGFzaGJvYXJkUmVnaW9uKFN0eWxlRGFzaGJvYXJkUmVnaW9uOjpSZWN0YW5nbGUsIHJlZ2lv
bi0+bV9sYWJlbCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCByZWdpb24gPT0gZmlyc3QgPyBm
YWxzZSA6IHRydWUpOworLy8gICAgICAgICAgICByZWdpb24gPSByZWdpb24tPm1fbmV4dC5nZXQo
KTsKKy8vICAgICAgICB9CisvLyAgICAgICAgaW5zdGFuY2UtPm1fZWxlbWVudC0+ZG9jdW1lbnQo
KS0+c2V0SGFzRGFzaGJvYXJkUmVnaW9ucyh0cnVlKTsKKy8vICAgIH0KKy8vfQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoV0NTUykKKy8vIENTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3AKK3N0YXRpYyBQ
cm9wZXJ0eVdyYXBwZXJCYXNlKiBzZXR1cENTU1Byb3BlcnR5V2FwTWFycXVlZUxvb3AoKQorewor
ICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FUVVJVkFMRU5UX1BST1BFUlRZKENTU1Byb3Bl
cnR5V2FwTWFycXVlZUxvb3AsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pCisK
Ky8vIENTU1Byb3BlcnR5V2FwTWFycXVlZVNwZWVkCitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFz
ZSogc2V0dXBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVTcGVlZCgpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKKy8vREVGSU5FX0VRVUlWQUxFTlRfUFJPUEVSVFkoQ1NTUHJvcGVydHlXYXBNYXJxdWVlU3Bl
ZWQsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkKQorCisvLyBDU1NQcm9wZXJ0eVdhcE1h
cnF1ZWVTdHlsZQorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlX
YXBNYXJxdWVlU3R5bGUoKQoreworICAgIHJldHVybiAwOworfQorCisvL0RFRklORV9FUVVJVkFM
RU5UX1BST1BFUlRZKENTU1Byb3BlcnR5V2FwTWFycXVlZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTdHlsZSkKKworLy8gQ1NTUHJvcGVydHlXYXBNYXJxdWVlRGlyCitzdGF0aWMgUHJv
cGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIoKQoreworICAg
IHJldHVybiAwOworfQorCisvL0RFRklORV9IQU5ETEVfSU5IRVJJVChDU1NQcm9wZXJ0eVdhcE1h
cnF1ZWVEaXIsIHNldE1hcnF1ZWVEaXJlY3Rpb24sIG1hcnF1ZWVEaXJlY3Rpb24pCisvL0RFRklO
RV9IQU5ETEVfSU5JVElBTChDU1NQcm9wZXJ0eVdhcE1hcnF1ZWVEaXIsIHNldE1hcnF1ZWVEaXJl
Y3Rpb24sIGluaXRpYWxNYXJxdWVlRGlyZWN0aW9uKQorLy9ERUZJTkVfVkFMVUUoQ1NTUHJvcGVy
dHlXYXBNYXJxdWVlRGlyKQorLy97CisvLyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgeworLy8gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworLy8gICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworLy8gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpKSB7CisvLyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMdHI6CisvLyAg
ICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZURpcmVjdGlvbihNUklH
SFQpOworLy8gICAgICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVSdGw6CisvLyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+bV9zdHlsZS0+c2V0TWFycXVlZURp
cmVjdGlvbihNTEVGVCk7CisvLyAgICAgICAgICAgICAgICBicmVhazsKKy8vICAgICAgICAgICAg
ZGVmYXVsdDoKKy8vICAgICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N0eWxlLT5zZXRNYXJxdWVl
RGlyZWN0aW9uKCpwcmltaXRpdmVWYWx1ZSk7CisvLyAgICAgICAgICAgICAgICBicmVhazsKKy8v
ICAgICAgICAgICAgfQorLy8gICAgICAgIH0KKy8vICAgIH0KKy8vfQorCisvLyBDU1NQcm9wZXJ0
eVdhcElucHV0Rm9ybWF0CitzdGF0aWMgUHJvcGVydHlXcmFwcGVyQmFzZSogc2V0dXBDU1NQcm9w
ZXJ0eVdhcElucHV0Rm9ybWF0KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy9ERUZJTkVfTlVM
TF9JTkhFUklUKENTU1Byb3BlcnR5V2FwSW5wdXRGb3JtYXQpCisvL0RFRklORV9OVUxMX0lOSVRJ
QUwoQ1NTUHJvcGVydHlXYXBJbnB1dEZvcm1hdCkKKy8vREVGSU5FX1ZBTFVFKENTU1Byb3BlcnR5
V2FwSW5wdXRGb3JtYXQpCisvL3sKKy8vICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisvLyAgICAgICAgaWYgKGluc3RhbmNl
LT5tX2VsZW1lbnQtPmhhc1RhZ05hbWUoV2ViQ29yZTo6aW5wdXRUYWcpKSB7CisvLyAgICAgICAg
ICAgIFN0cmluZyBtYXNrID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7CisvLyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihpbnN0YW5jZS0+bV9lbGVt
ZW50KS0+c2V0V2FwSW5wdXRGb3JtYXQobWFzayk7CisvLyAgICAgICAgfQorLy8gICAgfQorLy99
CisKKy8vIENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJlZAorc3RhdGljIFByb3BlcnR5V3JhcHBl
ckJhc2UqIHNldHVwQ1NTUHJvcGVydHlXYXBJbnB1dFJlcXVpcmVkKCkKK3sKKyAgICByZXR1cm4g
MDsKK30KKworLy9ERUZJTkVfTlVMTF9JTkhFUklUKENTU1Byb3BlcnR5V2FwSW5wdXRSZXF1aXJl
ZCkKKy8vREVGSU5FX05VTExfSU5JVElBTChDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQpCisv
L0RFRklORV9WQUxVRShDU1NQcm9wZXJ0eVdhcElucHV0UmVxdWlyZWQpCisvL3sKKy8vICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisvLyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisvLyAgICAgICAgaWYgKGluc3RhbmNlLT5tX2VsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVt
ZW50KCkpIHsKKy8vICAgICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihpbnN0YW5jZS0+bV9lbGVtZW50
KTsKKy8vICAgICAgICAgICAgYm9vbCByZXF1aXJlZCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJp
bmdWYWx1ZSgpID09ICJ0cnVlIjsKKy8vICAgICAgICAgICAgZWxlbWVudC0+c2V0UmVxdWlyZWQo
cmVxdWlyZWQpOworLy8gICAgICAgIH0KKy8vICAgIH0KKy8vfQorI2VuZGlmCisKKyNkZWZpbmUg
QVNTRVJUX1ZBTElEX1BST1BFUlRZKHgpIEFTU0VSVCgoeCkgPj0gZmlyc3RDU1NQcm9wZXJ0eSAm
JiAoeCkgPCAoZmlyc3RDU1NQcm9wZXJ0eSArIG51bUNTU1Byb3BlcnRpZXMpKQorI2RlZmluZSBQ
Uk9QRVJUWV9JTkRFWCh4KSAoKHgpIC0gZmlyc3RDU1NQcm9wZXJ0eSkKKworQ1NTU3R5bGVBcHBs
eVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVydHkoKSB7CisgICAgUHJvcGVydHlXcmFwcGVy
QmFzZSogaW52YWxpZCA9IHNldHVwQ1NTUHJvcGVydHlJbnZhbGlkKCk7CisKKyAgICBmb3IgKGlu
dCBpPTA7IGk8bnVtQ1NTUHJvcGVydGllczsgKytpKSB7CisgICAgICAgIG1fcHJvcGVydHlNYXBb
aV0gPSBpbnZhbGlkOworICAgIH0KKworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlDb2xvcildID0gbmV3IFByb3BlcnR5V3JhcHBlckNvbG9yKENTU1Byb3BlcnR5
Q29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Q29sb3IsIFJlbmRl
clN0eWxlOjppbml0aWFsQ29sb3IoKSk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eURpcmVjdGlvbildID0gc2V0dXBDU1NQcm9wZXJ0eURpcmVjdGlvbigpOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlEaXNwbGF5KV0gPSBz
ZXR1cENTU1Byb3BlcnR5RGlzcGxheSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlGb250KV0gPSBzZXR1cENTU1Byb3BlcnR5Rm9udCgpOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlGb250RmFtaWx5KV0gPSBzZXR1cENT
U1Byb3BlcnR5Rm9udEZhbWlseSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlGb250U2l6ZSldID0gc2V0dXBDU1NQcm9wZXJ0eUZvbnRTaXplKCk7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZvbnRTdHlsZSldID0gc2V0
dXBDU1NQcm9wZXJ0eUZvbnRTdHlsZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlGb250VmFyaWFudCldID0gc2V0dXBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50
KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZvbnRXZWln
aHQpXSA9IHNldHVwQ1NTUHJvcGVydHlGb250V2VpZ2h0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpXSA9IHNldHVwQ1NTUHJvcGVy
dHlUZXh0UmVuZGVyaW5nKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRGb250
U21vb3RoaW5nKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTaXplQWRqdXN0KV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVB
ZGp1c3QoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Vi
a2l0V3JpdGluZ01vZGUpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZSgpOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlab29tKV0gPSBzZXR1
cENTU1Byb3BlcnR5Wm9vbSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0KV0gPSBzZXR1cENTU1Byb3BlcnR5TGluZUhlaWdodCgpOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kKV0gPSBz
ZXR1cENTU1Byb3BlcnR5QmFja2dyb3VuZCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCldID0gc2V0dXBDU1NQcm9wZXJ0
eUJhY2tncm91bmRBdHRhY2htZW50KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwKV0gPSBzZXR1cENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENsaXAoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKV0gPSBzZXR1cENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKCk7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSld
ID0gc2V0dXBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSgpOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luKV0gPSBzZXR1cENTU1By
b3BlcnR5QmFja2dyb3VuZE9yaWdpbigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24pXSA9IHNldHVwQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb24oKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCldID0gc2V0dXBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvblgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWSldID0gc2V0dXBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blkoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdCldID0gc2V0dXBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQoKTsKKyAgICBt
X3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgp
XSA9IHNldHVwQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCgpOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSldID0gc2V0dXBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplKV0gPSBzZXR1cENTU1Byb3BlcnR5QmFj
a2dyb3VuZFNpemUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5Qm9yZGVyKV0gPSBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyKCk7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSldID0gc2V0dXBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcildID0gc2V0dXBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUNvbG9yKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbUxlZnRSYWRpdXMpXSA9IHNldHVwQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKV0gPSBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmln
aHRSYWRpdXMoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tU3R5bGUpXSA9IHNldHVwQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSgp
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21XaWR0aCldID0gc2V0dXBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoKCk7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlKV0gPSBz
ZXR1cENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpXSA9IHNldHVwQ1NTUHJvcGVydHlCb3Jk
ZXJDb2xvcigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0KV0gPSBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyTGVmdCgpOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpXSA9IHNldHVw
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlKV0gPSBzZXR1cENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRXaWR0aCldID0gc2V0dXBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCgp
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJSYWRp
dXMpXSA9IHNldHVwQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMoKTsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQpXSA9IHNldHVwQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJv
cGVydHlCb3JkZXJSaWdodENvbG9yKV0gPSBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xv
cigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJS
aWdodFN0eWxlKV0gPSBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSgpOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoKV0g
PSBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCgpOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nKV0gPSBzZXR1cENTU1Byb3Bl
cnR5Qm9yZGVyU3BhY2luZygpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlCb3JkZXJTdHlsZSldID0gc2V0dXBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlKCk7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlclRvcCldID0g
c2V0dXBDU1NQcm9wZXJ0eUJvcmRlclRvcCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcildID0gc2V0dXBDU1NQcm9wZXJ0eUJvcmRl
clRvcENvbG9yKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eUJvcmRlclRvcExlZnRSYWRpdXMpXSA9IHNldHVwQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFk
aXVzKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRl
clRvcFJpZ2h0UmFkaXVzKV0gPSBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMo
KTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyVG9w
U3R5bGUpXSA9IHNldHVwQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSgpOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCldID0gc2V0dXBD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eUJvcmRlcldpZHRoKV0gPSBzZXR1cENTU1Byb3BlcnR5Qm9yZGVyV2lk
dGgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm90dG9t
KV0gPSBzZXR1cENTU1Byb3BlcnR5Qm90dG9tKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eUJveFNoYWRvdyldID0gc2V0dXBDU1NQcm9wZXJ0eUJveFNoYWRv
dygpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3hTaXpp
bmcpXSA9IHNldHVwQ1NTUHJvcGVydHlCb3hTaXppbmcoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpXSA9IHNldHVwQ1NTUHJvcGVydHlD
YXB0aW9uU2lkZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlDbGVhcildID0gc2V0dXBDU1NQcm9wZXJ0eUNsZWFyKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNsaXApXSA9IHNldHVwQ1NTUHJvcGVydHlDbGlwKCk7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNvbnRlbnQpXSA9
IHNldHVwQ1NTUHJvcGVydHlDb250ZW50KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQpXSA9IHNldHVwQ1NTUHJvcGVydHlDb3Vu
dGVySW5jcmVtZW50KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eUNvdW50ZXJSZXNldCldID0gc2V0dXBDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldCgpOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlDdXJzb3IpXSA9IHNldHVw
Q1NTUHJvcGVydHlDdXJzb3IoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5RW1wdHlDZWxscyldID0gc2V0dXBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMoKTsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5RmxvYXQpXSA9IHNldHVw
Q1NTUHJvcGVydHlGbG9hdCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlGb250U3RyZXRjaCldID0gc2V0dXBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoKCk7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUhlaWdodCldID0gc2V0
dXBDU1NQcm9wZXJ0eUhlaWdodCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlMZWZ0KV0gPSBzZXR1cENTU1Byb3BlcnR5TGVmdCgpOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nKV0gPSBzZXR1cENT
U1Byb3BlcnR5TGV0dGVyU3BhY2luZygpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlMaXN0U3R5bGUpXSA9IHNldHVwQ1NTUHJvcGVydHlMaXN0U3R5bGUoKTsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1h
Z2UpXSA9IHNldHVwQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSgpOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbildID0gc2V0dXBD
U1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpXSA9IHNldHVwQ1NTUHJvcGVydHlMaXN0
U3R5bGVUeXBlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eU1hcmdpbildID0gc2V0dXBDU1NQcm9wZXJ0eU1hcmdpbigpOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20pXSA9IHNldHVwQ1NTUHJvcGVy
dHlNYXJnaW5Cb3R0b20oKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5TWFyZ2luTGVmdCldID0gc2V0dXBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQoKTsKKyAgICBt
X3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQpXSA9IHNl
dHVwQ1NTUHJvcGVydHlNYXJnaW5SaWdodCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlNYXJnaW5Ub3ApXSA9IHNldHVwQ1NTUHJvcGVydHlNYXJnaW5Ub3Ao
KTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TWF4SGVpZ2h0
KV0gPSBzZXR1cENTU1Byb3BlcnR5TWF4SGVpZ2h0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eU1heFdpZHRoKV0gPSBzZXR1cENTU1Byb3BlcnR5TWF4V2lk
dGgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TWluSGVp
Z2h0KV0gPSBzZXR1cENTU1Byb3BlcnR5TWluSGVpZ2h0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU1pbldpZHRoKV0gPSBzZXR1cENTU1Byb3BlcnR5TWlu
V2lkdGgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5T3Bh
Y2l0eSldID0gc2V0dXBDU1NQcm9wZXJ0eU9wYWNpdHkoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5T3JwaGFucyldID0gc2V0dXBDU1NQcm9wZXJ0eU9ycGhh
bnMoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5T3V0bGlu
ZSldID0gc2V0dXBDU1NQcm9wZXJ0eU91dGxpbmUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKV0gPSBzZXR1cENTU1Byb3BlcnR5T3V0
bGluZUNvbG9yKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eU91dGxpbmVPZmZzZXQpXSA9IHNldHVwQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0KCk7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSldID0g
c2V0dXBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgpXSA9IHNldHVwQ1NTUHJvcGVydHlPdXRs
aW5lV2lkdGgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
T3ZlcmZsb3cpXSA9IHNldHVwQ1NTUHJvcGVydHlPdmVyZmxvdygpOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlPdmVyZmxvd1gpXSA9IHNldHVwQ1NTUHJvcGVy
dHlPdmVyZmxvd1goKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5T3ZlcmZsb3dZKV0gPSBzZXR1cENTU1Byb3BlcnR5T3ZlcmZsb3dZKCk7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBhZGRpbmcpXSA9IHNldHVwQ1NTUHJv
cGVydHlQYWRkaW5nKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVBhZGRpbmdCb3R0b20pXSA9IHNldHVwQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tKCk7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0KV0g
PSBzZXR1cENTU1Byb3BlcnR5UGFkZGluZ0xlZnQoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0KV0gPSBzZXR1cENTU1Byb3BlcnR5UGFk
ZGluZ1JpZ2h0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVBhZGRpbmdUb3ApXSA9IHNldHVwQ1NTUHJvcGVydHlQYWRkaW5nVG9wKCk7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBhZ2UpXSA9IHNldHVwQ1NTUHJvcGVy
dHlQYWdlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBh
Z2VCcmVha0FmdGVyKV0gPSBzZXR1cENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXIoKTsKKyAgICBt
X3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlKV0g
PSBzZXR1cENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZSldID0gc2V0dXBDU1NQcm9w
ZXJ0eVBhZ2VCcmVha0luc2lkZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlQb2ludGVyRXZlbnRzKV0gPSBzZXR1cENTU1Byb3BlcnR5UG9pbnRlckV2ZW50
cygpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlQb3NpdGlv
bildID0gc2V0dXBDU1NQcm9wZXJ0eVBvc2l0aW9uKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eVF1b3RlcyldID0gc2V0dXBDU1NQcm9wZXJ0eVF1b3Rlcygp
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlSZXNpemUpXSA9
IHNldHVwQ1NTUHJvcGVydHlSZXNpemUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5UmlnaHQpXSA9IHNldHVwQ1NTUHJvcGVydHlSaWdodCgpOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlTaXplKV0gPSBzZXR1cENTU1By
b3BlcnR5U2l6ZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlTcmMpXSA9IHNldHVwQ1NTUHJvcGVydHlTcmMoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5U3BlYWspXSA9IHNldHVwQ1NTUHJvcGVydHlTcGVhaygpOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUYWJsZUxheW91dCld
ID0gc2V0dXBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRBbGlnbildID0gc2V0dXBDU1NQcm9wZXJ0eVRleHRB
bGlnbigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvbildID0gc2V0dXBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKCk7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRJbmRlbnQpXSA9IHNldHVw
Q1NTUHJvcGVydHlUZXh0SW5kZW50KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaCldID0gc2V0dXBDU1NQcm9wZXJ0eVRleHRMaW5l
VGhyb3VnaCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlU
ZXh0TGluZVRocm91Z2hDb2xvcildID0gc2V0dXBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENv
bG9yKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaE1vZGUpXSA9IHNldHVwQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hNb2RlKCk7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRMaW5lVGhy
b3VnaFN0eWxlKV0gPSBzZXR1cENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoU3R5bGUoKTsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdo
V2lkdGgpXSA9IHNldHVwQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aCgpOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3cpXSA9IHNl
dHVwQ1NTUHJvcGVydHlUZXh0T3ZlcmZsb3coKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lKV0gPSBzZXR1cENTU1Byb3BlcnR5VGV4dE92
ZXJsaW5lKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRl
eHRPdmVybGluZUNvbG9yKV0gPSBzZXR1cENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lQ29sb3IoKTsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5l
TW9kZSldID0gc2V0dXBDU1NQcm9wZXJ0eVRleHRPdmVybGluZU1vZGUoKTsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUpXSA9IHNl
dHVwQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVTdHlsZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVXaWR0aCldID0gc2V0dXBDU1NQcm9w
ZXJ0eVRleHRPdmVybGluZVdpZHRoKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVRleHRTaGFkb3cpXSA9IHNldHVwQ1NTUHJvcGVydHlUZXh0U2hhZG93KCk7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm0pXSA9IHNldHVwQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtKCk7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmUpXSA9IHNldHVwQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcildID0gc2V0dXBDU1NQcm9wZXJ0eVRleHRVbmRl
cmxpbmVDb2xvcigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlUZXh0VW5kZXJsaW5lTW9kZSldID0gc2V0dXBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2Rl
KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRVbmRl
cmxpbmVTdHlsZSldID0gc2V0dXBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVTdHlsZSgpOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lk
dGgpXSA9IHNldHVwQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lV2lkdGgoKTsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VG9wKV0gPSBzZXR1cENTU1Byb3BlcnR5
VG9wKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVVuaWNv
ZGVCaWRpKV0gPSBzZXR1cENTU1Byb3BlcnR5VW5pY29kZUJpZGkoKTsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VW5pY29kZVJhbmdlKV0gPSBzZXR1cENTU1By
b3BlcnR5VW5pY29kZVJhbmdlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pXSA9IHNldHVwQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWdu
KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVZpc2liaWxp
dHkpXSA9IHNldHVwQ1NTUHJvcGVydHlWaXNpYmlsaXR5KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpXSA9IHNldHVwQ1NTUHJvcGVydHlX
aGl0ZVNwYWNlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdpZG93cyldID0gc2V0dXBDU1NQcm9wZXJ0eVdpZG93cygpOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXaWR0aCldID0gc2V0dXBDU1NQcm9wZXJ0eVdpZHRo
KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdvcmRCcmVh
ayldID0gc2V0dXBDU1NQcm9wZXJ0eVdvcmRCcmVhaygpOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXb3JkU3BhY2luZyldID0gc2V0dXBDU1NQcm9wZXJ0eVdv
cmRTcGFjaW5nKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdvcmRXcmFwKV0gPSBzZXR1cENTU1Byb3BlcnR5V29yZFdyYXAoKTsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5WkluZGV4KV0gPSBzZXR1cENTU1Byb3BlcnR5
WkluZGV4KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbigpOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25E
ZWxheSldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5KCk7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVj
dGlvbildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbigpOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25E
dXJhdGlvbildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uKCk7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bkZpbGxNb2RlKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUoKTsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uSXRlcmF0aW9uQ291bnQpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVy
YXRpb25Db3VudCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25OYW1lKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
TmFtZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25QbGF5U3RhdGUpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25Q
bGF5U3RhdGUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25UaW1pbmdGdW5jdGlvbigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0
QXBwZWFyYW5jZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHkpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRCYWNr
ZmFjZVZpc2liaWxpdHkoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5V2Via2l0QmFja2dyb3VuZENsaXApXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRCYWNr
Z3JvdW5kQ2xpcCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRlKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0QmFj
a2dyb3VuZENvbXBvc2l0ZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0
QmFja2dyb3VuZE9yaWdpbigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRTaXplKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXIoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJDb2xvcildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29s
b3IoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJTdHlsZSldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5
bGUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJXaWR0aCldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lk
dGgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQmVmb3JlKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlKCk7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZUNvbG9yKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IoKTsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlU3R5bGUpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVTdHlsZSgp
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVXaWR0aCldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRo
KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckVuZCldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCgpOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvcild
ID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yKCk7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlKV0gPSBz
ZXR1cENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUoKTsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgpXSA9IHNldHVw
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJGaXQpXSA9IHNldHVwQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJGaXQoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcpXSA9IHNldHVwQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZygpOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSldID0gc2V0dXBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckltYWdlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cyldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclJhZGl1cygpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydCldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0Q29sb3IpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENv
bG9yKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0U3R5bGUpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0
eWxlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0V2lkdGgpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdp
ZHRoKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclZlcnRpY2FsU3BhY2luZyldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZl
cnRpY2FsU3BhY2luZygpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJv
cGVydHlXZWJraXRCb3hBbGlnbildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduKCk7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJveERp
cmVjdGlvbildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJveERpcmVjdGlvbigpOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4KV0gPSBz
ZXR1cENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3hGbGV4R3JvdXApXSA9IHNldHVwQ1NTUHJvcGVy
dHlXZWJraXRCb3hGbGV4R3JvdXAoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3hM
aW5lcygpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRCb3hPcmRpbmFsR3JvdXApXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRCb3hPcmRpbmFsR3Jv
dXAoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
Qm94T3JpZW50KV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50KCk7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2spXSA9IHNl
dHVwQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QpXSA9IHNldHVwQ1NTUHJvcGVydHlX
ZWJraXRCb3hSZWZsZWN0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eVdlYmtpdEJveFNoYWRvdyldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRv
dygpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRD
b2xvckNvcnJlY3Rpb24pXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb24o
KTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtBZnRlcildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXIo
KTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uQnJlYWtCZWZvcmUpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9y
ZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5CcmVha0luc2lkZSldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5z
aWRlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkNvdW50KV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQoKTsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2Fw
KV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2FwKCk7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUpXSA9IHNldHVwQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5SdWxlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcildID0gc2V0dXBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVDb2xvcigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUpXSA9IHNldHVwQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlU3R5bGUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZVdpZHRoKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4pXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5TcGFuKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbldpZHRoKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgoKTsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
cyldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMoKTsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSldID0gc2V0dXBD
U1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGEoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0SGlnaGxpZ2h0KV0gPSBzZXR1cENTU1Byb3BlcnR5
V2Via2l0SGlnaGxpZ2h0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtp
dEh5cGhlbmF0ZUNoYXJhY3RlcigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlXZWJraXRIeXBoZW5hdGVMb2NhbGUpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJr
aXRIeXBoZW5hdGVMb2NhbGUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0SHlwaGVucyldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbnMo
KTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TGlu
ZUJyZWFrKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrKCk7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcCldID0gc2V0
dXBDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsV2lkdGgpXSA9IHNldHVwQ1NTUHJvcGVy
dHlXZWJraXRMb2dpY2FsV2lkdGgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodCldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtp
dExvZ2ljYWxIZWlnaHQoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkFmdGVyQ29sbGFwc2UoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpXSA9IHNldHVwQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Cb3R0b21Db2xsYXBzZSldID0gc2V0dXBD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlKCk7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlKV0gPSBz
ZXR1cENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2UoKTsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpXSA9IHNl
dHVwQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSgpOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlcildID0gc2V0dXBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZSldID0gc2V0dXBDU1NQcm9wZXJ0eVdl
YmtpdE1hcmdpbkJlZm9yZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5FbmQpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5F
bmQoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luU3RhcnQpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydCgpOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlKV0g
PSBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uKV0gPSBzZXR1cENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbigpOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50KV0gPSBzZXR1cENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbildID0gc2V0dXBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCldID0gc2V0dXBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUpXSA9IHNldHVwQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlU3R5bGUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0TWFzayldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hc2soKTsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFj
aG1lbnQpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCgpOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2Up
XSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UoKTsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApXSA9IHNldHVwQ1NT
UHJvcGVydHlXZWJraXRNYXNrQ2xpcCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Vi
a2l0TWFza0NvbXBvc2l0ZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlXZWJraXRNYXNrSW1hZ2UpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1h
Z2UoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
TWFza09yaWdpbildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4oKTsKKyAgICBt
X3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
KV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKCk7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpXSA9IHNl
dHVwQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkpXSA9IHNldHVwQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQpXSA9IHNldHVwQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdFgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Vi
a2l0TWFza1JlcGVhdFkpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSgpOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6
ZSldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplKCk7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1
b3RlQ29sb3IpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRNYXRjaE5lYXJlc3RNYWlsQmxvY2tx
dW90ZUNvbG9yKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdE1heExvZ2ljYWxXaWR0aCldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2lj
YWxXaWR0aCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlX
ZWJraXRNYXhMb2dpY2FsSGVpZ2h0KV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNh
bEhlaWdodCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlX
ZWJraXRNaW5Mb2dpY2FsV2lkdGgpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRNaW5Mb2dpY2Fs
V2lkdGgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Vi
a2l0TWluTG9naWNhbEhlaWdodCldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxI
ZWlnaHQoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Vi
a2l0TmJzcE1vZGUpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSgpOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXIp
XSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nQWZ0ZXIoKTsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0JlZm9yZSldID0gc2V0
dXBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdCZWZvcmUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0VuZCldID0gc2V0dXBDU1NQcm9w
ZXJ0eVdlYmtpdFBhZGRpbmdFbmQoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0
UGFkZGluZ1N0YXJ0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3Rp
dmUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
UGVyc3BlY3RpdmVPcmlnaW4pXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9y
aWdpbigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZU9yaWdpblgpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZU9yaWdpblgoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5ZKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJp
bmcoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
VGV4dENvbWJpbmUpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmluZSgpOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0lu
RWZmZWN0KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpcyldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcygp
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvcildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9y
KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc1Bvc2l0aW9uKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
UG9zaXRpb24oKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXNTdHlsZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RmlsbENvbG9yKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxD
b2xvcigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U2VjdXJpdHkpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHkoKTsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZSldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UoKTsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKV0g
PSBzZXR1cENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKCk7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCldID0g
c2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCgpOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pXSA9IHNldHVwQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm0oKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luKV0gPSBzZXR1cENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtT3JpZ2luKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgpXSA9IHNldHVwQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5YKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkpXSA9IHNldHVwQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5ZKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblopXSA9IHNldHVwQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5aKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtU3R5bGUoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
aXRpb24oKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvbkRlbGF5KV0gPSBzZXR1cENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRl
bGF5KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25EdXJhdGlvbildID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25E
dXJhdGlvbigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uUHJvcGVydHkpXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0
aW9uUHJvcGVydHkoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnKV0gPSBzZXR1cENTU1Byb3BlcnR5V2Vi
a2l0VXNlckRyYWcoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5V2Via2l0VXNlck1vZGlmeSldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnko
KTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VXNl
clNlbGVjdCldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QoKTsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Q2xpcFBhdGgpXSA9IHNldHVwQ1NT
UHJvcGVydHlDbGlwUGF0aCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlDbGlwUnVsZSldID0gc2V0dXBDU1NQcm9wZXJ0eUNsaXBSdWxlKCk7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU1hc2spXSA9IHNldHVwQ1NTUHJv
cGVydHlNYXNrKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eUVuYWJsZUJhY2tncm91bmQpXSA9IHNldHVwQ1NTUHJvcGVydHlFbmFibGVCYWNrZ3JvdW5kKCk7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZpbHRlcildID0g
c2V0dXBDU1NQcm9wZXJ0eUZpbHRlcigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlGbG9vZENvbG9yKV0gPSBzZXR1cENTU1Byb3BlcnR5Rmxvb2RDb2xvcigp
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlGbG9vZE9wYWNp
dHkpXSA9IHNldHVwQ1NTUHJvcGVydHlGbG9vZE9wYWNpdHkoKTsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcildID0gc2V0dXBDU1NQcm9w
ZXJ0eUxpZ2h0aW5nQ29sb3IoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5U3RvcENvbG9yKV0gPSBzZXR1cENTU1Byb3BlcnR5U3RvcENvbG9yKCk7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVN0b3BPcGFjaXR5KV0gPSBz
ZXR1cENTU1Byb3BlcnR5U3RvcE9wYWNpdHkoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uKV0gPSBzZXR1cENTU1Byb3BlcnR5
Q29sb3JJbnRlcnBvbGF0aW9uKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpXSA9IHNldHVwQ1NTUHJvcGVydHlD
b2xvckludGVycG9sYXRpb25GaWx0ZXJzKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eUNvbG9yUHJvZmlsZSldID0gc2V0dXBDU1NQcm9wZXJ0eUNvbG9yUHJv
ZmlsZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlDb2xv
clJlbmRlcmluZyldID0gc2V0dXBDU1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nKCk7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZpbGwpXSA9IHNldHVwQ1NTUHJv
cGVydHlGaWxsKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eUZpbGxPcGFjaXR5KV0gPSBzZXR1cENTU1Byb3BlcnR5RmlsbE9wYWNpdHkoKTsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5RmlsbFJ1bGUpXSA9IHNldHVwQ1NT
UHJvcGVydHlGaWxsUnVsZSgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlJbWFnZVJlbmRlcmluZyldID0gc2V0dXBDU1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5n
KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU1hcmtlcild
ID0gc2V0dXBDU1NQcm9wZXJ0eU1hcmtlcigpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlNYXJrZXJFbmQpXSA9IHNldHVwQ1NTUHJvcGVydHlNYXJrZXJFbmQo
KTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TWFya2VyTWlk
KV0gPSBzZXR1cENTU1Byb3BlcnR5TWFya2VyTWlkKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0KV0gPSBzZXR1cENTU1Byb3BlcnR5TWFy
a2VyU3RhcnQoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
U2hhcGVSZW5kZXJpbmcpXSA9IHNldHVwQ1NTUHJvcGVydHlTaGFwZVJlbmRlcmluZygpOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlTdHJva2UpXSA9IHNldHVw
Q1NTUHJvcGVydHlTdHJva2UoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5U3Ryb2tlRGFzaGFycmF5KV0gPSBzZXR1cENTU1Byb3BlcnR5U3Ryb2tlRGFzaGFy
cmF5KCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVN0cm9r
ZURhc2hvZmZzZXQpXSA9IHNldHVwQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0KCk7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVN0cm9rZUxpbmVjYXApXSA9
IHNldHVwQ1NTUHJvcGVydHlTdHJva2VMaW5lY2FwKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eVN0cm9rZUxpbmVqb2luKV0gPSBzZXR1cENTU1Byb3BlcnR5
U3Ryb2tlTGluZWpvaW4oKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5U3Ryb2tlTWl0ZXJsaW1pdCldID0gc2V0dXBDU1NQcm9wZXJ0eVN0cm9rZU1pdGVybGlt
aXQoKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5U3Ryb2tl
T3BhY2l0eSldID0gc2V0dXBDU1NQcm9wZXJ0eVN0cm9rZU9wYWNpdHkoKTsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5U3Ryb2tlV2lkdGgpXSA9IHNldHVwQ1NT
UHJvcGVydHlTdHJva2VXaWR0aCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlBbGlnbm1lbnRCYXNlbGluZSldID0gc2V0dXBDU1NQcm9wZXJ0eUFsaWdubWVu
dEJhc2VsaW5lKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eUJhc2VsaW5lU2hpZnQpXSA9IHNldHVwQ1NTUHJvcGVydHlCYXNlbGluZVNoaWZ0KCk7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmUp
XSA9IHNldHVwQ1NTUHJvcGVydHlEb21pbmFudEJhc2VsaW5lKCk7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKV0g
PSBzZXR1cENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwoKTsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRp
Y2FsKV0gPSBzZXR1cENTU1Byb3BlcnR5R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKCk7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUtlcm5pbmcpXSA9IHNldHVw
Q1NTUHJvcGVydHlLZXJuaW5nKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVRleHRBbmNob3IpXSA9IHNldHVwQ1NTUHJvcGVydHlUZXh0QW5jaG9yKCk7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdCld
ID0gc2V0dXBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdCgpOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXcml0aW5nTW9kZSldID0gc2V0dXBDU1NQcm9wZXJ0eVdy
aXRpbmdNb2RlKCk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdFN2Z1NoYWRvdyldID0gc2V0dXBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdygpOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXREYXNoYm9h
cmRSZWdpb24pXSA9IHNldHVwQ1NTUHJvcGVydHlXZWJraXREYXNoYm9hcmRSZWdpb24oKTsKK30K
Kwordm9pZCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OmluaGVyaXQoaW50IHByb3BlcnR5LCBDU1NT
dHlsZVNlbGVjdG9yICppbnN0YW5jZSkKK3sKKyAgICBBU1NFUlRfVkFMSURfUFJPUEVSVFkocHJv
cGVydHkpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgocHJvcGVydHkpXS0+aW5o
ZXJpdChpbnN0YW5jZSk7Cit9CisKK3ZvaWQgQ1NTU3R5bGVBcHBseVByb3BlcnR5Ojppbml0aWFs
KGludCBwcm9wZXJ0eSwgQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpCit7CisgICAgQVNTRVJU
X1ZBTElEX1BST1BFUlRZKHByb3BlcnR5KTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKHByb3BlcnR5KV0tPmluaXRpYWwoaW5zdGFuY2UpOworfQorCit2b2lkIENTU1N0eWxlQXBw
bHlQcm9wZXJ0eTo6dmFsdWUoaW50IHByb3BlcnR5LCBDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5j
ZSwgQ1NTVmFsdWUgKnZhbHVlKQoreworICAgIEFTU0VSVF9WQUxJRF9QUk9QRVJUWShwcm9wZXJ0
eSk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChwcm9wZXJ0eSldLT52YWx1ZShp
bnN0YW5jZSwgdmFsdWUpOworfQorCitib29sIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6aW1wbGVt
ZW50cyhpbnQgcHJvcGVydHkpIHsKKyAgICBBU1NFUlRfVkFMSURfUFJPUEVSVFkocHJvcGVydHkp
OworICAgIHJldHVybiBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKHByb3BlcnR5KV0gJiYg
KG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgocHJvcGVydHkpXS0+cHJvcGVydHkoKSA9PSBw
cm9wZXJ0eSk7Cit9Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVBy
b3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQ
cm9wZXJ0eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBw
bHlQcm9wZXJ0eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACisjaWZuZGVmIENTU1N0
eWxlQXBwbHlQcm9wZXJ0eV9oCisjZGVmaW5lIENTU1N0eWxlQXBwbHlQcm9wZXJ0eV9oCisKKyNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ1NTUHJvcGVydHk7CitjbGFzcyBDU1NTdHlsZVNlbGVjdG9yOworY2xhc3MgQ1NTVmFsdWU7
CitjbGFzcyBQcm9wZXJ0eVdyYXBwZXJCYXNlOworCitjbGFzcyBDU1NTdHlsZUFwcGx5UHJvcGVy
dHkgeworcHVibGljOgorICAgIENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpOworICAgIH5DU1NTdHls
ZUFwcGx5UHJvcGVydHkoKTsKKworICAgIHZvaWQgaW5oZXJpdChpbnQgcHJvcGVydHksIENTU1N0
eWxlU2VsZWN0b3IgKmluc3RhbmNlKTsKKyAgICB2b2lkIGluaXRpYWwoaW50IHByb3BlcnR5LCBD
U1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CisgICAgdm9pZCB2YWx1ZShpbnQgcHJvcGVydHks
IENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqKTsKKyAgICBib29sIGltcGxl
bWVudHMoaW50IHByb3BlcnR5KTsKKworcHJpdmF0ZToKKyAgICBQcm9wZXJ0eVdyYXBwZXJCYXNl
KiBtX3Byb3BlcnR5TWFwW251bUNTU1Byb3BlcnRpZXNdOworfTsKKworfQorCisjZW5kaWYgLy8g
Q1NTU3R5bGVBcHBseVByb3BlcnR5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAJKHJldmlzaW9uIDc3Njg2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiQ1NTUnVsZUxpc3QuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNT
U1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIgogI2lu
Y2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNs
dWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCkBAIC00NzIsNyArNDczLDEwIEBAIENTU1N0
eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW0KICAgICAsIG1fc3R5bGVkRWxlbWVu
dCgwKQogICAgICwgbV9lbGVtZW50TGlua1N0YXRlKE5vdEluc2lkZUxpbmspCiAgICAgLCBtX2Zv
bnRTZWxlY3RvcihDU1NGb250U2VsZWN0b3I6OmNyZWF0ZShkb2N1bWVudCkpCisgICAgLCBtX2Fw
cGx5UHJvcGVydHkobmV3IENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpKQogeworICAvLyAgbV9hcHBs
eVByb3BlcnR5ID0gbmV3IENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpOworICAgIAogICAgIG1fbWF0
Y2hBdXRob3JBbmRVc2VyU3R5bGVzID0gbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzOwogICAgIAog
ICAgIEVsZW1lbnQqIHJvb3QgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CkBAIC0zMjgz
LDYgKzMyODcsMTcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAgIGlmIChtX2FwcGx5UHJvcGVydHktPmlt
cGxlbWVudHMoaWQpKSB7CisgICAgICBpZiAoaXNJbmhlcml0KSB7CisgICAgICAgICAgbV9hcHBs
eVByb3BlcnR5LT5pbmhlcml0KGlkLCB0aGlzKTsKKyAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFs
KSB7CisgICAgICAgICAgbV9hcHBseVByb3BlcnR5LT5pbml0aWFsKGlkLCB0aGlzKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgbV9hcHBseVByb3BlcnR5LT52YWx1ZShpZCwgdGhpcywgdmFs
dWUpOworICAgICAgfQorICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIFdoYXQgZm9sbG93
cyBpcyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVydGllcyBpbnRvIHRoZWlyIGNvcnJl
c3BvbmRpbmcgZnJvbnQtZW5kCiAgICAgLy8gUmVuZGVyU3R5bGUgdmFsdWVzLiAgU2hvcnRoYW5k
cyAoZS5nLiBib3JkZXIsIGJhY2tncm91bmQpIG9jY3VyIGluIHRoaXMgbGlzdCBhcyB3ZWxsIGFu
ZAogICAgIC8vIGFyZSBvbmx5IGhpdCB3aGVuIG1hcHBpbmcgImluaGVyaXQiIG9yICJpbml0aWFs
IiBpbnRvIGZyb250LWVuZCB2YWx1ZXMuCkBAIC0zNjk1LDggKzM3MTAsOCBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9y
OgogICAgICAgICAvLyBJZiB0aGUgJ2N1cnJlbnRDb2xvcicga2V5d29yZCBpcyBzZXQgb24gdGhl
ICdjb2xvcicgcHJvcGVydHkgaXRzZWxmLAogICAgICAgICAvLyBpdCBpcyB0cmVhdGVkIGFzICdj
b2xvcjppbmhlcml0JyBhdCBwYXJzZSB0aW1lCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAm
JiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKLSAg
ICAgICAgICAgIGlzSW5oZXJpdCA9IHRydWU7CisgICAgICAgIC8vaWYgKHByaW1pdGl2ZVZhbHVl
ICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKQor
ICAgICAgICAvLyAgICBpc0luaGVyaXQgPSB0cnVlOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3I6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA3NzY4NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3Mg
Q1NTRm9udEZhY2VSdWxlOwogY2xhc3MgQ1NTSW1hZ2VWYWx1ZTsKIGNsYXNzIENTU1J1bGVMaXN0
OwogY2xhc3MgQ1NTU2VsZWN0b3I7CitjbGFzcyBDU1NTdHlsZUFwcGx5UHJvcGVydHk7CiBjbGFz
cyBDU1NTdHlsZVJ1bGU7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ1NTVmFsdWU7CkBA
IC04NCwxMiArODUsMTQgQEAgcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgc2VsZWN0cyBhIFJl
bmRlclN0eWxlIGZvciBhIGdpdmVuIGVsZW1lbnQgYmFzZWQgb24gYSBjb2xsZWN0aW9uIG9mIHN0
eWxlc2hlZXRzLgogICAgIGNsYXNzIENTU1N0eWxlU2VsZWN0b3IgewogICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShDU1NTdHlsZVNlbGVjdG9yKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBDU1NTdHlsZUFwcGx5UHJvcGVydHk7CiAgICAgcHVibGlj
OgogICAgICAgICBDU1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiwgU3R5bGVTaGVldExpc3QqIGF1
dGhvclNoZWV0cywgQ1NTU3R5bGVTaGVldCogbWFwcGVkRWxlbWVudFNoZWV0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogcGFnZUdyb3VwVXNlclNoZWV0cywKICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHN0cmljdFBhcnNpbmcsIGJvb2wgbWF0Y2hBdXRob3JBbmRV
c2VyU3R5bGVzKTsKICAgICAgICAgfkNTU1N0eWxlU2VsZWN0b3IoKTsKIAorCiAgICAgICAgIFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlLCBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUsIGJvb2wgcmVz
b2x2ZUZvclJvb3REZWZhdWx0ID0gZmFsc2UsIGJvb2wgbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3Mg
PSBmYWxzZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0
aW9uKEVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYgbGlzdCk7CkBA
IC0xMDYsNiArMTA5LDkgQEAgcHVibGljOgogICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBwc2V1ZG9TdHlsZUZvckRhdGFHcmlkQ29sdW1uSGVhZGVyKERhdGFHcmlkQ29sdW1uKiwgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlKTsKICNlbmRpZgogCisgICAgICAgIFJlbmRlclN0eWxlKiBz
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KKyAgICAgICAgUmVuZGVyU3R5
bGUqIHBhcmVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRTdHlsZTsgfQorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqLCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKICAgICAgICAg
dm9pZCBpbml0RWxlbWVudChFbGVtZW50Kik7CkBAIC0xMTUsOCArMTIxLDYgQEAgcHVibGljOgog
ICAgICAgICBOb2RlKiBmaW5kU2libGluZ0ZvclN0eWxlU2hhcmluZyhOb2RlKiwgdW5zaWduZWQm
IGNvdW50KSBjb25zdDsKICAgICAgICAgYm9vbCBjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQoTm9k
ZSopIGNvbnN0OwogCi0gICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGUuZ2V0KCk7IH0KLQogICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHls
ZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlKiwgS2V5ZnJhbWVWYWx1ZSYpOwogCiAgICAgcHVibGljOgpAQCAtMTQ4LDcgKzE1Miw4IEBA
IHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHNldEZvbnRTaXplKEZvbnREZXNj
cmlwdGlvbiYsIGZsb2F0IHNpemUpOwogICAgICAgICBzdGF0aWMgZmxvYXQgZ2V0Q29tcHV0ZWRT
aXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQqLCBSZW5kZXJTdHlsZSosIGJvb2wgaXNBYnNv
bHV0ZVNpemUsIGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKTsKLQor
Ly8gICAgICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVl
KiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGll
ciA9IDEsIGJvb2wgKm9rID0gMCk7CisvLyAgICAgICAgc3RhdGljIHZvaWQgYXBwbHlDb3VudGVy
TGlzdChSZW5kZXJTdHlsZSosIENTU1ZhbHVlTGlzdCosIGJvb2wgaXNSZXNldCk7CiAgICAgcHVi
bGljOgogICAgICAgICBDb2xvciBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZSopIGNvbnN0OwogCkBAIC0zMjAsNiArMzI1LDggQEAgcHVibGljOgogICAgICAgICBI
YXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBtX3NlbGVjdG9yQXR0cnM7CiAgICAgICAgIFZlY3Rv
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+IG1fYWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxl
RGVjbHM7CiAgICAgICAgIFZlY3RvcjxNZWRpYVF1ZXJ5UmVzdWx0Kj4gbV92aWV3cG9ydERlcGVu
ZGVudE1lZGlhUXVlcnlSZXN1bHRzOworCisgICAgICAgIENTU1N0eWxlQXBwbHlQcm9wZXJ0eSog
bV9hcHBseVByb3BlcnR5OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZXByb3AucGwJKHJldmlzaW9uIDc3Njg2KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL21ha2Vwcm9wLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsMyArMTM4LDQgQEAgRU9GCiBj
bG9zZSBIRUFERVI7CiAKIHN5c3RlbSgiZ3BlcmYgLS1rZXktcG9zaXRpb25zPVwiKlwiIC1EIC1u
IC1zIDIgQ1NTUHJvcGVydHlOYW1lcy5ncGVyZiA+IENTU1Byb3BlcnR5TmFtZXMuY3BwIikgPT0g
MCB8fCBkaWUgImNhbGxpbmcgZ3BlcmYgZmFpbGVkOiAkPyI7CisKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA3NzY4NikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgY2xhc3MgUmVuZGVyU3R5bGU6IHB1YmxpYyBSZWZDb3Vu
dGVkPFJlbgogICAgIGZyaWVuZCBjbGFzcyBBbmltYXRpb25CYXNlOyAvLyBVc2VkIGJ5IENTUyBh
bmltYXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1hdGUgYmFzZWQgb2ZmIHZpc2l0
ZWQgY29sb3JzLgogICAgIGZyaWVuZCBjbGFzcyBBcHBseVN0eWxlQ29tbWFuZDsgLy8gRWRpdGlu
ZyBoYXMgdG8gb25seSByZXZlYWwgdW52aXNpdGVkIGluZm8uCiAgICAgZnJpZW5kIGNsYXNzIEVk
aXRpbmdTdHlsZTsgLy8gRWRpdGluZyBoYXMgdG8gb25seSByZXZlYWwgdW52aXNpdGVkIGluZm8u
CisgICAgZnJpZW5kIGNsYXNzIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTsgLy8gU2V0cyBtZW1iZXJz
IGRpcmVjdGx5LgogICAgIGZyaWVuZCBjbGFzcyBDU1NTdHlsZVNlbGVjdG9yOyAvLyBTZXRzIG1l
bWJlcnMgZGlyZWN0bHkuCiAgICAgZnJpZW5kIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjsgLy8gSWdub3JlcyB2aXNpdGVkIHN0eWxlcywgc28gbmVlZHMgdG8gYmUgYWJsZSB0byBz
ZWUgdW52aXNpdGVkIGluZm8uCiAgICAgZnJpZW5kIGNsYXNzIFByb3BlcnR5V3JhcHBlck1heWJl
SW52YWxpZENvbG9yOyAvLyBVc2VkIGJ5IENTUyBhbmltYXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0
aGVtIHRvIGFuaW1hdGUgYmFzZWQgb2ZmIHZpc2l0ZWQgY29sb3JzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82389</attachid>
            <date>2011-02-14 16:57:17 -0800</date>
            <delta_ts>2011-02-16 14:41:49 -0800</delta_ts>
            <desc>Template Demo Clean Up</desc>
            <filename>bug-46592-20110215115714.patch</filename>
            <type>text/plain</type>
            <size>46463</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDItMTQgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkgdG8gdXNlIGZ1bmN0aW9uIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjU5MgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKE9PUFMhKQorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJCYXNlOjpQcm9w
ZXJ0eVdyYXBwZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckJhc2U6
On5Qcm9wZXJ0eVdyYXBwZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBl
ckJhc2U6OnByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlck51bGw6
OlByb3BlcnR5V3JhcHBlck51bGwpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVy
TnVsbDo6aW5oZXJpdCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJOdWxsOjpp
bml0aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlck51bGw6OnZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckRlZmF1bHQ6OlByb3BlcnR5V3JhcHBl
ckRlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyRGVmYXVsdDo6aW5o
ZXJpdCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJEZWZhdWx0Ojppbml0aWFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckRlZmF1bHQ6OnZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldHVwQ1NTUHJvcGVydHlJbnZhbGlkKToKKyAgICAgICAgKFdlYkNv
cmU6OlByb3BlcnR5V3JhcHBlckNvbG9yOjpQcm9wZXJ0eVdyYXBwZXJDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJDb2xvcjo6aW5oZXJpdCk6CisgICAgICAgIChXZWJD
b3JlOjpQcm9wZXJ0eVdyYXBwZXJDb2xvcjo6aW5pdGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cm9wZXJ0eVdyYXBwZXJDb2xvcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVB
cHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVBcHBseVByb3BlcnR5Ojppbmhlcml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlQXBwbHlQcm9wZXJ0eTo6aW5pdGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZUFw
cGx5UHJvcGVydHk6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9w
ZXJ0eTo6aW1wbGVtZW50cyk6CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9D
U1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpz
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwYXJlbnRTdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTEtMDItMTQg
IEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3B5L3Bhc3Rl
IGZyb20gYSBXZWJLaXQgd2luZG93IHRvIGEgVGV4dEVkaXQgd2luZG93IGxvc2VzIGZvbnRzLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDc4NDUwKQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMzEsNiArMTAzMSw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFw
cGx5UHJvcGVydHkuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
Nzg0NTApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNzYsNiArMTA3Niw4IEBACiAgICAgICAgICAgICAnY3NzL0NTU1NlbGVjdG9yLmgnLAogICAg
ICAgICAgICAgJ2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NT
U2VsZWN0b3JMaXN0LmgnLAorICAgICAgICAgICAgJ2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHku
Y3BwJywKKyAgICAgICAgICAgICdjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmgnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1N0eWxlUnVsZS5jcHAn
LApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDc4NDUwKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTY3OSw2ICs2NzksNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBjc3MvQ1NTU2VsZWN0b3IuY3BwIFwKICAgICBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNw
cCBcCiAgICAgY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBcCisgICAgY3NzL0NTU1N0eWxl
QXBwbHlQcm9wZXJ0eS5jcHAgXAogICAgIGNzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBcCiAg
ICAgY3NzL0NTU1N0eWxlUnVsZS5jcHAgXAogICAgIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBc
CkBAIC0xNjI2LDYgKzE2MjcsNyBAQCBIRUFERVJTICs9IFwKICAgICBjc3MvQ1NTU2VnbWVudGVk
Rm9udEZhY2UuaCBcCiAgICAgY3NzL0NTU1NlbGVjdG9yLmggXAogICAgIGNzcy9DU1NTZWxlY3Rv
ckxpc3QuaCBcCisgICAgY3NzL0NTU1N0eWxlQXBwbHlQcm9wd2VydHkuaCBcCiAgICAgY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaCBcCiAgICAgY3NzL0NTU1N0eWxlUnVsZS5oIFwKICAgICBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc4NDUwKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjc5LDYgKzE2NzksOCBAQAogCQk3RUU2ODQ3MDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3Vy
Y2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ3MTEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDVFMTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ3NTEyRDI2RTcwMDBF
Nzk0MTUgLyogUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ3NDEyRDI2RTcwMDBFNzk0MTUgLyogUmVzb3Vy
Y2VMb2FkZXJDRk5ldC5jcHAgKi87IH07CisJCTgwRTg4NDQ0MTMwOUVFOTcwMEM0QzIxRiAvKiBD
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODBFODg0NDIxMzA5RUU5NzAwQzRDMjFGIC8qIENTU1N0eWxlQXBwbHlQ
cm9wZXJ0eS5jcHAgKi87IH07CisJCTgwRTg4NDQ1MTMwOUVFOTcwMEM0QzIxRiAvKiBDU1NTdHls
ZUFwcGx5UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgwRTg4NDQzMTMwOUVFOTcwMEM0QzIxRiAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHku
aCAqLzsgfTsKIAkJODFBNzMyNUUxMjEwMTg5QjAwRkMwRDlFIC8qIElEQkN1cnNvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMyNUQxMjEwMTg5
QjAwRkMwRDlFIC8qIElEQkN1cnNvci5oICovOyB9OwogCQk4MUE3MzI2MDEyMTAxOEE0MDBGQzBE
OUUgLyogSURCQ3Vyc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgxQTczMjVGMTIxMDE4QTQwMEZDMEQ5RSAvKiBJREJDdXJzb3IuY3BwICovOyB9
OwogCQk4MUE3MzI3ODEyMTAxOUUxMDBGQzBEOUUgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgxQTczMjc3MTIx
MDE5RTEwMEZDMEQ5RSAvKiBJREJDdXJzb3JCYWNrZW5kSW1wbC5oICovOyB9OwpAQCAtODEyNSw2
ICs4MTI3LDggQEAKIAkJN0VFNjg0NUQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9u
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VSZXNwb25zZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1RTEyRDI2RTM4MDBFNzk0MTUg
LyogUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdFRTY4NDc0MTJEMjZFNzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlc291cmNlTG9hZGVy
Q0ZOZXQuY3BwOyBwYXRoID0gY2YvUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgwRTg4NDQyMTMwOUVFOTcwMEM0QzIxRiAvKiBDU1NTdHlsZUFw
cGx5UHJvcGVydHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NT
U3R5bGVBcHBseVByb3BlcnR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODBF
ODg0NDMxMzA5RUU5NzAwQzRDMjFGIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NTdHlsZUFwcGx5UHJvcGVydHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFBNzMyNUQxMjEwMTg5QjAwRkMwRDlFIC8qIElEQkN1
cnNvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDdXJzb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFBNzMyNUYxMjEwMThBNDAwRkMwRDlFIC8qIElE
QkN1cnNvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJDdXJz
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MUE3MzI3NzEyMTAxOUUxMDBG
QzBEOUUgLyogSURCQ3Vyc29yQmFja2VuZEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSURCQ3Vyc29yQmFja2VuZEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4NTAwLDYgKzE4NTA0LDggQEAKIAkJRjUyM0QxODQwMkRFNDJFODAxODYzNUNBIC8q
IGNzcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJODBF
ODg0NDIxMzA5RUU5NzAwQzRDMjFGIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgKi8sCisJ
CQkJODBFODg0NDMxMzA5RUU5NzAwQzRDMjFGIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oICov
LAogCQkJCTkzQ0E0QzlDMDlERjkzRkEwMERGODY3NyAvKiBtYWtldG9rZW5pemVyICovLAogCQkJ
CUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggKi8sCiAJCQkJOTMwNzA1Qzcw
OUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRsICovLApAQCAtMjI0NjAsNiArMjI0NjYsNyBA
QAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3NUNBMjhCMTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3NUNBMkEyMTMwMzY3OUQwMEU5OUFEOSAvKiBKU0NyeXB0by5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODBFODg0NDUxMzA5RUU5NzAwQzRDMjFGIC8qIENTU1N0eWxlQXBwbHlQcm9w
ZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTE0OCw2ICsyNTE1NSw3IEBACiAJCQkJQTFFMTE1
NDQxMzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMUUxMTU0NjEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0
U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgwRTg4NDQ0MTMwOUVFOTcwMEM0QzIxRiAv
KiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA0LTIwMDUgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
IE5pY2hvbGFzIFNoYW5rcyAod2Via2l0QG5pY2tzaGFua3MuY29tKQorICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxh
cEB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVBcHBseVByb3BlcnR5LmgiCisK
KyNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgorI2luY2x1ZGUgIkNTU1Jl
ZmxlY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJD
YWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRlICJDb3VudGVyQ29u
dGVudC5oIgorI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKKyNpbmNsdWRlICJGb250RmFtaWx5VmFs
dWUuaCIKKyNpbmNsdWRlICJGb250VmFsdWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAiUmVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1l
LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTaGFkb3dWYWx1ZS5oIgorI2lu
Y2x1ZGUgIlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIKKworI2lmIFVTRShQTEFURk9STV9TVFJBVEVH
SUVTKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlZpc2l0ZWRM
aW5rU3RyYXRlZ3kuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQor
I2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoU1ZHKQor
I2luY2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgorI2VuZGlmCisK
KyNpZiBFTkFCTEUoV01MKQorI2luY2x1ZGUgIldNTE5hbWVzLmgiCisjZW5kaWYKKworI2lmIFBM
QVRGT1JNKFFUKQorI2luY2x1ZGUgPHF3ZWJoaXN0b3J5aW50ZXJmYWNlLmg+CisjZW5kaWYKKwor
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQcm9w
ZXJ0eVdyYXBwZXJCYXNlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcm9wZXJ0eVdyYXBw
ZXJCYXNlKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQcm9w
ZXJ0eVdyYXBwZXJCYXNlKGludCBwcm9wKQorICAgICAgICA6IG1fcHJvcChwcm9wKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5Qcm9wZXJ0eVdyYXBwZXJCYXNlKCkgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgaW5oZXJpdChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZhbHVlKENTU1N0eWxlU2VsZWN0b3IgKmluc3Rh
bmNlLCBDU1NWYWx1ZSAqKSBjb25zdCA9IDA7CisKKyAgICBpbnQgcHJvcGVydHkoKSBjb25zdCB7
IHJldHVybiBtX3Byb3A7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9wcm9wOworfTsKKworY2xh
c3MgUHJvcGVydHlXcmFwcGVyTnVsbCA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlIHsKK3B1
YmxpYzoKKyAgICBQcm9wZXJ0eVdyYXBwZXJOdWxsKGludCBwcm9wKSA6IFByb3BlcnR5V3JhcHBl
ckJhc2UocHJvcCkge30KKyAgICB2aXJ0dWFsIHZvaWQgaW5oZXJpdChDU1NTdHlsZVNlbGVjdG9y
ICppbnN0YW5jZSkgY29uc3Qge1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7fQorICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKSBjb25zdCB7VU5VU0VEX1BB
UkFNKGluc3RhbmNlKTt9CisgICAgdmlydHVhbCB2b2lkIHZhbHVlKENTU1N0eWxlU2VsZWN0b3Ig
Kmluc3RhbmNlLCBDU1NWYWx1ZSAqdmFsdWUpIGNvbnN0IHtVTlVTRURfUEFSQU0oaW5zdGFuY2Up
OyBVTlVTRURfUEFSQU0odmFsdWUpO30KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgUHJvcGVydHlXcmFwcGVyRGVmYXVsdCA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlIHsK
K3B1YmxpYzoKKyAgICBQcm9wZXJ0eVdyYXBwZXJEZWZhdWx0KGludCBwcm9wLCBUIChSZW5kZXJT
dHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBU
ICgqaW5pdGlhbCkoKSkKKyAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJCYXNlKHByb3ApCisgICAg
ICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQorICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKKyAgICAg
ICAgLCBtX2luaXRpYWwoaW5pdGlhbCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IGluaGVyaXQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpIGNvbnN0CisgICAgeworICAgICAg
ICAoaW5zdGFuY2UtPnN0eWxlKCktPiptX3NldHRlcikoKGluc3RhbmNlLT5wYXJlbnRTdHlsZSgp
LT4qbV9nZXR0ZXIpKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsKENTU1N0
eWxlU2VsZWN0b3IgKmluc3RhbmNlKSBjb25zdAorICAgIHsKKyAgICAgICAgKGluc3RhbmNlLT5z
dHlsZSgpLT4qbV9zZXR0ZXIpKCgqbV9pbml0aWFsKSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgdmFsdWUoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Cisg
ICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICAgICAgKGluc3RhbmNlLT5zdHlsZSgpLT4qbV9zZXR0
ZXIpKCpwKTsKKyAgICAgICAgfQorICAgIH0KKworcHJvdGVjdGVkOgorICAgIFQgKFJlbmRlclN0
eWxlOjoqbV9nZXR0ZXIpKCkgY29uc3Q7CisgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRl
cikoVCk7CisgICAgVCAoKm1faW5pdGlhbCkoKTsKK307CisKKy8vIENTU1Byb3BlcnR5SW52YWxp
ZAorc3RhdGljIFByb3BlcnR5V3JhcHBlckJhc2UqIHNldHVwQ1NTUHJvcGVydHlJbnZhbGlkKCkK
K3sKKyAgICByZXR1cm4gbmV3IFByb3BlcnR5V3JhcHBlck51bGwoQ1NTUHJvcGVydHlJbnZhbGlk
KTsKK30KKworLy8gQ1NTUHJvcGVydHlDb2xvcgorY2xhc3MgUHJvcGVydHlXcmFwcGVyQ29sb3Ig
OiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyQmFzZSB7CitwdWJsaWM6CisgICAgUHJvcGVydHlXcmFw
cGVyQ29sb3IoaW50IHByb3AsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkg
Y29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpLCBDb2xvciBp
bml0aWFsVmFsdWUpCisgICAgICAgIDogUHJvcGVydHlXcmFwcGVyQmFzZShwcm9wKQorICAgICAg
ICAsIG1fZ2V0dGVyKGdldHRlcikKKyAgICAgICAgLCBtX3NldHRlcihzZXR0ZXIpCisgICAgICAg
ICwgbV9pbml0aWFsVmFsdWUoaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICB9CisgICAgdmlydHVh
bCB2b2lkIGluaGVyaXQoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpIGNvbnN0CisgICAgewor
ICAgICAgICAoaW5zdGFuY2UtPnN0eWxlKCktPiptX3NldHRlcikoKGluc3RhbmNlLT5wYXJlbnRT
dHlsZSgpLT4qbV9nZXR0ZXIpKCkpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbChD
U1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSkgY29uc3QKKyAgICB7CisgICAgICAgIChpbnN0YW5j
ZS0+c3R5bGUoKS0+Km1fc2V0dGVyKShtX2luaXRpYWxWYWx1ZSk7CisgICAgfQorICAgIHZpcnR1
YWwgdm9pZCB2YWx1ZShDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVl
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsK
KyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAocC0+Z2V0SWRlbnQoKSA9PSBDU1NW
YWx1ZUN1cnJlbnRjb2xvcikKKyAgICAgICAgICAgICAgICBpbmhlcml0KGluc3RhbmNlKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+c3R5bGUoKS0+c2V0Q29s
b3IoaW5zdGFuY2UtPmdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHApKTsKKyAgICAgICAgfQor
ICAgIH0KK3Byb3RlY3RlZDoKKyAgICBjb25zdCBDb2xvciYgKFJlbmRlclN0eWxlOjoqbV9nZXR0
ZXIpKCkgY29uc3Q7CisgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoY29uc3QgQ29s
b3ImKTsKKyAgICBjb25zdCBDb2xvciBtX2luaXRpYWxWYWx1ZTsKK307CisKKyNkZWZpbmUgQVNT
RVJUX1ZBTElEX1BST1BFUlRZKHgpIEFTU0VSVCgoeCkgPj0gZmlyc3RDU1NQcm9wZXJ0eSAmJiAo
eCkgPCAoZmlyc3RDU1NQcm9wZXJ0eSArIG51bUNTU1Byb3BlcnRpZXMpKQorI2RlZmluZSBQUk9Q
RVJUWV9JTkRFWCh4KSAoKHgpIC0gZmlyc3RDU1NQcm9wZXJ0eSkKKworQ1NTU3R5bGVBcHBseVBy
b3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVydHkoKQoreworICAgIFByb3BlcnR5V3JhcHBlckJh
c2UqIGludmFsaWQgPSBzZXR1cENTU1Byb3BlcnR5SW52YWxpZCgpOworCisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCisgICAgICAgIG1fcHJvcGVydHlNYXBb
aV0gPSBpbnZhbGlkOworCisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eUNvbG9yKV0gPSBuZXcgUHJvcGVydHlXcmFwcGVyQ29sb3IoQ1NTUHJvcGVydHlDb2xvciwg
JlJlbmRlclN0eWxlOjpjb2xvciwgJlJlbmRlclN0eWxlOjpzZXRDb2xvciwgUmVuZGVyU3R5bGU6
OmluaXRpYWxDb2xvcigpKTsKKyAgICAvLyBub3QgeWV0IGltcGxlbWVudGVkIHByb3BlcnRpZXMg
Zm9sbG93CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eURpcmVj
dGlvbildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5RGlzcGxheSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5Rm9udCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5Rm9udEZhbWlseSldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Rm9udFNpemUpXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZvbnRTdHlsZSldID0g
aW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcpXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTbW9vdGhpbmcp
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTaXplQWRqdXN0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRXcml0aW5nTW9kZSldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Wm9vbSldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TGluZUhlaWdo
dCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5QmFja2dyb3VuZCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQpXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbildID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJhY2tn
cm91bmRTaXplKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlCb3JkZXIpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUxlZnRSYWRpdXMpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKV0gPSBpbnZhbGlkOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlKV0gPSBpbnZhbGlkOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJDb2xvcildID0g
aW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUpXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0
aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5Qm9yZGVyUmFkaXVzKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvcildID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyUmln
aHRTdHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZyldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJv
cmRlclRvcCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMpXSA9IGludmFsaWQ7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlclRvcFJp
Z2h0UmFkaXVzKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgpXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlcldpZHRoKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlC
b3R0b20pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eUJveFNoYWRvdyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5Qm94U2l6aW5nKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Q2xlYXIpXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNsaXApXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNv
bnRlbnQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNvdW50ZXJSZXNldCldID0gaW52YWxpZDsKKyAgICBt
X3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Q3Vyc29yKV0gPSBpbnZhbGlk
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlFbXB0eUNlbGxz
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlGbG9hdCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5Rm9udFN0cmV0Y2gpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eUhlaWdodCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TGVmdCldID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZyldID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TGlzdFN0
eWxlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJv
cGVydHlMaXN0U3R5bGVJbWFnZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24pXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU1h
cmdpbildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5TWFyZ2luQm90dG9tKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCldID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TWFyZ2luVG9wKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlN
YXhIZWlnaHQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eU1heFdpZHRoKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlNaW5IZWlnaHQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU1pbldpZHRoKV0gPSBpbnZhbGlkOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlPcGFjaXR5KV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlPcnBoYW5z
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlPdXRsaW5lKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQpXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSldID0g
aW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlPdmVyZmxvdyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5T3ZlcmZsb3dYKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlPdmVyZmxvd1kpXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBhZGRpbmcpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBhZGRp
bmdCb3R0b20pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVBhZGRpbmdMZWZ0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQpXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBhZGRpbmdUb3ApXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBhZ2UpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBh
Z2VCcmVha0FmdGVyKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBhZ2VCcmVha0luc2lkZSldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5UG9pbnRlckV2
ZW50cyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5UG9zaXRpb24pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVF1b3RlcyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5UmVzaXplKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlSaWdodCldID0gaW52YWxpZDsKKyAgICBt
X3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5U2l6ZSldID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5U3JjKV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlTcGVhayld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
VGFibGVMYXlvdXQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVRleHRBbGlnbildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRJbmRlbnQpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGUpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRl
eHRMaW5lVGhyb3VnaFN0eWxlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hXaWR0aCldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VGV4dE92ZXJmbG93KV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlU
ZXh0T3ZlcmxpbmUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVRleHRPdmVybGluZUNvbG9yKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVNb2RlKV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0T3Zl
cmxpbmVTdHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lV2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRTaGFkb3cpXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0p
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVDb2xvcildID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGUpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRl
eHRVbmRlcmxpbmVTdHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdpZHRoKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUb3ApXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlV
bmljb2RlUmFuZ2UpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVZpc2liaWxpdHkpXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdpZG93
cyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5V2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVdvcmRCcmVhayldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5V29yZFNwYWNpbmcpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdvcmRXcmFwKV0gPSBpbnZhbGlkOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlaSW5kZXgpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXkpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlv
bildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25JdGVyYXRpb25Db3VudCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uUGxheVN0YXRlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbildID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0QXBw
ZWFyYW5jZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5KV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbildID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
QmFja2dyb3VuZFNpemUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9y
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlclN0eWxlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoKV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJCZWZvcmUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVT
dHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZCldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRW5kQ29sb3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRml0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZyldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySW1hZ2UpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQpXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclN0YXJ0Q29sb3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUpXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
V2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyldID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm94QWxpZ24pXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dEJveERpcmVjdGlvbildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm94RmxleEdyb3VwKV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRC
b3hMaW5lcyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQpXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJv
eFBhY2spXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdyldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3Jy
ZWN0aW9uKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZSld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQnJlYWtJbnNpZGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50KV0gPSBpbnZhbGlkOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5H
YXApXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtblJ1bGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvcildID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
UnVsZVN0eWxlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblNwYW4pXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbldpZHRoKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhKV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRI
aWdobGlnaHQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUNoYXJhY3RlcildID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0SHlwaGVuYXRlTG9jYWxl
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlXZWJraXRIeXBoZW5zKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWspXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdExpbmVDbGFtcCldID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
TG9naWNhbFdpZHRoKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlXZWJraXRMb2dpY2FsSGVpZ2h0KV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxh
cHNlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQm90dG9tQ29sbGFw
c2UpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpblRvcENvbGxhcHNlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSldID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQWZ0ZXIpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kKV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5TdGFydCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbildID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZUluY3JlbWVudCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
cGVlZCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5V2Via2l0TWFycXVlZVN0eWxlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVu
dCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5V2Via2l0TWFza0JveEltYWdlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCldID0gaW52YWxpZDsKKyAgICBt
X3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0
ZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5V2Via2l0TWFza0ltYWdlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2luKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24p
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkpXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXRYKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFza1NpemUp
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdE1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxX
aWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWluTG9naWNhbFdpZHRoKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRNaW5Mb2dpY2FsSGVpZ2h0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSldID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0FmdGVyKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlX
ZWJraXRQYWRkaW5nQmVmb3JlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nRW5kKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRQYWRkaW5nU3RhcnQp
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdFBlcnNwZWN0aXZlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbildID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW5YKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblkpXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5n
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0Q29tYmluZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dFRleHRFbXBoYXNpcyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IpXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c1Bvc2l0aW9uKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSldID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcild
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0VGV4dFNlY3VyaXR5KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29s
b3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKV0gPSBpbnZhbGlkOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1PcmlnaW4pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkp
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybU9yaWdpblopXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlKV0gPSBpbnZhbGlk
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbild
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24p
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJEcmFnKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0KV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlDbGlw
UGF0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5Q2xpcFJ1bGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eU1hc2spXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eUVuYWJsZUJhY2tncm91bmQpXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZpbHRlcildID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Rmxvb2RDb2xv
cildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5Rmxvb2RPcGFjaXR5KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlMaWdodGluZ0NvbG9yKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlTdG9wQ29sb3IpXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVN0b3BPcGFjaXR5KV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlD
b2xvckludGVycG9sYXRpb24pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMpXSA9IGludmFsaWQ7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNvbG9yUHJvZmls
ZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5Q29sb3JSZW5kZXJpbmcpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eUZpbGwpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZpbGxPcGFjaXR5KV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlGaWxsUnVsZSldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5SW1hZ2VSZW5k
ZXJpbmcpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eU1hcmtlcildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5TWFya2VyRW5kKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlNYXJrZXJNaWQpXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0KV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlTaGFwZVJl
bmRlcmluZyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5U3Ryb2tlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlTdHJva2VEYXNoYXJyYXkpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVN0cm9rZURhc2hvZmZzZXQpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVN0cm9r
ZUxpbmVjYXApXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVN0cm9rZUxpbmVqb2luKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlTdHJva2VNaXRlcmxpbWl0KV0gPSBpbnZhbGlkOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlTdHJva2VXaWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5QWxpZ25tZW50QmFzZWxpbmUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJhc2VsaW5lU2hpZnQpXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eURvbWluYW50
QmFzZWxpbmUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eUdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uVmVy
dGljYWwpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eUtlcm5pbmcpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVRleHRBbmNob3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdCldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V3JpdGluZ01vZGUpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdl
YmtpdFN2Z1NoYWRvdyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9uKV0gPSBpbnZhbGlkOworfQorCit2
b2lkIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6aW5oZXJpdChpbnQgcHJvcGVydHksIENTU1N0eWxl
U2VsZWN0b3IgKmluc3RhbmNlKQoreworICAgIEFTU0VSVF9WQUxJRF9QUk9QRVJUWShwcm9wZXJ0
eSk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChwcm9wZXJ0eSldLT5pbmhlcml0
KGluc3RhbmNlKTsKK30KKwordm9pZCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OmluaXRpYWwoaW50
IHByb3BlcnR5LCBDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSkKK3sKKyAgICBBU1NFUlRfVkFM
SURfUFJPUEVSVFkocHJvcGVydHkpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
cHJvcGVydHkpXS0+aW5pdGlhbChpbnN0YW5jZSk7Cit9CisKK3ZvaWQgQ1NTU3R5bGVBcHBseVBy
b3BlcnR5Ojp2YWx1ZShpbnQgcHJvcGVydHksIENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlLCBD
U1NWYWx1ZSAqdmFsdWUpCit7CisgICAgQVNTRVJUX1ZBTElEX1BST1BFUlRZKHByb3BlcnR5KTsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKHByb3BlcnR5KV0tPnZhbHVlKGluc3Rh
bmNlLCB2YWx1ZSk7Cit9CisKK2Jvb2wgQ1NTU3R5bGVBcHBseVByb3BlcnR5OjppbXBsZW1lbnRz
KGludCBwcm9wZXJ0eSkKK3sKKyAgICBBU1NFUlRfVkFMSURfUFJPUEVSVFkocHJvcGVydHkpOwor
ICAgIHJldHVybiBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKHByb3BlcnR5KV0gJiYgKG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgocHJvcGVydHkpXS0+cHJvcGVydHkoKSA9PSBwcm9w
ZXJ0eSk7Cit9Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9w
ZXJ0eS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQ
cm9wZXJ0eS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACisjaWZuZGVmIENTU1N0eWxl
QXBwbHlQcm9wZXJ0eV9oCisjZGVmaW5lIENTU1N0eWxlQXBwbHlQcm9wZXJ0eV9oCisKKyNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q1NTUHJvcGVydHk7CitjbGFzcyBDU1NTdHlsZVNlbGVjdG9yOworY2xhc3MgQ1NTVmFsdWU7Citj
bGFzcyBQcm9wZXJ0eVdyYXBwZXJCYXNlOworCitjbGFzcyBDU1NTdHlsZUFwcGx5UHJvcGVydHkg
eworcHVibGljOgorICAgIENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpOworICAgIH5DU1NTdHlsZUFw
cGx5UHJvcGVydHkoKTsKKworICAgIHZvaWQgaW5oZXJpdChpbnQgcHJvcGVydHksIENTU1N0eWxl
U2VsZWN0b3IgKmluc3RhbmNlKTsKKyAgICB2b2lkIGluaXRpYWwoaW50IHByb3BlcnR5LCBDU1NT
dHlsZVNlbGVjdG9yICppbnN0YW5jZSk7CisgICAgdm9pZCB2YWx1ZShpbnQgcHJvcGVydHksIENT
U1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlLCBDU1NWYWx1ZSAqKTsKKyAgICBib29sIGltcGxlbWVu
dHMoaW50IHByb3BlcnR5KTsKKworcHJpdmF0ZToKKyAgICBQcm9wZXJ0eVdyYXBwZXJCYXNlKiBt
X3Byb3BlcnR5TWFwW251bUNTU1Byb3BlcnRpZXNdOworfTsKKworfQorCisjZW5kaWYgLy8gQ1NT
U3R5bGVBcHBseVByb3BlcnR5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHJldmlzaW9uIDc4NDUwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAi
Q1NTUnVsZUxpc3QuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1Nl
bGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIgogI2luY2x1
ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRl
ICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCkBAIC00ODQsNiArNDg1LDcgQEAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1bQogICAgICwgbV9zdHlsZWRFbGVtZW50KDAp
CiAgICAgLCBtX2VsZW1lbnRMaW5rU3RhdGUoTm90SW5zaWRlTGluaykKICAgICAsIG1fZm9udFNl
bGVjdG9yKENTU0ZvbnRTZWxlY3Rvcjo6Y3JlYXRlKGRvY3VtZW50KSkKKyAgICAsIG1fYXBwbHlQ
cm9wZXJ0eShuZXcgQ1NTU3R5bGVBcHBseVByb3BlcnR5KCkpCiB7CiAgICAgbV9tYXRjaEF1dGhv
ckFuZFVzZXJTdHlsZXMgPSBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXM7CiAgICAgCkBAIC0zNTM1
LDYgKzM1MzcsMTcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAgIGlmIChtX2FwcGx5UHJvcGVydHktPmlt
cGxlbWVudHMoaWQpKSB7CisgICAgICBpZiAoaXNJbmhlcml0KSB7CisgICAgICAgICAgbV9hcHBs
eVByb3BlcnR5LT5pbmhlcml0KGlkLCB0aGlzKTsKKyAgICAgIH0gZWxzZSBpZiAoaXNJbml0aWFs
KSB7CisgICAgICAgICAgbV9hcHBseVByb3BlcnR5LT5pbml0aWFsKGlkLCB0aGlzKTsKKyAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgbV9hcHBseVByb3BlcnR5LT52YWx1ZShpZCwgdGhpcywgdmFs
dWUpOworICAgICAgfQorICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIFdoYXQgZm9sbG93
cyBpcyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVydGllcyBpbnRvIHRoZWlyIGNvcnJl
c3BvbmRpbmcgZnJvbnQtZW5kCiAgICAgLy8gUmVuZGVyU3R5bGUgdmFsdWVzLiAgU2hvcnRoYW5k
cyAoZS5nLiBib3JkZXIsIGJhY2tncm91bmQpIG9jY3VyIGluIHRoaXMgbGlzdCBhcyB3ZWxsIGFu
ZAogICAgIC8vIGFyZSBvbmx5IGhpdCB3aGVuIG1hcHBpbmcgImluaGVyaXQiIG9yICJpbml0aWFs
IiBpbnRvIGZyb250LWVuZCB2YWx1ZXMuCkBAIC0zOTQ0LDExICszOTU3LDYgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKIC8vIGNvbG9ycyB8fCBpbmhlcml0Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAg
ICAgICAvLyBJZiB0aGUgJ2N1cnJlbnRDb2xvcicga2V5d29yZCBpcyBzZXQgb24gdGhlICdjb2xv
cicgcHJvcGVydHkgaXRzZWxmLAotICAgICAgICAvLyBpdCBpcyB0cmVhdGVkIGFzICdjb2xvcjpp
bmhlcml0JyBhdCBwYXJzZSB0aW1lCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSAmJiBwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKLSAgICAgICAg
ICAgIGlzSW5oZXJpdCA9IHRydWU7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cjoKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3I6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3I6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmgJKHJldmlzaW9uIDc4NDUwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBDU1NGb250RmFj
ZVJ1bGU7CiBjbGFzcyBDU1NJbWFnZVZhbHVlOwogY2xhc3MgQ1NTUnVsZUxpc3Q7CiBjbGFzcyBD
U1NTZWxlY3RvcjsKK2NsYXNzIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTsKIGNsYXNzIENTU1N0eWxl
UnVsZTsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDU1NWYWx1ZTsKQEAgLTg1LDYgKzg2
LDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgc2VsZWN0cyBhIFJlbmRlclN0eWxlIGZv
ciBhIGdpdmVuIGVsZW1lbnQgYmFzZWQgb24gYSBjb2xsZWN0aW9uIG9mIHN0eWxlc2hlZXRzLgog
ICAgIGNsYXNzIENTU1N0eWxlU2VsZWN0b3IgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDU1NTdHlsZVNlbGVjdG9yKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBDU1NTdHlsZUFwcGx5UHJvcGVydHk7CiAgICAgcHVibGljOgogICAgICAgICBD
U1NTdHlsZVNlbGVjdG9yKERvY3VtZW50KiwgU3R5bGVTaGVldExpc3QqIGF1dGhvclNoZWV0cywg
Q1NTU3R5bGVTaGVldCogbWFwcGVkRWxlbWVudFNoZWV0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NT
U3R5bGVTaGVldD4gPiogcGFnZUdyb3VwVXNlclNoZWV0cywKQEAgLTk1LDYgKzk3LDcgQEAgcHVi
bGljOgogICAgICAgICB2b2lkIHB1c2hQYXJlbnQoRWxlbWVudCogcGFyZW50KTsKICAgICAgICAg
dm9pZCBwb3BQYXJlbnQoRWxlbWVudCogcGFyZW50KTsKIAorCiAgICAgICAgIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUsIGJvb2wgcmVzb2x2ZUZvclJv
b3REZWZhdWx0ID0gZmFsc2UsIGJvb2wgbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZSk7
CiAgICAgICAgIAogICAgICAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1l
bnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYgbGlzdCk7CkBAIC0xMTEsNiAr
MTE0LDkgQEAgcHVibGljOgogICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9T
dHlsZUZvckRhdGFHcmlkQ29sdW1uSGVhZGVyKERhdGFHcmlkQ29sdW1uKiwgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlKTsKICNlbmRpZgogCisgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KKyAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRTdHlsZTsgfQorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqLCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKICAgICAgICAgdm9pZCBpbml0
RWxlbWVudChFbGVtZW50Kik7CkBAIC0xMjMsOCArMTI5LDYgQEAgcHVibGljOgogICAgICAgICB2
b2lkIHB1c2hQYXJlbnRTdGFja0ZyYW1lKEVsZW1lbnQqIHBhcmVudCk7CiAgICAgICAgIHZvaWQg
cG9wUGFyZW50U3RhY2tGcmFtZSgpOwogCi0gICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KLQogICAgICAgICBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlKiwgS2V5ZnJhbWVWYWx1ZSYpOwogCiAgICAgcHVibGljOgpAQCAtMTU2
LDcgKzE2MCw4IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHNldEZvbnRT
aXplKEZvbnREZXNjcmlwdGlvbiYsIGZsb2F0IHNpemUpOwogICAgICAgICBzdGF0aWMgZmxvYXQg
Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQqLCBSZW5kZXJTdHlsZSos
IGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgdXNlU1ZHWm9v
bVJ1bGVzKTsKLQorLy8gICAgICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1By
aW1pdGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3Vi
bGUgbXVsdGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCk7CisvLyAgICAgICAgc3RhdGljIHZvaWQg
YXBwbHlDb3VudGVyTGlzdChSZW5kZXJTdHlsZSosIENTU1ZhbHVlTGlzdCosIGJvb2wgaXNSZXNl
dCk7CiAgICAgcHVibGljOgogICAgICAgICBDb2xvciBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZSopIGNvbnN0OwogCkBAIC0zNDEsNiArMzQ2LDggQEAgcHVibGlj
OgogICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBtX3NlbGVjdG9yQXR0cnM7CiAg
ICAgICAgIFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+IG1fYWRkaXRpb25hbEF0
dHJpYnV0ZVN0eWxlRGVjbHM7CiAgICAgICAgIFZlY3RvcjxNZWRpYVF1ZXJ5UmVzdWx0Kj4gbV92
aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzOworCisgICAgICAgIENTU1N0eWxlQXBw
bHlQcm9wZXJ0eSogbV9hcHBseVByb3BlcnR5OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCShyZXZpc2lvbiA3ODQ1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgY2xhc3MgUmVu
ZGVyU3R5bGU6IHB1YmxpYyBSZWZDb3VudGVkPFJlbgogICAgIGZyaWVuZCBjbGFzcyBBbmltYXRp
b25CYXNlOyAvLyBVc2VkIGJ5IENTUyBhbmltYXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRv
IGFuaW1hdGUgYmFzZWQgb2ZmIHZpc2l0ZWQgY29sb3JzLgogICAgIGZyaWVuZCBjbGFzcyBBcHBs
eVN0eWxlQ29tbWFuZDsgLy8gRWRpdGluZyBoYXMgdG8gb25seSByZXZlYWwgdW52aXNpdGVkIGlu
Zm8uCiAgICAgZnJpZW5kIGNsYXNzIEVkaXRpbmdTdHlsZTsgLy8gRWRpdGluZyBoYXMgdG8gb25s
eSByZXZlYWwgdW52aXNpdGVkIGluZm8uCisgICAgZnJpZW5kIGNsYXNzIENTU1N0eWxlQXBwbHlQ
cm9wZXJ0eTsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgogICAgIGZyaWVuZCBjbGFzcyBDU1NT
dHlsZVNlbGVjdG9yOyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCiAgICAgZnJpZW5kIGNsYXNz
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsgLy8gSWdub3JlcyB2aXNpdGVkIHN0eWxlcywg
c28gbmVlZHMgdG8gYmUgYWJsZSB0byBzZWUgdW52aXNpdGVkIGluZm8uCiAgICAgZnJpZW5kIGNs
YXNzIFByb3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yOyAvLyBVc2VkIGJ5IENTUyBhbmlt
YXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1hdGUgYmFzZWQgb2ZmIHZpc2l0ZWQg
Y29sb3JzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82701</attachid>
            <date>2011-02-16 14:41:58 -0800</date>
            <delta_ts>2011-02-16 14:41:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46592-20110217094154.patch</filename>
            <type>text/plain</type>
            <size>54893</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTg2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDItMTQgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkgdG8gdXNlIGZ1bmN0aW9uIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjU5MgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKE9PUFMhKQorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJCYXNlOjpQcm9w
ZXJ0eVdyYXBwZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckJhc2U6
On5Qcm9wZXJ0eVdyYXBwZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBl
ckJhc2U6OnByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlck51bGw6
OlByb3BlcnR5V3JhcHBlck51bGwpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVy
TnVsbDo6aW5oZXJpdCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJOdWxsOjpp
bml0aWFsKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlck51bGw6OnZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckRlZmF1bHQ6OlByb3BlcnR5V3JhcHBl
ckRlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlXcmFwcGVyRGVmYXVsdDo6aW5o
ZXJpdCk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJEZWZhdWx0Ojppbml0aWFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckRlZmF1bHQ6OnZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldHVwQ1NTUHJvcGVydHlJbnZhbGlkKToKKyAgICAgICAgKFdlYkNv
cmU6OlByb3BlcnR5V3JhcHBlckNvbG9yOjpQcm9wZXJ0eVdyYXBwZXJDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJDb2xvcjo6aW5oZXJpdCk6CisgICAgICAgIChXZWJD
b3JlOjpQcm9wZXJ0eVdyYXBwZXJDb2xvcjo6aW5pdGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cm9wZXJ0eVdyYXBwZXJDb2xvcjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVB
cHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVBcHBseVByb3BlcnR5Ojppbmhlcml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlQXBwbHlQcm9wZXJ0eTo6aW5pdGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZUFw
cGx5UHJvcGVydHk6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9w
ZXJ0eTo6aW1wbGVtZW50cyk6CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5o
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9D
U1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpz
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwYXJlbnRTdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTEtMDItMTUg
IEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJ1YmJlci1zdGFt
cGVkIGJ5IEFuZHJlYXMgS2xpbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24g
Nzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpA
QCAtMTAzMSw2ICsxMDMxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlz
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBcCisJU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlRGVjbGFyYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJh
dGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcCBcCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiA3ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTA3Myw2ICsxMDczLDggQEAKICAgICAgICAgICAgICdj
c3MvQ1NTU2VsZWN0b3IuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAn
LAogICAgICAgICAgICAgJ2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCcsCisgICAgICAgICAgICAnY3Nz
L0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAnLAorICAgICAgICAgICAgJ2Nzcy9DU1NTdHlsZUFw
cGx5UHJvcGVydHkuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
JywKICAgICAgICAgICAgICdjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oJywKICAgICAgICAgICAg
ICdjc3MvQ1NTU3R5bGVSdWxlLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNzg1
ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtNTQ4
LDYgKzU0OCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9DU1NTZWxlY3Rvci5jcHAgXAogICAg
IGNzcy9DU1NTZWxlY3Rvckxpc3QuY3BwIFwKICAgICBjc3MvQ1NTU2VnbWVudGVkRm9udEZhY2Uu
Y3BwIFwKKyAgICBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBcCiAgICAgY3NzL0NTU1N0
eWxlRGVjbGFyYXRpb24uY3BwIFwKICAgICBjc3MvQ1NTU3R5bGVSdWxlLmNwcCBcCiAgICAgY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwIFwKQEAgLTE0OTUsNiArMTQ5Niw3IEBAIEhFQURFUlMgKz0g
XAogICAgIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5oIFwKICAgICBjc3MvQ1NTU2VsZWN0b3Iu
aCBcCiAgICAgY3NzL0NTU1NlbGVjdG9yTGlzdC5oIFwKKyAgICBjc3MvQ1NTU3R5bGVBcHBseVBy
b3B3ZXJ0eS5oIFwKICAgICBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIFwKICAgICBjc3MvQ1NT
U3R5bGVSdWxlLmggXAogICAgIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmggXApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gNzg1ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2ODAsNiArMTY4MCw4IEBACiAJCTdFRTY4NDcwMTJE
MjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVz
b3VyY2VSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdFRTY4NDcxMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlQ0ZO
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VF
Njg0NUUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgKi87IH07
CiAJCTdFRTY4NDc1MTJEMjZFNzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDc0MTJE
MjZFNzAwMEU3OTQxNSAvKiBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcCAqLzsgfTsKKwkJODBFQURC
RjkxMzBCNDdDMDAwQkE2REVBIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MEVBREJGNzEzMEI0N0MwMDBC
QTZERUEgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCAqLzsgfTsKKwkJODBFQURCRkExMzBC
NDdDMDAwQkE2REVBIC8qIENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODBFQURCRjgxMzBCNDdDMDAwQkE2REVBIC8q
IENTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oICovOyB9OwogCQk4MUE3MzI1RTEyMTAxODlCMDBGQzBE
OUUgLyogSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MUE3MzI1RDEyMTAxODlCMDBGQzBEOUUgLyogSURCQ3Vyc29yLmggKi87IH07CiAJ
CTgxQTczMjYwMTIxMDE4QTQwMEZDMEQ5RSAvKiBJREJDdXJzb3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODFBNzMyNUYxMjEwMThBNDAwRkMwRDlF
IC8qIElEQkN1cnNvci5jcHAgKi87IH07CiAJCTgxQTczMjc4MTIxMDE5RTEwMEZDMEQ5RSAvKiBJ
REJDdXJzb3JCYWNrZW5kSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODFBNzMyNzcxMjEwMTlFMTAwRkMwRDlFIC8qIElEQkN1cnNvckJhY2tlbmRJ
bXBsLmggKi87IH07CkBAIC0zMTc0LDYgKzMxNzYsNyBAQAogCQlBNjIyQThGQzEyMkM0NEE2MDBB
Nzg1QjMgLyogQmluZGluZ1NlY3VyaXR5QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNjIyQThGNjEyMkM0NEE2MDBBNzg1QjMgLyogQmluZGlu
Z1NlY3VyaXR5QmFzZS5jcHAgKi87IH07CiAJCUE2MjJBOEZEMTIyQzQ0QTYwMEE3ODVCMyAvKiBC
aW5kaW5nU2VjdXJpdHlCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNjIyQThGNzEyMkM0NEE2MDBBNzg1QjMgLyogQmluZGluZ1NlY3VyaXR5QmFz
ZS5oICovOyB9OwogCQlBNjIyQThGRjEyMkM0NEE2MDBBNzg1QjMgLyogR2VuZXJpY0JpbmRpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE2MjJBOEY5
MTIyQzQ0QTYwMEE3ODVCMyAvKiBHZW5lcmljQmluZGluZy5oICovOyB9OworCQlBNzE1MUJEODEy
RjE1NThGMDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MTUxQkQ3MTJGMTU1OEYwMDVBMEY2NCAvKiBU
ZXh0Q2hlY2tlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE3MTg3NjBFMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc2MEQwQjJB
MTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcxODc4OTAwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdD
b250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICov
OyB9OwogCQlBNzNGOTVGRTEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZEludFJlY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTczRjk1RkMxMkM5
N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRJbnRSZWN0LmNwcCAqLzsgfTsKQEAgLTMyMTgsNyArMzIy
MSw2IEBACiAJCUE3RDNDNTI0MEI1NzZCNEIwMDJDQTQ1MCAvKiBQYXN0ZWJvYXJkSGVscGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0QzQzUyMzBC
NTc2QjRCMDAyQ0E0NTAgLyogUGFzdGVib2FyZEhlbHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3RDZCMzQ5MEY2MTEwNDUwMEI3OUZEMSAv
KiBXb3JrZXJTY3JpcHRMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE3RDZCMzQ3MEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJTY3JpcHRMb2Fk
ZXIuaCAqLzsgfTsKIAkJQTdENkIzNEEwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlclNjcmlwdExv
YWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0Q2QjM0ODBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VyU2NyaXB0TG9hZGVyLmNwcCAqLzsgfTsK
LQkJQTcxNTFCRDgxMkYxNTU4RjAwNUEwRjY0IC8qIFRleHRDaGVja2VyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE1MUJENzEyRjE1NThG
MDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBN0RCRjhERDEyNzY5MTlDMDA2QjYwMDggLyogVGV4
dENoZWNraW5nSGVscGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3REJGOERCMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdIZWxwZXIu
Y3BwICovOyB9OwogCQlBN0RCRjhERTEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVs
cGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0RC
RjhEQzEyNzY5MTlDMDA2QjYwMDggLyogVGV4dENoZWNraW5nSGVscGVyLmggKi87IH07CiAJCUE3
RjMzOEEzMTFDMEVGQ0EwMEEzMjBBNyAvKiBTaGFkb3dFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RjMzOEExMTFDMEVGQ0EwMEEzMjBB
NyAvKiBTaGFkb3dFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTgxMTYsNiArODExOCw4IEBACiAJCTdF
RTY4NDVEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NUUxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVzcG9u
c2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJj
ZVJlc3BvbnNlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ3
NDEyRDI2RTcwMDBFNzk0MTUgLyogUmVzb3VyY2VMb2FkZXJDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBSZXNvdXJjZUxvYWRlckNGTmV0LmNwcDsgcGF0aCA9
IGNmL1Jlc291cmNlTG9hZGVyQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4MEVBREJGNzEzMEI0N0MwMDBCQTZERUEgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgwRUFEQkY4MTMwQjQ3QzAwMEJB
NkRFQSAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ1NTU3R5bGVBcHBseVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgxQTczMjVEMTIxMDE4OUIwMEZDMEQ5RSAvKiBJREJDdXJzb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgxQTczMjVGMTIxMDE4QTQwMEZDMEQ5RSAvKiBJREJDdXJzb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQ3Vyc29yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODFBNzMyNzcxMjEwMTlFMTAwRkMwRDlFIC8qIElEQkN1cnNv
ckJhY2tlbmRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkN1cnNv
ckJhY2tlbmRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ2NCw2ICsx
ODQ2OCw4IEBACiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTgwRUFEQkY3MTMwQjQ3QzAwMEJB
NkRFQSAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwICovLAorCQkJCTgwRUFEQkY4MTMwQjQ3
QzAwMEJBNkRFQSAvKiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCAqLywKIAkJCQk5M0NBNEM5QzA5
REY5M0ZBMDBERjg2NzcgLyogbWFrZXRva2VuaXplciAqLywKIAkJCQlBODBFNkNEQTBBMTk4OUNB
MDA3RkI4QzUgLyogQ291bnRlci5oICovLAogCQkJCTkzMDcwNUM3MDlFMEM5NUYwMEIxN0ZFNCAv
KiBDb3VudGVyLmlkbCAqLywKQEAgLTIyNDIwLDYgKzIyNDI2LDcgQEAKIAkJCQk5NzVDQTI4QjEz
MDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzVDQTJBMjEz
MDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCTI2RTk4QTEw
MTMwQTlGQ0EwMDhFQjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4MEVBREJGQTEzMEI0N0MwMDBCQTZERUEgLyogQ1NTU3R5bGVBcHBseVByb3BlcnR5
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1MTAyLDYgKzI1MTA5LDcgQEAKIAkJCQlBMUUxMTU0NDEz
MDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUExRTExNTQ2MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUExRTExNTQ4MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODBFQURCRjkxMzBCNDdDMDAwQkE2REVBIC8qIENT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBK
ZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmlj
aG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdl
YmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNA
d2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU1NTdHlsZUFwcGx5UHJvcGVydHkuaCIKKworI2lu
Y2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTUmVmbGVj
dFZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCisjaW5jbHVkZSAiQ291bnRlci5oIgorI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50
LmgiCisjaW5jbHVkZSAiQ3Vyc29yTGlzdC5oIgorI2luY2x1ZGUgIkZvbnRGYW1pbHlWYWx1ZS5o
IgorI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1
ZGUgIlBhaXIuaCIKKyNpbmNsdWRlICJSZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIK
KyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgiCisjaW5jbHVk
ZSAiU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIgorCisjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMp
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiVmlzaXRlZExpbmtT
dHJhdGVneS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisjaW5j
bHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShTVkcpCisjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJYTGlua05hbWVzLmgiCisjZW5kaWYKKworI2lm
IEVOQUJMRShXTUwpCisjaW5jbHVkZSAiV01MTmFtZXMuaCIKKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oUVQpCisjaW5jbHVkZSA8cXdlYmhpc3RvcnlpbnRlcmZhY2UuaD4KKyNlbmRpZgorCit1c2lu
ZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFByb3BlcnR5
V3JhcHBlckJhc2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByb3BlcnR5V3JhcHBlckJh
c2UpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFByb3BlcnR5
V3JhcHBlckJhc2UoaW50IHByb3ApCisgICAgICAgIDogbV9wcm9wKHByb3ApCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgflByb3BlcnR5V3JhcHBlckJhc2UoKSB7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBpbmhlcml0KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGluaXRpYWwoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsdWUoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2Us
IENTU1ZhbHVlICopIGNvbnN0ID0gMDsKKworICAgIGludCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvcDsgfQorCitwcml2YXRlOgorICAgIGludCBtX3Byb3A7Cit9OworCitjbGFzcyBQ
cm9wZXJ0eVdyYXBwZXJOdWxsIDogcHVibGljIFByb3BlcnR5V3JhcHBlckJhc2UgeworcHVibGlj
OgorICAgIFByb3BlcnR5V3JhcHBlck51bGwoaW50IHByb3ApIDogUHJvcGVydHlXcmFwcGVyQmFz
ZShwcm9wKSB7fQorICAgIHZpcnR1YWwgdm9pZCBpbmhlcml0KENTU1N0eWxlU2VsZWN0b3IgKmlu
c3RhbmNlKSBjb25zdCB7VU5VU0VEX1BBUkFNKGluc3RhbmNlKTt9CisgICAgdmlydHVhbCB2b2lk
IGluaXRpYWwoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpIGNvbnN0IHtVTlVTRURfUEFSQU0o
aW5zdGFuY2UpO30KKyAgICB2aXJ0dWFsIHZvaWQgdmFsdWUoQ1NTU3R5bGVTZWxlY3RvciAqaW5z
dGFuY2UsIENTU1ZhbHVlICp2YWx1ZSkgY29uc3Qge1VOVVNFRF9QQVJBTShpbnN0YW5jZSk7IFVO
VVNFRF9QQVJBTSh2YWx1ZSk7fQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBQ
cm9wZXJ0eVdyYXBwZXJEZWZhdWx0IDogcHVibGljIFByb3BlcnR5V3JhcHBlckJhc2UgeworcHVi
bGljOgorICAgIFByb3BlcnR5V3JhcHBlckRlZmF1bHQoaW50IHByb3AsIFQgKFJlbmRlclN0eWxl
OjoqZ2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoVCksIFQgKCpp
bml0aWFsKSgpKQorICAgICAgICA6IFByb3BlcnR5V3JhcHBlckJhc2UocHJvcCkKKyAgICAgICAg
LCBtX2dldHRlcihnZXR0ZXIpCisgICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQorICAgICAgICAs
IG1faW5pdGlhbChpbml0aWFsKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5o
ZXJpdChDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSkgY29uc3QKKyAgICB7CisgICAgICAgIChp
bnN0YW5jZS0+c3R5bGUoKS0+Km1fc2V0dGVyKSgoaW5zdGFuY2UtPnBhcmVudFN0eWxlKCktPipt
X2dldHRlcikoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWwoQ1NTU3R5bGVT
ZWxlY3RvciAqaW5zdGFuY2UpIGNvbnN0CisgICAgeworICAgICAgICAoaW5zdGFuY2UtPnN0eWxl
KCktPiptX3NldHRlcikoKCptX2luaXRpYWwpKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCB2YWx1ZShDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisgICAgICAgICAgICAoaW5zdGFuY2UtPnN0eWxlKCktPiptX3NldHRlciko
KnApOworICAgICAgICB9CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgVCAoUmVuZGVyU3R5bGU6
OiptX2dldHRlcikoKSBjb25zdDsKKyAgICB2b2lkIChSZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShU
KTsKKyAgICBUICgqbV9pbml0aWFsKSgpOworfTsKKworLy8gQ1NTUHJvcGVydHlJbnZhbGlkCisK
Ky8vIENTU1Byb3BlcnR5Q29sb3IKK2NsYXNzIFByb3BlcnR5V3JhcHBlckNvbG9yQmFzZSA6IHB1
YmxpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlIHsKK3B1YmxpYzoKKyAgICBQcm9wZXJ0eVdyYXBwZXJD
b2xvckJhc2UoaW50IHByb3AsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkg
Y29uc3QsIGNvbnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OipiYWNrdXApKCkgY29uc3QsIHZvaWQg
KFJlbmRlclN0eWxlOjoqc2V0dGVyKShjb25zdCBDb2xvciYpKQorICAgICAgICA6IFByb3BlcnR5
V3JhcHBlckJhc2UocHJvcCkKKyAgICAgICAgLCBtX2dldHRlcihnZXR0ZXIpCisgICAgICAgICwg
bV9iYWNrdXAoYmFja3VwKQorICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKKyAgICB7CisgICAg
fQorICAgIHZpcnR1YWwgdm9pZCBpbmhlcml0KENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKSBj
b25zdAorICAgIHsKKyAgICAgICAgY29uc3QgQ29sb3ImIGNvbG9yID0gKGluc3RhbmNlLT5wYXJl
bnRTdHlsZSgpLT4qbV9nZXR0ZXIpKCk7CisgICAgICAgIGlmIChtX2JhY2t1cCAmJiAhY29sb3Iu
aXNWYWxpZCgpKQorICAgICAgICAgICAgKGluc3RhbmNlLT5zdHlsZSgpLT4qbV9zZXR0ZXIpKChp
bnN0YW5jZS0+cGFyZW50U3R5bGUoKS0+Km1fYmFja3VwKSgpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgKGluc3RhbmNlLT5zdHlsZSgpLT4qbV9zZXR0ZXIpKGNvbG9yKTsKKyAgICB9Cisg
ICAgdmlydHVhbCB2b2lkIGluaXRpYWwoQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2UpIGNvbnN0
CisgICAgeworICAgICAgICBDb2xvciBjb2w7CisgICAgICAgIChpbnN0YW5jZS0+c3R5bGUoKS0+
Km1fc2V0dGVyKShjb2wpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgdmFsdWUoQ1NTU3R5bGVT
ZWxlY3RvciAqaW5zdGFuY2UsIENTU1ZhbHVlICp2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
ICAgICAgICAgKGluc3RhbmNlLT5zdHlsZSgpLT4qbV9zZXR0ZXIpKGluc3RhbmNlLT5nZXRDb2xv
ckZyb21QcmltaXRpdmVWYWx1ZShwKSk7CisgICAgICAgIH0KKyAgICB9Citwcm90ZWN0ZWQ6Cisg
ICAgY29uc3QgQ29sb3ImIChSZW5kZXJTdHlsZTo6Km1fZ2V0dGVyKSgpIGNvbnN0OworICAgIGNv
bnN0IENvbG9yJiAoUmVuZGVyU3R5bGU6OiptX2JhY2t1cCkoKSBjb25zdDsKKyAgICB2b2lkIChS
ZW5kZXJTdHlsZTo6Km1fc2V0dGVyKShjb25zdCBDb2xvciYpOworfTsKKworY2xhc3MgUHJvcGVy
dHlXcmFwcGVyQ29sb3IgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyQ29sb3JCYXNlIHsKK3B1Ymxp
YzoKKyAgICBQcm9wZXJ0eVdyYXBwZXJDb2xvcihpbnQgcHJvcCwgY29uc3QgQ29sb3ImIChSZW5k
ZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNv
bnN0IENvbG9yJiksIENvbG9yICgqaW5pdGlhbFZhbHVlKSgpKQorICAgICAgICA6IFByb3BlcnR5
V3JhcHBlckNvbG9yQmFzZShwcm9wLCBnZXR0ZXIsIDAsIHNldHRlcikKKyAgICAgICAgLCBtX2lu
aXRpYWxWYWx1ZShpbml0aWFsVmFsdWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsKENTU1N0eWxlU2VsZWN0b3IgKmluc3RhbmNlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgKGluc3RhbmNlLT5zdHlsZSgpLT4qbV9zZXR0ZXIpKG1faW5pdGlhbFZhbHVlKCkpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCB2YWx1ZShDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSwg
Q1NTVmFsdWUgKnZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBpZiAocC0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikKKyAgICAgICAgICAgICAgICBpbmhlcml0
KGluc3RhbmNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQcm9wZXJ0eVdy
YXBwZXJDb2xvckJhc2U6OnZhbHVlKGluc3RhbmNlLCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9
Citwcm90ZWN0ZWQ6CisgICAgQ29sb3IgKCptX2luaXRpYWxWYWx1ZSkoKTsKK307CisKKyNkZWZp
bmUgQVNTRVJUX1ZBTElEX1BST1BFUlRZKHgpIEFTU0VSVCgoeCkgPj0gZmlyc3RDU1NQcm9wZXJ0
eSAmJiAoeCkgPCAoZmlyc3RDU1NQcm9wZXJ0eSArIG51bUNTU1Byb3BlcnRpZXMpKQorI2RlZmlu
ZSBQUk9QRVJUWV9JTkRFWCh4KSAoKHgpIC0gZmlyc3RDU1NQcm9wZXJ0eSkKKworQ1NTU3R5bGVB
cHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVydHkoKQoreworICAgIFByb3BlcnR5V3Jh
cHBlckJhc2UqIGludmFsaWQgPSBuZXcgUHJvcGVydHlXcmFwcGVyTnVsbChDU1NQcm9wZXJ0eUlu
dmFsaWQpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kp
CisgICAgICAgIG1fcHJvcGVydHlNYXBbaV0gPSBpbnZhbGlkOworCisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNvbG9yKV0gPSBuZXcgUHJvcGVydHlXcmFwcGVy
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciwgJlJlbmRlclN0eWxlOjpjb2xvciwgJlJlbmRlclN0eWxl
OjpzZXRDb2xvciwgUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcik7CisgICAgLy8gbm90IHlldCBp
bXBsZW1lbnRlZCBwcm9wZXJ0aWVzIGFyZSBzZXQgdG8gaW52YWxpZAorICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlEaXJlY3Rpb24pXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eURpc3BsYXkpXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZvbnQpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZv
bnRGYW1pbHkpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eUZvbnRTaXplKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlGb250U3R5bGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZvbnRWYXJpYW50KV0gPSBpbnZhbGlkOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlGb250V2VpZ2h0KV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlU
ZXh0UmVuZGVyaW5nKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0V3JpdGluZ01vZGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eVpvb20pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJhY2tncm91bmQpXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJhY2tncm91
bmRBdHRhY2htZW50KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKV0gPSBuZXcgUHJv
cGVydHlXcmFwcGVyQ29sb3JCYXNlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAmUmVuZGVy
U3R5bGU6OmJhY2tncm91bmRDb2xvciwgMCwgJlJlbmRlclN0eWxlOjpzZXRCYWNrZ3JvdW5kQ29s
b3IpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kSW1hZ2UpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbildID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCldID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b20pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yKV0gPSBuZXcgUHJvcGVydHlXcmFwcGVyQ29s
b3JCYXNlKENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsICZSZW5kZXJTdHlsZTo6Ym9yZGVy
Qm90dG9tQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
Qm90dG9tQ29sb3IpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cyldID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tU3R5bGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyQ29s
b3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eUJvcmRlckxlZnQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcildID0gbmV3IFByb3BlcnR5V3JhcHBlckNv
bG9yQmFzZShDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgJlJlbmRlclN0eWxlOjpib3JkZXJM
ZWZ0Q29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVm
dENvbG9yKTsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cyldID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQp
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0Q29sb3IpXSA9IG5ldyBQcm9wZXJ0eVdyYXBwZXJDb2xvckJhc2UoQ1NTUHJv
cGVydHlCb3JkZXJSaWdodENvbG9yLCAmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0Q29sb3IsICZS
ZW5kZXJTdHlsZTo6Y29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmlnaHRDb2xvcik7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5
bGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0V2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcpXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlclN0eWxlKV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJU
b3ApXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eUJvcmRlclRvcENvbG9yKV0gPSBuZXcgUHJvcGVydHlXcmFwcGVyQ29sb3JCYXNlKENTU1By
b3BlcnR5Qm9yZGVyVG9wQ29sb3IsICZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wQ29sb3IsICZSZW5k
ZXJTdHlsZTo6Y29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wQ29sb3IpOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVz
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlCb3JkZXJUb3BSaWdodFJhZGl1cyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUpXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlC
b3JkZXJXaWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5Qm90dG9tKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlCb3hTaGFkb3cpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUJveFNpemluZyldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5Q2FwdGlvblNpZGUpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNs
ZWFyKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJv
cGVydHlDbGlwKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlDb250ZW50KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50KV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlDb3VudGVyUmVzZXQpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUN1cnNv
cildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5RW1wdHlDZWxscyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5RmxvYXQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZvbnRTdHJldGNoKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlIZWlnaHQpXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUxlZnQpXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUxldHRlclNw
YWNpbmcpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eUxpc3RTdHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlMaXN0
U3R5bGVUeXBlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlNYXJnaW4pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TWFyZ2luTGVmdCldID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQp
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eU1hcmdpblRvcCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5TWF4SGVpZ2h0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlNYXhXaWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TWluSGVpZ2h0KV0gPSBpbnZhbGlkOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlNaW5XaWR0aCldID0g
aW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5T3Bh
Y2l0eSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5T3JwaGFucyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5T3V0bGluZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKV0gPSBuZXcgUHJvcGVydHlXcmFw
cGVyQ29sb3JCYXNlKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCAmUmVuZGVyU3R5bGU6Om91dGxp
bmVDb2xvciwgJlJlbmRlclN0eWxlOjpjb2xvciwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lQ29s
b3IpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlPdXRsaW5l
T2Zmc2V0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlPdXRsaW5lU3R5bGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCldID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5T3ZlcmZsb3cpXSA9IGludmFsaWQ7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU92ZXJmbG93WCld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
T3ZlcmZsb3dZKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlQYWRkaW5nKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlQYWRkaW5nTGVmdCldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5UGFkZGluZ1Jp
Z2h0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJv
cGVydHlQYWRkaW5nVG9wKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlQYWdlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcildID0gaW52YWxpZDsKKyAgICBt
X3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5UGFnZUJyZWFrQmVmb3JlKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlQ
YWdlQnJlYWtJbnNpZGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVBvaW50ZXJFdmVudHMpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVBvc2l0aW9uKV0gPSBpbnZhbGlkOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlRdW90ZXMpXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVJlc2l6ZSld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
UmlnaHQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eVNpemUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVNyYyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5U3BlYWspXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0QWxpZ24pXSA9IGludmFs
aWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlUZXh0SW5kZW50KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2gpXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaENvbG9y
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlUZXh0TGluZVRocm91Z2hNb2RlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2hTdHlsZSldID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VGV4dExpbmVUaHJv
dWdoV2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVRleHRPdmVyZmxvdyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0T3ZlcmxpbmVDb2xvcild
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
VGV4dE92ZXJsaW5lTW9kZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5VGV4dE92ZXJsaW5lU3R5bGUpXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRPdmVybGluZVdpZHRoKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlU
ZXh0U2hhZG93KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lKV0gPSBpbnZhbGlkOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lQ29s
b3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVRleHRVbmRlcmxpbmVNb2RlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5bGUpXSA9IGludmFsaWQ7Cisg
ICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVX
aWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5VG9wKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlVbmljb2RlQmlkaSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5VW5pY29kZVJhbmdlKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlWaXNp
YmlsaXR5KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlXaGl0ZVNwYWNlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXaWRvd3MpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdpZHRoKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXb3JkQnJlYWspXSA9IGludmFsaWQ7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdvcmRTcGFjaW5n
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlXb3JkV3JhcCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5WkluZGV4KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24pXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25GaWxsTW9kZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbk5hbWUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblBsYXlTdGF0ZSldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0
eSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5V2Via2l0QmFja2dyb3VuZENsaXApXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUpXSA9IGlu
dmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRPcmlnaW4pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplKV0gPSBpbnZhbGlkOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRl
cildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvcildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSldID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyQWZ0ZXJXaWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVD
b2xvcildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJFbmQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHls
ZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdCldID0gaW52YWxpZDsKKyAg
ICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9y
aXpvbnRhbFNwYWNpbmcpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXMpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yKV0gPSBpbnZhbGlkOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dFN0eWxlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdpZHRoKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNp
bmcpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVdlYmtpdEJveEFsaWduKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3hEaXJlY3Rpb24pXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJveEZsZXgpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdl
YmtpdEJveEZsZXhHcm91cCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXMpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEJveE9yZGluYWxHcm91cCld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0Qm94T3JpZW50KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVy
dHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRCb3hSZWZsZWN0KV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRC
b3hTaGFkb3cpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbildID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcild
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uQnJlYWtCZWZvcmUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrSW5zaWRlKV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRD
b2x1bW5Db3VudCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0Q29sdW1uR2FwKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlKV0gPSBpbnZhbGlk
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlQ29sb3IpXSA9IG5ldyBQcm9wZXJ0eVdyYXBwZXJDb2xvckJhc2UoQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29sdW1uUnVsZUNvbG9yLCAmUmVu
ZGVyU3R5bGU6OmNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtblJ1bGVDb2xvcik7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVT
dHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5TcGFuKV0gPSBpbnZhbGlk
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5XaWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1ucyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSldID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0SGlnaGxp
Z2h0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJv
cGVydHlXZWJraXRIeXBoZW5hdGVDaGFyYWN0ZXIpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdEh5cGhlbmF0ZUxvY2FsZSldID0g
aW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Vi
a2l0SHlwaGVucyldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRMaW5lQ2xhbXApXSA9IGludmFsaWQ7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdExvZ2lj
YWxXaWR0aCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0TG9naWNhbEhlaWdodCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJvdHRvbUNvbGxhcHNlKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BS
T1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UpXSA9IGludmFsaWQ7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCldID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
U3RhcnQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24pXSA9IGludmFsaWQ7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVJbmNyZW1lbnQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRF
WChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQp
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTdHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFzayldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tCb3hJbWFnZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXApXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUpXSA9
IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tJbWFnZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbildID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25YKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0KV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkpXSA9IGludmFsaWQ7CisgICAgbV9w
cm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGgp
XSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0
eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdE1pbkxvZ2ljYWxXaWR0aCldID0gaW52YWxp
ZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0TWlu
TG9naWNhbEhlaWdodCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0
eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdBZnRlcildID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0
UGFkZGluZ0JlZm9yZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ0VuZCldID0gaW52YWxpZDsKKyAgICBtX3Byb3Bl
cnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0UGFkZGluZ1N0YXJ0KV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4pXSA9IGludmFsaWQ7CisgICAg
bV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZyldID0g
aW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dENvbWJpbmUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9J
TkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KV0gPSBpbnZhbGlk
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXMpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yKV0gPSBuZXcgUHJvcGVydHlXcmFwcGVy
Q29sb3JCYXNlKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsICZSZW5kZXJTdHls
ZTo6dGV4dEVtcGhhc2lzQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3IsICZSZW5kZXJTdHlsZTo6
c2V0VGV4dEVtcGhhc2lzQ29sb3IpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNQb3NpdGlvbildID0gaW52YWxpZDsKKyAgICBt
X3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
U3R5bGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IpXSA9IG5ldyBQcm9wZXJ0eVdyYXBwZXJDb2xvckJh
c2UoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCAmUmVuZGVyU3R5bGU6OnRleHRGaWxs
Q29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VGV4dEZpbGxDb2xv
cik7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTZWN1cml0eSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yKV0gPSBu
ZXcgUHJvcGVydHlXcmFwcGVyQ29sb3JCYXNlKENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNv
bG9yLCAmUmVuZGVyU3R5bGU6OnRleHRTdHJva2VDb2xvciwgJlJlbmRlclN0eWxlOjpjb2xvciwg
JlJlbmRlclN0eWxlOjpzZXRUZXh0U3Ryb2tlQ29sb3IpOworICAgIG1fcHJvcGVydHlNYXBbUFJP
UEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgpXSA9IGludmFsaWQ7
CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5ZKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aKV0gPSBpbnZhbGlkOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1TdHlsZSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbildID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFw
W1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5KV0gPSBpbnZh
bGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24pXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJU
WV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSldID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VHJhbnNp
dGlvblRpbWluZ0Z1bmN0aW9uKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVS
VFlfSU5ERVgoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZyldID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSldID0g
aW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5V2Vi
a2l0VXNlclNlbGVjdCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lO
REVYKENTU1Byb3BlcnR5Q2xpcFBhdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQ
Uk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNsaXBSdWxlKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlNYXNrKV0gPSBpbnZhbGlkOworICAg
IG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlFbmFibGVCYWNrZ3JvdW5k
KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVy
dHlGaWx0ZXIpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eUZsb29kQ29sb3IpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eUZsb29kT3BhY2l0eSldID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TGlnaHRpbmdDb2xvcildID0gaW52
YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5U3RvcENv
bG9yKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJv
cGVydHlTdG9wT3BhY2l0eSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZ
X0lOREVYKENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlDb2xvckludGVycG9sYXRpb25G
aWx0ZXJzKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NT
UHJvcGVydHlDb2xvclByb2ZpbGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9Q
RVJUWV9JTkRFWChDU1NQcm9wZXJ0eUNvbG9yUmVuZGVyaW5nKV0gPSBpbnZhbGlkOworICAgIG1f
cHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlGaWxsKV0gPSBpbnZhbGlkOwor
ICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlGaWxsT3BhY2l0eSld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
RmlsbFJ1bGUpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChD
U1NQcm9wZXJ0eUltYWdlUmVuZGVyaW5nKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlNYXJrZXIpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eU1hcmtlckVuZCldID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5TWFya2VyTWlkKV0g
PSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlN
YXJrZXJTdGFydCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVY
KENTU1Byb3BlcnR5U2hhcGVSZW5kZXJpbmcpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1h
cFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVN0cm9rZSldID0gaW52YWxpZDsKKyAgICBtX3By
b3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5U3Ryb2tlRGFzaGFycmF5KV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlTdHJv
a2VEYXNob2Zmc2V0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5E
RVgoQ1NTUHJvcGVydHlTdHJva2VMaW5lY2FwKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbildID0gaW52YWxpZDsK
KyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5U3Ryb2tlTWl0ZXJs
aW1pdCldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1By
b3BlcnR5U3Ryb2tlT3BhY2l0eSldID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BF
UlRZX0lOREVYKENTU1Byb3BlcnR5U3Ryb2tlV2lkdGgpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eUFsaWdubWVudEJhc2VsaW5lKV0gPSBp
bnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlCYXNl
bGluZVNoaWZ0KV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
Q1NTUHJvcGVydHlEb21pbmFudEJhc2VsaW5lKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlN
YXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlHbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCld
ID0gaW52YWxpZDsKKyAgICBtX3Byb3BlcnR5TWFwW1BST1BFUlRZX0lOREVYKENTU1Byb3BlcnR5
R2x5cGhPcmllbnRhdGlvblZlcnRpY2FsKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBb
UFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlLZXJuaW5nKV0gPSBpbnZhbGlkOworICAgIG1fcHJv
cGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlUZXh0QW5jaG9yKV0gPSBpbnZhbGlk
OworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgoQ1NTUHJvcGVydHlWZWN0b3JFZmZl
Y3QpXSA9IGludmFsaWQ7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9w
ZXJ0eVdyaXRpbmdNb2RlKV0gPSBpbnZhbGlkOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlf
SU5ERVgoQ1NTUHJvcGVydHlXZWJraXRTdmdTaGFkb3cpXSA9IGludmFsaWQ7CisgICAgbV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChDU1NQcm9wZXJ0eVdlYmtpdERhc2hib2FyZFJlZ2lvbild
ID0gaW52YWxpZDsKK30KKwordm9pZCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OmluaGVyaXQoaW50
IHByb3BlcnR5LCBDU1NTdHlsZVNlbGVjdG9yICppbnN0YW5jZSkKK3sKKyAgICBBU1NFUlRfVkFM
SURfUFJPUEVSVFkocHJvcGVydHkpOworICAgIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgo
cHJvcGVydHkpXS0+aW5oZXJpdChpbnN0YW5jZSk7Cit9CisKK3ZvaWQgQ1NTU3R5bGVBcHBseVBy
b3BlcnR5Ojppbml0aWFsKGludCBwcm9wZXJ0eSwgQ1NTU3R5bGVTZWxlY3RvciAqaW5zdGFuY2Up
Cit7CisgICAgQVNTRVJUX1ZBTElEX1BST1BFUlRZKHByb3BlcnR5KTsKKyAgICBtX3Byb3BlcnR5
TWFwW1BST1BFUlRZX0lOREVYKHByb3BlcnR5KV0tPmluaXRpYWwoaW5zdGFuY2UpOworfQorCit2
b2lkIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6dmFsdWUoaW50IHByb3BlcnR5LCBDU1NTdHlsZVNl
bGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKnZhbHVlKQoreworICAgIEFTU0VSVF9WQUxJRF9Q
Uk9QRVJUWShwcm9wZXJ0eSk7CisgICAgbV9wcm9wZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChwcm9w
ZXJ0eSldLT52YWx1ZShpbnN0YW5jZSwgdmFsdWUpOworfQorCitib29sIENTU1N0eWxlQXBwbHlQ
cm9wZXJ0eTo6dmFsaWQoaW50IHByb3BlcnR5KQoreworICAgIGludCBpID0gUFJPUEVSVFlfSU5E
RVgocHJvcGVydHkpOworICAgIHJldHVybiBpID49IDAgJiYgaSA8IG51bUNTU1Byb3BlcnRpZXM7
Cit9CisKKy8vYm9vbCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OmltcGxlbWVudHMoaW50IHByb3Bl
cnR5KQorLy97CisvLyAgICBBU1NFUlRfVkFMSURfUFJPUEVSVFkocHJvcGVydHkpOworLy8gICAg
cmV0dXJuIG1fcHJvcGVydHlNYXBbUFJPUEVSVFlfSU5ERVgocHJvcGVydHkpXSAmJiAobV9wcm9w
ZXJ0eU1hcFtQUk9QRVJUWV9JTkRFWChwcm9wZXJ0eSldLT5wcm9wZXJ0eSgpID09IHByb3BlcnR5
KTsKKy8vfQorfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVy
dHkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJv
cGVydHkuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorI2lmbmRlZiBDU1NTdHlsZUFw
cGx5UHJvcGVydHlfaAorI2RlZmluZSBDU1NTdHlsZUFwcGx5UHJvcGVydHlfaAorCisjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENT
U1Byb3BlcnR5OworY2xhc3MgQ1NTU3R5bGVTZWxlY3RvcjsKK2NsYXNzIENTU1ZhbHVlOworY2xh
c3MgUHJvcGVydHlXcmFwcGVyQmFzZTsKKworY2xhc3MgQ1NTU3R5bGVBcHBseVByb3BlcnR5IHsK
K3B1YmxpYzoKKyAgICBDU1NTdHlsZUFwcGx5UHJvcGVydHkoKTsKKyAgICB+Q1NTU3R5bGVBcHBs
eVByb3BlcnR5KCk7CisKKyAgICB2b2lkIGluaGVyaXQoaW50IHByb3BlcnR5LCBDU1NTdHlsZVNl
bGVjdG9yICppbnN0YW5jZSk7CisgICAgdm9pZCBpbml0aWFsKGludCBwcm9wZXJ0eSwgQ1NTU3R5
bGVTZWxlY3RvciAqaW5zdGFuY2UpOworICAgIHZvaWQgdmFsdWUoaW50IHByb3BlcnR5LCBDU1NT
dHlsZVNlbGVjdG9yICppbnN0YW5jZSwgQ1NTVmFsdWUgKik7CisgICAgYm9vbCB2YWxpZChpbnQg
cHJvcGVydHkpOworICAgIC8vYm9vbCBpbXBsZW1lbnRzKGludCBwcm9wZXJ0eSk7CisKK3ByaXZh
dGU6CisgICAgUHJvcGVydHlXcmFwcGVyQmFzZSogbV9wcm9wZXJ0eU1hcFtudW1DU1NQcm9wZXJ0
aWVzXTsKK307CisKK30KKworI2VuZGlmIC8vIENTU1N0eWxlQXBwbHlQcm9wZXJ0eV9oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA3ODU4NikK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAi
Q1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRlICJD
U1NTdHlsZUFwcGx5UHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNs
dWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5o
IgpAQCAtNDg2LDYgKzQ4Nyw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3Io
RG9jdW0KICAgICAsIG1fc3R5bGVkRWxlbWVudCgwKQogICAgICwgbV9lbGVtZW50TGlua1N0YXRl
KE5vdEluc2lkZUxpbmspCiAgICAgLCBtX2ZvbnRTZWxlY3RvcihDU1NGb250U2VsZWN0b3I6OmNy
ZWF0ZShkb2N1bWVudCkpCisgICAgLCBtX2FwcGx5UHJvcGVydHkobmV3IENTU1N0eWxlQXBwbHlQ
cm9wZXJ0eSgpKQogewogICAgIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzID0gbWF0Y2hBdXRo
b3JBbmRVc2VyU3R5bGVzOwogICAgIApAQCAtMzUxNCw2ICszNTE2LDE4IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKKyAgICAvLyBkbyBkZXJlZmVyZW5jZXMgZm9yIGFsbCB2YWxpZCBwcm9wZXJ0aWVzLCBldmVu
IGlmIHRoZXkgYXJlIG5vdCBpbXBsZW1lbnRlZC4KKyAgICBpZiAobV9hcHBseVByb3BlcnR5LT52
YWxpZChpZCkpIHsKKyAgICAgIGlmIChpc0luaGVyaXQpIHsKKyAgICAgICAgICBtX2FwcGx5UHJv
cGVydHktPmluaGVyaXQoaWQsIHRoaXMpOworICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwpIHsK
KyAgICAgICAgICBtX2FwcGx5UHJvcGVydHktPmluaXRpYWwoaWQsIHRoaXMpOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICBtX2FwcGx5UHJvcGVydHktPnZhbHVlKGlkLCB0aGlzLCB2YWx1ZSk7
CisgICAgICB9CisgICAgICAvL3JldHVybjsKKyAgICB9CisKICAgICAvLyBXaGF0IGZvbGxvd3Mg
aXMgYSBsaXN0IHRoYXQgbWFwcyB0aGUgQ1NTIHByb3BlcnRpZXMgaW50byB0aGVpciBjb3JyZXNw
b25kaW5nIGZyb250LWVuZAogICAgIC8vIFJlbmRlclN0eWxlIHZhbHVlcy4gIFNob3J0aGFuZHMg
KGUuZy4gYm9yZGVyLCBiYWNrZ3JvdW5kKSBvY2N1ciBpbiB0aGlzIGxpc3QgYXMgd2VsbCBhbmQK
ICAgICAvLyBhcmUgb25seSBoaXQgd2hlbiBtYXBwaW5nICJpbmhlcml0IiBvciAiaW5pdGlhbCIg
aW50byBmcm9udC1lbmQgdmFsdWVzLgpAQCAtMzkyMiw4NyArMzkzNiw2IEBAIHZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgICAgICBtX3N0eWxlLT5z
ZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47Ci0v
LyBjb2xvcnMgfHwgaW5oZXJpdAotICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKLSAgICAgICAg
Ly8gSWYgdGhlICdjdXJyZW50Q29sb3InIGtleXdvcmQgaXMgc2V0IG9uIHRoZSAnY29sb3InIHBy
b3BlcnR5IGl0c2VsZiwKLSAgICAgICAgLy8gaXQgaXMgdHJlYXRlZCBhcyAnY29sb3I6aW5oZXJp
dCcgYXQgcGFyc2UgdGltZQotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpCi0gICAgICAgICAgICBp
c0luaGVyaXQgPSB0cnVlOwotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvcjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVy
dHlPdXRsaW5lQ29sb3I6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xv
cjoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoKLSAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dEZpbGxDb2xvcjogewotICAgICAgICBDb2xvciBjb2w7Ci0gICAgICAgIGlmIChp
c0luaGVyaXQpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IsIGJhY2tncm91bmRDb2xvciwgQmFja2dyb3VuZENvbG9yKQotICAgICAg
ICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlclRv
cENvbG9yLCBib3JkZXJUb3BDb2xvciwgY29sb3IsIEJvcmRlclRvcENvbG9yKQotICAgICAgICAg
ICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUNvbG9yLCBib3JkZXJCb3R0b21Db2xvciwgY29sb3IsIEJvcmRlckJvdHRvbUNvbG9yKQotICAg
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0Q29sb3IsIGJvcmRlclJpZ2h0Q29sb3IsIGNvbG9yLCBCb3JkZXJSaWdodENvbG9yKQot
ICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORF9XSVRIX0JBQ0tVUChDU1NQcm9wZXJ0eUJv
cmRlckxlZnRDb2xvciwgYm9yZGVyTGVmdENvbG9yLCBjb2xvciwgQm9yZGVyTGVmdENvbG9yKQot
ICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvciwg
Q29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1By
b3BlcnR5T3V0bGluZUNvbG9yLCBvdXRsaW5lQ29sb3IsIGNvbG9yLCBPdXRsaW5lQ29sb3IpCi0g
ICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZUNvbG9yLCBjb2x1bW5SdWxlQ29sb3IsIGNvbG9yLCBDb2x1bW5SdWxlQ29s
b3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCB0ZXh0U3Ryb2tlQ29sb3IsIGNvbG9yLCBUZXh0U3Ry
b2tlQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJVEhfQkFDS1VQKENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsIHRleHRFbXBoYXNpc0NvbG9yLCBjb2xv
ciwgVGV4dEVtcGhhc2lzQ29sb3IpCi0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EX1dJ
VEhfQkFDS1VQKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwgdGV4dEZpbGxDb2xvciwg
Y29sb3IsIFRleHRGaWxsQ29sb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgLy8gVGhlIGJvcmRlci9vdXRsaW5l
IGNvbG9ycyB3aWxsIGp1c3QgbWFwIHRvIHRoZSBpbnZhbGlkIGNvbG9yIHxjb2x8IGFib3ZlLiAg
VGhpcyB3aWxsIGhhdmUgdGhlCi0gICAgICAgICAgICAvLyBlZmZlY3Qgb2YgZm9yY2luZyB0aGUg
dXNlIG9mIHRoZSBjdXJyZW50Q29sb3Igd2hlbiBpdCBjb21lcyB0aW1lIHRvIGRyYXcgdGhlIGJv
cmRlcnMgKGFuZCBvZgotICAgICAgICAgICAgLy8gbm90IHBhaW50aW5nIHRoZSBiYWNrZ3JvdW5k
IHNpbmNlIHRoZSBjb2xvciB3b24ndCBiZSB2YWxpZCkuCi0gICAgICAgICAgICBpZiAoaWQgPT0g
Q1NTUHJvcGVydHlDb2xvcikKLSAgICAgICAgICAgICAgICBjb2wgPSBSZW5kZXJTdHlsZTo6aW5p
dGlhbENvbG9yKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNvbCA9IGdldENv
bG9yRnJvbVByaW1pdGl2ZVZhbHVlKHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldEJhY2tncm91bmRDb2xvcihjb2wpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcjoKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlclRvcENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6Ci0gICAgICAg
ICAgICBtX3N0eWxlLT5zZXRCb3JkZXJSaWdodENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yOgotICAgICAgICAg
ICAgbV9zdHlsZS0+c2V0Qm9yZGVyQm90dG9tQ29sb3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgotICAgICAgICAgICAg
bV9zdHlsZS0+c2V0Qm9yZGVyTGVmdENvbG9yKGNvbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29s
b3IoY29sKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3V0
bGluZUNvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0T3V0bGluZUNvbG9yKGNvbCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVDb2xvcjoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldENvbHVtblJ1bGVDb2xvcihjb2wpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ry
b2tlQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0U3Ryb2tlQ29sb3IoY29sKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzQ29sb3I6Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRUZXh0RW1waGFzaXNDb2xvcihj
b2wpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RmlsbENvbG9yOgotICAgICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dEZpbGxDb2xvcihjb2wp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVy
bjsKLSAgICB9CiAgICAgCiAvLyB1cmkgfHwgaW5oZXJpdAogICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kSW1hZ2U6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJ
KHJldmlzaW9uIDc4NTg2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBDU1NGb250RmFjZVJ1bGU7
CiBjbGFzcyBDU1NJbWFnZVZhbHVlOwogY2xhc3MgQ1NTUnVsZUxpc3Q7CiBjbGFzcyBDU1NTZWxl
Y3RvcjsKK2NsYXNzIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTsKIGNsYXNzIENTU1N0eWxlUnVsZTsK
IGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBDU1NWYWx1ZTsKQEAgLTg1LDYgKzg2LDcgQEAg
cHVibGljOgogICAgIC8vIFRoaXMgY2xhc3Mgc2VsZWN0cyBhIFJlbmRlclN0eWxlIGZvciBhIGdp
dmVuIGVsZW1lbnQgYmFzZWQgb24gYSBjb2xsZWN0aW9uIG9mIHN0eWxlc2hlZXRzLgogICAgIGNs
YXNzIENTU1N0eWxlU2VsZWN0b3IgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NT
dHlsZVNlbGVjdG9yKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBDU1NTdHlsZUFwcGx5UHJvcGVydHk7CiAgICAgcHVibGljOgogICAgICAgICBDU1NTdHls
ZVNlbGVjdG9yKERvY3VtZW50KiwgU3R5bGVTaGVldExpc3QqIGF1dGhvclNoZWV0cywgQ1NTU3R5
bGVTaGVldCogbWFwcGVkRWxlbWVudFNoZWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgIENT
U1N0eWxlU2hlZXQqIHBhZ2VVc2VyU2hlZXQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gPiogcGFnZUdyb3VwVXNlclNoZWV0cywKQEAgLTk1LDYgKzk3LDcgQEAgcHVibGljOgog
ICAgICAgICB2b2lkIHB1c2hQYXJlbnQoRWxlbWVudCogcGFyZW50KTsKICAgICAgICAgdm9pZCBw
b3BQYXJlbnQoRWxlbWVudCogcGFyZW50KTsKIAorCiAgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IHN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUgPSAwLCBib29sIGFsbG93U2hhcmluZyA9IHRydWUsIGJvb2wgcmVzb2x2ZUZvclJvb3REZWZh
dWx0ID0gZmFsc2UsIGJvb2wgbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZSk7CiAgICAg
ICAgIAogICAgICAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqLCBj
b25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYgbGlzdCk7CkBAIC0xMTEsNiArMTE0LDkg
QEAgcHVibGljOgogICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1ZG9TdHlsZUZv
ckRhdGFHcmlkQ29sdW1uSGVhZGVyKERhdGFHcmlkQ29sdW1uKiwgUmVuZGVyU3R5bGUqIHBhcmVu
dFN0eWxlKTsKICNlbmRpZgogCisgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KKyAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxl
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRTdHlsZTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKICAgICAgICAgdm9pZCBpbml0RWxlbWVu
dChFbGVtZW50Kik7CkBAIC0xMjMsOCArMTI5LDYgQEAgcHVibGljOgogICAgICAgICB2b2lkIHB1
c2hQYXJlbnRTdGFja0ZyYW1lKEVsZW1lbnQqIHBhcmVudCk7CiAgICAgICAgIHZvaWQgcG9wUGFy
ZW50U3RhY2tGcmFtZSgpOwogCi0gICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KLQogICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgV2ViS2l0Q1NTS2V5
ZnJhbWVSdWxlKiwgS2V5ZnJhbWVWYWx1ZSYpOwogCiAgICAgcHVibGljOgpAQCAtMTU2LDcgKzE2
MCw4IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHNldEZvbnRTaXplKEZv
bnREZXNjcmlwdGlvbiYsIGZsb2F0IHNpemUpOwogICAgICAgICBzdGF0aWMgZmxvYXQgZ2V0Q29t
cHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQqLCBSZW5kZXJTdHlsZSosIGJvb2wg
aXNBYnNvbHV0ZVNpemUsIGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgdXNlU1ZHWm9vbVJ1bGVz
KTsKLQorLy8gICAgICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGl2
ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVs
dGlwbGllciA9IDEsIGJvb2wgKm9rID0gMCk7CisvLyAgICAgICAgc3RhdGljIHZvaWQgYXBwbHlD
b3VudGVyTGlzdChSZW5kZXJTdHlsZSosIENTU1ZhbHVlTGlzdCosIGJvb2wgaXNSZXNldCk7CiAg
ICAgcHVibGljOgogICAgICAgICBDb2xvciBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQ
cmltaXRpdmVWYWx1ZSopIGNvbnN0OwogCkBAIC0zNDEsNiArMzQ2LDggQEAgcHVibGljOgogICAg
ICAgICBIYXNoU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBtX3NlbGVjdG9yQXR0cnM7CiAgICAgICAg
IFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+IG1fYWRkaXRpb25hbEF0dHJpYnV0
ZVN0eWxlRGVjbHM7CiAgICAgICAgIFZlY3RvcjxNZWRpYVF1ZXJ5UmVzdWx0Kj4gbV92aWV3cG9y
dERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzOworCisgICAgICAgIENTU1N0eWxlQXBwbHlQcm9w
ZXJ0eSogbV9hcHBseVByb3BlcnR5OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShy
ZXZpc2lvbiA3ODU4NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgY2xhc3MgUmVuZGVyU3R5
bGU6IHB1YmxpYyBSZWZDb3VudGVkPFJlbgogICAgIGZyaWVuZCBjbGFzcyBBbmltYXRpb25CYXNl
OyAvLyBVc2VkIGJ5IENTUyBhbmltYXRpb25zLiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1h
dGUgYmFzZWQgb2ZmIHZpc2l0ZWQgY29sb3JzLgogICAgIGZyaWVuZCBjbGFzcyBBcHBseVN0eWxl
Q29tbWFuZDsgLy8gRWRpdGluZyBoYXMgdG8gb25seSByZXZlYWwgdW52aXNpdGVkIGluZm8uCiAg
ICAgZnJpZW5kIGNsYXNzIEVkaXRpbmdTdHlsZTsgLy8gRWRpdGluZyBoYXMgdG8gb25seSByZXZl
YWwgdW52aXNpdGVkIGluZm8uCisgICAgZnJpZW5kIGNsYXNzIENTU1N0eWxlQXBwbHlQcm9wZXJ0
eTsgLy8gU2V0cyBtZW1iZXJzIGRpcmVjdGx5LgogICAgIGZyaWVuZCBjbGFzcyBDU1NTdHlsZVNl
bGVjdG9yOyAvLyBTZXRzIG1lbWJlcnMgZGlyZWN0bHkuCiAgICAgZnJpZW5kIGNsYXNzIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsgLy8gSWdub3JlcyB2aXNpdGVkIHN0eWxlcywgc28gbmVl
ZHMgdG8gYmUgYWJsZSB0byBzZWUgdW52aXNpdGVkIGluZm8uCiAgICAgZnJpZW5kIGNsYXNzIFBy
b3BlcnR5V3JhcHBlck1heWJlSW52YWxpZENvbG9yOyAvLyBVc2VkIGJ5IENTUyBhbmltYXRpb25z
LiBXZSBjYW4ndCBhbGxvdyB0aGVtIHRvIGFuaW1hdGUgYmFzZWQgb2ZmIHZpc2l0ZWQgY29sb3Jz
Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>