<?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>102901</bug_id>
          
          <creation_ts>2012-11-21 01:42:37 -0800</creation_ts>
          <short_desc>Implement CSSValue::equals(const CSSValue&amp;) to optimise CSSValue comparison</short_desc>
          <delta_ts>2013-10-17 13:05:17 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Shalamov">alexander.shalamov</assigned_to>
          <cc>alexander.shalamov</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>772631</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-11-21 01:42:37 -0800</bug_when>
    <thetext>This can immensely speed up CSSValue comparisons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778920</commentid>
    <comment_count>1</comment_count>
      <attachid>176706</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-29 04:46:06 -0800</bug_when>
    <thetext>Created attachment 176706
Patch 1

First patch for initial review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778922</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 04:50:39 -0800</bug_when>
    <thetext>Attachment 176706 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/CSSCalculationValue.h:64:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/css/CSSCalculationValue.h:65:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 2 in 68 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>778929</commentid>
    <comment_count>3</comment_count>
      <attachid>176706</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-11-29 05:08:11 -0800</bug_when>
    <thetext>Comment on attachment 176706
Patch 1

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

A small style sanity check

&gt; Source/WebCore/css/CSSValue.cpp:101
&gt; +        ;    }

inadvertent change?

&gt; Source/WebCore/css/Counter.h:49
&gt; +        &amp;&amp; listStyle() == rhs.listStyle()

Continuation lines should be indented relative to the first line

&gt; Source/WebCore/css/DashboardRegion.h:36
&gt; +        &amp;&amp; m_isCircle == rhs.m_isCircle &amp;&amp; m_isRectangle == rhs.m_isRectangle

Ditto

&gt; Source/WebCore/css/Rect.h:45
&gt; +        &amp;&amp; *m_left == *rhs.m_left &amp;&amp; *m_bottom == *rhs.m_bottom;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779920</commentid>
    <comment_count>4</comment_count>
      <attachid>176917</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-11-30 01:08:05 -0800</bug_when>
    <thetext>Created attachment 176917
Patch 2

- Removed extra &quot;;&quot; : Source/WebCore/css/CSSValue.cpp:101
- Fixed indentation for: Source/WebCore/css/Counter.h:49, Source/WebCore/css/DashboardRegion.h:36, Source/WebCore/css/Rect.h:45
- Fixed CSSCalcExpressionNode::Type enum to make style checker happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780692</commentid>
    <comment_count>5</comment_count>
      <attachid>176917</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-01 01:50:56 -0800</bug_when>
    <thetext>Comment on attachment 176917
Patch 2

Attachment 176917 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15060635</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781346</commentid>
    <comment_count>6</comment_count>
      <attachid>177233</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-12-03 05:03:36 -0800</bug_when>
    <thetext>Created attachment 177233
Patch 3

- Added #include &quot;CSSPrimitiveValueMappings.h&quot; to CSSValue.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781372</commentid>
    <comment_count>7</comment_count>
      <attachid>177233</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-03 05:39:51 -0800</bug_when>
    <thetext>Comment on attachment 177233
Patch 3

Attachment 177233 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15101481</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781617</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-12-03 10:39:06 -0800</bug_when>
    <thetext>I did not have a chance to read the patch, but I do have a comment: It’s good to implement equality checks. But it’s usually not safe to have a == operator that is virtual, since it’s so easy to slice rather than comparing correctly. I think we probably want a named function rather than the == operator here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781654</commentid>
    <comment_count>9</comment_count>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-12-03 10:59:00 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I did not have a chance to read the patch, but I do have a comment: It’s good to implement equality checks. But it’s usually not safe to have a == operator that is virtual, since it’s so easy to slice rather than comparing correctly. I think we probably want a named function rather than the == operator here.

There is no virtual operator in CSSValue, if I would have added virtual method / operator, that would have increased the size of CSSValue and it&apos;s children.

I could rename operator== to method bool CSSValue::equals(const CSSValue&amp;) const;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782620</commentid>
    <comment_count>10</comment_count>
      <attachid>177501</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2012-12-04 09:40:26 -0800</bug_when>
    <thetext>Created attachment 177501
Patch 4

- rebased to master
- Fix for win bot compilation error. CSSPrimitiveValue conversion operator was generated twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793550</commentid>
    <comment_count>11</comment_count>
      <attachid>177501</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-18 04:51:21 -0800</bug_when>
    <thetext>Comment on attachment 177501
Patch 4

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

This introduces lots of new code, some of it pretty complex, and I suspect we lack sufficient test coverage for it. Since the operators are already used it should be possible to write a layout test that systematically tests them in all the value types (at minimum verifying that equal values really compare equal).

&gt; Source/WebCore/css/CSSBasicShapes.cpp:81
&gt; +    if (type() == shape.type()) {
&gt; +        const CSSBasicShapeRectangle&amp; rhs = static_cast&lt;const CSSBasicShapeRectangle&amp;&gt;(shape);

It would be nicer to use early returns. 

if (type() != shape.type())
    return false;
...

to avoid indenting large blocks. This comment applies to many places in this patch.

&gt; Source/WebCore/css/CSSBasicShapes.cpp:82
&gt; +        return *m_x == *rhs.m_x &amp;&amp; *m_y == *rhs.m_y &amp;&amp; *m_width == *rhs.m_width &amp;&amp; *m_height == *rhs.m_height

Do we know m_x and pals can&apos;t be null? This patch has lots of unexplained dereferencing.

&gt; Source/WebCore/css/CSSBasicShapes.cpp:84
&gt; +            &amp;&amp; m_radiusX ? rhs.m_radiusX &amp;&amp; *m_radiusX == *rhs.m_radiusX : !rhs.m_radiusX
&gt; +            &amp;&amp; m_radiusY ? rhs.m_radiusY &amp;&amp; *m_radiusY == *rhs.m_radiusY : !rhs.m_radiusY;

This is fairly hard to read. It might be useful to have an inline template function for comparing CSSValue pointers. 

Some CSSValues, especially CSSPrimitiveValues are shared via CSSValuePool. Equality test should always involve pointer comparison first.

&gt; Source/WebCore/css/CSSBorderImageSliceValue.cpp:53
&gt; +bool CSSBorderImageSliceValue::operator==(const CSSBorderImageSliceValue&amp; rhs) const

I think elsewhere we generally use &apos;other&apos; as variable name in operator==. &apos;rsh&apos; sounds strange.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:1261
&gt; +    if (m_primitiveUnitType == rhs.m_primitiveUnitType)
&gt; +        switch (m_primitiveUnitType) {

Use early return.

&gt; Source/WebCore/css/CSSValue.cpp:293
&gt; +    if (m_classType == rhs.m_classType) {
&gt; +        switch (m_classType) {

Use early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793557</commentid>
    <comment_count>12</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-12-18 04:58:23 -0800</bug_when>
    <thetext>&gt; There is no virtual operator in CSSValue, if I would have added virtual method / operator, that would have increased the size of CSSValue and it&apos;s children.
&gt; 
&gt; I could rename operator== to method bool CSSValue::equals(const CSSValue&amp;) const;

This is still essentially a virtual method with vtable implemented by hand. I agree with Daring that having this as a named function would be better. CSSValue are always pointers and the required dereferencing is bug prone and looks ugly too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809137</commentid>
    <comment_count>13</comment_count>
      <attachid>183132</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2013-01-17 00:21:04 -0800</bug_when>
    <thetext>Created attachment 183132
Patch 5

Fixed patch according to Antti&apos;s comments:

- Renamed operator== to equals method
- Added template function to compare two RefPtrs that contain CSSValue objects
- Used early returns wherever possible
- Added layout test. Test creates stylesheet and then inserts html snippet with inline style that duplicates style in document stylesheet. If inline style and document style css property have equal cssvalues, inline style is removed from inserted element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809489</commentid>
    <comment_count>14</comment_count>
      <attachid>183132</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-17 10:55:20 -0800</bug_when>
    <thetext>Comment on attachment 183132
Patch 5

Attachment 183132 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/15942085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809538</commentid>
    <comment_count>15</comment_count>
      <attachid>183132</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-17 11:23:58 -0800</bug_when>
    <thetext>Comment on attachment 183132
Patch 5

Attachment 183132 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15914936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811934</commentid>
    <comment_count>16</comment_count>
      <attachid>183732</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2013-01-21 01:30:30 -0800</bug_when>
    <thetext>Created attachment 183732
Patch 6

- Fixed dashboard region value comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811965</commentid>
    <comment_count>17</comment_count>
      <attachid>183732</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-01-21 02:29:56 -0800</bug_when>
    <thetext>Comment on attachment 183732
Patch 6

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

&gt; Source/WebCore/css/CSSBasicShapes.cpp:80
&gt; +    if (type() != shape.type())

For all CSSBasicShapes, you can use the corresponding Type literal instead of type() for the sake of speed, since this-&gt;type() value is known at compile time, and there&apos;s no need to invoke another virtual method.

&gt; Source/WebCore/css/CSSGradientValue.h:59
&gt; +        &amp;&amp; compareCSSValuePtr&lt;CSSPrimitiveValue&gt;(m_position, other.m_position);

missing indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811988</commentid>
    <comment_count>18</comment_count>
      <attachid>183732</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-01-21 03:07:54 -0800</bug_when>
    <thetext>Comment on attachment 183732
Patch 6

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

r=me with some comments.

&gt; LayoutTests/cssom/cssvalue-comparison-expected.txt:4
&gt; +PASS Two CSSValues &quot;20%&quot; for property &quot;width&quot; are equal. 

This could also include a test per type sanity checking that non-equal values don&apos;t compare equal.

&gt; Source/WebCore/css/CSSValue.cpp:81
&gt; +template&lt;class ChildClassType&gt;
&gt; +inline static bool compareCSSValues(const CSSValue&amp; first, const CSSValue&amp; second)
&gt; +{
&gt; +    return static_cast&lt;const ChildClassType&amp;&gt;(first).equals(static_cast&lt;const ChildClassType&amp;&gt;(second));
&gt; +}

This helper could be just above the only function that uses it.

&gt; Source/WebCore/css/CSSValue.h:246
&gt; +    size_t size = firstVector.size();
&gt; +    if (size == secondVector.size()) {
&gt; +        for (size_t i = 0; i &lt; size; i++) {

Could do early return instead.

&gt; Source/WebCore/css/FontValue.cpp:75
&gt; +    return compareCSSValuePtr&lt;CSSPrimitiveValue&gt;(style, other.style)
&gt; +        &amp;&amp; compareCSSValuePtr&lt;CSSPrimitiveValue&gt;(variant, other.variant)
&gt; +        &amp;&amp; compareCSSValuePtr&lt;CSSPrimitiveValue&gt;(weight, other.weight)
&gt; +        &amp;&amp; compareCSSValuePtr&lt;CSSPrimitiveValue&gt;(size, other.size)
&gt; +        &amp;&amp; compareCSSValuePtr&lt;CSSPrimitiveValue&gt;(lineHeight, other.lineHeight)
&gt; +        &amp;&amp; compareCSSValuePtr&lt;CSSValueList&gt;(family, other.family);

Shouldn&apos;t the compiler be able to figure out the template argument type without providing it explicitly pretty much everywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811991</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-21 03:14:19 -0800</bug_when>
    <thetext>Excellent! Thanks for the patch. I can make a lot of improvements in the editing code now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817598</commentid>
    <comment_count>20</comment_count>
      <attachid>184951</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2013-01-28 01:24:57 -0800</bug_when>
    <thetext>Created attachment 184951
Patch 7

Fixes based on review comments from Alexander and Antti.
- Used literal to compare CSSBasicShapes type
- Fixed indent in Source/WebCore/css/CSSGradientValue.h:59
- Added test for non-equality of cssvalue objects
- Moved helper function above the function in CSSValue.cpp
- Return early in Source/WebCore/css/CSSValue.h:246
- Omit template arguments whenever possible (hopefully msvc could deduct template parameter from arguments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826353</commentid>
    <comment_count>21</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-06 05:06:11 -0800</bug_when>
    <thetext>Alexander,

Did you mean to set r? on your patch? Otherwise it is not visible in the review queue.

(In reply to comment #20)
&gt; Created an attachment (id=184951) [details]
&gt; Patch 7
&gt; 
&gt; Fixes based on review comments from Alexander and Antti.
&gt; - Used literal to compare CSSBasicShapes type
&gt; - Fixed indent in Source/WebCore/css/CSSGradientValue.h:59
&gt; - Added test for non-equality of cssvalue objects
&gt; - Moved helper function above the function in CSSValue.cpp
&gt; - Return early in Source/WebCore/css/CSSValue.h:246
&gt; - Omit template arguments whenever possible (hopefully msvc could deduct template parameter from arguments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826378</commentid>
    <comment_count>22</comment_count>
      <attachid>184951</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 05:56:19 -0800</bug_when>
    <thetext>Comment on attachment 184951
Patch 7

Rejecting attachment 184951 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-04&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 184951, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
SSShaderValue.cpp
patching file Source/WebCore/css/WebKitCSSShaderValue.h
patching file Source/WebCore/css/WebKitCSSTransformValue.h
patching file Source/WebCore/editing/EditingStyle.cpp
patching file Source/WebCore/svg/SVGColor.cpp
patching file Source/WebCore/svg/SVGColor.h
patching file Source/WebCore/svg/SVGPaint.cpp
patching file Source/WebCore/svg/SVGPaint.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16401105</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829453</commentid>
    <comment_count>23</comment_count>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2013-02-10 23:33:59 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Alexander,
&gt; 
&gt; Did you mean to set r? on your patch? Otherwise it is not visible in the review queue.
&gt; 
&gt; (In reply to comment #20)
&gt; &gt; Created an attachment (id=184951) [details] [details]
&gt; &gt; Patch 7
&gt; &gt; 
&gt; &gt; Fixes based on review comments from Alexander and Antti.
&gt; &gt; - Used literal to compare CSSBasicShapes type
&gt; &gt; - Fixed indent in Source/WebCore/css/CSSGradientValue.h:59
&gt; &gt; - Added test for non-equality of cssvalue objects
&gt; &gt; - Moved helper function above the function in CSSValue.cpp
&gt; &gt; - Return early in Source/WebCore/css/CSSValue.h:246
&gt; &gt; - Omit template arguments whenever possible (hopefully msvc could deduct template parameter from arguments)

I need to rebase it to master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829471</commentid>
    <comment_count>24</comment_count>
      <attachid>187521</attachid>
    <who name="Alexander Shalamov">alexander.shalamov</who>
    <bug_when>2013-02-11 00:28:53 -0800</bug_when>
    <thetext>Created attachment 187521
Patch 8

Rebased to master
Modified changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829538</commentid>
    <comment_count>25</comment_count>
      <attachid>187521</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 03:02:34 -0800</bug_when>
    <thetext>Comment on attachment 187521
Patch 8

Clearing flags on attachment: 187521

Committed r142444: &lt;http://trac.webkit.org/changeset/142444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829539</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 03:02:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940834</commentid>
    <comment_count>27</comment_count>
      <attachid>187521</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2013-10-17 10:53:44 -0700</bug_when>
    <thetext>Comment on attachment 187521
Patch 8

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

&gt; Source/WebCore/css/CSSGradientValue.cpp:1170
&gt; +        equalXorY == !other.m_firstX || !other.m_firstY;

This should probably be &quot;=&quot;, not &quot;==&quot;? I suppose this branch has no test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940838</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-17 10:55:36 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt; Source/WebCore/css/CSSGradientValue.cpp:1170
&gt; &gt; +        equalXorY == !other.m_firstX || !other.m_firstY;
&gt; 
&gt; This should probably be &quot;=&quot;, not &quot;==&quot;? I suppose this branch has no test?

Good catch. We should make a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940886</commentid>
    <comment_count>29</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2013-10-17 12:02:20 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; &gt; Source/WebCore/css/CSSGradientValue.cpp:1170
&gt; &gt; &gt; +        equalXorY == !other.m_firstX || !other.m_firstY;
&gt; &gt; 
&gt; &gt; This should probably be &quot;=&quot;, not &quot;==&quot;? I suppose this branch has no test?
&gt; 
&gt; Good catch. We should make a test.

I have a fix (and test) for this, will upload soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940916</commentid>
    <comment_count>30</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2013-10-17 13:05:17 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; (In reply to comment #27)
&gt; &gt; &gt; &gt; Source/WebCore/css/CSSGradientValue.cpp:1170
&gt; &gt; &gt; &gt; +        equalXorY == !other.m_firstX || !other.m_firstY;
&gt; &gt; &gt; 
&gt; &gt; &gt; This should probably be &quot;=&quot;, not &quot;==&quot;? I suppose this branch has no test?
&gt; &gt; 
&gt; &gt; Good catch. We should make a test.
&gt; 
&gt; I have a fix (and test) for this, will upload soon.

https://bugs.webkit.org/show_bug.cgi?id=122987</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176706</attachid>
            <date>2012-11-29 04:46:06 -0800</date>
            <delta_ts>2012-11-30 01:08:05 -0800</delta_ts>
            <desc>Patch 1</desc>
            <filename>webcore_cssvalue_operator_eq_1.patch</filename>
            <type>text/plain</type>
            <size>68587</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNmNkM2Q1Li43NDllMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgz
IEBACisyMDEyLTExLTI5ICBBbGV4YW5kZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZA
aW50ZWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1NWYWx1ZTo6b3BlcmF0b3I9PSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5MDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb21w
YXJpc29uIG9wZXJhdG9yIHRvIENTU1ZhbHVlIGFuZCBpdHMgY2hpbGRyZW4sIHNvIHRoYXQgdGhl
CisgICAgICAgIGNzcyB2YWx1ZXMgY291bGQgYmUgY29tcGFyZWQgZWZmaWNpZW50bHkuIEJlZm9y
ZSB0aGlzIHBhdGNoLCBDU1NWYWx1ZQorICAgICAgICBvYmplY3RzIHdlcmUgY29tcGFyZWQgdXNp
bmcgc3RyaW5ncyB0aGF0IHdlcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjc3NUZXh0KCkgbWV0aG9kLgor
CisgICAgICAgICogY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQXNwZWN0UmF0aW9WYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0Fz
cGVjdFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKENTU0FzcGVjdFJhdGlvVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1No
YXBlUmVjdGFuZ2xlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVDaXJjbGU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVs
bGlwc2U6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVBvbHln
b246Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5oOgorICAgICAg
ICAoQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSk6CisgICAgICAgIChDU1NCYXNpY1NoYXBlQ2lyY2xl
KToKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVFbGxpcHNlKToKKyAgICAgICAgKENTU0Jhc2ljU2hh
cGVQb2x5Z29uKToKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oOgorICAgICAgICAoQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjVmFsdWU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKENTU0NhbGNQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJp
bWl0aXZlVmFsdWU6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0JpbmFyeU9wZXJh
dGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnR5cGUpOgorICAgICAgICAq
IGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NDYWxjVmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52
YXNWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6Cisg
ICAgICAgIChDU1NDYW52YXNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNp
ZGVzU2hvcnRoYW5kKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAq
IGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jvc3NmYWRlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1cnNvckltYWdlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNyY1ZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5oOgorICAgICAgICAoQ1NTRm9udEZhY2VTcmNWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0Z1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6
b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAg
KENTU0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dy
YWRpZW50Q29sb3JTdG9wOjpvcGVyYXRvcj09KToKKyAgICAgICAgKENTU0xpbmVhckdyYWRpZW50
VmFsdWUpOgorICAgICAgICAoQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0lt
YWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW5oZXJpdGVkVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoQ1NTSW5o
ZXJpdGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0luaXRpYWxWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NJbml0
aWFsVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oOgorICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NSZWZs
ZWN0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmg6CisgICAgICAgIChDU1NSZWZs
ZWN0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoQ1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKENTU1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1VuaWNvZGVSYW5nZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKENTU1VuaWNvZGVSYW5n
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcGFyZUNzc1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xvbmVDU1NWYWx1ZTo6
VGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoQ1NTVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcGFyZUNzc1ZhbHVlVmVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6cmVtb3ZlQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ZhbHVlTGlzdDo6aGFzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFs
dWVMaXN0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0Lmg6CisgICAg
ICAgIChDU1NWYWx1ZUxpc3QpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KENTU1ZhcmlhYmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9Db3VudGVyLmg6CisgICAgICAgIChD
b3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAqIGNzcy9EYXNoYm9hcmRSZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhc2hib2FyZFJl
Z2lvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaDoKKyAgICAgICAgKEZvbnRGZWF0dXJlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9Gb250VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhbHVl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvRm9udFZhbHVlLmg6CisgICAgICAgIChGb250
VmFsdWUpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXhwLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVF1ZXJ5RXhwOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvUGFpci5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGFpcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChQYWlyKToKKyAgICAg
ICAgKiBjc3MvUmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEJhc2U6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoUmVjdEJhc2UpOgorICAgICAgICAqIGNzcy9TaGFkb3dWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3Nz
L1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChTaGFkb3dWYWx1ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
Z2V0NFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0
eU1hdGNoZXMpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmg6CisgICAg
ICAgIChXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1
ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmg6Cisg
ICAgICAgIChXZWJLaXRDU1NGaWx0ZXJWYWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01peEZ1bmN0aW9u
VmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUpOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdENTU1NWR0RvY3VtZW50VmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTU2hhZGVyVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNz
cy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU2hhZGVyVmFsdWUp
OgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRyaWJ1dGVF
cXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUpOgorICAgICAgICAqIHN2Zy9TVkdDb2xv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogc3ZnL1NWR0NvbG9yLmg6CisgICAgICAgIChTVkdDb2xvcik6CisgICAgICAgICogc3ZnL1NW
R1BhaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKFNWR1BhaW50KToKKwogMjAxMi0xMS0y
MyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBb
VGV4TWFwXSBSZW1vdmUgZGVwZW5kZW5jeSBvZiBUZXh0dXJlTWFwcGVyTGF5ZXIgb24gR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QXNwZWN0UmF0aW9WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9W
YWx1ZS5jcHAKaW5kZXggODMwZjhjZi4uNjc0M2M3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBc3BlY3RSYXRpb1ZhbHVlLmNwcApAQCAtMzksNiArMzksMTEgQEAgU3RyaW5nIENTU0FzcGVj
dFJhdGlvVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmc6Om51
bWJlcihtX251bWVyYXRvclZhbHVlKSArICcvJyArIFN0cmluZzo6bnVtYmVyKG1fZGVub21pbmF0
b3JWYWx1ZSk7CiB9CiAKK2Jvb2wgQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6b3BlcmF0b3I9PShjb25z
dCBDU1NBc3BlY3RSYXRpb1ZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbnVtZXJh
dG9yVmFsdWUgPT0gcmhzLm1fbnVtZXJhdG9yVmFsdWUgJiYgbV9kZW5vbWluYXRvclZhbHVlID09
IHJocy5tX2Rlbm9taW5hdG9yVmFsdWU7Cit9CisKIHZvaWQgQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NB
c3BlY3RSYXRpb1ZhbHVlLmgKaW5kZXggNWNjMzM5Mi4uMDIwZmNkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAg
ICBmbG9hdCBudW1lcmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtZXJhdG9yVmFsdWU7
IH0KICAgICBmbG9hdCBkZW5vbWluYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9kZW5vbWlu
YXRvclZhbHVlOyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQXNwZWN0UmF0aW9W
YWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNp
Y1NoYXBlcy5jcHAKaW5kZXggM2ZkYTZiMS4uMmY0ODdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuY3BwCkBAIC03NCw2ICs3NCwxOCBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZVJl
Y3RhbmdsZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIG1fcmFkaXVzWS5nZXQoKSA/IG1fcmFk
aXVzWS0+Y3NzVGV4dCgpIDogU3RyaW5nKCkpOwogfQogCitib29sIENTU0Jhc2ljU2hhcGVSZWN0
YW5nbGU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQmFzaWNTaGFwZSYgc2hhcGUpIGNvbnN0Cit7Cisg
ICAgaWYgKHR5cGUoKSA9PSBzaGFwZS50eXBlKCkpIHsKKyAgICAgICAgY29uc3QgQ1NTQmFzaWNT
aGFwZVJlY3RhbmdsZSYgcmhzID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQmFzaWNTaGFwZVJlY3Rh
bmdsZSY+KHNoYXBlKTsKKyAgICAgICAgcmV0dXJuICptX3ggPT0gKnJocy5tX3ggJiYgKm1feSA9
PSAqcmhzLm1feSAmJiAqbV93aWR0aCA9PSAqcmhzLm1fd2lkdGggJiYgKm1faGVpZ2h0ID09ICpy
aHMubV9oZWlnaHQKKyAgICAgICAgICAgICYmIG1fcmFkaXVzWCA/IHJocy5tX3JhZGl1c1ggJiYg
Km1fcmFkaXVzWCA9PSAqcmhzLm1fcmFkaXVzWCA6ICFyaHMubV9yYWRpdXNYCisgICAgICAgICAg
ICAmJiBtX3JhZGl1c1kgPyByaHMubV9yYWRpdXNZICYmICptX3JhZGl1c1kgPT0gKnJocy5tX3Jh
ZGl1c1kgOiAhcmhzLm1fcmFkaXVzWTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
ICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xl
OjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTEwNiw2ICsxMTgsMTYgQEAgU3RyaW5n
IENTU0Jhc2ljU2hhcGVDaXJjbGU6OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZENp
cmNsZVN0cmluZyhtX2NlbnRlclgtPmNzc1RleHQoKSwgbV9jZW50ZXJZLT5jc3NUZXh0KCksIG1f
cmFkaXVzLT5jc3NUZXh0KCkpOwogfQogCitib29sIENTU0Jhc2ljU2hhcGVDaXJjbGU6Om9wZXJh
dG9yPT0oY29uc3QgQ1NTQmFzaWNTaGFwZSYgc2hhcGUpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUo
KSA9PSBzaGFwZS50eXBlKCkpIHsKKyAgICAgICAgY29uc3QgQ1NTQmFzaWNTaGFwZUNpcmNsZSYg
cmhzID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQmFzaWNTaGFwZUNpcmNsZSY+KHNoYXBlKTsKKyAg
ICAgICAgcmV0dXJuICptX2NlbnRlclggPT0gKnJocy5tX2NlbnRlclggJiYgKm1fY2VudGVyWSA9
PSAqcmhzLm1fY2VudGVyWSAmJiAqbV9yYWRpdXMgPT0gKnJocy5tX3JhZGl1czsKKyAgICB9CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmlu
ZyBDU1NCYXNpY1NoYXBlQ2lyY2xlOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3Qg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTEz
Miw2ICsxNTQsMTcgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkgY29u
c3QKICAgICByZXR1cm4gYnVpbGRFbGxpcHNlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBt
X2NlbnRlclktPmNzc1RleHQoKSwgbV9yYWRpdXNYLT5jc3NUZXh0KCksIG1fcmFkaXVzWS0+Y3Nz
VGV4dCgpKTsKIH0KIAorYm9vbCBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6b3BlcmF0b3I9PShjb25z
dCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpID09IHNoYXBl
LnR5cGUoKSkgeworICAgICAgICBjb25zdCBDU1NCYXNpY1NoYXBlRWxsaXBzZSYgcmhzID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTQmFzaWNTaGFwZUVsbGlwc2UmPihzaGFwZSk7CisgICAgICAgIHJl
dHVybiAqbV9jZW50ZXJYID09ICpyaHMubV9jZW50ZXJYICYmICptX2NlbnRlclkgPT0gKnJocy5t
X2NlbnRlclkKKyAgICAgICAgICAgICYmICptX3JhZGl1c1ggPT0gKnJocy5tX3JhZGl1c1ggJiYg
Km1fcmFkaXVzWSA9PSAqcmhzLm1fcmFkaXVzWTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NCYXNpY1NoYXBlRWxs
aXBzZTo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7CkBAIC0xOTksNiArMjMyLDE2IEBAIFN0
cmluZyBDU1NCYXNpY1NoYXBlUG9seWdvbjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGJ1
aWxkUG9seWdvblN0cmluZyhtX3dpbmRSdWxlLCBwb2ludHMpOwogfQogCitib29sIENTU0Jhc2lj
U2hhcGVQb2x5Z29uOjpvcGVyYXRvcj09KGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25z
dAoreworICAgIGlmICh0eXBlKCkgPT0gc2hhcGUudHlwZSgpKSB7CisgICAgICAgIGNvbnN0IENT
U0Jhc2ljU2hhcGVQb2x5Z29uJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBl
UG9seWdvbiY+KHNoYXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZVZlY3RvcjxD
U1NQcmltaXRpdmVWYWx1ZT4obV92YWx1ZXMsIHJocy5tX3ZhbHVlcyk7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NT
QmFzaWNTaGFwZVBvbHlnb246OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNo
TWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQmFzaWNTaGFwZXMuaAppbmRleCBlZjMyMDk4Li5lMTdhMTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQmFzaWNTaGFwZXMuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0Jhc2ljU2hh
cGUmKSBjb25zdCA9IDA7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFs
IFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNT
dHJpbmcsIFN0cmluZz4mKSBjb25zdCA9IDA7CkBAIC04Miw2ICs4Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX1JF
Q1RBTkdMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAKICNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsK
QEAgLTExMyw2ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9DSVJDTEU7IH0KICAgICB2aXJ0dWFsIFN0cmlu
ZyBjc3NUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NT
QmFzaWNTaGFwZSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgdmly
dHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CkBAIC0xNDMsNiArMTQ2LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDU1NfQkFTSUNfU0hBUEVf
RUxMSVBTRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAKICNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsK
QEAgLTE3Nyw3ICsxODEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9QT0xZR09OOyB9CiAgICAgdmlydHVhbCBTdHJp
bmcgY3NzVGV4dCgpIGNvbnN0OwotCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTQmFzaWNTaGFwZSYpIGNvbnN0OwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZp
cnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0
b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJs
ZVJlZmVyZW5jZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlLmNwcAppbmRleCA3ZDFiM2RhLi42MTg5MzhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcApAQCAtNTAsNiArNTAsMTEg
QEAgU3RyaW5nIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0
CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKK2Jvb2wgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpv
cGVyYXRvcj09KGNvbnN0IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZSYgcmhzKSBjb25zdAorewor
ICAgIHJldHVybiBtX2ZpbGwgPT0gcmhzLm1fZmlsbCAmJiBtX3NsaWNlcyAmJiByaHMubV9zbGlj
ZXMgJiYgKm1fc2xpY2VzID09ICpyaHMubV9zbGljZXM7Cit9CisKIHZvaWQgQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKaW5kZXggNDg4YjRhNC4u
NjZlMTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWUuaApAQCAtNDUsNiArNDUsOCBAQCBwdWJsaWM6CiAKICAgICBRdWFkKiBzbGljZXMoKSB7IHJl
dHVybiBtX3NsaWNlcyA/IG1fc2xpY2VzLT5nZXRRdWFkVmFsdWUoKSA6IDA7IH0KIAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUmKSBjb25zdDsKKwog
ICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKIAogICAgIC8vIFRoZXNlIGZvdXIgdmFsdWVzIGFyZSB1c2VkIHRvIG1ha2UgImN1dHMi
IGluIHRoZSBib3JkZXIgaW1hZ2UuIFRoZXkgY2FuIGJlIG51bWJlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCAxYzE1OGNjLi5iODVkYzBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC05NSw2ICs5NSwx
MSBAQCBTdHJpbmcgQ1NTQ2FsY1ZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gYnVpbGRDc3NUZXh0KG1fZXhwcmVzc2lvbi0+Y3VzdG9tQ3NzVGV4dCgpKTsKIH0KIAorYm9v
bCBDU1NDYWxjVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQ2FsY1ZhbHVlJiByaHMpIGNvbnN0
Cit7CisgICAgcmV0dXJuICptX2V4cHJlc3Npb24gPT0gKnJocy5tX2V4cHJlc3Npb247Cit9CisK
ICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NDYWxjVmFsdWU6OmN1c3RvbVNl
cmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiYgdmFyaWFibGVzKSBjb25zdAogewpAQCAtMjIzLDExICsyMjgsMjAgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gMDsgICAgICAgIAogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9kZSYgcmhzKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKHR5cGUoKSA9PSByaHMudHlwZSgpKQorICAgICAgICAgICAgcmV0dXJuICptX3Zh
bHVlID09ICpzdGF0aWNfY2FzdDxjb25zdCBDU1NDYWxjUHJpbWl0aXZlVmFsdWUmPihyaHMpLm1f
dmFsdWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKICAgICAgICAgaW5mby5h
ZGRNZW1iZXIobV92YWx1ZSk7CiAgICAgfQorCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBDU1NfQ0FMQ19QUklNSVRJVkVfVkFMVUU7IH0KICAgICAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1
ZSwgYm9vbCBpc0ludGVnZXIpCkBAIC0zNTksNiArMzczLDE3IEBAIHB1YmxpYzoKICAgICB9CiAj
ZW5kaWYKIAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0NhbGNFeHByZXNz
aW9uTm9kZSYgZXhwKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHR5cGUoKSA9PSBleHAudHlw
ZSgpKSB7CisgICAgICAgICAgICBjb25zdCBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uJiByaHMgPSBz
dGF0aWNfY2FzdDxjb25zdCBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uJj4oZXhwKTsKKyAgICAgICAg
ICAgIHJldHVybiAqbV9sZWZ0U2lkZSA9PSAqcmhzLm1fbGVmdFNpZGUgJiYgKm1fcmlnaHRTaWRl
ID09ICpyaHMubV9yaWdodFNpZGUgJiYgbV9vcGVyYXRvciA9PSByaHMubV9vcGVyYXRvcjsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdmlydHVhbCBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBDU1NfQ0FMQ19CSU5BUllfT1BFUkFUSU9OOyB9CisKIHBy
aXZhdGU6CiAgICAgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbihQYXNzUmVmUHRyPENTU0NhbGNFeHBy
ZXNzaW9uTm9kZT4gbGVmdFNpZGUsIFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBy
aWdodFNpZGUsIENhbGNPcGVyYXRvciBvcCwgQ2FsY3VsYXRpb25DYXRlZ29yeSBjYXRlZ29yeSkK
ICAgICAgICAgOiBDU1NDYWxjRXhwcmVzc2lvbk5vZGUoY2F0ZWdvcnksIGxlZnRTaWRlLT5pc0lu
dGVnZXIoKSAmJiByaWdodFNpZGUtPmlzSW50ZWdlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmgKaW5kZXggMDQ0Y2YzMi4uZmNhMTAxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC02MCw3ICs2MCwxMSBAQCBlbnVtIENhbGN1
bGF0aW9uQ2F0ZWdvcnkgewogICAgIAogY2xhc3MgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiB7CiBwdWJsaWM6Ci0gICAgCisg
ICAgZW51bSBUeXBlIHsKKyAgICAgICAgQ1NTX0NBTENfUFJJTUlUSVZFX1ZBTFVFID0gMSwKKyAg
ICAgICAgQ1NTX0NBTENfQklOQVJZX09QRVJBVElPTgorICAgIH07CisKICAgICB2aXJ0dWFsIH5D
U1NDYWxjRXhwcmVzc2lvbk5vZGUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzWmVybygpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiB0b0Nh
bGNWYWx1ZShSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSB6b29t
ID0gMS4wKSBjb25zdCA9IDA7ICAgIApAQCAtNzEsOSArNzUsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0
b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFy
aWFibGVSZWZlcmVuY2UoKSBjb25zdCA9IDA7CiAjZW5kaWYKLQorICAgIHZpcnR1YWwgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9kZSYpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0ID0g
MDsKLSAgICAKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKKwogICAgIENhbGN1
bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkoKSBjb25zdCB7IHJldHVybiBtX2NhdGVnb3J5OyB9ICAg
IAogICAgIGJvb2wgaXNJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pc0ludGVnZXI7IH0KICAg
ICAKQEAgLTEwNCw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGNvbXB1dGVMZW5ndGhQ
eChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3Vi
bGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKSBjb25z
dDsKICAgICAgICAgCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ1NTQ2FsY1ZhbHVlJikgY29uc3Q7CiAjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCiAgICAgU3RyaW5nIGN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhj
b25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwogICAgIGJvb2wgaGFz
VmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYW52YXNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwCmluZGV4IDNhZWExN2MuLjM3MTBiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYW52YXNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1Zh
bHVlLmNwcApAQCAtOTYsNiArOTYsMTEgQEAgUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFs
dWU6OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIC8KICAgICBy
ZXR1cm4gZWx0LT5jb3BpZWRJbWFnZSgpOwogfQogCitib29sIENTU0NhbnZhc1ZhbHVlOjpvcGVy
YXRvcj09KGNvbnN0IENTU0NhbnZhc1ZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bmFtZSA9PSByaHMubV9uYW1lOworfQorCiB2b2lkIENTU0NhbnZhc1ZhbHVlOjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBX
ZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FudmFzVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oCmlu
ZGV4IDEzZmI1ODcuLmE4YjlkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YW52YXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oCkBA
IC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVy
KikgeyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQ2FudmFzVmFsdWUmKSBjb25z
dDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYjEyN2FhOS4uYTEzMmI5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTI1MzUsNyArMjUzNSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAg
ICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHQsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCB9OwogICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOyArK2kpIHsK
LSAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmNzc1RleHQoKSAhPSAgZ2V0UHJvcGVydHlDU1NW
YWx1ZShwcm9wZXJ0aWVzW2ldLCBEb05vdFVwZGF0ZUxheW91dCktPmNzc1RleHQoKSkKKyAgICAg
ICAgICAgICAgICBpZiAoKnZhbHVlICE9ICAqZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVz
W2ldLCBEb05vdFVwZGF0ZUxheW91dCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsKQEAgLTI3
NjAsNyArMjc2MCw3IEBAIGJvb2wgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQcm9w
ZXJ0eU1hdGNoZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldDo6UHJvCiAgICAgICAgIH0KICAgICB9
CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVy
dHkuaWQoKSk7Ci0gICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLT5jc3NUZXh0KCkgPT0gcHJvcGVy
dHkudmFsdWUoKS0+Y3NzVGV4dCgpOworICAgIHJldHVybiB2YWx1ZSAmJiAqdmFsdWUgPT0gKnBy
b3BlcnR5LnZhbHVlKCk7CiB9CiAKIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjb3B5KCkgY29uc3QKQEAgLTI3OTYsOSArMjc5Niw5IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkCiAgICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1
ZSB8fCAhYm90dG9tVmFsdWUgfHwgIWxlZnRWYWx1ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBib29sIHNob3dMZWZ0ID0gcmlnaHRWYWx1ZS0+Y3NzVGV4dCgpICE9IGxlZnRWYWx1ZS0+Y3Nz
VGV4dCgpOwotICAgIGJvb2wgc2hvd0JvdHRvbSA9ICh0b3BWYWx1ZS0+Y3NzVGV4dCgpICE9IGJv
dHRvbVZhbHVlLT5jc3NUZXh0KCkpIHx8IHNob3dMZWZ0OwotICAgIGJvb2wgc2hvd1JpZ2h0ID0g
KHRvcFZhbHVlLT5jc3NUZXh0KCkgIT0gcmlnaHRWYWx1ZS0+Y3NzVGV4dCgpKSB8fCBzaG93Qm90
dG9tOworICAgIGJvb2wgc2hvd0xlZnQgPSAqcmlnaHRWYWx1ZSAhPSAqbGVmdFZhbHVlOworICAg
IGJvb2wgc2hvd0JvdHRvbSA9ICgqdG9wVmFsdWUgIT0gKmJvdHRvbVZhbHVlKSB8fCBzaG93TGVm
dDsKKyAgICBib29sIHNob3dSaWdodCA9ICgqdG9wVmFsdWUgIT0gKnJpZ2h0VmFsdWUpIHx8IHNo
b3dCb3R0b207CiAKICAgICBsaXN0LT5hcHBlbmQodG9wVmFsdWUpOwogICAgIGlmIChzaG93Umln
aHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRleCAxMjY3MzRm
Li41NmJjZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKQEAg
LTE5OSw0ICsxOTksOSBAQCBib29sIENTU0Nyb3NzZmFkZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNl
bGVkU3VicmVzb3VyY2VzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ1NT
Q3Jvc3NmYWRlVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmIHJocykg
Y29uc3QKK3sKKyAgICByZXR1cm4gKm1fZnJvbVZhbHVlID09ICpyaHMubV9mcm9tVmFsdWUgJiYg
Km1fdG9WYWx1ZSA9PSAqcmhzLm1fdG9WYWx1ZSAmJiAqbV9wZXJjZW50YWdlVmFsdWUgPT0gKnJo
cy5tX3BlcmNlbnRhZ2VWYWx1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAppbmRleCBjYjA3YWJjLi43ZDMyYzJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaApAQCAtNjQsNiArNjQsOCBAQCBwdWJs
aWM6CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsK
IAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYpIGNvbnN0Owor
CiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFs
dWUuY3BwCmluZGV4IGVlZjBhNDcuLmE3Yzg2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTE0OSw2ICsxNDksMTEgQEAgdm9pZCBDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpyZW1vdmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50KQog
fQogI2VuZGlmCiAKK2Jvb2wgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBD
U1NDdXJzb3JJbWFnZVZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGFzSG90U3Bv
dCA/IHJocy5tX2hhc0hvdFNwb3QgJiYgbV9ob3RTcG90ID09IHJocy5tX2hvdFNwb3QgOiAhcmhz
Lm1faGFzSG90U3BvdDsKK30KKwogdm9pZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBX
ZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdl
VmFsdWUuaAppbmRleCA4MGQzZjE1Li4yMDFhNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlUmVmZXJlbmNlZEVsZW1lbnQoU1ZHRWxlbWVudCopOwogI2VuZGlmCiAKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCBy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4
IDBkMWZhMTAuLmIzYTNmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5jcHAKQEAgLTEwNCw2ICsxMDQsMTEgQEAgQ2FjaGVkRm9udCogQ1NTRm9udEZhY2VTcmNW
YWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIG1fY2FjaGVk
Rm9udC5nZXQoKTsKIH0KIAorYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjpvcGVyYXRvcj09KGNv
bnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0xv
Y2FsID09IHJocy5tX2lzTG9jYWwgJiYgbV9mb3JtYXQgPT0gcmhzLm1fZm9ybWF0ICYmIG1fcmVz
b3VyY2UgPT0gcmhzLm1fcmVzb3VyY2U7Cit9CisKIHZvaWQgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmgKaW5kZXggYTJjNTQ2Ni4uMGQ3ZDk2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKIAog
ICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoRG9jdW1lbnQqKTsKIAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAKaW5kZXggYmMyNzBkZS4u
MjgzYzYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcApAQCAtNTIs
NiArNTIsMTEgQEAgU3RyaW5nIENTU0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25z
dAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBDU1NGdW5jdGlvblZh
bHVlOjpvcGVyYXRvcj09KGNvbnN0IENTU0Z1bmN0aW9uVmFsdWUmIHJocykgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9uYW1lID09IHJocy5tX25hbWUgJiYgbV9hcmdzID8gcmhzLm1fYXJncyAmJiAq
bV9hcmdzID09ICpyaHMubV9hcmdzIDogIXJocy5tX2FyZ3M7Cit9CisKIHZvaWQgQ1NTRnVuY3Rp
b25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGdW5jdGlvblZhbHVlLmgKaW5kZXggNmI3ZmJjNi4uNzI2MTU2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ1NTRnVuY3Rpb25WYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCmluZGV4IGQwMGMxMzAuLjI2ZGY2NGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTYzNSw2ICs2MzUsMzAg
QEAgUGFzc1JlZlB0cjxHcmFkaWVudD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3Jh
ZGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXIKICAgICByZXR1cm4gZ3JhZGllbnQucmVsZWFzZSgp
OwogfQogCitib29sIENTU0xpbmVhckdyYWRpZW50VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NT
TGluZWFyR3JhZGllbnRWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIGlmIChtX2RlcHJlY2F0ZWRU
eXBlKQorICAgICAgICByZXR1cm4gcmhzLm1fZGVwcmVjYXRlZFR5cGUgJiYgKm1fZmlyc3RYID09
ICpyaHMubV9maXJzdFggJiYgKm1fZmlyc3RZID09ICpyaHMubV9maXJzdFkKKyAgICAgICAgICAg
ICYmICptX3NlY29uZFggPT0gKnJocy5tX3NlY29uZFggJiYgKm1fc2Vjb25kWSA9PSAqcmhzLm1f
c2Vjb25kWSAmJiBtX3N0b3BzID09IHJocy5tX3N0b3BzOworCisgICAgYm9vbCBlcXVhbFJlcGVh
dGluZyA9IG1fcmVwZWF0aW5nID09IHJocy5tX3JlcGVhdGluZzsKKyAgICBib29sIGVxdWFsWG9y
WSA9IGZhbHNlOworCisgICAgaWYgKG1fYW5nbGUpCisgICAgICAgIHJldHVybiByaHMubV9hbmds
ZSAmJiAqbV9hbmdsZSA9PSAqcmhzLm1fYW5nbGUgJiYgbV9zdG9wcyA9PSByaHMubV9zdG9wcyAm
JiBlcXVhbFJlcGVhdGluZzsKKworICAgIGlmIChtX2ZpcnN0WCAmJiBtX2ZpcnN0WSkKKyAgICAg
ICAgZXF1YWxYb3JZID0gcmhzLm1fZmlyc3RYICYmIHJocy5tX2ZpcnN0WSAmJiAqbV9maXJzdFgg
PT0gKnJocy5tX2ZpcnN0WCAmJiAqbV9maXJzdFkgPT0gKnJocy5tX2ZpcnN0WTsKKyAgICBlbHNl
IGlmIChtX2ZpcnN0WCkKKyAgICAgICAgZXF1YWxYb3JZID0gcmhzLm1fZmlyc3RYICYmICptX2Zp
cnN0WCA9PSAqcmhzLm1fZmlyc3RYICYmICFyaHMubV9maXJzdFk7CisgICAgZWxzZSBpZiAobV9m
aXJzdFkpCisgICAgICAgIGVxdWFsWG9yWSA9IHJocy5tX2ZpcnN0WSAmJiAqbV9maXJzdFkgPT0g
KnJocy5tX2ZpcnN0WSAmJiAhcmhzLm1fZmlyc3RYOworICAgIGVsc2UKKyAgICAgICAgZXF1YWxY
b3JZID0gIXJocy5tX2ZpcnN0WCB8fCAhcmhzLm1fZmlyc3RZOworCisgICAgcmV0dXJuIGVxdWFs
UmVwZWF0aW5nICYmIGVxdWFsWG9yWSAmJiAhcmhzLm1fYW5nbGUgJiYgbV9zdG9wcyA9PSByaHMu
bV9zdG9wczsKK30KKwogdm9pZCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
IHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJD
b3JlTWVtb3J5VHlwZXM6OkNTUyk7CkBAIC05NjAsNiArOTg0LDQzIEBAIFBhc3NSZWZQdHI8R3Jh
ZGllbnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVj
dCogcmVuZGVyCiAgICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2UoKTsKIH0KIAorYm9vbCBDU1NS
YWRpYWxHcmFkaWVudFZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFs
dWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAobV9kZXByZWNhdGVkVHlwZSkKKyAgICAgICAgcmV0
dXJuIHJocy5tX2RlcHJlY2F0ZWRUeXBlICYmICptX2ZpcnN0WCA9PSAqcmhzLm1fZmlyc3RYICYm
ICptX2ZpcnN0WSA9PSAqcmhzLm1fZmlyc3RZCisgICAgICAgICAgICAmJiAqbV9zZWNvbmRYID09
ICpyaHMubV9zZWNvbmRYICYmICptX3NlY29uZFkgPT0gKnJocy5tX3NlY29uZFkgJiYgKm1fZmly
c3RSYWRpdXMgPT0gKnJocy5tX2ZpcnN0UmFkaXVzCisgICAgICAgICAgICAmJiAqbV9zZWNvbmRS
YWRpdXMgPT0gKnJocy5tX3NlY29uZFJhZGl1cyAmJiBtX3N0b3BzID09IHJocy5tX3N0b3BzOwor
CisgICAgYm9vbCBlcXVhbFJlcGVhdGluZyA9IG1fcmVwZWF0aW5nID09IHJocy5tX3JlcGVhdGlu
ZzsKKyAgICBib29sIGVxdWFsWG9yWSA9IGZhbHNlOworCisgICAgaWYgKG1fZmlyc3RYICYmIG1f
Zmlyc3RZKQorICAgICAgICBlcXVhbFhvclkgPSByaHMubV9maXJzdFggJiYgcmhzLm1fZmlyc3RZ
ICYmICptX2ZpcnN0WCA9PSAqcmhzLm1fZmlyc3RYICYmICptX2ZpcnN0WSA9PSAqcmhzLm1fZmly
c3RZOworICAgIGVsc2UgaWYgKG1fZmlyc3RYKQorICAgICAgICBlcXVhbFhvclkgPSByaHMubV9m
aXJzdFggJiYgKm1fZmlyc3RYID09ICpyaHMubV9maXJzdFggJiYgIXJocy5tX2ZpcnN0WTsKKyAg
ICBlbHNlIGlmIChtX2ZpcnN0WSkKKyAgICAgICAgZXF1YWxYb3JZID0gcmhzLm1fZmlyc3RZICYm
ICptX2ZpcnN0WSA9PSAqcmhzLm1fZmlyc3RZICYmICFyaHMubV9maXJzdFg7CisgICAgZWxzZQor
ICAgICAgICBlcXVhbFhvclkgPT0gIXJocy5tX2ZpcnN0WCB8fCAhcmhzLm1fZmlyc3RZOworCisg
ICAgYm9vbCBlcXVhbFNoYXBlID0gdHJ1ZTsKKyAgICBib29sIGVxdWFsU2l6aW5nQmVoYXZpb3Ig
PSB0cnVlOworICAgIGJvb2wgZXF1YWxIb3Jpem9udGFsQW5kVmVydGljYWxTaXplID0gdHJ1ZTsK
KworICAgIGlmIChtX3NoYXBlKQorICAgICAgICBlcXVhbFNoYXBlID0gcmhzLm1fc2hhcGUgJiYg
Km1fc2hhcGUgPT0gKnJocy5tX3NoYXBlOworICAgIGVsc2UgaWYgKG1fc2l6aW5nQmVoYXZpb3Ip
CisgICAgICAgIGVxdWFsU2l6aW5nQmVoYXZpb3IgPSByaHMubV9zaXppbmdCZWhhdmlvciAmJiAq
bV9zaXppbmdCZWhhdmlvciA9PSAqcmhzLm1fc2l6aW5nQmVoYXZpb3I7CisgICAgZWxzZSBpZiAo
bV9lbmRIb3Jpem9udGFsU2l6ZSAmJiBtX2VuZFZlcnRpY2FsU2l6ZSkKKyAgICAgICAgZXF1YWxI
b3Jpem9udGFsQW5kVmVydGljYWxTaXplID0gcmhzLm1fZW5kSG9yaXpvbnRhbFNpemUgJiYgcmhz
Lm1fZW5kVmVydGljYWxTaXplICYmICpyaHMubV9lbmRIb3Jpem9udGFsU2l6ZSA9PSAqbV9lbmRI
b3Jpem9udGFsU2l6ZSAmJiAqcmhzLm1fZW5kVmVydGljYWxTaXplID09ICptX2VuZFZlcnRpY2Fs
U2l6ZTsKKyAgICBlbHNlIHsKKyAgICAgICAgZXF1YWxTaGFwZSA9ICFyaHMubV9zaGFwZTsKKyAg
ICAgICAgZXF1YWxTaXppbmdCZWhhdmlvciA9ICFyaHMubV9zaXppbmdCZWhhdmlvcjsKKyAgICAg
ICAgZXF1YWxIb3Jpem9udGFsQW5kVmVydGljYWxTaXplID0gIXJocy5tX2VuZEhvcml6b250YWxT
aXplICYmICFyaHMubV9lbmRWZXJ0aWNhbFNpemU7CisgICAgfQorICAgIHJldHVybiBlcXVhbFJl
cGVhdGluZyAmJiBlcXVhbFhvclkgJiYgZXF1YWxTaGFwZSAmJiBlcXVhbFNpemluZ0JlaGF2aW9y
ICYmIGVxdWFsSG9yaXpvbnRhbEFuZFZlcnRpY2FsU2l6ZSAmJiBtX3N0b3BzID09IHJocy5tX3N0
b3BzOworfQorCiB2b2lkIENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewog
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVN
ZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFk
aWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4
IDFlNWU3ZTIuLmUxZDQ3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFk
aWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaApA
QCAtNDYsNiArNDYsMTEgQEAgc3RydWN0IENTU0dyYWRpZW50Q29sb3JTdG9wIHsKICAgICBDb2xv
ciBtX3Jlc29sdmVkQ29sb3I7CiAgICAgYm9vbCBtX2NvbG9ySXNEZXJpdmVkRnJvbUVsZW1lbnQ7
CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wJiByaHMpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9jb2xvciA/IHJocy5tX2NvbG9yICYmICptX2NvbG9y
ID09ICpyaHMubV9jb2xvciA6ICFyaHMubV9jb2xvcgorICAgICAgICAmJiBtX3Bvc2l0aW9uID8g
cmhzLm1fcG9zaXRpb24gJiYgKm1fcG9zaXRpb24gPT0gKnJocy5tX3Bvc2l0aW9uIDogIXJocy5t
X3Bvc2l0aW9uOworICAgIH0KIH07CiAKIGNsYXNzIENTU0dyYWRpZW50VmFsdWUgOiBwdWJsaWMg
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CkBAIC0xNDIsNiArMTQ3LDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0xpbmVhckdyYWRpZW50VmFsdWUoKnRoaXMpKTsK
ICAgICB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTTGluZWFyR3JhZGllbnRWYWx1
ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMTg1LDYgKzE5Miw4IEBAIHB1Ymxp
YzoKICAgICAvLyBDcmVhdGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCiAgICAgUGFz
c1JlZlB0cjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50
U2l6ZSYpOwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFs
dWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZh
bHVlLmNwcAppbmRleCBjM2Y0ZjYzLi40Y2JmOTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
VmFsdWUuY3BwCkBAIC0xMjAsNiArMTIwLDExIEBAIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6aGFzRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0CiAgICAgcmV0dXJuIGNhY2hlZFJlc291
cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpOwogfQogCitib29sIENTU0ltYWdlVmFsdWU6Om9w
ZXJhdG9yPT0oY29uc3QgQ1NTSW1hZ2VWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBt
X3VybCA9PSByaHMubV91cmw7Cit9CisKIFN0cmluZyBDU1NJbWFnZVZhbHVlOjpjdXN0b21Dc3NU
ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZCht
X3VybCkgKyAiKSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCA1Y2Y1YTFmLi4y
MGVlN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAgLTQ5LDYgKzQ5LDggQEAg
cHVibGljOgogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29u
c3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTSW1hZ2VWYWx1ZSYpIGNvbnN0Owor
CiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW5oZXJpdGVkVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5o
CmluZGV4IDY4YzAwMWYuLmNhNGNkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbmhlcml0ZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRW
YWx1ZS5oCkBAIC0zNSw2ICszNSw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NU
ZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTSW5oZXJpdGVkVmFs
dWUmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKaW5kZXggZDUyMzM0My4uOTNiNzcyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaApAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzSW1wbGljaXQoKSBjb25zdCB7IHJldHVybiBtX2lzSW1wbGljaXQ7IH0KIAorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NJbml0aWFsVmFsdWUmKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVC
b3hDb250YWluVmFsdWUuaAppbmRleCBlZWI2NDcwLi4zZDg5NWM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7Ci0KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ1NTTGluZUJveENvbnRhaW5WYWx1ZSYgcmhzKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlID09IHJocy5tX3ZhbHVlOyB9CiAgICAgTGluZUJveENvbnRhaW4gdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBjNjcyNmNkLi5hODY5NzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTEyNTUsNiArMTI1NSw4MSBAQCBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6Y2xvbmVGb3JDU1NP
TSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcmhzKSBjb25zdAoreworICAg
IGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlID09IHJocy5tX3ByaW1pdGl2ZVVuaXRUeXBlKQorICAg
ICAgICBzd2l0Y2ggKG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKKyAgICAgICAgY2FzZSBDU1NfVU5L
Tk9XTjoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBDU1NfTlVNQkVS
OgorICAgICAgICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKKyAgICAgICAgY2FzZSBDU1NfUEVS
Q0VOVEFHRToKKyAgICAgICAgY2FzZSBDU1NfRU1TOgorICAgICAgICBjYXNlIENTU19FWFM6Cisg
ICAgICAgIGNhc2UgQ1NTX1JFTVM6CisgICAgICAgIGNhc2UgQ1NTX1BYOgorICAgICAgICBjYXNl
IENTU19DTToKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pIHx8IEVOQUJMRShSRVNP
TFVUSU9OX01FRElBX1FVRVJZKQorICAgICAgICBjYXNlIENTU19EUFBYOgorICAgICAgICBjYXNl
IENTU19EUEk6CisgICAgICAgIGNhc2UgQ1NTX0RQQ006CisjZW5kaWYKKyAgICAgICAgY2FzZSBD
U1NfTU06CisgICAgICAgIGNhc2UgQ1NTX0lOOgorICAgICAgICBjYXNlIENTU19QVDoKKyAgICAg
ICAgY2FzZSBDU1NfUEM6CisgICAgICAgIGNhc2UgQ1NTX0RFRzoKKyAgICAgICAgY2FzZSBDU1Nf
UkFEOgorICAgICAgICBjYXNlIENTU19HUkFEOgorICAgICAgICBjYXNlIENTU19NUzoKKyAgICAg
ICAgY2FzZSBDU1NfUzoKKyAgICAgICAgY2FzZSBDU1NfSFo6CisgICAgICAgIGNhc2UgQ1NTX0tI
WjoKKyAgICAgICAgY2FzZSBDU1NfVFVSTjoKKyAgICAgICAgY2FzZSBDU1NfVlc6CisgICAgICAg
IGNhc2UgQ1NTX1ZIOgorICAgICAgICBjYXNlIENTU19WTUlOOgorICAgICAgICBjYXNlIENTU19E
SU1FTlNJT046CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS5udW0gPT0gcmhzLm1fdmFsdWUu
bnVtOworICAgICAgICBjYXNlIENTU19JREVOVDoKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZU9y
UHJvcGVydHlOYW1lKG1fdmFsdWUuaWRlbnQpID09IHZhbHVlT3JQcm9wZXJ0eU5hbWUocmhzLm1f
dmFsdWUuaWRlbnQpOworICAgICAgICBjYXNlIENTU19TVFJJTkc6CisgICAgICAgIGNhc2UgQ1NT
X1VSSToKKyAgICAgICAgY2FzZSBDU1NfQVRUUjoKKyAgICAgICAgY2FzZSBDU1NfQ09VTlRFUl9O
QU1FOgorICAgICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKKyAgICAgICAgY2FzZSBD
U1NfUEFSU0VSX0hFWENPTE9SOgorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgICAgICBj
YXNlIENTU19WQVJJQUJMRV9OQU1FOgorI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gZXF1YWwo
bV92YWx1ZS5zdHJpbmcsIHJocy5tX3ZhbHVlLnN0cmluZyk7CisgICAgICAgIGNhc2UgQ1NTX0NP
VU5URVI6CisgICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUuY291bnRlciA9PSAqcmhzLm1fdmFs
dWUuY291bnRlcjsKKyAgICAgICAgY2FzZSBDU1NfUkVDVDoKKyAgICAgICAgICAgIHJldHVybiAq
bV92YWx1ZS5yZWN0ID09ICpyaHMubV92YWx1ZS5yZWN0OworICAgICAgICBjYXNlIENTU19RVUFE
OgorICAgICAgICAgICAgcmV0dXJuICptX3ZhbHVlLnF1YWQgPT0gKnJocy5tX3ZhbHVlLnF1YWQ7
CisgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgorICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUu
cmdiY29sb3IgPT0gcmhzLm1fdmFsdWUucmdiY29sb3I7CisgICAgICAgIGNhc2UgQ1NTX1BBSVI6
CisgICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUucGFpciA9PSAqcmhzLm1fdmFsdWUucGFpcjsK
KyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCisgICAgICAgIGNhc2UgQ1NTX0RBU0hCT0FS
RF9SRUdJT046IHsKKyAgICAgICAgICAgIERhc2hib2FyZFJlZ2lvbiogcmVnaW9uID0gZ2V0RGFz
aGJvYXJkUmVnaW9uVmFsdWUoKTsKKyAgICAgICAgICAgIERhc2hib2FyZFJlZ2lvbiogcmhzUmVn
aW9uID0gcmhzLmdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4g
cmVnaW9uID8gcmhzUmVnaW9uICYmICpyZWdpb24gPT0gKnJoc1JlZ2lvbiA6ICFyaHNSZWdpb247
CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6Cisg
ICAgICAgICAgICByZXR1cm4gbV92YWx1ZS5pZGVudCA9PSByaHMubV92YWx1ZS5pZGVudDsKKyAg
ICAgICAgY2FzZSBDU1NfQ0FMQzoKKyAgICAgICAgICAgIHJldHVybiAqbV92YWx1ZS5jYWxjID09
ICpyaHMubV92YWx1ZS5jYWxjOworICAgICAgICBjYXNlIENTU19TSEFQRToKKyAgICAgICAgICAg
IHJldHVybiAqbV92YWx1ZS5zaGFwZSA9PSAqcmhzLm1fdmFsdWUuc2hhcGU7CisgICAgICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmgKaW5kZXggZmNjNWI4My4uM2E1ZTgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmgKQEAgLTMxNSw2ICszMTUsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q1NT
T01TYWZlKCkgeyBtX2lzQ1NTT01TYWZlID0gdHJ1ZTsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCmluZGV4IDk0MzlkNjAuLjIxNjExMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCkBAIC02Nyw2ICs2NywxMiBA
QCB2b2lkIENTU1JlZmxlY3RWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mIHVybHMsIGNvbnN0IFN0eQogICAgICAgICBtX21hc2stPmFkZFN1YnJlc291cmNl
U3R5bGVVUkxzKHVybHMsIHN0eWxlU2hlZXQpOwogfQogCitib29sIENTU1JlZmxlY3RWYWx1ZTo6
b3BlcmF0b3I9PShjb25zdCBDU1NSZWZsZWN0VmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9kaXJlY3Rpb24gPT0gcmhzLm1fZGlyZWN0aW9uICYmICptX29mZnNldCA9PSAqcmhzLm1f
b2Zmc2V0CisgICAgICAgICYmIG1fbWFzayA/IHJocy5tX21hc2sgJiYgKm1fbWFzayA9PSAqcmhz
Lm1fbWFzayA6ICFyaHMubV9tYXNrOworfQorCiB2b2lkIENTU1JlZmxlY3RWYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1
ZS5oCmluZGV4IDFiZGZkNWYuLmNhOWYwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSZWZsZWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZh
bHVlLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyop
IGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1JlZmxlY3RWYWx1ZSYpIGNv
bnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IGUxYmIxZDEuLjkyNmFkODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTUwLDYgKzUwLDEyIEBA
IFN0cmluZyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgICAgICArIFN0cmluZzo6bnVtYmVyKG1feTIpICsgIikiOwogfQogCitib29s
IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1ND
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4g
bV94MSA9PSByaHMubV94MSAmJiBtX3gyID09IHJocy5tX3gyICYmIG1feTEgPT0gcmhzLm1feTEg
JiYgbV95MiA9PSByaHMubV95MjsKK30KKworCiB2b2lkIENTU0N1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpAQCAtNjAsNiAr
NjYsMTIgQEAgU3RyaW5nIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4
dCgpIGNvbnN0CiAgICAgcmV0dXJuICJzdGVwcygiICsgU3RyaW5nOjpudW1iZXIobV9zdGVwcykg
KyAiLCAiICsgKG1fc3RlcEF0U3RhcnQgPyAic3RhcnQiIDogImVuZCIpICsgJyknOwogfQogCiti
b29sIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGVwcyA9
PSByaHMubV9zdGVwcyAmJiBtX3N0ZXBBdFN0YXJ0ID09IHJocy5tX3N0ZXBBdFN0YXJ0OworfQor
CisKIHZvaWQgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAg
ICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVt
b3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5n
RnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaAppbmRleCAzZWI0YjIyLi5kMTE4OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NU
aW1pbmdGdW5jdGlvblZhbHVlLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
U1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAg
ICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNv
bnN0OwogCiBwcml2YXRlOgpAQCAtNjMsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHgy
KCkgY29uc3QgeyByZXR1cm4gbV94MjsgfQogICAgIGRvdWJsZSB5MigpIGNvbnN0IHsgcmV0dXJu
IG1feTI7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTkzLDYgKzk3
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUmKSBjb25z
dDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJh
bmdlVmFsdWUuY3BwCmluZGV4IDM0ZDYzYjYuLjBiMjk3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcApAQCAtMzgsNiArMzgsMTEgQEAgU3RyaW5nIENT
U1VuaWNvZGVSYW5nZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCitib29sIENTU1VuaWNvZGVSYW5nZVZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IENT
U1VuaWNvZGVSYW5nZVZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJvbSA9PSBy
aHMubV9mcm9tICYmIG1fdG8gPT0gcmhzLm1fdG87Cit9CisKIHZvaWQgQ1NTVW5pY29kZVJhbmdl
VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKaW5kZXggZDUwZjViNi4uOTFhOGM4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKQEAgLTQ0LDYgKzQ0LDggQEAg
cHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9p
ZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKaW5kZXggMGE2MTI5ZC4uNzAzOGFkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCkBAIC03Myw3ICs3MywxMyBAQCBzdHJ1Y3QgU2FtZVNp
emVBc0NTU1ZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8U2FtZVNpemVBc0NTU1ZhbHVlPiB7CiB9
OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQ1NTVmFsdWUpID09IHNpemVvZihTYW1lU2l6ZUFz
Q1NTVmFsdWUpLCBDU1NfdmFsdWVfc2hvdWxkX3N0YXlfc21hbGwpOwotICAgIAorCit0ZW1wbGF0
ZTxjbGFzcyBDaGlsZENsYXNzVHlwZT4KK2lubGluZSBzdGF0aWMgYm9vbCBjb21wYXJlQ3NzVmFs
dWVzKGNvbnN0IENTU1ZhbHVlJiBsaHMsIGNvbnN0IENTU1ZhbHVlJiByaHMpCit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IENoaWxkQ2xhc3NUeXBlJj4obGhzKSA9PSBzdGF0aWNfY2Fz
dDxjb25zdCBDaGlsZENsYXNzVHlwZSY+KHJocyk7Cit9CisKIGNsYXNzIFRleHRDbG9uZUNTU1Zh
bHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
ZXh0Q2xvbmVDU1NWYWx1ZT4gY3JlYXRlKENsYXNzVHlwZSBjbGFzc1R5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRDbG9uZUNTU1ZhbHVlKGNsYXNzVHlw
ZSwgdGV4dCkpOyB9CkBAIC05Miw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9jc3NU
ZXh0KHRleHQpCiAgICAgewogICAgICAgICBtX2lzVGV4dENsb25lID0gdHJ1ZTsKLSAgICB9Cisg
ICAgICAgIDsgICAgfQogCiAgICAgU3RyaW5nIG1fY3NzVGV4dDsKIH07CkBAIC0yNzYsNiArMjgy
LDEwMiBAQCB2b2lkIENTU1ZhbHVlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Citib29sIENTU1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlJiByaHMpIGNvbnN0Cit7
CisgICAgaWYgKG1faXNUZXh0Q2xvbmUpIHsKKyAgICAgICAgQVNTRVJUKGlzQ1NTT01TYWZlKCkp
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dENsb25lQ1NTVmFsdWUqPih0
aGlzKS0+Y3NzVGV4dCgpID09IHJocy5jc3NUZXh0KCk7CisgICAgfQorCisgICAgaWYgKG1fY2xh
c3NUeXBlID09IHJocy5tX2NsYXNzVHlwZSkgeworICAgICAgICBzd2l0Y2ggKG1fY2xhc3NUeXBl
KSB7CisgICAgICAgIGNhc2UgQXNwZWN0UmF0aW9DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBj
b21wYXJlQ3NzVmFsdWVzPENTU0FzcGVjdFJhdGlvVmFsdWU+KCp0aGlzLCByaHMpOworICAgICAg
ICBjYXNlIEJvcmRlckltYWdlU2xpY2VDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJl
Q3NzVmFsdWVzPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAg
IGNhc2UgQ2FudmFzQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxD
U1NDYW52YXNWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgQ3Vyc29ySW1hZ2VDbGFz
czoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0N1cnNvckltYWdlVmFs
dWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIEZvbnRDbGFzczoKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlQ3NzVmFsdWVzPEZvbnRWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNh
c2UgRm9udEZhY2VTcmNDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVz
PENTU0ZvbnRGYWNlU3JjVmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIEZvbnRGZWF0
dXJlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxGb250RmVhdHVy
ZVZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBGdW5jdGlvbkNsYXNzOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTRnVuY3Rpb25WYWx1ZT4oKnRoaXMsIHJo
cyk7CisgICAgICAgIGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoKKyAgICAgICAgICAgIHJldHVy
biBjb21wYXJlQ3NzVmFsdWVzPENTU0xpbmVhckdyYWRpZW50VmFsdWU+KCp0aGlzLCByaHMpOwor
ICAgICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29t
cGFyZUNzc1ZhbHVlczxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAg
ICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFs
dWVzPENTU0Nyb3NzZmFkZVZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBJbWFnZUNs
YXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTSW1hZ2VWYWx1ZT4o
KnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgSW5oZXJpdGVkQ2xhc3M6CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NJbmhlcml0ZWRWYWx1ZT4oKnRoaXMsIHJocyk7Cisg
ICAgICAgIGNhc2UgSW5pdGlhbENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NW
YWx1ZXM8Q1NTSW5pdGlhbFZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBQcmltaXRp
dmVDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU1ByaW1pdGl2
ZVZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBSZWZsZWN0Q2xhc3M6CisgICAgICAg
ICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NSZWZsZWN0VmFsdWU+KCp0aGlzLCByaHMp
OworICAgICAgICBjYXNlIFNoYWRvd0NsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVD
c3NWYWx1ZXM8U2hhZG93VmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIExpbmVhclRp
bWluZ0Z1bmN0aW9uQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxD
U1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFy
ZUNzc1ZhbHVlczxDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU+KCp0aGlzLCByaHMp
OworICAgICAgICBjYXNlIFN0ZXBzVGltaW5nRnVuY3Rpb25DbGFzczoKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZT4oKnRoaXMs
IHJocyk7CisgICAgICAgIGNhc2UgVW5pY29kZVJhbmdlQ2xhc3M6CisgICAgICAgICAgICByZXR1
cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NVbmljb2RlUmFuZ2VWYWx1ZT4oKnRoaXMsIHJocyk7Cisg
ICAgICAgIGNhc2UgVmFsdWVMaXN0Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNz
c1ZhbHVlczxDU1NWYWx1ZUxpc3Q+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIFdlYktpdENT
U1RyYW5zZm9ybUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8V2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIExpbmVCb3hD
b250YWluQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NMaW5l
Qm94Q29udGFpblZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNs
YXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTQ2FsY1ZhbHVlPigq
dGhpcywgcmhzKTsKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKKyAgICAgICAgY2FzZSBJbWFn
ZVNldENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTSW1hZ2VT
ZXRWYWx1ZT4oKnRoaXMsIHJocyk7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisg
ICAgICAgIGNhc2UgV2ViS2l0Q1NTRmlsdGVyQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29t
cGFyZUNzc1ZhbHVlczxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4oKnRoaXMsIHJocyk7CisjaWYgRU5B
QkxFKENTU19TSEFERVJTKQorICAgICAgICBjYXNlIFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1
ZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8V2ViS2l0Q1NTQXJy
YXlGdW5jdGlvblZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NNaXhG
dW5jdGlvblZhbHVlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxX
ZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBXZWJL
aXRDU1NTaGFkZXJDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPFdl
YktpdENTU1NoYWRlclZhbHVlPigqdGhpcywgcmhzKTsKKyNlbmRpZgorI2VuZGlmCisjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCisgICAgICAgIGNhc2UgVmFyaWFibGVDbGFzczoKKyAgICAgICAg
ICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU1ZhcmlhYmxlVmFsdWU+KCp0aGlzLCByaHMp
OworI2VuZGlmCisjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgY2FzZSBTVkdDb2xvckNsYXNzOgor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8U1ZHQ29sb3I+KCp0aGlzLCByaHMp
OworICAgICAgICBjYXNlIFNWR1BhaW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFy
ZUNzc1ZhbHVlczxTVkdQYWludD4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NT
U1ZHRG9jdW1lbnRDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPFdl
YktpdENTU1NWR0RvY3VtZW50VmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICB9CisjZW5kaWYK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSBlbHNlIGlmIChtX2NsYXNzVHlw
ZSA9PSBWYWx1ZUxpc3RDbGFzcyAmJiByaHMubV9jbGFzc1R5cGUgIT0gVmFsdWVMaXN0Q2xhc3Mp
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NWYWx1ZUxpc3QmPigqdGhpcykg
PT0gcmhzOworICAgIGVsc2UgaWYgKG1fY2xhc3NUeXBlICE9IFZhbHVlTGlzdENsYXNzICYmIHJo
cy5tX2NsYXNzVHlwZSA9PSBWYWx1ZUxpc3RDbGFzcykKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IENTU1ZhbHVlTGlzdCY+KHJocykgPT0gKnRoaXM7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogewogICAgIGlmIChtX2lz
VGV4dENsb25lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGIyYTUzMWEuLmJjMDhjMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMjYsNiArMTI2LDkgQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFsdWUmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgQ1NTVmFsdWUmIHJocykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSByaHMpOyB9CisK
IHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgQ2xhc3NUeXBlQml0cyA9IDY7
CkBAIC0yMzYsNiArMjM5LDIzIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jbGFzc1R5cGUg
OiBDbGFzc1R5cGVCaXRzOyAvLyBDbGFzc1R5cGUKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENT
U1ZhbHVlVHlwZT4KK2lubGluZSBib29sIGNvbXBhcmVDc3NWYWx1ZVZlY3Rvcihjb25zdCBWZWN0
b3I8UmVmUHRyPENTU1ZhbHVlVHlwZT4gPiYgbGhzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1Zh
bHVlVHlwZT4gPiYgcmhzKQoreworICAgIHNpemVfdCBzaXplID0gbGhzLnNpemUoKTsKKyAgICBp
ZiAoc2l6ZSA9PSByaHMuc2l6ZSgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBjb25zdCBSZWZQdHI8Q1NTVmFsdWVUeXBlPiYgbGhz
UHRyID0gbGhzW2ldOworICAgICAgICAgICAgY29uc3QgUmVmUHRyPENTU1ZhbHVlVHlwZT4mIHJo
c1B0ciA9IHJoc1tpXTsKKyAgICAgICAgICAgIGlmIChsaHNQdHIgPT0gcmhzUHRyIHx8IChsaHNQ
dHIgJiYgcmhzUHRyICYmICpsaHNQdHIgPT0gKnJoc1B0cikpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gQ1NTVmFsdWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0
LmNwcAppbmRleCA5ZWMyZDUwLi5lNDVhZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0
LmNwcApAQCAtNTUsMTAgKzU1LDggQEAgQ1NTVmFsdWVMaXN0OjpDU1NWYWx1ZUxpc3QoQ1NTUGFy
c2VyVmFsdWVMaXN0KiBwYXJzZXJWYWx1ZXMpCiBib29sIENTU1ZhbHVlTGlzdDo6cmVtb3ZlQWxs
KENTU1ZhbHVlKiB2YWwpCiB7CiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgIC8vIEZJWE1F
OiB3ZSBzaG91bGQgYmUgaW1wbGVtZW50aW5nIG9wZXJhdG9yPT0gdG8gQ1NTVmFsdWUgYW5kIGl0
cyBkZXJpdmVkIGNsYXNzZXMKLSAgICAvLyB0byBtYWtlIGNvbXBhcmlzb24gbW9yZSBmbGV4aWJs
ZSBhbmQgZmFzdC4KICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV92YWx1ZXMu
c2l6ZSgpOyBpbmRleCsrKSB7Ci0gICAgICAgIGlmIChtX3ZhbHVlcy5hdChpbmRleCktPmNzc1Rl
eHQoKSA9PSB2YWwtPmNzc1RleHQoKSkgeworICAgICAgICBpZiAoKm1fdmFsdWVzLmF0KGluZGV4
KSA9PSAqdmFsKSB7CiAgICAgICAgICAgICBtX3ZhbHVlcy5yZW1vdmUoaW5kZXgpOwogICAgICAg
ICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICB9CkBAIC02OSwxMCArNjcsOCBAQCBib29sIENT
U1ZhbHVlTGlzdDo6cmVtb3ZlQWxsKENTU1ZhbHVlKiB2YWwpCiAKIGJvb2wgQ1NTVmFsdWVMaXN0
OjpoYXNWYWx1ZShDU1NWYWx1ZSogdmFsKSBjb25zdAogewotICAgIC8vIEZJWE1FOiB3ZSBzaG91
bGQgYmUgaW1wbGVtZW50aW5nIG9wZXJhdG9yPT0gdG8gQ1NTVmFsdWUgYW5kIGl0cyBkZXJpdmVk
IGNsYXNzZXMKLSAgICAvLyB0byBtYWtlIGNvbXBhcmlzb24gbW9yZSBmbGV4aWJsZSBhbmQgZmFz
dC4KICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV92YWx1ZXMuc2l6ZSgpOyBp
bmRleCsrKSB7Ci0gICAgICAgIGlmIChtX3ZhbHVlcy5hdChpbmRleCktPmNzc1RleHQoKSA9PSB2
YWwtPmNzc1RleHQoKSkKKyAgICAgICAgaWYgKCptX3ZhbHVlcy5hdChpbmRleCkgPT0gKnZhbCkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
MjcsNiArMTIzLDE5IEBAIFN0cmluZyBDU1NWYWx1ZUxpc3Q6OmN1c3RvbUNzc1RleHQoKSBjb25z
dAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBDU1NWYWx1ZUxpc3Q6
Om9wZXJhdG9yPT0oY29uc3QgQ1NTVmFsdWVMaXN0JiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdmFsdWVMaXN0U2VwYXJhdG9yID09IHJocy5tX3ZhbHVlTGlzdFNlcGFyYXRvciAmJiBjb21w
YXJlQ3NzVmFsdWVWZWN0b3I8Q1NTVmFsdWU+KG1fdmFsdWVzLCByaHMubV92YWx1ZXMpOworfQor
Citib29sIENTU1ZhbHVlTGlzdDo6b3BlcmF0b3I9PShjb25zdCBDU1NWYWx1ZSYgcmhzKSBjb25z
dAoreworICAgIGlmIChtX3ZhbHVlcy5zaXplKCkgPT0gMSkKKyAgICAgICAgcmV0dXJuICptX3Zh
bHVlc1swXSA9PSByaHM7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBFTkFCTEUoQ1NT
X1ZBUklBQkxFUykKIFN0cmluZyBDU1NWYWx1ZUxpc3Q6OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmlu
Z1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVz
KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCmluZGV4IDNkODk3YmMuLjdkM2U1
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKQEAgLTYwLDYgKzYwLDggQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb3B5KCk7CiAKICAgICBTdHJpbmcgY3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYWx1ZUxp
c3QmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFsdWUmKSBjb25zdDsK
ICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29u
c3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCmluZGV4IDRmYzRm
NzUuLjEwYzdlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaApAQCAtNDgs
NiArNDgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYXJpYWJsZVZh
bHVlJiByaHMpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSByaHMubV9uYW1lICYmIG1fdmFsdWUg
PT0gcmhzLm1fdmFsdWU7IH0KKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgewogICAgICAg
ICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVt
b3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaAppbmRleCA1MWZhNzEwLi5kMzNhNTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Db3VudGVyLmgKQEAgLTQyLDYgKzQyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dElkZW50aWZpZXIoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnRpZmllcikgeyBt
X2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRMaXN0U3R5bGUoUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGlzdFN0eWxlKSB7IG1fbGlzdFN0eWxlID0gbGlzdFN0
eWxlOyB9CiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gc2VwYXJhdG9yKSB7IG1fc2VwYXJhdG9yID0gc2VwYXJhdG9yOyB9CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ291bnRlciYgcmhzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGlkZW50aWZpZXIoKSA9PSByaHMuaWRlbnRpZmllcigpCisgICAgICAgICYmIGxpc3RTdHlsZSgp
ID09IHJocy5saXN0U3R5bGUoKQorICAgICAgICAmJiBzZXBhcmF0b3IoKSA9PSByaHMuc2VwYXJh
dG9yKCk7CisgICAgfQogICAgIAogICAgIFBhc3NSZWZQdHI8Q291bnRlcj4gY2xvbmVGb3JDU1NP
TSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Rhc2hib2Fy
ZFJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0Rhc2hib2FyZFJlZ2lvbi5oCmluZGV4IDkx
ZTVkN2EuLmZkZmI2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRS
ZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGFzaGJvYXJkUmVnaW9uLmgKQEAgLTMw
LDYgKzMwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERhc2hib2FyZFJlZ2lvbiA6
IHB1YmxpYyBSZWN0QmFzZSwgcHVibGljIFJlZkNvdW50ZWQ8RGFzaGJvYXJkUmVnaW9uPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGFzaGJvYXJkUmVnaW9uPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgRGFzaGJvYXJkUmVnaW9uKTsgfQorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBEYXNoYm9hcmRSZWdpb24mIHJocykgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2xhYmVsID09IHJocy5tX2xhYmVsICYmIG1fZ2VvbWV0cnlUeXBlID09IHJocy5tX2dl
b21ldHJ5VHlwZQorICAgICAgICAmJiBtX2lzQ2lyY2xlID09IHJocy5tX2lzQ2lyY2xlICYmIG1f
aXNSZWN0YW5nbGUgPT0gcmhzLm1faXNSZWN0YW5nbGUKKyAgICAgICAgJiYgbV9uZXh0ID8gcmhz
Lm1fbmV4dCAmJiAqbV9uZXh0ID09ICpyaHMubV9uZXh0IDogIXJocy5tX25leHQ7CisgICAgfQog
CiAgICAgUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4gbV9uZXh0OwogICAgIFN0cmluZyBtX2xhYmVs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCmluZGV4IDEwMzRmY2EuLjE3
NDY4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKQEAgLTUwLDYg
KzUwLDExIEBAIFN0cmluZyBGb250RmVhdHVyZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QK
ICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCitib29sIEZvbnRGZWF0dXJlVmFs
dWU6Om9wZXJhdG9yPT0oY29uc3QgRm9udEZlYXR1cmVWYWx1ZSYgcmhzKSBjb25zdAoreworICAg
IHJldHVybiBtX3RhZyA9PSByaHMubV90YWcgJiYgbV92YWx1ZSA9PSByaHMubV92YWx1ZTsKK30K
Kwogdm9pZCBGb250RmVhdHVyZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNT
Uyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaAppbmRleCBmY2FiODE1Li44Njgz
ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmgKQEAgLTQyLDYgKzQyLDgg
QEAgcHVibGljOgogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAg
ICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZvbnRGZWF0dXJlVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRWYWx1ZS5jcHAKaW5kZXggMGJhMWU2ZS4uODg0OTA1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRWYWx1ZS5jcHAKQEAgLTY1LDYgKzY1LDE2IEBAIFN0cmluZyBGb250VmFsdWU6OmN1c3RvbUNz
c1RleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBG
b250VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgRm9udFZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHN0eWxlID8gcmhzLnN0eWxlICYmICpzdHlsZSA9PSAqcmhzLnN0eWxlIDogIXJocy5z
dHlsZQorICAgICAgICAmJiB2YXJpYW50ID8gcmhzLnZhcmlhbnQgJiYgKnZhcmlhbnQgPT0gKnJo
cy52YXJpYW50IDogIXJocy52YXJpYW50CisgICAgICAgICYmIHdlaWdodCA/IHJocy53ZWlnaHQg
JiYgKndlaWdodCA9PSAqcmhzLndlaWdodCA6ICFyaHMud2VpZ2h0CisgICAgICAgICYmIHNpemUg
PyByaHMuc2l6ZSAmJiAqc2l6ZSA9PSAqcmhzLnNpemUgOiAhcmhzLnNpemUKKyAgICAgICAgJiYg
bGluZUhlaWdodCA/IHJocy5saW5lSGVpZ2h0ICYmICpsaW5lSGVpZ2h0ID09ICpyaHMubGluZUhl
aWdodCA6ICFyaHMubGluZUhlaWdodAorICAgICAgICAmJiBmYW1pbHkgPyByaHMuZmFtaWx5ICYm
ICpmYW1pbHkgPT0gKnJocy5mYW1pbHkgOiAhcmhzLmZhbWlseTsKK30KKwogdm9pZCBGb250VmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUu
aAppbmRleCAwM2E2MTI2Li5mZDA0NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCkBAIC0zOSw2
ICszOSw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFZhbHVlJikgY29uc3Q7CisKICAgICB2b2lk
IHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAK
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXhwLmgKaW5kZXggODEzZTBmOC4uN2I1NGZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFeHAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV4cC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAo
b3RoZXIubV9tZWRpYUZlYXR1cmUgPT0gbV9tZWRpYUZlYXR1cmUpCiAgICAgICAgICAgICAmJiAo
KCFvdGhlci5tX3ZhbHVlICYmICFtX3ZhbHVlKQotICAgICAgICAgICAgICAgIHx8IChvdGhlci5t
X3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+Y3NzVGV4dCgpID09IG1fdmFsdWUt
PmNzc1RleHQoKSkpOworICAgICAgICAgICAgICAgIHx8IChvdGhlci5tX3ZhbHVlICYmIG1fdmFs
dWUgJiYgKm90aGVyLm1fdmFsdWUgPT0gKm1fdmFsdWUpKTsKICAgICB9CiAKICAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9QYWlyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCmluZGV4IDA0MWVl
MjMuLmEwYTc4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBnZW5lcmF0ZUNTU1N0cmluZyhmaXJzdCgpLT5jc3NUZXh0KCksIHNlY29uZCgp
LT5jc3NUZXh0KCkpOwogICAgIH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYWlyJiBy
aHMpIGNvbnN0IHsgcmV0dXJuICptX2ZpcnN0ID09ICpyaHMubV9maXJzdCAmJiAqbV9zZWNvbmQg
PT0gKnJocy5tX3NlY29uZDsgfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgU3Ry
aW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCmluZGV4IGZlZWY4
NzUuLmY3YWM4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaApAQCAtMzksNiArMzksMTIgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Qm90dG9tKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvdHRvbSkgeyBt
X2JvdHRvbSA9IGJvdHRvbTsgfQogICAgIHZvaWQgc2V0TGVmdChQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZWN0QmFzZSYgcmhzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICptX3Rv
cCA9PSAqcmhzLm1fdG9wICYmICptX3JpZ2h0ID09ICpyaHMubV9yaWdodAorICAgICAgICAmJiAq
bV9sZWZ0ID09ICpyaHMubV9sZWZ0ICYmICptX2JvdHRvbSA9PSAqcmhzLm1fYm90dG9tOworICAg
IH0KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIGJvb2wgaGFzVmFyaWFibGVSZWZl
cmVuY2UoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFk
b3dWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCmluZGV4IGE0
MDY0Y2MuLmM0MTI4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcApAQCAtNzksNiAr
NzksMTYgQEAgU3RyaW5nIFNoYWRvd1ZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gdGV4dC50b1N0cmluZygpOwogfQogCitib29sIFNoYWRvd1ZhbHVlOjpvcGVyYXRvcj09
KGNvbnN0IFNoYWRvd1ZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbG9yID8gcmhz
LmNvbG9yICYmICpjb2xvciA9PSAqcmhzLmNvbG9yIDogIXJocy5jb2xvcgorICAgICAgICAmJiB4
ID8gcmhzLnggJiYgKnggPT0gKnJocy54IDogIXJocy54CisgICAgICAgICYmIHkgPyByaHMueSAm
JiAqeSA9PSAqcmhzLnkgOiAhcmhzLnkKKyAgICAgICAgJiYgYmx1ciA/IHJocy5ibHVyICYmICpi
bHVyID09ICpyaHMuYmx1ciA6ICFyaHMuYmx1cgorICAgICAgICAmJiBzcHJlYWQgPyByaHMuc3By
ZWFkICYmICpzcHJlYWQgPT0gKnJocy5zcHJlYWQgOiAhcmhzLnNwcmVhZAorICAgICAgICAmJiBz
dHlsZSA/IHJocy5zdHlsZSAmJiAqc3R5bGUgPT0gKnJocy5zdHlsZSA6ICFyaHMuc3R5bGU7Cit9
CisKIHZvaWQgU2hhZG93VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5m
byBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKaW5kZXggZjJkOGU2Zi4uODJkNDM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NoYWRvd1ZhbHVlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFk
b3dWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4IGMzZjZkYzgu
LjczNzZkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTMw
Myw5ICszMDMsOSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbgogICAgIGlmICh0b3AuaXNJbXBv
cnRhbnQoKSAhPSByaWdodC5pc0ltcG9ydGFudCgpIHx8IHJpZ2h0LmlzSW1wb3J0YW50KCkgIT0g
Ym90dG9tLmlzSW1wb3J0YW50KCkgfHwgYm90dG9tLmlzSW1wb3J0YW50KCkgIT0gbGVmdC5pc0lt
cG9ydGFudCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBib29sIHNob3dMZWZ0
ID0gcmlnaHQudmFsdWUoKS0+Y3NzVGV4dCgpICE9IGxlZnQudmFsdWUoKS0+Y3NzVGV4dCgpOwot
ICAgIGJvb2wgc2hvd0JvdHRvbSA9ICh0b3AudmFsdWUoKS0+Y3NzVGV4dCgpICE9IGJvdHRvbS52
YWx1ZSgpLT5jc3NUZXh0KCkpIHx8IHNob3dMZWZ0OwotICAgIGJvb2wgc2hvd1JpZ2h0ID0gKHRv
cC52YWx1ZSgpLT5jc3NUZXh0KCkgIT0gcmlnaHQudmFsdWUoKS0+Y3NzVGV4dCgpKSB8fCBzaG93
Qm90dG9tOworICAgIGJvb2wgc2hvd0xlZnQgPSAqcmlnaHQudmFsdWUoKSAhPSAqbGVmdC52YWx1
ZSgpOworICAgIGJvb2wgc2hvd0JvdHRvbSA9ICgqdG9wLnZhbHVlKCkgIT0gKmJvdHRvbS52YWx1
ZSgpKSB8fCBzaG93TGVmdDsKKyAgICBib29sIHNob3dSaWdodCA9ICgqdG9wLnZhbHVlKCkgIT0g
KnJpZ2h0LnZhbHVlKCkpIHx8IHNob3dCb3R0b207CiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKICAgICByZXN1bHQuYXBwZW5kKHRvcC52YWx1ZSgpLT5jc3NUZXh0KCkpOwpAQCAtMTA1NCw3
ICsxMDU0LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0eU1hdGNoZXMoY29uc3Qg
UHJvcGVydHlSZWZlcmVuY2UmIHByb3BlcnR5KSBjb25zdAogICAgIGludCBmb3VuZFByb3BlcnR5
SW5kZXggPSBmaW5kUHJvcGVydHlJbmRleChwcm9wZXJ0eS5pZCgpKTsKICAgICBpZiAoZm91bmRQ
cm9wZXJ0eUluZGV4ID09IC0xKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHBy
b3BlcnR5QXQoZm91bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpLT5jc3NUZXh0KCkgPT0gcHJvcGVy
dHkudmFsdWUoKS0+Y3NzVGV4dCgpOworICAgIHJldHVybiAqcHJvcGVydHlBdChmb3VuZFByb3Bl
cnR5SW5kZXgpLnZhbHVlKCkgPT0gKnByb3BlcnR5LnZhbHVlKCk7CiB9CiAgICAgCiB2b2lkIFN0
eWxlUHJvcGVydHlTZXQ6OnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U0FycmF5RnVuY3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJy
YXlGdW5jdGlvblZhbHVlLmNwcAppbmRleCAyYTE3YTQ0Li5mNzI4NGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcApAQCAtNTYs
NiArNTYsMTEgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU+IFdlYktp
dENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6Y2xvbmVGb3JDU1MKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZSgqdGhpcykpOwogfQogCitib29sIFdlYktp
dENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBXZWJLaXRDU1NBcnJheUZ1
bmN0aW9uVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gQ1NTVmFsdWVMaXN0OjpvcGVy
YXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IENTU1ZhbHVlTGlzdCY+KHJocykpOworfQorCiB2b2lk
IFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5
Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVz
OjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVu
Y3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25W
YWx1ZS5oCmluZGV4IGJhZjI3ODIuLmY3YmNlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGlj
OgogCiAgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU+IGNsb25lRm9y
Q1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJLaXRDU1NBcnJh
eUZ1bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCmluZGV4IGYxYTFlMGUuLmUyMjg4NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcApAQCAtMTEx
LDYgKzExMSwxMSBAQCBQYXNzUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBXZWJLaXRDU1NG
aWx0ZXJWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSgqdGhpcykpOwogfQogCitib29sIFdlYktpdENTU0ZpbHRl
clZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IFdlYktpdENTU0ZpbHRlclZhbHVlJiByaHMpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSByaHMubV90eXBlICYmIENTU1ZhbHVlTGlzdDo6b3Bl
cmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBDU1NWYWx1ZUxpc3QmPihyaHMpKTsKK30KKwogdm9p
ZCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAppbmRleCAwOGIzZTlm
Li40ZTk1YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVy
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaApA
QCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU0ZpbHRl
clZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgV2ViS2l0Q1NTRmlsdGVyVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmNwcAppbmRl
eCAzYWY2ODdlLi41Y2JjZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U01peEZ1bmN0aW9uVmFsdWUuY3BwCkBAIC01Niw2ICs1NiwxMSBAQCBQYXNzUmVmUHRyPFdlYktp
dENTU01peEZ1bmN0aW9uVmFsdWU+IFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU6OmNsb25lRm9y
Q1NTT00oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1
ZSgqdGhpcykpOwogfQogCitib29sIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU6Om9wZXJhdG9y
PT0oY29uc3QgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJl
dHVybiBDU1NWYWx1ZUxpc3Q6Om9wZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVM
aXN0Jj4ocmhzKSk7Cit9CisKIHZvaWQgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NNaXhGdW5jdGlvblZhbHVlLmgKaW5kZXggN2JjMDdiNC4uNGI4NTE1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oCkBAIC00OCw2ICs0
OCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1
ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdl
YktpdENTU01peEZ1bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcAppbmRl
eCBiNDM0ZWVjLi5hZjg5YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NWR0RvY3VtZW50VmFsdWUuY3BwCkBAIC02Nyw2ICs2NywxMSBAQCBTdHJpbmcgV2ViS2l0Q1NT
U1ZHRG9jdW1lbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHF1b3Rl
Q1NTU3RyaW5nSWZOZWVkZWQobV91cmwpOwogfQogCitib29sIFdlYktpdENTU1NWR0RvY3VtZW50
VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSYgcmhzKSBj
b25zdAoreworICAgIHJldHVybiBtX3VybCA9PSByaHMubV91cmw7Cit9CisKIHZvaWQgV2ViS2l0
Q1NTU1ZHRG9jdW1lbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZv
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgKaW5kZXgg
OTZiY2M4Yy4uYzU3ZjQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NWR0RvY3VtZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZH
RG9jdW1lbnRWYWx1ZS5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1
cm4gbV91cmw7IH0KICAgICBib29sIGxvYWRSZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2xv
YWRSZXF1ZXN0ZWQ7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NTU1ZHRG9j
dW1lbnRWYWx1ZSYpIGNvbnN0OwogCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1NoYWRlclZhbHVlLmNwcAppbmRleCA5MWJkZGUyLi45YTYzYTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKQEAgLTgzLDYgKzgzLDExIEBAIFN0
cmluZyBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV91cmwpICsgIikiOwogfQogCitib29s
IFdlYktpdENTU1NoYWRlclZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IFdlYktpdENTU1NoYWRlclZh
bHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsID09IHJocy5tX3VybDsKK30KKwog
dm9pZCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xh
c3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpD
U1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAppbmRleCBjNDMy
MDFjLi5iZTIyNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hh
ZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUu
aApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgp
IGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYktpdENTU1NoYWRlclZhbHVl
JikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCmluZGV4IGZkMTE3ZjIuLjkyMzJkNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCkBAIC02Niw2ICs2Niw3IEBA
IHB1YmxpYzoKICAgICB9CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSYgcmhzKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gcmhzLm1fdHlwZTsgfQogI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQogICAgIFN0cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3Qg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDk2MjlmNjYuLjEzNDAyNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTI0NCw5ICsyNDQsNyBAQCBi
b29sIEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVu
dCogZWxlbWVudCwgU3R5bGVQcm9wZQogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBhdHRy
aWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoZWxlbWVudCk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdHls
ZVZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsKICAgICAK
LSAgICAvLyBGSVhNRTogVGhpcyBpcyB2ZXJ5IGluZWZmaWNpZW50IHdheSBvZiBjb21wYXJpbmcg
dmFsdWVzCi0gICAgLy8gYnV0IHdlIGNhbid0IHN0cmluZyBjb21wYXJlIGF0dHJpYnV0ZSB2YWx1
ZSBhbmQgQ1NTIHByb3BlcnR5IHZhbHVlLgotICAgIHJldHVybiB2YWx1ZSAmJiBzdHlsZVZhbHVl
ICYmIHZhbHVlLT5jc3NUZXh0KCkgPT0gc3R5bGVWYWx1ZS0+Y3NzVGV4dCgpOworICAgIHJldHVy
biB2YWx1ZSAmJiBzdHlsZVZhbHVlICYmICp2YWx1ZSA9PSAqc3R5bGVWYWx1ZTsKIH0KIAogdm9p
ZCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6YWRkVG9TdHlsZShFbGVtZW50KiBlbGVtZW50LCBF
ZGl0aW5nU3R5bGUqIHN0eWxlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAKaW5kZXggYTM0
YWQxOC4uZjUyOWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCkBAIC0xMDUsNiArMTA1LDEx
IEBAIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IFNWR0NvbG9yOjpjbG9uZUZvckNTU09NKCkgY29uc3QK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0NvbG9yKFNWR0NvbG9yQ2xhc3MsICp0aGlzKSk7
CiB9CiAKK2Jvb2wgU1ZHQ29sb3I6Om9wZXJhdG9yPT0oY29uc3QgU1ZHQ29sb3ImIHJocykgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9jb2xvclR5cGUgPT0gcmhzLm1fY29sb3JUeXBlICYmIG1fY29s
b3IgPT0gcmhzLm1fY29sb3I7Cit9CisKIHZvaWQgU1ZHQ29sb3I6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewog
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVN
ZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xv
ci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKaW5kZXggN2RkZGNkNy4uNzVhN2Ey
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogICAgIAog
ICAgIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTVkdDb2xvciYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAppbmRleCBjY2UxZjRlLi5hMTk4ODRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYWludC5jcHAKQEAgLTExMiw2ICsxMTIsMTEgQEAgUGFzc1JlZlB0cjxTVkdQYWlu
dD4gU1ZHUGFpbnQ6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU1ZHUGFpbnQoKnRoaXMpKTsKIH0KIAorYm9vbCBTVkdQYWludDo6b3BlcmF0b3I9PShjb25z
dCBTVkdQYWludCYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX3BhaW50VHlwZSA9PSByaHMu
bV9wYWludFR5cGUgJiYgbV91cmkgPT0gcmhzLm1fdXJpICYmIFNWR0NvbG9yOjpvcGVyYXRvcj09
KHN0YXRpY19jYXN0PGNvbnN0IFNWR0NvbG9yJj4ocmhzKSk7Cit9CisKIHZvaWQgU1ZHUGFpbnQ6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYWludC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKaW5k
ZXggYWM1Njc1Yi4uMThiZTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
aW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKQEAgLTk1LDYgKzk1LDgg
QEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxTVkdQYWludD4gY2xvbmVGb3JDU1NPTSgpIGNv
bnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR1BhaW50JikgY29uc3Q7CisKICAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176917</attachid>
            <date>2012-11-30 01:08:05 -0800</date>
            <delta_ts>2012-12-03 05:03:36 -0800</delta_ts>
            <desc>Patch 2</desc>
            <filename>webcore_cssvalue_operator_eq_2.patch</filename>
            <type>text/plain</type>
            <size>68440</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjOGIxYjY4Li5jYmNiMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgz
IEBACisyMDEyLTExLTI5ICBBbGV4YW5kZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZA
aW50ZWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1NWYWx1ZTo6b3BlcmF0b3I9PSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5MDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb21w
YXJpc29uIG9wZXJhdG9yIHRvIENTU1ZhbHVlIGFuZCBpdHMgY2hpbGRyZW4sIHNvIHRoYXQgdGhl
CisgICAgICAgIGNzcyB2YWx1ZXMgY291bGQgYmUgY29tcGFyZWQgZWZmaWNpZW50bHkuIEJlZm9y
ZSB0aGlzIHBhdGNoLCBDU1NWYWx1ZQorICAgICAgICBvYmplY3RzIHdlcmUgY29tcGFyZWQgdXNp
bmcgc3RyaW5ncyB0aGF0IHdlcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjc3NUZXh0KCkgbWV0aG9kLgor
CisgICAgICAgICogY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQXNwZWN0UmF0aW9WYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0Fz
cGVjdFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKENTU0FzcGVjdFJhdGlvVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1No
YXBlUmVjdGFuZ2xlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVDaXJjbGU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVs
bGlwc2U6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVBvbHln
b246Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5oOgorICAgICAg
ICAoQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSk6CisgICAgICAgIChDU1NCYXNpY1NoYXBlQ2lyY2xl
KToKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVFbGxpcHNlKToKKyAgICAgICAgKENTU0Jhc2ljU2hh
cGVQb2x5Z29uKToKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oOgorICAgICAgICAoQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjVmFsdWU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKENTU0NhbGNQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJp
bWl0aXZlVmFsdWU6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0JpbmFyeU9wZXJh
dGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnR5cGUpOgorICAgICAgICAq
IGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NDYWxjVmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52
YXNWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6Cisg
ICAgICAgIChDU1NDYW52YXNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNp
ZGVzU2hvcnRoYW5kKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAq
IGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jvc3NmYWRlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1cnNvckltYWdlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNyY1ZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5oOgorICAgICAgICAoQ1NTRm9udEZhY2VTcmNWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0Z1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6
b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAg
KENTU0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dy
YWRpZW50Q29sb3JTdG9wOjpvcGVyYXRvcj09KToKKyAgICAgICAgKENTU0xpbmVhckdyYWRpZW50
VmFsdWUpOgorICAgICAgICAoQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0lt
YWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW5oZXJpdGVkVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoQ1NTSW5o
ZXJpdGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0luaXRpYWxWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NJbml0
aWFsVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oOgorICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NSZWZs
ZWN0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmg6CisgICAgICAgIChDU1NSZWZs
ZWN0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoQ1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKENTU1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1VuaWNvZGVSYW5nZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKENTU1VuaWNvZGVSYW5n
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcGFyZUNzc1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xvbmVDU1NWYWx1ZTo6
VGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoQ1NTVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcGFyZUNzc1ZhbHVlVmVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6cmVtb3ZlQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ZhbHVlTGlzdDo6aGFzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFs
dWVMaXN0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0Lmg6CisgICAg
ICAgIChDU1NWYWx1ZUxpc3QpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KENTU1ZhcmlhYmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9Db3VudGVyLmg6CisgICAgICAgIChD
b3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAqIGNzcy9EYXNoYm9hcmRSZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhc2hib2FyZFJl
Z2lvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaDoKKyAgICAgICAgKEZvbnRGZWF0dXJlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9Gb250VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhbHVl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvRm9udFZhbHVlLmg6CisgICAgICAgIChGb250
VmFsdWUpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXhwLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVF1ZXJ5RXhwOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvUGFpci5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGFpcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChQYWlyKToKKyAgICAg
ICAgKiBjc3MvUmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEJhc2U6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoUmVjdEJhc2UpOgorICAgICAgICAqIGNzcy9TaGFkb3dWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3Nz
L1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChTaGFkb3dWYWx1ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
Z2V0NFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0
eU1hdGNoZXMpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmg6CisgICAg
ICAgIChXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1
ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmg6Cisg
ICAgICAgIChXZWJLaXRDU1NGaWx0ZXJWYWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01peEZ1bmN0aW9u
VmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUpOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdENTU1NWR0RvY3VtZW50VmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTU2hhZGVyVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNz
cy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU2hhZGVyVmFsdWUp
OgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRyaWJ1dGVF
cXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUpOgorICAgICAgICAqIHN2Zy9TVkdDb2xv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogc3ZnL1NWR0NvbG9yLmg6CisgICAgICAgIChTVkdDb2xvcik6CisgICAgICAgICogc3ZnL1NW
R1BhaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKFNWR1BhaW50KToKKwogMjAxMi0xMS0y
OSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNjExMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NB
c3BlY3RSYXRpb1ZhbHVlLmNwcAppbmRleCA4MzBmOGNmLi42NzQzYzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwCkBAIC0zOSw2ICszOSwxMSBAQCBTdHJp
bmcgQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKG1fbnVtZXJhdG9yVmFsdWUpICsgJy8nICsgU3RyaW5nOjpudW1iZXIo
bV9kZW5vbWluYXRvclZhbHVlKTsKIH0KIAorYm9vbCBDU1NBc3BlY3RSYXRpb1ZhbHVlOjpvcGVy
YXRvcj09KGNvbnN0IENTU0FzcGVjdFJhdGlvVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9udW1lcmF0b3JWYWx1ZSA9PSByaHMubV9udW1lcmF0b3JWYWx1ZSAmJiBtX2Rlbm9taW5h
dG9yVmFsdWUgPT0gcmhzLm1fZGVub21pbmF0b3JWYWx1ZTsKK30KKwogdm9pZCBDU1NBc3BlY3RS
YXRpb1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaAppbmRleCA1Y2MzMzkyLi4wMjBmY2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKQEAgLTQ2LDYgKzQ2LDggQEAg
cHVibGljOgogICAgIGZsb2F0IG51bWVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9udW1l
cmF0b3JWYWx1ZTsgfQogICAgIGZsb2F0IGRlbm9taW5hdG9yVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2Rlbm9taW5hdG9yVmFsdWU7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NB
c3BlY3RSYXRpb1ZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAppbmRleCAzZmRhNmIxLi4yZjQ4N2I4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKQEAgLTc0LDYgKzc0LDE4IEBAIFN0cmluZyBDU1NC
YXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgbV9yYWRpdXNZLmdl
dCgpID8gbV9yYWRpdXNZLT5jc3NUZXh0KCkgOiBTdHJpbmcoKSk7CiB9CiAKK2Jvb2wgQ1NTQmFz
aWNTaGFwZVJlY3RhbmdsZTo6b3BlcmF0b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkg
Y29uc3QKK3sKKyAgICBpZiAodHlwZSgpID09IHNoYXBlLnR5cGUoKSkgeworICAgICAgICBjb25z
dCBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNp
Y1NoYXBlUmVjdGFuZ2xlJj4oc2hhcGUpOworICAgICAgICByZXR1cm4gKm1feCA9PSAqcmhzLm1f
eCAmJiAqbV95ID09ICpyaHMubV95ICYmICptX3dpZHRoID09ICpyaHMubV93aWR0aCAmJiAqbV9o
ZWlnaHQgPT0gKnJocy5tX2hlaWdodAorICAgICAgICAgICAgJiYgbV9yYWRpdXNYID8gcmhzLm1f
cmFkaXVzWCAmJiAqbV9yYWRpdXNYID09ICpyaHMubV9yYWRpdXNYIDogIXJocy5tX3JhZGl1c1gK
KyAgICAgICAgICAgICYmIG1fcmFkaXVzWSA/IHJocy5tX3JhZGl1c1kgJiYgKm1fcmFkaXVzWSA9
PSAqcmhzLm1fcmFkaXVzWSA6ICFyaHMubV9yYWRpdXNZOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU0Jhc2ljU2hh
cGVSZWN0YW5nbGU6OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0
b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogewpAQCAtMTA2LDYgKzExOCwx
NiBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIGJ1aWxkQ2lyY2xlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBtX2NlbnRlclktPmNz
c1RleHQoKSwgbV9yYWRpdXMtPmNzc1RleHQoKSk7CiB9CiAKK2Jvb2wgQ1NTQmFzaWNTaGFwZUNp
cmNsZTo6b3BlcmF0b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKK3sKKyAg
ICBpZiAodHlwZSgpID09IHNoYXBlLnR5cGUoKSkgeworICAgICAgICBjb25zdCBDU1NCYXNpY1No
YXBlQ2lyY2xlJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlQ2lyY2xlJj4o
c2hhcGUpOworICAgICAgICByZXR1cm4gKm1fY2VudGVyWCA9PSAqcmhzLm1fY2VudGVyWCAmJiAq
bV9jZW50ZXJZID09ICpyaHMubV9jZW50ZXJZICYmICptX3JhZGl1cyA9PSAqcmhzLm1fcmFkaXVz
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQogU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OnNlcmlhbGl6ZVJlc29sdmluZ1Zhcmlh
Ymxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25z
dAogewpAQCAtMTMyLDYgKzE1NCwxNyBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUVsbGlwc2U6OmNz
c1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZEVsbGlwc2VTdHJpbmcobV9jZW50ZXJYLT5j
c3NUZXh0KCksIG1fY2VudGVyWS0+Y3NzVGV4dCgpLCBtX3JhZGl1c1gtPmNzc1RleHQoKSwgbV9y
YWRpdXNZLT5jc3NUZXh0KCkpOwogfQogCitib29sIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpvcGVy
YXRvcj09KGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25zdAoreworICAgIGlmICh0eXBl
KCkgPT0gc2hhcGUudHlwZSgpKSB7CisgICAgICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVFbGxpcHNl
JiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlRWxsaXBzZSY+KHNoYXBlKTsK
KyAgICAgICAgcmV0dXJuICptX2NlbnRlclggPT0gKnJocy5tX2NlbnRlclggJiYgKm1fY2VudGVy
WSA9PSAqcmhzLm1fY2VudGVyWQorICAgICAgICAgICAgJiYgKm1fcmFkaXVzWCA9PSAqcmhzLm1f
cmFkaXVzWCAmJiAqbV9yYWRpdXNZID09ICpyaHMubV9yYWRpdXNZOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU0Jh
c2ljU2hhcGVFbGxpcHNlOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTE5OSw2ICsy
MzIsMTYgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjpjc3NUZXh0KCkgY29uc3QKICAg
ICByZXR1cm4gYnVpbGRQb2x5Z29uU3RyaW5nKG1fd2luZFJ1bGUsIHBvaW50cyk7CiB9CiAKK2Jv
b2wgQ1NTQmFzaWNTaGFwZVBvbHlnb246Om9wZXJhdG9yPT0oY29uc3QgQ1NTQmFzaWNTaGFwZSYg
c2hhcGUpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSA9PSBzaGFwZS50eXBlKCkpIHsKKyAgICAg
ICAgY29uc3QgQ1NTQmFzaWNTaGFwZVBvbHlnb24mIHJocyA9IHN0YXRpY19jYXN0PGNvbnN0IENT
U0Jhc2ljU2hhcGVQb2x5Z29uJj4oc2hhcGUpOworICAgICAgICByZXR1cm4gY29tcGFyZUNzc1Zh
bHVlVmVjdG9yPENTU1ByaW1pdGl2ZVZhbHVlPihtX3ZhbHVlcywgcmhzLm1fdmFsdWVzKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykK
IFN0cmluZyBDU1NCYXNpY1NoYXBlUG9seWdvbjo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCmluZGV4IGVmMzIwOTguLmUxN2ExNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5n
IGNzc1RleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTQmFzaWNTaGFwZSYpIGNvbnN0ID0gMDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQog
ICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNo
TWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0ID0gMDsKQEAgLTgyLDYgKzgzLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDU1NfQkFT
SUNfU0hBUEVfUkVDVEFOR0xFOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5n
PiYpIGNvbnN0OwpAQCAtMTEzLDYgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX0NJUkNMRTsgfQogICAgIHZp
cnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxF
UykKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3Qg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKQEAgLTE0Myw2ICsxNDYsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU19C
QVNJQ19TSEFQRV9FTExJUFNFOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5n
PiYpIGNvbnN0OwpAQCAtMTc3LDcgKzE4MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX1BPTFlHT047IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7Ci0KKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJM
RVMpCiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4IDdkMWIzZGEuLjYxODkzOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCkBAIC01
MCw2ICs1MCwxMSBAQCBTdHJpbmcgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjdXN0b21Dc3NU
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAorYm9vbCBDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlJiByaHMp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmlsbCA9PSByaHMubV9maWxsICYmIG1fc2xpY2VzICYm
IHJocy5tX3NsaWNlcyAmJiAqbV9zbGljZXMgPT0gKnJocy5tX3NsaWNlczsKK30KKwogdm9pZCBD
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NT
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRl
eCA0ODhiNGE0Li42NmUxMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9y
ZGVySW1hZ2VTbGljZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZS5oCkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIFF1YWQqIHNs
aWNlcygpIHsgcmV0dXJuIG1fc2xpY2VzID8gbV9zbGljZXMtPmdldFF1YWRWYWx1ZSgpIDogMDsg
fQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZSYp
IGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgZm91ciB2YWx1ZXMgYXJlIHVzZWQgdG8g
bWFrZSAiY3V0cyIgaW4gdGhlIGJvcmRlciBpbWFnZS4gVGhleSBjYW4gYmUgbnVtYmVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDFjMTU4Y2MuLjU5
NWZlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAg
LTk1LDYgKzk1LDExIEBAIFN0cmluZyBDU1NDYWxjVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25z
dAogICAgIHJldHVybiBidWlsZENzc1RleHQobV9leHByZXNzaW9uLT5jdXN0b21Dc3NUZXh0KCkp
OwogfQogCitib29sIENTU0NhbGNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NDYWxjVmFsdWUm
IHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fZXhwcmVzc2lvbiA9PSAqcmhzLm1fZXhwcmVz
c2lvbjsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU0NhbGNWYWx1
ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7CkBAIC0yMjMsMTEgKzIyOCwyMCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOyAgICAgICAgCiAgICAgfQogCisgICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJiByaHMpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAodHlwZSgpID09IHJocy50eXBlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gKm1fdmFsdWUgPT0gKnN0YXRpY19jYXN0PGNvbnN0IENTU0NhbGNQcmltaXRpdmVWYWx1
ZSY+KHJocykubV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHZp
cnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwogICAg
ICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlKTsKICAgICB9CisKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIENzc0NhbGNQcmltaXRpdmVWYWx1ZTsgfQogICAgIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBDU1NDYWxjUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWUqIHZhbHVlLCBib29sIGlzSW50ZWdlcikKQEAgLTM1OSw2ICszNzMsMTcgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlJiBleHApIGNvbnN0CisgICAgeworICAgICAgICBpZiAodHlwZSgpID09
IGV4cC50eXBlKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IENTU0NhbGNCaW5hcnlPcGVyYXRpb24m
IHJocyA9IHN0YXRpY19jYXN0PGNvbnN0IENTU0NhbGNCaW5hcnlPcGVyYXRpb24mPihleHApOwor
ICAgICAgICAgICAgcmV0dXJuICptX2xlZnRTaWRlID09ICpyaHMubV9sZWZ0U2lkZSAmJiAqbV9y
aWdodFNpZGUgPT0gKnJocy5tX3JpZ2h0U2lkZSAmJiBtX29wZXJhdG9yID09IHJocy5tX29wZXJh
dG9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENzc0NhbGNCaW5hcnlPcGVyYXRpb247IH0K
KwogcHJpdmF0ZToKICAgICBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKFBhc3NSZWZQdHI8Q1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5v
ZGU+IHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wLCBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVn
b3J5KQogICAgICAgICA6IENTU0NhbGNFeHByZXNzaW9uTm9kZShjYXRlZ29yeSwgbGVmdFNpZGUt
PmlzSW50ZWdlcigpICYmIHJpZ2h0U2lkZS0+aXNJbnRlZ2VyKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCAwNDRjZjMyLi5mNDIyNjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKQEAgLTYwLDcgKzYwLDExIEBAIGVudW0g
Q2FsY3VsYXRpb25DYXRlZ29yeSB7CiAgICAgCiBjbGFzcyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHsKIHB1YmxpYzoKLSAg
ICAKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBDc3NDYWxjUHJpbWl0aXZlVmFsdWUgPSAxLAor
ICAgICAgICBDc3NDYWxjQmluYXJ5T3BlcmF0aW9uCisgICAgfTsKKwogICAgIHZpcnR1YWwgfkNT
U0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNaZXJvKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2Fs
Y1ZhbHVlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20g
PSAxLjApIGNvbnN0ID0gMDsgICAgCkBAIC03MSw5ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJp
YWJsZVJlZmVyZW5jZSgpIGNvbnN0ID0gMDsKICNlbmRpZgotCisgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJikgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgPSAw
OwotICAgIAorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOworCiAgICAgQ2FsY3Vs
YXRpb25DYXRlZ29yeSBjYXRlZ29yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2F0ZWdvcnk7IH0gICAg
CiAgICAgYm9vbCBpc0ludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2lzSW50ZWdlcjsgfQogICAg
IApAQCAtMTA0LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aFB4
KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJs
ZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpIGNvbnN0
OwogICAgICAgICAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDU1NDYWxjVmFsdWUmKSBjb25zdDsKICNpZiBFTkFCTEUoQ1NTX1ZB
UklBQkxFUykKICAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNv
bnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CiAgICAgYm9vbCBoYXNW
YXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5j
cHAKaW5kZXggM2FlYTE3Yy4uMzcxMGI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCkBAIC05Niw2ICs5NiwxMSBAQCBQYXNzUmVmUHRyPEltYWdlPiBDU1NDYW52YXNWYWx1
ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgLwogICAgIHJl
dHVybiBlbHQtPmNvcGllZEltYWdlKCk7CiB9CiAKK2Jvb2wgQ1NTQ2FudmFzVmFsdWU6Om9wZXJh
dG9yPT0oY29uc3QgQ1NTQ2FudmFzVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9u
YW1lID09IHJocy5tX25hbWU7Cit9CisKIHZvaWQgQ1NTQ2FudmFzVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5k
ZXggMTNmYjU4Ny4uYThiOWRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bnZhc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAg
LTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
KSB7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NDYW52YXNWYWx1ZSYpIGNvbnN0
OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA0YmM3YjA4Li5jYTM2MmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApA
QCAtMjUzMSw3ICsyNTMxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAg
IGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0IH07CiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyk7ICsraSkgewot
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+Y3NzVGV4dCgpICE9ICBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKHByb3BlcnRpZXNbaV0sIERvTm90VXBkYXRlTGF5b3V0KS0+Y3NzVGV4dCgpKQorICAgICAg
ICAgICAgICAgIGlmICgqdmFsdWUgIT0gICpnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNb
aV0sIERvTm90VXBkYXRlTGF5b3V0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZSgpOwpAQCAtMjc1
Niw3ICsyNzU2LDcgQEAgYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1Byb3Bl
cnR5TWF0Y2hlcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0OjpQcm8KICAgICAgICAgfQogICAgIH0K
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0
eS5pZCgpKTsKLSAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUtPmNzc1RleHQoKSA9PSBwcm9wZXJ0
eS52YWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgcmV0dXJuIHZhbHVlICYmICp2YWx1ZSA9PSAqcHJv
cGVydHkudmFsdWUoKTsKIH0KIAogUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmNvcHkoKSBjb25zdApAQCAtMjc5Miw5ICsyNzkyLDkgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWQKICAgICBpZiAoIXRvcFZhbHVlIHx8ICFyaWdodFZhbHVl
IHx8ICFib3R0b21WYWx1ZSB8fCAhbGVmdFZhbHVlKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IGJvb2wgc2hvd0xlZnQgPSByaWdodFZhbHVlLT5jc3NUZXh0KCkgIT0gbGVmdFZhbHVlLT5jc3NU
ZXh0KCk7Ci0gICAgYm9vbCBzaG93Qm90dG9tID0gKHRvcFZhbHVlLT5jc3NUZXh0KCkgIT0gYm90
dG9tVmFsdWUtPmNzc1RleHQoKSkgfHwgc2hvd0xlZnQ7Ci0gICAgYm9vbCBzaG93UmlnaHQgPSAo
dG9wVmFsdWUtPmNzc1RleHQoKSAhPSByaWdodFZhbHVlLT5jc3NUZXh0KCkpIHx8IHNob3dCb3R0
b207CisgICAgYm9vbCBzaG93TGVmdCA9ICpyaWdodFZhbHVlICE9ICpsZWZ0VmFsdWU7CisgICAg
Ym9vbCBzaG93Qm90dG9tID0gKCp0b3BWYWx1ZSAhPSAqYm90dG9tVmFsdWUpIHx8IHNob3dMZWZ0
OworICAgIGJvb2wgc2hvd1JpZ2h0ID0gKCp0b3BWYWx1ZSAhPSAqcmlnaHRWYWx1ZSkgfHwgc2hv
d0JvdHRvbTsKIAogICAgIGxpc3QtPmFwcGVuZCh0b3BWYWx1ZSk7CiAgICAgaWYgKHNob3dSaWdo
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IDczNzVkMDgu
LmE2YTQ1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAt
MjE3LDQgKzIxNyw5IEBAIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2Vs
ZWRTdWJyZXNvdXJjZXMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDU1ND
cm9zc2ZhZGVWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgcmhzKSBj
b25zdAoreworICAgIHJldHVybiAqbV9mcm9tVmFsdWUgPT0gKnJocy5tX2Zyb21WYWx1ZSAmJiAq
bV90b1ZhbHVlID09ICpyaHMubV90b1ZhbHVlICYmICptX3BlcmNlbnRhZ2VWYWx1ZSA9PSAqcmhz
Lm1fcGVyY2VudGFnZVZhbHVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IDgwZDI2ZDEuLjg4NTZlNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC02Niw2ICs2Niw4IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0Owog
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJikgY29uc3Q7CisK
ICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5jcHAKaW5kZXggZWVmMGE0Ny4uYTdjODZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtMTQ5LDYgKzE0OSwxMSBAQCB2b2lkIENTU0N1cnNvcklt
YWdlVmFsdWU6OnJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB9
CiAjZW5kaWYKIAorYm9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IENT
U0N1cnNvckltYWdlVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYXNIb3RTcG90
ID8gcmhzLm1faGFzSG90U3BvdCAmJiBtX2hvdFNwb3QgPT0gcmhzLm1faG90U3BvdCA6ICFyaHMu
bV9oYXNIb3RTcG90OworfQorCiB2b2lkIENTU0N1cnNvckltYWdlVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDdXJzb3JJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oCmluZGV4IDgwZDNmMTUuLjIwMWE2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50Kik7CiAjZW5kaWYKIAorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDU1NDdXJzb3JJbWFnZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXgg
MGQxZmExMC4uYjNhM2ZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmNwcApAQCAtMTA0LDYgKzEwNCwxMSBAQCBDYWNoZWRGb250KiBDU1NGb250RmFjZVNyY1Zh
bHVlOjpjYWNoZWRGb250KERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1cm4gbV9jYWNoZWRG
b250LmdldCgpOwogfQogCitib29sIENTU0ZvbnRGYWNlU3JjVmFsdWU6Om9wZXJhdG9yPT0oY29u
c3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX2lzTG9j
YWwgPT0gcmhzLm1faXNMb2NhbCAmJiBtX2Zvcm1hdCA9PSByaHMubV9mb3JtYXQgJiYgbV9yZXNv
dXJjZSA9PSByaHMubV9yZXNvdXJjZTsKK30KKwogdm9pZCBDU1NGb250RmFjZVNyY1ZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU3JjVmFsdWUuaAppbmRleCBhMmM1NDY2Li4wZDdkOTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAg
ICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udChEb2N1bWVudCopOwogCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcAppbmRleCBiYzI3MGRlLi4y
ODNjNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCkBAIC01Miw2
ICs1MiwxMSBAQCBTdHJpbmcgQ1NTRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCitib29sIENTU0Z1bmN0aW9uVmFs
dWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTRnVuY3Rpb25WYWx1ZSYgcmhzKSBjb25zdAoreworICAg
IHJldHVybiBtX25hbWUgPT0gcmhzLm1fbmFtZSAmJiBtX2FyZ3MgPyByaHMubV9hcmdzICYmICpt
X2FyZ3MgPT0gKnJocy5tX2FyZ3MgOiAhcmhzLm1fYXJnczsKK30KKwogdm9pZCBDU1NGdW5jdGlv
blZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRleCA2YjdmYmM2Li43MjYxNTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogCiAgICAg
U3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDU1NGdW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggM2IxYmVjZS4uNWNkNGI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtNjQ0LDYgKzY0NCwzMCBA
QCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFk
aWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAgIHJldHVybiBncmFkaWVudC5yZWxlYXNlKCk7
CiB9CiAKK2Jvb2wgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NM
aW5lYXJHcmFkaWVudFZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgaWYgKG1fZGVwcmVjYXRlZFR5
cGUpCisgICAgICAgIHJldHVybiByaHMubV9kZXByZWNhdGVkVHlwZSAmJiAqbV9maXJzdFggPT0g
KnJocy5tX2ZpcnN0WCAmJiAqbV9maXJzdFkgPT0gKnJocy5tX2ZpcnN0WQorICAgICAgICAgICAg
JiYgKm1fc2Vjb25kWCA9PSAqcmhzLm1fc2Vjb25kWCAmJiAqbV9zZWNvbmRZID09ICpyaHMubV9z
ZWNvbmRZICYmIG1fc3RvcHMgPT0gcmhzLm1fc3RvcHM7CisKKyAgICBib29sIGVxdWFsUmVwZWF0
aW5nID0gbV9yZXBlYXRpbmcgPT0gcmhzLm1fcmVwZWF0aW5nOworICAgIGJvb2wgZXF1YWxYb3JZ
ID0gZmFsc2U7CisKKyAgICBpZiAobV9hbmdsZSkKKyAgICAgICAgcmV0dXJuIHJocy5tX2FuZ2xl
ICYmICptX2FuZ2xlID09ICpyaHMubV9hbmdsZSAmJiBtX3N0b3BzID09IHJocy5tX3N0b3BzICYm
IGVxdWFsUmVwZWF0aW5nOworCisgICAgaWYgKG1fZmlyc3RYICYmIG1fZmlyc3RZKQorICAgICAg
ICBlcXVhbFhvclkgPSByaHMubV9maXJzdFggJiYgcmhzLm1fZmlyc3RZICYmICptX2ZpcnN0WCA9
PSAqcmhzLm1fZmlyc3RYICYmICptX2ZpcnN0WSA9PSAqcmhzLm1fZmlyc3RZOworICAgIGVsc2Ug
aWYgKG1fZmlyc3RYKQorICAgICAgICBlcXVhbFhvclkgPSByaHMubV9maXJzdFggJiYgKm1fZmly
c3RYID09ICpyaHMubV9maXJzdFggJiYgIXJocy5tX2ZpcnN0WTsKKyAgICBlbHNlIGlmIChtX2Zp
cnN0WSkKKyAgICAgICAgZXF1YWxYb3JZID0gcmhzLm1fZmlyc3RZICYmICptX2ZpcnN0WSA9PSAq
cmhzLm1fZmlyc3RZICYmICFyaHMubV9maXJzdFg7CisgICAgZWxzZQorICAgICAgICBlcXVhbFhv
clkgPSAhcmhzLm1fZmlyc3RYIHx8ICFyaHMubV9maXJzdFk7CisKKyAgICByZXR1cm4gZXF1YWxS
ZXBlYXRpbmcgJiYgZXF1YWxYb3JZICYmICFyaHMubV9hbmdsZSAmJiBtX3N0b3BzID09IHJocy5t
X3N0b3BzOworfQorCiB2b2lkIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAog
ewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNv
cmVNZW1vcnlUeXBlczo6Q1NTKTsKQEAgLTk2OSw2ICs5OTMsNDMgQEAgUGFzc1JlZlB0cjxHcmFk
aWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0
KiByZW5kZXIKICAgICByZXR1cm4gZ3JhZGllbnQucmVsZWFzZSgpOwogfQogCitib29sIENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZSYgcmhzKSBjb25zdAoreworICAgIGlmIChtX2RlcHJlY2F0ZWRUeXBlKQorICAgICAgICByZXR1
cm4gcmhzLm1fZGVwcmVjYXRlZFR5cGUgJiYgKm1fZmlyc3RYID09ICpyaHMubV9maXJzdFggJiYg
Km1fZmlyc3RZID09ICpyaHMubV9maXJzdFkKKyAgICAgICAgICAgICYmICptX3NlY29uZFggPT0g
KnJocy5tX3NlY29uZFggJiYgKm1fc2Vjb25kWSA9PSAqcmhzLm1fc2Vjb25kWSAmJiAqbV9maXJz
dFJhZGl1cyA9PSAqcmhzLm1fZmlyc3RSYWRpdXMKKyAgICAgICAgICAgICYmICptX3NlY29uZFJh
ZGl1cyA9PSAqcmhzLm1fc2Vjb25kUmFkaXVzICYmIG1fc3RvcHMgPT0gcmhzLm1fc3RvcHM7CisK
KyAgICBib29sIGVxdWFsUmVwZWF0aW5nID0gbV9yZXBlYXRpbmcgPT0gcmhzLm1fcmVwZWF0aW5n
OworICAgIGJvb2wgZXF1YWxYb3JZID0gZmFsc2U7CisKKyAgICBpZiAobV9maXJzdFggJiYgbV9m
aXJzdFkpCisgICAgICAgIGVxdWFsWG9yWSA9IHJocy5tX2ZpcnN0WCAmJiByaHMubV9maXJzdFkg
JiYgKm1fZmlyc3RYID09ICpyaHMubV9maXJzdFggJiYgKm1fZmlyc3RZID09ICpyaHMubV9maXJz
dFk7CisgICAgZWxzZSBpZiAobV9maXJzdFgpCisgICAgICAgIGVxdWFsWG9yWSA9IHJocy5tX2Zp
cnN0WCAmJiAqbV9maXJzdFggPT0gKnJocy5tX2ZpcnN0WCAmJiAhcmhzLm1fZmlyc3RZOworICAg
IGVsc2UgaWYgKG1fZmlyc3RZKQorICAgICAgICBlcXVhbFhvclkgPSByaHMubV9maXJzdFkgJiYg
Km1fZmlyc3RZID09ICpyaHMubV9maXJzdFkgJiYgIXJocy5tX2ZpcnN0WDsKKyAgICBlbHNlCisg
ICAgICAgIGVxdWFsWG9yWSA9PSAhcmhzLm1fZmlyc3RYIHx8ICFyaHMubV9maXJzdFk7CisKKyAg
ICBib29sIGVxdWFsU2hhcGUgPSB0cnVlOworICAgIGJvb2wgZXF1YWxTaXppbmdCZWhhdmlvciA9
IHRydWU7CisgICAgYm9vbCBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSB0cnVlOwor
CisgICAgaWYgKG1fc2hhcGUpCisgICAgICAgIGVxdWFsU2hhcGUgPSByaHMubV9zaGFwZSAmJiAq
bV9zaGFwZSA9PSAqcmhzLm1fc2hhcGU7CisgICAgZWxzZSBpZiAobV9zaXppbmdCZWhhdmlvcikK
KyAgICAgICAgZXF1YWxTaXppbmdCZWhhdmlvciA9IHJocy5tX3NpemluZ0JlaGF2aW9yICYmICpt
X3NpemluZ0JlaGF2aW9yID09ICpyaHMubV9zaXppbmdCZWhhdmlvcjsKKyAgICBlbHNlIGlmICht
X2VuZEhvcml6b250YWxTaXplICYmIG1fZW5kVmVydGljYWxTaXplKQorICAgICAgICBlcXVhbEhv
cml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSByaHMubV9lbmRIb3Jpem9udGFsU2l6ZSAmJiByaHMu
bV9lbmRWZXJ0aWNhbFNpemUgJiYgKnJocy5tX2VuZEhvcml6b250YWxTaXplID09ICptX2VuZEhv
cml6b250YWxTaXplICYmICpyaHMubV9lbmRWZXJ0aWNhbFNpemUgPT0gKm1fZW5kVmVydGljYWxT
aXplOworICAgIGVsc2UgeworICAgICAgICBlcXVhbFNoYXBlID0gIXJocy5tX3NoYXBlOworICAg
ICAgICBlcXVhbFNpemluZ0JlaGF2aW9yID0gIXJocy5tX3NpemluZ0JlaGF2aW9yOworICAgICAg
ICBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSAhcmhzLm1fZW5kSG9yaXpvbnRhbFNp
emUgJiYgIXJocy5tX2VuZFZlcnRpY2FsU2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIGVxdWFsUmVw
ZWF0aW5nICYmIGVxdWFsWG9yWSAmJiBlcXVhbFNoYXBlICYmIGVxdWFsU2l6aW5nQmVoYXZpb3Ig
JiYgZXF1YWxIb3Jpem9udGFsQW5kVmVydGljYWxTaXplICYmIG1fc3RvcHMgPT0gcmhzLm1fc3Rv
cHM7Cit9CisKIHZvaWQgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAg
ICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1l
bW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRp
ZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXgg
MWUyNWFjZi4uYzE3ZWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRp
ZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBA
IC00Niw2ICs0NiwxMSBAQCBzdHJ1Y3QgQ1NTR3JhZGllbnRDb2xvclN0b3AgewogICAgIENvbG9y
IG1fcmVzb2x2ZWRDb2xvcjsKICAgICBib29sIG1fY29sb3JJc0Rlcml2ZWRGcm9tRWxlbWVudDsK
ICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHJocykgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbG9yID8gcmhzLm1fY29sb3IgJiYgKm1fY29sb3Ig
PT0gKnJocy5tX2NvbG9yIDogIXJocy5tX2NvbG9yCisgICAgICAgICYmIG1fcG9zaXRpb24gPyBy
aHMubV9wb3NpdGlvbiAmJiAqbV9wb3NpdGlvbiA9PSAqcmhzLm1fcG9zaXRpb24gOiAhcmhzLm1f
cG9zaXRpb247CisgICAgfQogfTsKIAogY2xhc3MgQ1NTR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKQEAgLTE0NCw2ICsxNDksOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSgqdGhpcykpOwog
ICAgIH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVl
JikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0xODcsNiArMTk0LDggQEAgcHVibGlj
OgogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2ZW4gc2l6ZS4KICAgICBQYXNz
UmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRT
aXplJik7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuY3BwCmluZGV4IDZlMTAzYTkuLmI5ODVjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHAKQEAgLTEyMCw2ICsxMjAsMTEgQEAgYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKICAgICByZXR1cm4gY2FjaGVkUmVzb3Vy
Y2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCk7CiB9CiAKK2Jvb2wgQ1NTSW1hZ2VWYWx1ZTo6b3Bl
cmF0b3I9PShjb25zdCBDU1NJbWFnZVZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dXJsID09IHJocy5tX3VybDsKK30KKwogU3RyaW5nIENTU0ltYWdlVmFsdWU6OmN1c3RvbUNzc1Rl
eHQoKSBjb25zdAogewogICAgIHJldHVybiAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1f
dXJsKSArICIpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IDFkOTc1ODMuLmQw
ZjZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaApAQCAtNTAsNiArNTAsOCBAQCBw
dWJsaWM6CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25z
dDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NJbWFnZVZhbHVlJikgY29uc3Q7CisK
ICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKICAgICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAppbmRleCA2OGMwMDFmLi5jYTRjZDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaApAQCAtMzUsNiArMzUsOCBA
QCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENTU0luaGVyaXRlZFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0luaXRpYWxWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5o
CmluZGV4IGQ1MjMzNDMuLjkzYjc3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbml0aWFsVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVl
LmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0ltcGxpY2l0KCkgY29u
c3QgeyByZXR1cm4gbV9pc0ltcGxpY2l0OyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTSW5pdGlhbFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdm9pZCByZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKaW5kZXgg
ZWViNjQ3MC4uM2Q4OTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVC
b3hDb250YWluVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRh
aW5WYWx1ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBTdHJpbmcg
Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwotCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0xp
bmVCb3hDb250YWluVmFsdWUmIHJocykgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSByaHMubV92
YWx1ZTsgfQogICAgIExpbmVCb3hDb250YWluIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQogCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5k
ZXggYzY3MjZjZC4uYTg2OTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCkBAIC0xMjU1LDYgKzEyNTUsODEgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK2Jvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NT
UHJpbWl0aXZlVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAobV9wcmltaXRpdmVVbml0VHlw
ZSA9PSByaHMubV9wcmltaXRpdmVVbml0VHlwZSkKKyAgICAgICAgc3dpdGNoIChtX3ByaW1pdGl2
ZVVuaXRUeXBlKSB7CisgICAgICAgIGNhc2UgQ1NTX1VOS05PV046CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGNhc2UgQ1NTX05VTUJFUjoKKyAgICAgICAgY2FzZSBDU1NfUEFS
U0VSX0lOVEVHRVI6CisgICAgICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CisgICAgICAgIGNhc2Ug
Q1NTX0VNUzoKKyAgICAgICAgY2FzZSBDU1NfRVhTOgorICAgICAgICBjYXNlIENTU19SRU1TOgor
ICAgICAgICBjYXNlIENTU19QWDoKKyAgICAgICAgY2FzZSBDU1NfQ006CisjaWYgRU5BQkxFKENT
U19JTUFHRV9SRVNPTFVUSU9OKSB8fCBFTkFCTEUoUkVTT0xVVElPTl9NRURJQV9RVUVSWSkKKyAg
ICAgICAgY2FzZSBDU1NfRFBQWDoKKyAgICAgICAgY2FzZSBDU1NfRFBJOgorICAgICAgICBjYXNl
IENTU19EUENNOgorI2VuZGlmCisgICAgICAgIGNhc2UgQ1NTX01NOgorICAgICAgICBjYXNlIENT
U19JTjoKKyAgICAgICAgY2FzZSBDU1NfUFQ6CisgICAgICAgIGNhc2UgQ1NTX1BDOgorICAgICAg
ICBjYXNlIENTU19ERUc6CisgICAgICAgIGNhc2UgQ1NTX1JBRDoKKyAgICAgICAgY2FzZSBDU1Nf
R1JBRDoKKyAgICAgICAgY2FzZSBDU1NfTVM6CisgICAgICAgIGNhc2UgQ1NTX1M6CisgICAgICAg
IGNhc2UgQ1NTX0haOgorICAgICAgICBjYXNlIENTU19LSFo6CisgICAgICAgIGNhc2UgQ1NTX1RV
Uk46CisgICAgICAgIGNhc2UgQ1NTX1ZXOgorICAgICAgICBjYXNlIENTU19WSDoKKyAgICAgICAg
Y2FzZSBDU1NfVk1JTjoKKyAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgorICAgICAgICAgICAg
cmV0dXJuIG1fdmFsdWUubnVtID09IHJocy5tX3ZhbHVlLm51bTsKKyAgICAgICAgY2FzZSBDU1Nf
SURFTlQ6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlk
ZW50KSA9PSB2YWx1ZU9yUHJvcGVydHlOYW1lKHJocy5tX3ZhbHVlLmlkZW50KTsKKyAgICAgICAg
Y2FzZSBDU1NfU1RSSU5HOgorICAgICAgICBjYXNlIENTU19VUkk6CisgICAgICAgIGNhc2UgQ1NT
X0FUVFI6CisgICAgICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKKyAgICAgICAgY2FzZSBDU1Nf
UEFSU0VSX0lERU5USUZJRVI6CisgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKKyNp
ZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICAgICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFNRToK
KyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIGVxdWFsKG1fdmFsdWUuc3RyaW5nLCByaHMubV92
YWx1ZS5zdHJpbmcpOworICAgICAgICBjYXNlIENTU19DT1VOVEVSOgorICAgICAgICAgICAgcmV0
dXJuICptX3ZhbHVlLmNvdW50ZXIgPT0gKnJocy5tX3ZhbHVlLmNvdW50ZXI7CisgICAgICAgIGNh
c2UgQ1NTX1JFQ1Q6CisgICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUucmVjdCA9PSAqcmhzLm1f
dmFsdWUucmVjdDsKKyAgICAgICAgY2FzZSBDU1NfUVVBRDoKKyAgICAgICAgICAgIHJldHVybiAq
bV92YWx1ZS5xdWFkID09ICpyaHMubV92YWx1ZS5xdWFkOworICAgICAgICBjYXNlIENTU19SR0JD
T0xPUjoKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLnJnYmNvbG9yID09IHJocy5tX3ZhbHVl
LnJnYmNvbG9yOworICAgICAgICBjYXNlIENTU19QQUlSOgorICAgICAgICAgICAgcmV0dXJuICpt
X3ZhbHVlLnBhaXIgPT0gKnJocy5tX3ZhbHVlLnBhaXI7CisjaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKQorICAgICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOiB7CisgICAgICAgICAg
ICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7Cisg
ICAgICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHJoc1JlZ2lvbiA9IHJocy5nZXREYXNoYm9hcmRS
ZWdpb25WYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlZ2lvbiA/IHJoc1JlZ2lvbiAmJiAq
cmVnaW9uID09ICpyaHNSZWdpb24gOiAhcmhzUmVnaW9uOworICAgICAgICB9CisjZW5kaWYKKyAg
ICAgICAgY2FzZSBDU1NfUEFSU0VSX09QRVJBVE9SOgorICAgICAgICAgICAgcmV0dXJuIG1fdmFs
dWUuaWRlbnQgPT0gcmhzLm1fdmFsdWUuaWRlbnQ7CisgICAgICAgIGNhc2UgQ1NTX0NBTEM6Cisg
ICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUuY2FsYyA9PSAqcmhzLm1fdmFsdWUuY2FsYzsKKyAg
ICAgICAgY2FzZSBDU1NfU0hBUEU6CisgICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUuc2hhcGUg
PT0gKnJocy5tX3ZhbHVlLnNoYXBlOworICAgICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNT
Uyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IGZjYzViODMuLjNh
NWU4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0zMTUsNiAr
MzE1LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNsb25l
Rm9yQ1NTT00oKSBjb25zdDsKICAgICB2b2lkIHNldENTU09NU2FmZSgpIHsgbV9pc0NTU09NU2Fm
ZSA9IHRydWU7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVj
dFZhbHVlLmNwcAppbmRleCA5NDM5ZDYwLi4yMTYxMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmNwcApAQCAtNjcsNiArNjcsMTIgQEAgdm9pZCBDU1NSZWZsZWN0VmFsdWU6
OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBT
dHkKICAgICAgICAgbV9tYXNrLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNo
ZWV0KTsKIH0KIAorYm9vbCBDU1NSZWZsZWN0VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTUmVm
bGVjdFZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlyZWN0aW9uID09IHJocy5t
X2RpcmVjdGlvbiAmJiAqbV9vZmZzZXQgPT0gKnJocy5tX29mZnNldAorICAgICAgICAmJiBtX21h
c2sgPyByaHMubV9tYXNrICYmICptX21hc2sgPT0gKnJocy5tX21hc2sgOiAhcmhzLm1fbWFzazsK
K30KKwogdm9pZCBDU1NSZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNs
YXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6
Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCAxYmRmZDVmLi5jYTlm
MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC01MSw2ICs1MSw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDU1NSZWZsZWN0VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAppbmRl
eCBlMWJiMWQxLi45MjZhZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1
bmN0aW9uVmFsdWUuY3BwCkBAIC01MCw2ICs1MCwxMiBAQCBTdHJpbmcgQ1NTQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICAgICAgKyBTdHJp
bmc6Om51bWJlcihtX3kyKSArICIpIjsKIH0KIAorYm9vbCBDU1NDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
blZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1feDEgPT0gcmhzLm1feDEgJiYgbV94
MiA9PSByaHMubV94MiAmJiBtX3kxID09IHJocy5tX3kxICYmIG1feTIgPT0gcmhzLm1feTI7Cit9
CisKKwogdm9pZCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKQEAgLTYwLDYgKzY2LDEyIEBAIFN0cmluZyBDU1NTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiAi
c3RlcHMoIiArIFN0cmluZzo6bnVtYmVyKG1fc3RlcHMpICsgIiwgIiArIChtX3N0ZXBBdFN0YXJ0
ID8gInN0YXJ0IiA6ICJlbmQiKSArICcpJzsKIH0KIAorYm9vbCBDU1NTdGVwc1RpbWluZ0Z1bmN0
aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlJiBy
aHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RlcHMgPT0gcmhzLm1fc3RlcHMgJiYgbV9zdGVw
QXRTdGFydCA9PSByaHMubV9zdGVwQXRTdGFydDsKK30KKworCiB2b2lkIENTU1N0ZXBzVGltaW5n
RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKaW5kZXggM2ViNGIyMi4uZDEx
ODkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBA
IC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29u
c3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25W
YWx1ZSYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTYz
LDYgKzY1LDggQEAgcHVibGljOgogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7
IH0KICAgICBkb3VibGUgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlJikgY29uc3Q7
CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05Myw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcAppbmRleCAzNGQ2
M2I2Li4wYjI5N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJh
bmdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1
ZS5jcHAKQEAgLTM4LDYgKzM4LDExIEBAIFN0cmluZyBDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6Y3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBDU1NVbmlj
b2RlUmFuZ2VWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYgcmhz
KSBjb25zdAoreworICAgIHJldHVybiBtX2Zyb20gPT0gcmhzLm1fZnJvbSAmJiBtX3RvID09IHJo
cy5tX3RvOworfQorCiB2b2lkIENTU1VuaWNvZGVSYW5nZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsK
ICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3Jl
TWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5p
Y29kZVJhbmdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1
ZS5oCmluZGV4IGQ1MGY1YjYuLjkxYThjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmlj
b2RlUmFuZ2VWYWx1ZS5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBj
dXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVW5p
Y29kZVJhbmdlVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCmluZGV4IDBhNjEyOWQuLjU5MjUwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNw
cApAQCAtNzMsNyArNzMsMTMgQEAgc3RydWN0IFNhbWVTaXplQXNDU1NWYWx1ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNhbWVTaXplQXNDU1NWYWx1ZT4gewogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKENTU1ZhbHVlKSA9PSBzaXplb2YoU2FtZVNpemVBc0NTU1ZhbHVlKSwgQ1NTX3ZhbHVlX3No
b3VsZF9zdGF5X3NtYWxsKTsKLSAgICAKKwordGVtcGxhdGU8Y2xhc3MgQ2hpbGRDbGFzc1R5cGU+
CitpbmxpbmUgc3RhdGljIGJvb2wgY29tcGFyZUNzc1ZhbHVlcyhjb25zdCBDU1NWYWx1ZSYgbGhz
LCBjb25zdCBDU1NWYWx1ZSYgcmhzKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBD
aGlsZENsYXNzVHlwZSY+KGxocykgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgQ2hpbGRDbGFzc1R5cGUm
PihyaHMpOworfQorCiBjbGFzcyBUZXh0Q2xvbmVDU1NWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dENsb25lQ1NTVmFsdWU+IGNyZWF0
ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUZXh0Q2xvbmVDU1NWYWx1ZShjbGFzc1R5cGUsIHRleHQpKTsgfQpAQCAtMjc2LDYg
KzI4MiwxMDIgQEAgdm9pZCBDU1NWYWx1ZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAorYm9vbCBDU1NWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NWYWx1ZSYgcmhzKSBjb25z
dAoreworICAgIGlmIChtX2lzVGV4dENsb25lKSB7CisgICAgICAgIEFTU0VSVChpc0NTU09NU2Fm
ZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFRleHRDbG9uZUNTU1ZhbHVl
Kj4odGhpcyktPmNzc1RleHQoKSA9PSByaHMuY3NzVGV4dCgpOworICAgIH0KKworICAgIGlmICht
X2NsYXNzVHlwZSA9PSByaHMubV9jbGFzc1R5cGUpIHsKKyAgICAgICAgc3dpdGNoIChtX2NsYXNz
VHlwZSkgeworICAgICAgICBjYXNlIEFzcGVjdFJhdGlvQ2xhc3M6CisgICAgICAgICAgICByZXR1
cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NBc3BlY3RSYXRpb1ZhbHVlPigqdGhpcywgcmhzKTsKKyAg
ICAgICAgY2FzZSBCb3JkZXJJbWFnZVNsaWNlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29t
cGFyZUNzc1ZhbHVlczxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+KCp0aGlzLCByaHMpOworICAg
ICAgICBjYXNlIENhbnZhc0NsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1
ZXM8Q1NTQ2FudmFzVmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIEN1cnNvckltYWdl
Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NDdXJzb3JJbWFn
ZVZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBGb250Q2xhc3M6CisgICAgICAgICAg
ICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxGb250VmFsdWU+KCp0aGlzLCByaHMpOworICAgICAg
ICBjYXNlIEZvbnRGYWNlU3JjQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1Zh
bHVlczxDU1NGb250RmFjZVNyY1ZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBGb250
RmVhdHVyZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Rm9udEZl
YXR1cmVWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgRnVuY3Rpb25DbGFzczoKKyAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0Z1bmN0aW9uVmFsdWU+KCp0aGlz
LCByaHMpOworICAgICAgICBjYXNlIExpbmVhckdyYWRpZW50Q2xhc3M6CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPigqdGhpcywgcmhz
KTsKKyAgICAgICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNzOgorICAgICAgICAgICAgcmV0dXJu
IGNvbXBhcmVDc3NWYWx1ZXM8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4oKnRoaXMsIHJocyk7Cisg
ICAgICAgIGNhc2UgQ3Jvc3NmYWRlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNz
c1ZhbHVlczxDU1NDcm9zc2ZhZGVWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgSW1h
Z2VDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0ltYWdlVmFs
dWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIEluaGVyaXRlZENsYXNzOgorICAgICAgICAg
ICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTSW5oZXJpdGVkVmFsdWU+KCp0aGlzLCByaHMp
OworICAgICAgICBjYXNlIEluaXRpYWxDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJl
Q3NzVmFsdWVzPENTU0luaXRpYWxWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgUHJp
bWl0aXZlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgUmVmbGVjdENsYXNzOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTUmVmbGVjdFZhbHVlPigqdGhpcywg
cmhzKTsKKyAgICAgICAgY2FzZSBTaGFkb3dDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21w
YXJlQ3NzVmFsdWVzPFNoYWRvd1ZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBMaW5l
YXJUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1
ZXM8Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNh
c2UgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNv
bXBhcmVDc3NWYWx1ZXM8Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlPigqdGhpcywg
cmhzKTsKKyAgICAgICAgY2FzZSBTdGVwc1RpbWluZ0Z1bmN0aW9uQ2xhc3M6CisgICAgICAgICAg
ICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU+KCp0
aGlzLCByaHMpOworICAgICAgICBjYXNlIFVuaWNvZGVSYW5nZUNsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTVW5pY29kZVJhbmdlVmFsdWU+KCp0aGlzLCByaHMp
OworICAgICAgICBjYXNlIFZhbHVlTGlzdENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBh
cmVDc3NWYWx1ZXM8Q1NTVmFsdWVMaXN0PigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBXZWJL
aXRDU1NUcmFuc2Zvcm1DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVz
PFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBMaW5l
Qm94Q29udGFpbkNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NT
TGluZUJveENvbnRhaW5WYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgQ2FsY3VsYXRp
b25DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0NhbGNWYWx1
ZT4oKnRoaXMsIHJocyk7CisjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCisgICAgICAgIGNhc2Ug
SW1hZ2VTZXRDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0lt
YWdlU2V0VmFsdWU+KCp0aGlzLCByaHMpOworI2VuZGlmCisjaWYgRU5BQkxFKENTU19GSUxURVJT
KQorICAgICAgICBjYXNlIFdlYktpdENTU0ZpbHRlckNsYXNzOgorICAgICAgICAgICAgcmV0dXJu
IGNvbXBhcmVDc3NWYWx1ZXM8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+KCp0aGlzLCByaHMpOworI2lm
IEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NBcnJheUZ1bmN0aW9u
VmFsdWVDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPFdlYktpdENT
U0FycmF5RnVuY3Rpb25WYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NT
TWl4RnVuY3Rpb25WYWx1ZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1
ZXM8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2Ug
V2ViS2l0Q1NTU2hhZGVyQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVl
czxXZWJLaXRDU1NTaGFkZXJWYWx1ZT4oKnRoaXMsIHJocyk7CisjZW5kaWYKKyNlbmRpZgorI2lm
IEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgICAgICBjYXNlIFZhcmlhYmxlQ2xhc3M6CisgICAg
ICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NWYXJpYWJsZVZhbHVlPigqdGhpcywg
cmhzKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGNhc2UgU1ZHQ29sb3JDbGFz
czoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPFNWR0NvbG9yPigqdGhpcywg
cmhzKTsKKyAgICAgICAgY2FzZSBTVkdQYWludENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNv
bXBhcmVDc3NWYWx1ZXM8U1ZHUGFpbnQ+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIFdlYktp
dENTU1NWR0RvY3VtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVl
czxXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgfQorI2Vu
ZGlmCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0gZWxzZSBpZiAobV9jbGFz
c1R5cGUgPT0gVmFsdWVMaXN0Q2xhc3MgJiYgcmhzLm1fY2xhc3NUeXBlICE9IFZhbHVlTGlzdENs
YXNzKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Jj4oKnRo
aXMpID09IHJoczsKKyAgICBlbHNlIGlmIChtX2NsYXNzVHlwZSAhPSBWYWx1ZUxpc3RDbGFzcyAm
JiByaHMubV9jbGFzc1R5cGUgPT0gVmFsdWVMaXN0Q2xhc3MpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDU1NWYWx1ZUxpc3QmPihyaHMpID09ICp0aGlzOworICAgIHJldHVybiBm
YWxzZTsKK30KKwogU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBpZiAo
bV9pc1RleHRDbG9uZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCBiMmE1MzFhLi5iYzA4YzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMTI2LDYgKzEyNiw5IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IENTU1ZhbHVlJiByaHMpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gcmhzKTsg
fQorCiBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IENsYXNzVHlwZUJpdHMg
PSA2OwpAQCAtMjM2LDYgKzIzOSwyMyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY2xhc3NU
eXBlIDogQ2xhc3NUeXBlQml0czsgLy8gQ2xhc3NUeXBlCiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDU1NWYWx1ZVR5cGU+CitpbmxpbmUgYm9vbCBjb21wYXJlQ3NzVmFsdWVWZWN0b3IoY29uc3Qg
VmVjdG9yPFJlZlB0cjxDU1NWYWx1ZVR5cGU+ID4mIGxocywgY29uc3QgVmVjdG9yPFJlZlB0cjxD
U1NWYWx1ZVR5cGU+ID4mIHJocykKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IGxocy5zaXplKCk7Cisg
ICAgaWYgKHNpemUgPT0gcmhzLnNpemUoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgY29uc3QgUmVmUHRyPENTU1ZhbHVlVHlwZT4m
IGxoc1B0ciA9IGxoc1tpXTsKKyAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxDU1NWYWx1ZVR5cGU+
JiByaHNQdHIgPSByaHNbaV07CisgICAgICAgICAgICBpZiAobGhzUHRyID09IHJoc1B0ciB8fCAo
bGhzUHRyICYmIHJoc1B0ciAmJiAqbGhzUHRyID09ICpyaHNQdHIpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU1ZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
TGlzdC5jcHAKaW5kZXggOWVjMmQ1MC4uZTQ1YWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
TGlzdC5jcHAKQEAgLTU1LDEwICs1NSw4IEBAIENTU1ZhbHVlTGlzdDo6Q1NTVmFsdWVMaXN0KENT
U1BhcnNlclZhbHVlTGlzdCogcGFyc2VyVmFsdWVzKQogYm9vbCBDU1NWYWx1ZUxpc3Q6OnJlbW92
ZUFsbChDU1NWYWx1ZSogdmFsKQogewogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAvLyBG
SVhNRTogd2Ugc2hvdWxkIGJlIGltcGxlbWVudGluZyBvcGVyYXRvcj09IHRvIENTU1ZhbHVlIGFu
ZCBpdHMgZGVyaXZlZCBjbGFzc2VzCi0gICAgLy8gdG8gbWFrZSBjb21wYXJpc29uIG1vcmUgZmxl
eGlibGUgYW5kIGZhc3QuCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fdmFs
dWVzLnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBpZiAobV92YWx1ZXMuYXQoaW5kZXgpLT5j
c3NUZXh0KCkgPT0gdmFsLT5jc3NUZXh0KCkpIHsKKyAgICAgICAgaWYgKCptX3ZhbHVlcy5hdChp
bmRleCkgPT0gKnZhbCkgewogICAgICAgICAgICAgbV92YWx1ZXMucmVtb3ZlKGluZGV4KTsKICAg
ICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNjksMTAgKzY3LDggQEAgYm9v
bCBDU1NWYWx1ZUxpc3Q6OnJlbW92ZUFsbChDU1NWYWx1ZSogdmFsKQogCiBib29sIENTU1ZhbHVl
TGlzdDo6aGFzVmFsdWUoQ1NTVmFsdWUqIHZhbCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogd2Ug
c2hvdWxkIGJlIGltcGxlbWVudGluZyBvcGVyYXRvcj09IHRvIENTU1ZhbHVlIGFuZCBpdHMgZGVy
aXZlZCBjbGFzc2VzCi0gICAgLy8gdG8gbWFrZSBjb21wYXJpc29uIG1vcmUgZmxleGlibGUgYW5k
IGZhc3QuCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fdmFsdWVzLnNpemUo
KTsgaW5kZXgrKykgewotICAgICAgICBpZiAobV92YWx1ZXMuYXQoaW5kZXgpLT5jc3NUZXh0KCkg
PT0gdmFsLT5jc3NUZXh0KCkpCisgICAgICAgIGlmICgqbV92YWx1ZXMuYXQoaW5kZXgpID09ICp2
YWwpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTI3LDYgKzEyMywxOSBAQCBTdHJpbmcgQ1NTVmFsdWVMaXN0OjpjdXN0b21Dc3NUZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgQ1NTVmFsdWVM
aXN0OjpvcGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlTGlzdCYgcmhzKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ZhbHVlTGlzdFNlcGFyYXRvciA9PSByaHMubV92YWx1ZUxpc3RTZXBhcmF0b3IgJiYg
Y29tcGFyZUNzc1ZhbHVlVmVjdG9yPENTU1ZhbHVlPihtX3ZhbHVlcywgcmhzLm1fdmFsdWVzKTsK
K30KKworYm9vbCBDU1NWYWx1ZUxpc3Q6Om9wZXJhdG9yPT0oY29uc3QgQ1NTVmFsdWUmIHJocykg
Y29uc3QKK3sKKyAgICBpZiAobV92YWx1ZXMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiAq
bV92YWx1ZXNbMF0gPT0gcmhzOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiAjaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NTVmFsdWVMaXN0OjpjdXN0b21TZXJpYWxpemVSZXNv
bHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlh
YmxlcykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCAzZDg5N2JjLi43
ZDNlNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC02MCw2ICs2MCw4IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29weSgpOwogCiAgICAgU3RyaW5n
IGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFs
dWVMaXN0JikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlJikgY29u
c3Q7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgU3RyaW5nIGN1c3RvbVNlcmlhbGl6
ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYp
IGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFi
bGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaAppbmRleCA0
ZmM0Zjc1Li4xMGM3ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFi
bGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmgKQEAg
LTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFyaWFi
bGVWYWx1ZSYgcmhzKSBjb25zdCB7IHJldHVybiBtX25hbWUgPT0gcmhzLm1fbmFtZSAmJiBtX3Zh
bHVlID09IHJocy5tX3ZhbHVlOyB9CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKICAg
ICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29y
ZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgKaW5kZXggNTFmYTcxMC4uZjllN2Mw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ291bnRlci5oCkBAIC00Miw2ICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRJZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlkZW50aWZpZXIp
IHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlKFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHlsZSkgeyBtX2xpc3RTdHlsZSA9IGxp
c3RTdHlsZTsgfQogICAgIHZvaWQgc2V0U2VwYXJhdG9yKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHNlcGFyYXRvcikgeyBtX3NlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQorCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXImIHJocykgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBpZGVudGlmaWVyKCkgPT0gcmhzLmlkZW50aWZpZXIoKQorICAgICAgICAgICAgJiYgbGlz
dFN0eWxlKCkgPT0gcmhzLmxpc3RTdHlsZSgpCisgICAgICAgICAgICAmJiBzZXBhcmF0b3IoKSA9
PSByaHMuc2VwYXJhdG9yKCk7CisgICAgfQogICAgIAogICAgIFBhc3NSZWZQdHI8Q291bnRlcj4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0Rhc2hib2FyZFJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0Rhc2hib2FyZFJlZ2lv
bi5oCmluZGV4IDkxZTVkN2EuLjBjNmU3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9EYXNoYm9hcmRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGFzaGJvYXJkUmVn
aW9uLmgKQEAgLTMwLDYgKzMwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERhc2hi
b2FyZFJlZ2lvbiA6IHB1YmxpYyBSZWN0QmFzZSwgcHVibGljIFJlZkNvdW50ZWQ8RGFzaGJvYXJk
UmVnaW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGFzaGJvYXJkUmVnaW9u
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRGFzaGJvYXJkUmVnaW9uKTsgfQorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBEYXNoYm9hcmRSZWdpb24mIHJocykgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2xhYmVsID09IHJocy5tX2xhYmVsICYmIG1fZ2VvbWV0cnlUeXBl
ID09IHJocy5tX2dlb21ldHJ5VHlwZQorICAgICAgICAgICAgJiYgbV9pc0NpcmNsZSA9PSByaHMu
bV9pc0NpcmNsZSAmJiBtX2lzUmVjdGFuZ2xlID09IHJocy5tX2lzUmVjdGFuZ2xlCisgICAgICAg
ICAgICAmJiBtX25leHQgPyByaHMubV9uZXh0ICYmICptX25leHQgPT0gKnJocy5tX25leHQgOiAh
cmhzLm1fbmV4dDsKKyAgICB9CiAKICAgICBSZWZQdHI8RGFzaGJvYXJkUmVnaW9uPiBtX25leHQ7
CiAgICAgU3RyaW5nIG1fbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZlYXR1cmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5j
cHAKaW5kZXggMTAzNGZjYS4uMTc0NjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGZWF0dXJlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVy
ZVZhbHVlLmNwcApAQCAtNTAsNiArNTAsMTEgQEAgU3RyaW5nIEZvbnRGZWF0dXJlVmFsdWU6OmN1
c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAK
K2Jvb2wgRm9udEZlYXR1cmVWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBGb250RmVhdHVyZVZhbHVl
JiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGFnID09IHJocy5tX3RhZyAmJiBtX3ZhbHVl
ID09IHJocy5tX3ZhbHVlOworfQorCiB2b2lkIEZvbnRGZWF0dXJlVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmVhdHVyZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5o
CmluZGV4IGZjYWI4MTUuLjg2ODNlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmVhdHVyZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFs
dWUuaApAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udEZlYXR1cmVWYWx1ZSYpIGNvbnN0OworCiAgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcAppbmRleCAwYmExZTZlLi44ODQ5
MDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcApAQCAtNjUsNiArNjUsMTYgQEAgU3RyaW5n
IEZvbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0
cmluZygpOwogfQogCitib29sIEZvbnRWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBGb250VmFsdWUm
IHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gc3R5bGUgPyByaHMuc3R5bGUgJiYgKnN0eWxlID09
ICpyaHMuc3R5bGUgOiAhcmhzLnN0eWxlCisgICAgICAgICYmIHZhcmlhbnQgPyByaHMudmFyaWFu
dCAmJiAqdmFyaWFudCA9PSAqcmhzLnZhcmlhbnQgOiAhcmhzLnZhcmlhbnQKKyAgICAgICAgJiYg
d2VpZ2h0ID8gcmhzLndlaWdodCAmJiAqd2VpZ2h0ID09ICpyaHMud2VpZ2h0IDogIXJocy53ZWln
aHQKKyAgICAgICAgJiYgc2l6ZSA/IHJocy5zaXplICYmICpzaXplID09ICpyaHMuc2l6ZSA6ICFy
aHMuc2l6ZQorICAgICAgICAmJiBsaW5lSGVpZ2h0ID8gcmhzLmxpbmVIZWlnaHQgJiYgKmxpbmVI
ZWlnaHQgPT0gKnJocy5saW5lSGVpZ2h0IDogIXJocy5saW5lSGVpZ2h0CisgICAgICAgICYmIGZh
bWlseSA/IHJocy5mYW1pbHkgJiYgKmZhbWlseSA9PSAqcmhzLmZhbWlseSA6ICFyaHMuZmFtaWx5
OworfQorCiB2b2lkIEZvbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCmluZGV4IDAzYTYxMjYuLmZkMDQ1YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udFZhbHVlLmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3Rv
bUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250VmFsdWUm
KSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaAppbmRleCA4MTNlMGY4Li43YjU0ZmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIChvdGhlci5tX21lZGlhRmVhdHVyZSA9PSBtX21lZGlhRmVhdHVy
ZSkKICAgICAgICAgICAgICYmICgoIW90aGVyLm1fdmFsdWUgJiYgIW1fdmFsdWUpCi0gICAgICAg
ICAgICAgICAgfHwgKG90aGVyLm1fdmFsdWUgJiYgbV92YWx1ZSAmJiBvdGhlci5tX3ZhbHVlLT5j
c3NUZXh0KCkgPT0gbV92YWx1ZS0+Y3NzVGV4dCgpKSk7CisgICAgICAgICAgICAgICAgfHwgKG90
aGVyLm1fdmFsdWUgJiYgbV92YWx1ZSAmJiAqb3RoZXIubV92YWx1ZSA9PSAqbV92YWx1ZSkpOwog
ICAgIH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9QYWlyLmgKaW5kZXggMDQxZWUyMy4uYTBhNzhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1BhaXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCkBAIC01Niw2ICs1
Niw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdlbmVyYXRlQ1NTU3RyaW5nKGZpcnN0KCkt
PmNzc1RleHQoKSwgc2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgfQogCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBhaXImIHJocykgY29uc3QgeyByZXR1cm4gKm1fZmlyc3QgPT0gKnJocy5t
X2ZpcnN0ICYmICptX3NlY29uZCA9PSAqcmhzLm1fc2Vjb25kOyB9CisKICNpZiBFTkFCTEUoQ1NT
X1ZBUklBQkxFUykKICAgICBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SZWN0LmgKaW5kZXggZmVlZjg3NS4uMTY2YTUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCkBAIC0zOSw2ICsz
OSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCb3R0b20oUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gYm90dG9tKSB7IG1fYm90dG9tID0gYm90dG9tOyB9CiAgICAgdm9pZCBzZXRMZWZ0
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlZnQpIHsgbV9sZWZ0ID0gbGVmdDsgfQog
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlY3RCYXNlJiByaHMpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gKm1fdG9wID09ICpyaHMubV90b3AgJiYgKm1fcmlnaHQgPT0gKnJocy5t
X3JpZ2h0CisgICAgICAgICAgICAmJiAqbV9sZWZ0ID09ICpyaHMubV9sZWZ0ICYmICptX2JvdHRv
bSA9PSAqcmhzLm1fYm90dG9tOworICAgIH0KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQog
ICAgIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2hhZG93VmFsdWUuY3BwCmluZGV4IGE0MDY0Y2MuLmM0MTI4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1No
YWRvd1ZhbHVlLmNwcApAQCAtNzksNiArNzksMTYgQEAgU3RyaW5nIFNoYWRvd1ZhbHVlOjpjdXN0
b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dC50b1N0cmluZygpOwogfQogCitib29s
IFNoYWRvd1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IFNoYWRvd1ZhbHVlJiByaHMpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNvbG9yID8gcmhzLmNvbG9yICYmICpjb2xvciA9PSAqcmhzLmNvbG9yIDog
IXJocy5jb2xvcgorICAgICAgICAmJiB4ID8gcmhzLnggJiYgKnggPT0gKnJocy54IDogIXJocy54
CisgICAgICAgICYmIHkgPyByaHMueSAmJiAqeSA9PSAqcmhzLnkgOiAhcmhzLnkKKyAgICAgICAg
JiYgYmx1ciA/IHJocy5ibHVyICYmICpibHVyID09ICpyaHMuYmx1ciA6ICFyaHMuYmx1cgorICAg
ICAgICAmJiBzcHJlYWQgPyByaHMuc3ByZWFkICYmICpzcHJlYWQgPT0gKnJocy5zcHJlYWQgOiAh
cmhzLnNwcmVhZAorICAgICAgICAmJiBzdHlsZSA/IHJocy5zdHlsZSAmJiAqc3R5bGUgPT0gKnJo
cy5zdHlsZSA6ICFyaHMuc3R5bGU7Cit9CisKIHZvaWQgU2hhZG93VmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
aGFkb3dWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKaW5kZXggZjJk
OGU2Zi4uODJkNDM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKQEAgLTQ0LDYgKzQ0LDgg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTaGFkb3dWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuY3BwCmluZGV4IGY2NjJjY2EuLjRjZWFhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTMyNyw5ICszMjcsOSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0
eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQp
IGNvbgogICAgIGlmICh0b3AuaXNJbXBvcnRhbnQoKSAhPSByaWdodC5pc0ltcG9ydGFudCgpIHx8
IHJpZ2h0LmlzSW1wb3J0YW50KCkgIT0gYm90dG9tLmlzSW1wb3J0YW50KCkgfHwgYm90dG9tLmlz
SW1wb3J0YW50KCkgIT0gbGVmdC5pc0ltcG9ydGFudCgpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKLSAgICBib29sIHNob3dMZWZ0ID0gcmlnaHQudmFsdWUoKS0+Y3NzVGV4dCgpICE9IGxl
ZnQudmFsdWUoKS0+Y3NzVGV4dCgpOwotICAgIGJvb2wgc2hvd0JvdHRvbSA9ICh0b3AudmFsdWUo
KS0+Y3NzVGV4dCgpICE9IGJvdHRvbS52YWx1ZSgpLT5jc3NUZXh0KCkpIHx8IHNob3dMZWZ0Owot
ICAgIGJvb2wgc2hvd1JpZ2h0ID0gKHRvcC52YWx1ZSgpLT5jc3NUZXh0KCkgIT0gcmlnaHQudmFs
dWUoKS0+Y3NzVGV4dCgpKSB8fCBzaG93Qm90dG9tOworICAgIGJvb2wgc2hvd0xlZnQgPSAqcmln
aHQudmFsdWUoKSAhPSAqbGVmdC52YWx1ZSgpOworICAgIGJvb2wgc2hvd0JvdHRvbSA9ICgqdG9w
LnZhbHVlKCkgIT0gKmJvdHRvbS52YWx1ZSgpKSB8fCBzaG93TGVmdDsKKyAgICBib29sIHNob3dS
aWdodCA9ICgqdG9wLnZhbHVlKCkgIT0gKnJpZ2h0LnZhbHVlKCkpIHx8IHNob3dCb3R0b207CiAK
ICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1bHQuYXBwZW5kKHRvcC52YWx1ZSgp
LT5jc3NUZXh0KCkpOwpAQCAtMTExOSw3ICsxMTE5LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0
Ojpwcm9wZXJ0eU1hdGNoZXMoY29uc3QgUHJvcGVydHlSZWZlcmVuY2UmIHByb3BlcnR5KSBjb25z
dAogICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kUHJvcGVydHlJbmRleChwcm9wZXJ0
eS5pZCgpKTsKICAgICBpZiAoZm91bmRQcm9wZXJ0eUluZGV4ID09IC0xKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHByb3BlcnR5QXQoZm91bmRQcm9wZXJ0eUluZGV4KS52YWx1
ZSgpLT5jc3NUZXh0KCkgPT0gcHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4dCgpOworICAgIHJldHVy
biAqcHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5kZXgpLnZhbHVlKCkgPT0gKnByb3BlcnR5LnZh
bHVlKCk7CiB9CiAgICAgCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZUVxdWl2YWxlbnRQ
cm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcAppbmRleCAyYTE3YTQ0
Li5mNzI4NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlG
dW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlG
dW5jdGlvblZhbHVlLmNwcApAQCAtNTYsNiArNTYsMTEgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NB
cnJheUZ1bmN0aW9uVmFsdWU+IFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6Y2xvbmVGb3JD
U1MKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZSgq
dGhpcykpOwogfQogCitib29sIFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6b3BlcmF0b3I9
PShjb25zdCBXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gQ1NTVmFsdWVMaXN0OjpvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IENTU1ZhbHVl
TGlzdCY+KHJocykpOworfQorCiB2b2lkIFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oCmluZGV4IGJhZjI3ODIuLmY3YmNlZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmgK
QEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NBcnJh
eUZ1bmN0aW9uVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZv
aWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0
ZXJWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3Bw
CmluZGV4IGYxYTFlMGUuLmUyMjg4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U0ZpbHRlclZhbHVlLmNwcApAQCAtMTExLDYgKzExMSwxMSBAQCBQYXNzUmVmUHRyPFdlYktpdENT
U0ZpbHRlclZhbHVlPiBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSgqdGhpcykpOwog
fQogCitib29sIFdlYktpdENTU0ZpbHRlclZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IFdlYktpdENT
U0ZpbHRlclZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSByaHMubV90
eXBlICYmIENTU1ZhbHVlTGlzdDo6b3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBDU1NWYWx1
ZUxpc3QmPihyaHMpKTsKK30KKwogdm9pZCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywg
V2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0ZpbHRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmls
dGVyVmFsdWUuaAppbmRleCAwOGIzZTlmLi40ZTk1YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTRmlsdGVyVmFsdWUuaApAQCAtNjgsNiArNjgsOCBAQCBwdWJsaWM6CiAKICAgICBQ
YXNzUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NTRmlsdGVyVmFsdWUmKSBjb25zdDsK
KwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NNaXhGdW5jdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
aXhGdW5jdGlvblZhbHVlLmNwcAppbmRleCAzYWY2ODdlLi41Y2JjZGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwCkBAIC01Niw2ICs1
NiwxMSBAQCBQYXNzUmVmUHRyPFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU+IFdlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWU6OmNsb25lRm9yQ1NTT00oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSgqdGhpcykpOwogfQogCitib29sIFdlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1
ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBDU1NWYWx1ZUxpc3Q6Om9wZXJhdG9yPT0oc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Jj4ocmhzKSk7Cit9CisKIHZvaWQgV2ViS2l0Q1NT
TWl4RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmgKaW5kZXggN2Jj
MDdiNC4uNGI4NTE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVu
Y3Rpb25WYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8
V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUmKSBjb25zdDsK
KwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NT
VkdEb2N1bWVudFZhbHVlLmNwcAppbmRleCBiNDM0ZWVjLi5hZjg5YjhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwCkBAIC02Nyw2ICs2
NywxMSBAQCBTdHJpbmcgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV91cmwpOwogfQogCiti
b29sIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NT
U1ZHRG9jdW1lbnRWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX3VybCA9PSByaHMu
bV91cmw7Cit9CisKIHZvaWQgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZTo6cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NT
VkdEb2N1bWVudFZhbHVlLmgKaW5kZXggOTZiY2M4Yy4uYzU3ZjQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oCkBAIC00NCw2ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogICAgIGNvbnN0IFN0
cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBib29sIGxvYWRSZXF1ZXN0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRSZXF1ZXN0ZWQ7IH0KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSYpIGNvbnN0OwogCiAgICAgdm9pZCBy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAppbmRleCA5MWJkZGUy
Li45YTYzYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5j
cHAKQEAgLTgzLDYgKzgzLDExIEBAIFN0cmluZyBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6Y3VzdG9t
Q3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQo
bV91cmwpICsgIikiOwogfQogCitib29sIFdlYktpdENTU1NoYWRlclZhbHVlOjpvcGVyYXRvcj09
KGNvbnN0IFdlYktpdENTU1NoYWRlclZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dXJsID09IHJocy5tX3VybDsKK30KKwogdm9pZCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
U2hhZGVyVmFsdWUuaAppbmRleCBjNDMyMDFjLi5iZTIyNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAg
ICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFdlYktpdENTU1NoYWRlclZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCmluZGV4IGZkMTE3
ZjIuLjkyMzJkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZS5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBTdHJpbmcgY3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZSYgcmhzKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gcmhzLm1fdHlwZTsg
fQogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0cmluZyBjdXN0b21TZXJpYWxpemVS
ZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBj
b25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4
IDk2MjlmNjYuLjEzNDAyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKQEAgLTI0NCw5ICsyNDQsNyBAQCBib29sIEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50Ojp2YWx1
ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVudCwgU3R5bGVQcm9wZQogICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoZWxlbWVudCk7CiAg
ICAgUmVmUHRyPENTU1ZhbHVlPiBzdHlsZVZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFs
dWUobV9wcm9wZXJ0eUlEKTsKICAgICAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyB2ZXJ5IGluZWZm
aWNpZW50IHdheSBvZiBjb21wYXJpbmcgdmFsdWVzCi0gICAgLy8gYnV0IHdlIGNhbid0IHN0cmlu
ZyBjb21wYXJlIGF0dHJpYnV0ZSB2YWx1ZSBhbmQgQ1NTIHByb3BlcnR5IHZhbHVlLgotICAgIHJl
dHVybiB2YWx1ZSAmJiBzdHlsZVZhbHVlICYmIHZhbHVlLT5jc3NUZXh0KCkgPT0gc3R5bGVWYWx1
ZS0+Y3NzVGV4dCgpOworICAgIHJldHVybiB2YWx1ZSAmJiBzdHlsZVZhbHVlICYmICp2YWx1ZSA9
PSAqc3R5bGVWYWx1ZTsKIH0KIAogdm9pZCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6YWRkVG9T
dHlsZShFbGVtZW50KiBlbGVtZW50LCBFZGl0aW5nU3R5bGUqIHN0eWxlKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDb2xvci5jcHAKaW5kZXggYTM0YWQxOC4uZjUyOWI1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29s
b3IuY3BwCkBAIC0xMDUsNiArMTA1LDExIEBAIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IFNWR0NvbG9y
OjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0NvbG9y
KFNWR0NvbG9yQ2xhc3MsICp0aGlzKSk7CiB9CiAKK2Jvb2wgU1ZHQ29sb3I6Om9wZXJhdG9yPT0o
Y29uc3QgU1ZHQ29sb3ImIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb2xvclR5cGUgPT0g
cmhzLm1fY29sb3JUeXBlICYmIG1fY29sb3IgPT0gcmhzLm1fY29sb3I7Cit9CisKIHZvaWQgU1ZH
Q29sb3I6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9y
LmgKaW5kZXggN2RkZGNkNy4uNzVhN2EyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKQEAgLTc1LDYg
Kzc1LDggQEAgcHVibGljOgogICAgIAogICAgIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IGNsb25lRm9y
Q1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdDb2xvciYpIGNv
bnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGFpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAppbmRleCBj
Y2UxZjRlLi5hMTk4ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAKQEAgLTExMiw2ICsxMTIs
MTEgQEAgUGFzc1JlZlB0cjxTVkdQYWludD4gU1ZHUGFpbnQ6OmNsb25lRm9yQ1NTT00oKSBjb25z
dAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGFpbnQoKnRoaXMpKTsKIH0KIAorYm9vbCBT
VkdQYWludDo6b3BlcmF0b3I9PShjb25zdCBTVkdQYWludCYgcmhzKSBjb25zdAoreworICAgIHJl
dHVybiBtX3BhaW50VHlwZSA9PSByaHMubV9wYWludFR5cGUgJiYgbV91cmkgPT0gcmhzLm1fdXJp
ICYmIFNWR0NvbG9yOjpvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IFNWR0NvbG9yJj4ocmhz
KSk7Cit9CisKIHZvaWQgU1ZHUGFpbnQ6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NT
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhaW50LmgKaW5kZXggYWM1Njc1Yi4uMThiZTljZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhaW50LmgKQEAgLTk1LDYgKzk1LDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxTVkdQ
YWludD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNWR1BhaW50JikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6Cg==
</data>
<flag name="commit-queue"
          id="193085"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177233</attachid>
            <date>2012-12-03 05:03:36 -0800</date>
            <delta_ts>2012-12-04 09:40:26 -0800</delta_ts>
            <desc>Patch 3</desc>
            <filename>webcore_cssvalue_operator_eq_3.patch</filename>
            <type>text/plain</type>
            <size>68699</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjOGIxYjY4Li5jYmNiMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgz
IEBACisyMDEyLTExLTI5ICBBbGV4YW5kZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZA
aW50ZWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1NWYWx1ZTo6b3BlcmF0b3I9PSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5MDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb21w
YXJpc29uIG9wZXJhdG9yIHRvIENTU1ZhbHVlIGFuZCBpdHMgY2hpbGRyZW4sIHNvIHRoYXQgdGhl
CisgICAgICAgIGNzcyB2YWx1ZXMgY291bGQgYmUgY29tcGFyZWQgZWZmaWNpZW50bHkuIEJlZm9y
ZSB0aGlzIHBhdGNoLCBDU1NWYWx1ZQorICAgICAgICBvYmplY3RzIHdlcmUgY29tcGFyZWQgdXNp
bmcgc3RyaW5ncyB0aGF0IHdlcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjc3NUZXh0KCkgbWV0aG9kLgor
CisgICAgICAgICogY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQXNwZWN0UmF0aW9WYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0Fz
cGVjdFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKENTU0FzcGVjdFJhdGlvVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1No
YXBlUmVjdGFuZ2xlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVDaXJjbGU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVs
bGlwc2U6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVBvbHln
b246Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5oOgorICAgICAg
ICAoQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSk6CisgICAgICAgIChDU1NCYXNpY1NoYXBlQ2lyY2xl
KToKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVFbGxpcHNlKToKKyAgICAgICAgKENTU0Jhc2ljU2hh
cGVQb2x5Z29uKToKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oOgorICAgICAgICAoQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjVmFsdWU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKENTU0NhbGNQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJp
bWl0aXZlVmFsdWU6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0JpbmFyeU9wZXJh
dGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnR5cGUpOgorICAgICAgICAq
IGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NDYWxjVmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52
YXNWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6Cisg
ICAgICAgIChDU1NDYW52YXNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNp
ZGVzU2hvcnRoYW5kKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAq
IGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jvc3NmYWRlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1cnNvckltYWdlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNyY1ZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5oOgorICAgICAgICAoQ1NTRm9udEZhY2VTcmNWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0Z1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6
b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAg
KENTU0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dy
YWRpZW50Q29sb3JTdG9wOjpvcGVyYXRvcj09KToKKyAgICAgICAgKENTU0xpbmVhckdyYWRpZW50
VmFsdWUpOgorICAgICAgICAoQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0lt
YWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW5oZXJpdGVkVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoQ1NTSW5o
ZXJpdGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0luaXRpYWxWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NJbml0
aWFsVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oOgorICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NSZWZs
ZWN0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmg6CisgICAgICAgIChDU1NSZWZs
ZWN0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoQ1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKENTU1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1VuaWNvZGVSYW5nZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKENTU1VuaWNvZGVSYW5n
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcGFyZUNzc1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xvbmVDU1NWYWx1ZTo6
VGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoQ1NTVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcGFyZUNzc1ZhbHVlVmVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6cmVtb3ZlQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ZhbHVlTGlzdDo6aGFzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFs
dWVMaXN0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0Lmg6CisgICAg
ICAgIChDU1NWYWx1ZUxpc3QpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KENTU1ZhcmlhYmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9Db3VudGVyLmg6CisgICAgICAgIChD
b3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAqIGNzcy9EYXNoYm9hcmRSZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhc2hib2FyZFJl
Z2lvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaDoKKyAgICAgICAgKEZvbnRGZWF0dXJlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9Gb250VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhbHVl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvRm9udFZhbHVlLmg6CisgICAgICAgIChGb250
VmFsdWUpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXhwLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVF1ZXJ5RXhwOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvUGFpci5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGFpcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChQYWlyKToKKyAgICAg
ICAgKiBjc3MvUmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEJhc2U6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoUmVjdEJhc2UpOgorICAgICAgICAqIGNzcy9TaGFkb3dWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3Nz
L1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChTaGFkb3dWYWx1ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
Z2V0NFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0
eU1hdGNoZXMpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmg6CisgICAg
ICAgIChXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1
ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmg6Cisg
ICAgICAgIChXZWJLaXRDU1NGaWx0ZXJWYWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01peEZ1bmN0aW9u
VmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUpOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdENTU1NWR0RvY3VtZW50VmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTU2hhZGVyVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNz
cy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU2hhZGVyVmFsdWUp
OgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRyaWJ1dGVF
cXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUpOgorICAgICAgICAqIHN2Zy9TVkdDb2xv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogc3ZnL1NWR0NvbG9yLmg6CisgICAgICAgIChTVkdDb2xvcik6CisgICAgICAgICogc3ZnL1NW
R1BhaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKFNWR1BhaW50KToKKwogMjAxMi0xMS0y
OSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNjExMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NB
c3BlY3RSYXRpb1ZhbHVlLmNwcAppbmRleCA4MzBmOGNmLi42NzQzYzczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwCkBAIC0zOSw2ICszOSwxMSBAQCBTdHJp
bmcgQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKG1fbnVtZXJhdG9yVmFsdWUpICsgJy8nICsgU3RyaW5nOjpudW1iZXIo
bV9kZW5vbWluYXRvclZhbHVlKTsKIH0KIAorYm9vbCBDU1NBc3BlY3RSYXRpb1ZhbHVlOjpvcGVy
YXRvcj09KGNvbnN0IENTU0FzcGVjdFJhdGlvVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9udW1lcmF0b3JWYWx1ZSA9PSByaHMubV9udW1lcmF0b3JWYWx1ZSAmJiBtX2Rlbm9taW5h
dG9yVmFsdWUgPT0gcmhzLm1fZGVub21pbmF0b3JWYWx1ZTsKK30KKwogdm9pZCBDU1NBc3BlY3RS
YXRpb1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaAppbmRleCA1Y2MzMzkyLi4wMjBmY2QwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKQEAgLTQ2LDYgKzQ2LDggQEAg
cHVibGljOgogICAgIGZsb2F0IG51bWVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9udW1l
cmF0b3JWYWx1ZTsgfQogICAgIGZsb2F0IGRlbm9taW5hdG9yVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2Rlbm9taW5hdG9yVmFsdWU7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NB
c3BlY3RSYXRpb1ZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAppbmRleCAzZmRhNmIxLi4yZjQ4N2I4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKQEAgLTc0LDYgKzc0LDE4IEBAIFN0cmluZyBDU1NC
YXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgbV9yYWRpdXNZLmdl
dCgpID8gbV9yYWRpdXNZLT5jc3NUZXh0KCkgOiBTdHJpbmcoKSk7CiB9CiAKK2Jvb2wgQ1NTQmFz
aWNTaGFwZVJlY3RhbmdsZTo6b3BlcmF0b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkg
Y29uc3QKK3sKKyAgICBpZiAodHlwZSgpID09IHNoYXBlLnR5cGUoKSkgeworICAgICAgICBjb25z
dCBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNp
Y1NoYXBlUmVjdGFuZ2xlJj4oc2hhcGUpOworICAgICAgICByZXR1cm4gKm1feCA9PSAqcmhzLm1f
eCAmJiAqbV95ID09ICpyaHMubV95ICYmICptX3dpZHRoID09ICpyaHMubV93aWR0aCAmJiAqbV9o
ZWlnaHQgPT0gKnJocy5tX2hlaWdodAorICAgICAgICAgICAgJiYgbV9yYWRpdXNYID8gcmhzLm1f
cmFkaXVzWCAmJiAqbV9yYWRpdXNYID09ICpyaHMubV9yYWRpdXNYIDogIXJocy5tX3JhZGl1c1gK
KyAgICAgICAgICAgICYmIG1fcmFkaXVzWSA/IHJocy5tX3JhZGl1c1kgJiYgKm1fcmFkaXVzWSA9
PSAqcmhzLm1fcmFkaXVzWSA6ICFyaHMubV9yYWRpdXNZOworICAgIH0KKworICAgIHJldHVybiBm
YWxzZTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU0Jhc2ljU2hh
cGVSZWN0YW5nbGU6OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0
b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogewpAQCAtMTA2LDYgKzExOCwx
NiBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIGJ1aWxkQ2lyY2xlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBtX2NlbnRlclktPmNz
c1RleHQoKSwgbV9yYWRpdXMtPmNzc1RleHQoKSk7CiB9CiAKK2Jvb2wgQ1NTQmFzaWNTaGFwZUNp
cmNsZTo6b3BlcmF0b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKK3sKKyAg
ICBpZiAodHlwZSgpID09IHNoYXBlLnR5cGUoKSkgeworICAgICAgICBjb25zdCBDU1NCYXNpY1No
YXBlQ2lyY2xlJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlQ2lyY2xlJj4o
c2hhcGUpOworICAgICAgICByZXR1cm4gKm1fY2VudGVyWCA9PSAqcmhzLm1fY2VudGVyWCAmJiAq
bV9jZW50ZXJZID09ICpyaHMubV9jZW50ZXJZICYmICptX3JhZGl1cyA9PSAqcmhzLm1fcmFkaXVz
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQogU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OnNlcmlhbGl6ZVJlc29sdmluZ1Zhcmlh
Ymxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25z
dAogewpAQCAtMTMyLDYgKzE1NCwxNyBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUVsbGlwc2U6OmNz
c1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZEVsbGlwc2VTdHJpbmcobV9jZW50ZXJYLT5j
c3NUZXh0KCksIG1fY2VudGVyWS0+Y3NzVGV4dCgpLCBtX3JhZGl1c1gtPmNzc1RleHQoKSwgbV9y
YWRpdXNZLT5jc3NUZXh0KCkpOwogfQogCitib29sIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpvcGVy
YXRvcj09KGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25zdAoreworICAgIGlmICh0eXBl
KCkgPT0gc2hhcGUudHlwZSgpKSB7CisgICAgICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVFbGxpcHNl
JiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlRWxsaXBzZSY+KHNoYXBlKTsK
KyAgICAgICAgcmV0dXJuICptX2NlbnRlclggPT0gKnJocy5tX2NlbnRlclggJiYgKm1fY2VudGVy
WSA9PSAqcmhzLm1fY2VudGVyWQorICAgICAgICAgICAgJiYgKm1fcmFkaXVzWCA9PSAqcmhzLm1f
cmFkaXVzWCAmJiAqbV9yYWRpdXNZID09ICpyaHMubV9yYWRpdXNZOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU0Jh
c2ljU2hhcGVFbGxpcHNlOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTE5OSw2ICsy
MzIsMTYgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjpjc3NUZXh0KCkgY29uc3QKICAg
ICByZXR1cm4gYnVpbGRQb2x5Z29uU3RyaW5nKG1fd2luZFJ1bGUsIHBvaW50cyk7CiB9CiAKK2Jv
b2wgQ1NTQmFzaWNTaGFwZVBvbHlnb246Om9wZXJhdG9yPT0oY29uc3QgQ1NTQmFzaWNTaGFwZSYg
c2hhcGUpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSA9PSBzaGFwZS50eXBlKCkpIHsKKyAgICAg
ICAgY29uc3QgQ1NTQmFzaWNTaGFwZVBvbHlnb24mIHJocyA9IHN0YXRpY19jYXN0PGNvbnN0IENT
U0Jhc2ljU2hhcGVQb2x5Z29uJj4oc2hhcGUpOworICAgICAgICByZXR1cm4gY29tcGFyZUNzc1Zh
bHVlVmVjdG9yPENTU1ByaW1pdGl2ZVZhbHVlPihtX3ZhbHVlcywgcmhzLm1fdmFsdWVzKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykK
IFN0cmluZyBDU1NCYXNpY1NoYXBlUG9seWdvbjo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCmluZGV4IGVmMzIwOTguLmUxN2ExNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5n
IGNzc1RleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTQmFzaWNTaGFwZSYpIGNvbnN0ID0gMDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQog
ICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNo
TWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0ID0gMDsKQEAgLTgyLDYgKzgzLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDU1NfQkFT
SUNfU0hBUEVfUkVDVEFOR0xFOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5n
PiYpIGNvbnN0OwpAQCAtMTEzLDYgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX0NJUkNMRTsgfQogICAgIHZp
cnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxF
UykKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3Qg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKQEAgLTE0Myw2ICsxNDYsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU19C
QVNJQ19TSEFQRV9FTExJUFNFOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5n
PiYpIGNvbnN0OwpAQCAtMTc3LDcgKzE4MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX1BPTFlHT047IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7Ci0KKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJM
RVMpCiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0
IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4IDdkMWIzZGEuLjYxODkzOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCkBAIC01
MCw2ICs1MCwxMSBAQCBTdHJpbmcgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjdXN0b21Dc3NU
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAorYm9vbCBDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlJiByaHMp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmlsbCA9PSByaHMubV9maWxsICYmIG1fc2xpY2VzICYm
IHJocy5tX3NsaWNlcyAmJiAqbV9zbGljZXMgPT0gKnJocy5tX3NsaWNlczsKK30KKwogdm9pZCBD
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NT
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRl
eCA0ODhiNGE0Li42NmUxMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9y
ZGVySW1hZ2VTbGljZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZS5oCkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIFF1YWQqIHNs
aWNlcygpIHsgcmV0dXJuIG1fc2xpY2VzID8gbV9zbGljZXMtPmdldFF1YWRWYWx1ZSgpIDogMDsg
fQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZSYp
IGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgZm91ciB2YWx1ZXMgYXJlIHVzZWQgdG8g
bWFrZSAiY3V0cyIgaW4gdGhlIGJvcmRlciBpbWFnZS4gVGhleSBjYW4gYmUgbnVtYmVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDFjMTU4Y2MuLjU5
NWZlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAg
LTk1LDYgKzk1LDExIEBAIFN0cmluZyBDU1NDYWxjVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25z
dAogICAgIHJldHVybiBidWlsZENzc1RleHQobV9leHByZXNzaW9uLT5jdXN0b21Dc3NUZXh0KCkp
OwogfQogCitib29sIENTU0NhbGNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NDYWxjVmFsdWUm
IHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fZXhwcmVzc2lvbiA9PSAqcmhzLm1fZXhwcmVz
c2lvbjsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU0NhbGNWYWx1
ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7CkBAIC0yMjMsMTEgKzIyOCwyMCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOyAgICAgICAgCiAgICAgfQogCisgICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJiByaHMpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAodHlwZSgpID09IHJocy50eXBlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gKm1fdmFsdWUgPT0gKnN0YXRpY19jYXN0PGNvbnN0IENTU0NhbGNQcmltaXRpdmVWYWx1
ZSY+KHJocykubV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHZp
cnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwogICAg
ICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlKTsKICAgICB9CisKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIENzc0NhbGNQcmltaXRpdmVWYWx1ZTsgfQogICAgIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBDU1NDYWxjUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWUqIHZhbHVlLCBib29sIGlzSW50ZWdlcikKQEAgLTM1OSw2ICszNzMsMTcgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlJiBleHApIGNvbnN0CisgICAgeworICAgICAgICBpZiAodHlwZSgpID09
IGV4cC50eXBlKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IENTU0NhbGNCaW5hcnlPcGVyYXRpb24m
IHJocyA9IHN0YXRpY19jYXN0PGNvbnN0IENTU0NhbGNCaW5hcnlPcGVyYXRpb24mPihleHApOwor
ICAgICAgICAgICAgcmV0dXJuICptX2xlZnRTaWRlID09ICpyaHMubV9sZWZ0U2lkZSAmJiAqbV9y
aWdodFNpZGUgPT0gKnJocy5tX3JpZ2h0U2lkZSAmJiBtX29wZXJhdG9yID09IHJocy5tX29wZXJh
dG9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENzc0NhbGNCaW5hcnlPcGVyYXRpb247IH0K
KwogcHJpdmF0ZToKICAgICBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKFBhc3NSZWZQdHI8Q1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5v
ZGU+IHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wLCBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVn
b3J5KQogICAgICAgICA6IENTU0NhbGNFeHByZXNzaW9uTm9kZShjYXRlZ29yeSwgbGVmdFNpZGUt
PmlzSW50ZWdlcigpICYmIHJpZ2h0U2lkZS0+aXNJbnRlZ2VyKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCAwNDRjZjMyLi5mNDIyNjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKQEAgLTYwLDcgKzYwLDExIEBAIGVudW0g
Q2FsY3VsYXRpb25DYXRlZ29yeSB7CiAgICAgCiBjbGFzcyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHsKIHB1YmxpYzoKLSAg
ICAKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBDc3NDYWxjUHJpbWl0aXZlVmFsdWUgPSAxLAor
ICAgICAgICBDc3NDYWxjQmluYXJ5T3BlcmF0aW9uCisgICAgfTsKKwogICAgIHZpcnR1YWwgfkNT
U0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNaZXJvKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2Fs
Y1ZhbHVlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20g
PSAxLjApIGNvbnN0ID0gMDsgICAgCkBAIC03MSw5ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJp
YWJsZVJlZmVyZW5jZSgpIGNvbnN0ID0gMDsKICNlbmRpZgotCisgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJikgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgPSAw
OwotICAgIAorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOworCiAgICAgQ2FsY3Vs
YXRpb25DYXRlZ29yeSBjYXRlZ29yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2F0ZWdvcnk7IH0gICAg
CiAgICAgYm9vbCBpc0ludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2lzSW50ZWdlcjsgfQogICAg
IApAQCAtMTA0LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aFB4
KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJs
ZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpIGNvbnN0
OwogICAgICAgICAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDU1NDYWxjVmFsdWUmKSBjb25zdDsKICNpZiBFTkFCTEUoQ1NTX1ZB
UklBQkxFUykKICAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNv
bnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CiAgICAgYm9vbCBoYXNW
YXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5j
cHAKaW5kZXggM2FlYTE3Yy4uMzcxMGI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCkBAIC05Niw2ICs5NiwxMSBAQCBQYXNzUmVmUHRyPEltYWdlPiBDU1NDYW52YXNWYWx1
ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgLwogICAgIHJl
dHVybiBlbHQtPmNvcGllZEltYWdlKCk7CiB9CiAKK2Jvb2wgQ1NTQ2FudmFzVmFsdWU6Om9wZXJh
dG9yPT0oY29uc3QgQ1NTQ2FudmFzVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9u
YW1lID09IHJocy5tX25hbWU7Cit9CisKIHZvaWQgQ1NTQ2FudmFzVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5k
ZXggMTNmYjU4Ny4uYThiOWRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bnZhc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAg
LTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
KSB7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NDYW52YXNWYWx1ZSYpIGNvbnN0
OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA0YmM3YjA4Li5jYTM2MmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApA
QCAtMjUzMSw3ICsyNTMxLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgICAg
IGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0IH07CiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyk7ICsraSkgewot
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+Y3NzVGV4dCgpICE9ICBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKHByb3BlcnRpZXNbaV0sIERvTm90VXBkYXRlTGF5b3V0KS0+Y3NzVGV4dCgpKQorICAgICAg
ICAgICAgICAgIGlmICgqdmFsdWUgIT0gICpnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNb
aV0sIERvTm90VXBkYXRlTGF5b3V0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZSgpOwpAQCAtMjc1
Niw3ICsyNzU2LDcgQEAgYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1Byb3Bl
cnR5TWF0Y2hlcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0OjpQcm8KICAgICAgICAgfQogICAgIH0K
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0
eS5pZCgpKTsKLSAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUtPmNzc1RleHQoKSA9PSBwcm9wZXJ0
eS52YWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgcmV0dXJuIHZhbHVlICYmICp2YWx1ZSA9PSAqcHJv
cGVydHkudmFsdWUoKTsKIH0KIAogUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmNvcHkoKSBjb25zdApAQCAtMjc5Miw5ICsyNzkyLDkgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWQKICAgICBpZiAoIXRvcFZhbHVlIHx8ICFyaWdodFZhbHVl
IHx8ICFib3R0b21WYWx1ZSB8fCAhbGVmdFZhbHVlKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IGJvb2wgc2hvd0xlZnQgPSByaWdodFZhbHVlLT5jc3NUZXh0KCkgIT0gbGVmdFZhbHVlLT5jc3NU
ZXh0KCk7Ci0gICAgYm9vbCBzaG93Qm90dG9tID0gKHRvcFZhbHVlLT5jc3NUZXh0KCkgIT0gYm90
dG9tVmFsdWUtPmNzc1RleHQoKSkgfHwgc2hvd0xlZnQ7Ci0gICAgYm9vbCBzaG93UmlnaHQgPSAo
dG9wVmFsdWUtPmNzc1RleHQoKSAhPSByaWdodFZhbHVlLT5jc3NUZXh0KCkpIHx8IHNob3dCb3R0
b207CisgICAgYm9vbCBzaG93TGVmdCA9ICpyaWdodFZhbHVlICE9ICpsZWZ0VmFsdWU7CisgICAg
Ym9vbCBzaG93Qm90dG9tID0gKCp0b3BWYWx1ZSAhPSAqYm90dG9tVmFsdWUpIHx8IHNob3dMZWZ0
OworICAgIGJvb2wgc2hvd1JpZ2h0ID0gKCp0b3BWYWx1ZSAhPSAqcmlnaHRWYWx1ZSkgfHwgc2hv
d0JvdHRvbTsKIAogICAgIGxpc3QtPmFwcGVuZCh0b3BWYWx1ZSk7CiAgICAgaWYgKHNob3dSaWdo
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IDczNzVkMDgu
LmE2YTQ1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAt
MjE3LDQgKzIxNyw5IEBAIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2Vs
ZWRTdWJyZXNvdXJjZXMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBDU1ND
cm9zc2ZhZGVWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgcmhzKSBj
b25zdAoreworICAgIHJldHVybiAqbV9mcm9tVmFsdWUgPT0gKnJocy5tX2Zyb21WYWx1ZSAmJiAq
bV90b1ZhbHVlID09ICpyaHMubV90b1ZhbHVlICYmICptX3BlcmNlbnRhZ2VWYWx1ZSA9PSAqcmhz
Lm1fcGVyY2VudGFnZVZhbHVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IDgwZDI2ZDEuLjg4NTZlNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC02Niw2ICs2Niw4IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0Owog
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJikgY29uc3Q7CisK
ICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5jcHAKaW5kZXggZWVmMGE0Ny4uYTdjODZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtMTQ5LDYgKzE0OSwxMSBAQCB2b2lkIENTU0N1cnNvcklt
YWdlVmFsdWU6OnJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB9
CiAjZW5kaWYKIAorYm9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IENT
U0N1cnNvckltYWdlVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYXNIb3RTcG90
ID8gcmhzLm1faGFzSG90U3BvdCAmJiBtX2hvdFNwb3QgPT0gcmhzLm1faG90U3BvdCA6ICFyaHMu
bV9oYXNIb3RTcG90OworfQorCiB2b2lkIENTU0N1cnNvckltYWdlVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDdXJzb3JJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oCmluZGV4IDgwZDNmMTUuLjIwMWE2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50Kik7CiAjZW5kaWYKIAorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDU1NDdXJzb3JJbWFnZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKaW5kZXgg
MGQxZmExMC4uYjNhM2ZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmNwcApAQCAtMTA0LDYgKzEwNCwxMSBAQCBDYWNoZWRGb250KiBDU1NGb250RmFjZVNyY1Zh
bHVlOjpjYWNoZWRGb250KERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1cm4gbV9jYWNoZWRG
b250LmdldCgpOwogfQogCitib29sIENTU0ZvbnRGYWNlU3JjVmFsdWU6Om9wZXJhdG9yPT0oY29u
c3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX2lzTG9j
YWwgPT0gcmhzLm1faXNMb2NhbCAmJiBtX2Zvcm1hdCA9PSByaHMubV9mb3JtYXQgJiYgbV9yZXNv
dXJjZSA9PSByaHMubV9yZXNvdXJjZTsKK30KKwogdm9pZCBDU1NGb250RmFjZVNyY1ZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU3JjVmFsdWUuaAppbmRleCBhMmM1NDY2Li4wZDdkOTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogCiAg
ICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udChEb2N1bWVudCopOwogCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcAppbmRleCBiYzI3MGRlLi4y
ODNjNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCkBAIC01Miw2
ICs1MiwxMSBAQCBTdHJpbmcgQ1NTRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCitib29sIENTU0Z1bmN0aW9uVmFs
dWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTRnVuY3Rpb25WYWx1ZSYgcmhzKSBjb25zdAoreworICAg
IHJldHVybiBtX25hbWUgPT0gcmhzLm1fbmFtZSAmJiBtX2FyZ3MgPyByaHMubV9hcmdzICYmICpt
X2FyZ3MgPT0gKnJocy5tX2FyZ3MgOiAhcmhzLm1fYXJnczsKK30KKwogdm9pZCBDU1NGdW5jdGlv
blZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRleCA2YjdmYmM2Li43MjYxNTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogCiAgICAg
U3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDU1NGdW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggM2IxYmVjZS4uNWNkNGI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtNjQ0LDYgKzY0NCwzMCBA
QCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFk
aWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAgIHJldHVybiBncmFkaWVudC5yZWxlYXNlKCk7
CiB9CiAKK2Jvb2wgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NM
aW5lYXJHcmFkaWVudFZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgaWYgKG1fZGVwcmVjYXRlZFR5
cGUpCisgICAgICAgIHJldHVybiByaHMubV9kZXByZWNhdGVkVHlwZSAmJiAqbV9maXJzdFggPT0g
KnJocy5tX2ZpcnN0WCAmJiAqbV9maXJzdFkgPT0gKnJocy5tX2ZpcnN0WQorICAgICAgICAgICAg
JiYgKm1fc2Vjb25kWCA9PSAqcmhzLm1fc2Vjb25kWCAmJiAqbV9zZWNvbmRZID09ICpyaHMubV9z
ZWNvbmRZICYmIG1fc3RvcHMgPT0gcmhzLm1fc3RvcHM7CisKKyAgICBib29sIGVxdWFsUmVwZWF0
aW5nID0gbV9yZXBlYXRpbmcgPT0gcmhzLm1fcmVwZWF0aW5nOworICAgIGJvb2wgZXF1YWxYb3JZ
ID0gZmFsc2U7CisKKyAgICBpZiAobV9hbmdsZSkKKyAgICAgICAgcmV0dXJuIHJocy5tX2FuZ2xl
ICYmICptX2FuZ2xlID09ICpyaHMubV9hbmdsZSAmJiBtX3N0b3BzID09IHJocy5tX3N0b3BzICYm
IGVxdWFsUmVwZWF0aW5nOworCisgICAgaWYgKG1fZmlyc3RYICYmIG1fZmlyc3RZKQorICAgICAg
ICBlcXVhbFhvclkgPSByaHMubV9maXJzdFggJiYgcmhzLm1fZmlyc3RZICYmICptX2ZpcnN0WCA9
PSAqcmhzLm1fZmlyc3RYICYmICptX2ZpcnN0WSA9PSAqcmhzLm1fZmlyc3RZOworICAgIGVsc2Ug
aWYgKG1fZmlyc3RYKQorICAgICAgICBlcXVhbFhvclkgPSByaHMubV9maXJzdFggJiYgKm1fZmly
c3RYID09ICpyaHMubV9maXJzdFggJiYgIXJocy5tX2ZpcnN0WTsKKyAgICBlbHNlIGlmIChtX2Zp
cnN0WSkKKyAgICAgICAgZXF1YWxYb3JZID0gcmhzLm1fZmlyc3RZICYmICptX2ZpcnN0WSA9PSAq
cmhzLm1fZmlyc3RZICYmICFyaHMubV9maXJzdFg7CisgICAgZWxzZQorICAgICAgICBlcXVhbFhv
clkgPSAhcmhzLm1fZmlyc3RYIHx8ICFyaHMubV9maXJzdFk7CisKKyAgICByZXR1cm4gZXF1YWxS
ZXBlYXRpbmcgJiYgZXF1YWxYb3JZICYmICFyaHMubV9hbmdsZSAmJiBtX3N0b3BzID09IHJocy5t
X3N0b3BzOworfQorCiB2b2lkIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAog
ewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNv
cmVNZW1vcnlUeXBlczo6Q1NTKTsKQEAgLTk2OSw2ICs5OTMsNDMgQEAgUGFzc1JlZlB0cjxHcmFk
aWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0
KiByZW5kZXIKICAgICByZXR1cm4gZ3JhZGllbnQucmVsZWFzZSgpOwogfQogCitib29sIENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZSYgcmhzKSBjb25zdAoreworICAgIGlmIChtX2RlcHJlY2F0ZWRUeXBlKQorICAgICAgICByZXR1
cm4gcmhzLm1fZGVwcmVjYXRlZFR5cGUgJiYgKm1fZmlyc3RYID09ICpyaHMubV9maXJzdFggJiYg
Km1fZmlyc3RZID09ICpyaHMubV9maXJzdFkKKyAgICAgICAgICAgICYmICptX3NlY29uZFggPT0g
KnJocy5tX3NlY29uZFggJiYgKm1fc2Vjb25kWSA9PSAqcmhzLm1fc2Vjb25kWSAmJiAqbV9maXJz
dFJhZGl1cyA9PSAqcmhzLm1fZmlyc3RSYWRpdXMKKyAgICAgICAgICAgICYmICptX3NlY29uZFJh
ZGl1cyA9PSAqcmhzLm1fc2Vjb25kUmFkaXVzICYmIG1fc3RvcHMgPT0gcmhzLm1fc3RvcHM7CisK
KyAgICBib29sIGVxdWFsUmVwZWF0aW5nID0gbV9yZXBlYXRpbmcgPT0gcmhzLm1fcmVwZWF0aW5n
OworICAgIGJvb2wgZXF1YWxYb3JZID0gZmFsc2U7CisKKyAgICBpZiAobV9maXJzdFggJiYgbV9m
aXJzdFkpCisgICAgICAgIGVxdWFsWG9yWSA9IHJocy5tX2ZpcnN0WCAmJiByaHMubV9maXJzdFkg
JiYgKm1fZmlyc3RYID09ICpyaHMubV9maXJzdFggJiYgKm1fZmlyc3RZID09ICpyaHMubV9maXJz
dFk7CisgICAgZWxzZSBpZiAobV9maXJzdFgpCisgICAgICAgIGVxdWFsWG9yWSA9IHJocy5tX2Zp
cnN0WCAmJiAqbV9maXJzdFggPT0gKnJocy5tX2ZpcnN0WCAmJiAhcmhzLm1fZmlyc3RZOworICAg
IGVsc2UgaWYgKG1fZmlyc3RZKQorICAgICAgICBlcXVhbFhvclkgPSByaHMubV9maXJzdFkgJiYg
Km1fZmlyc3RZID09ICpyaHMubV9maXJzdFkgJiYgIXJocy5tX2ZpcnN0WDsKKyAgICBlbHNlCisg
ICAgICAgIGVxdWFsWG9yWSA9PSAhcmhzLm1fZmlyc3RYIHx8ICFyaHMubV9maXJzdFk7CisKKyAg
ICBib29sIGVxdWFsU2hhcGUgPSB0cnVlOworICAgIGJvb2wgZXF1YWxTaXppbmdCZWhhdmlvciA9
IHRydWU7CisgICAgYm9vbCBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSB0cnVlOwor
CisgICAgaWYgKG1fc2hhcGUpCisgICAgICAgIGVxdWFsU2hhcGUgPSByaHMubV9zaGFwZSAmJiAq
bV9zaGFwZSA9PSAqcmhzLm1fc2hhcGU7CisgICAgZWxzZSBpZiAobV9zaXppbmdCZWhhdmlvcikK
KyAgICAgICAgZXF1YWxTaXppbmdCZWhhdmlvciA9IHJocy5tX3NpemluZ0JlaGF2aW9yICYmICpt
X3NpemluZ0JlaGF2aW9yID09ICpyaHMubV9zaXppbmdCZWhhdmlvcjsKKyAgICBlbHNlIGlmICht
X2VuZEhvcml6b250YWxTaXplICYmIG1fZW5kVmVydGljYWxTaXplKQorICAgICAgICBlcXVhbEhv
cml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSByaHMubV9lbmRIb3Jpem9udGFsU2l6ZSAmJiByaHMu
bV9lbmRWZXJ0aWNhbFNpemUgJiYgKnJocy5tX2VuZEhvcml6b250YWxTaXplID09ICptX2VuZEhv
cml6b250YWxTaXplICYmICpyaHMubV9lbmRWZXJ0aWNhbFNpemUgPT0gKm1fZW5kVmVydGljYWxT
aXplOworICAgIGVsc2UgeworICAgICAgICBlcXVhbFNoYXBlID0gIXJocy5tX3NoYXBlOworICAg
ICAgICBlcXVhbFNpemluZ0JlaGF2aW9yID0gIXJocy5tX3NpemluZ0JlaGF2aW9yOworICAgICAg
ICBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSAhcmhzLm1fZW5kSG9yaXpvbnRhbFNp
emUgJiYgIXJocy5tX2VuZFZlcnRpY2FsU2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIGVxdWFsUmVw
ZWF0aW5nICYmIGVxdWFsWG9yWSAmJiBlcXVhbFNoYXBlICYmIGVxdWFsU2l6aW5nQmVoYXZpb3Ig
JiYgZXF1YWxIb3Jpem9udGFsQW5kVmVydGljYWxTaXplICYmIG1fc3RvcHMgPT0gcmhzLm1fc3Rv
cHM7Cit9CisKIHZvaWQgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAg
ICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1l
bW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRp
ZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXgg
MWUyNWFjZi4uYzE3ZWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRp
ZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBA
IC00Niw2ICs0NiwxMSBAQCBzdHJ1Y3QgQ1NTR3JhZGllbnRDb2xvclN0b3AgewogICAgIENvbG9y
IG1fcmVzb2x2ZWRDb2xvcjsKICAgICBib29sIG1fY29sb3JJc0Rlcml2ZWRGcm9tRWxlbWVudDsK
ICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHJocykgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbG9yID8gcmhzLm1fY29sb3IgJiYgKm1fY29sb3Ig
PT0gKnJocy5tX2NvbG9yIDogIXJocy5tX2NvbG9yCisgICAgICAgICYmIG1fcG9zaXRpb24gPyBy
aHMubV9wb3NpdGlvbiAmJiAqbV9wb3NpdGlvbiA9PSAqcmhzLm1fcG9zaXRpb24gOiAhcmhzLm1f
cG9zaXRpb247CisgICAgfQogfTsKIAogY2xhc3MgQ1NTR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKQEAgLTE0NCw2ICsxNDksOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSgqdGhpcykpOwog
ICAgIH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVl
JikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0xODcsNiArMTk0LDggQEAgcHVibGlj
OgogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2ZW4gc2l6ZS4KICAgICBQYXNz
UmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRT
aXplJik7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuY3BwCmluZGV4IDZlMTAzYTkuLmI5ODVjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHAKQEAgLTEyMCw2ICsxMjAsMTEgQEAgYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKICAgICByZXR1cm4gY2FjaGVkUmVzb3Vy
Y2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCk7CiB9CiAKK2Jvb2wgQ1NTSW1hZ2VWYWx1ZTo6b3Bl
cmF0b3I9PShjb25zdCBDU1NJbWFnZVZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dXJsID09IHJocy5tX3VybDsKK30KKwogU3RyaW5nIENTU0ltYWdlVmFsdWU6OmN1c3RvbUNzc1Rl
eHQoKSBjb25zdAogewogICAgIHJldHVybiAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1f
dXJsKSArICIpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IDFkOTc1ODMuLmQw
ZjZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaApAQCAtNTAsNiArNTAsOCBAQCBw
dWJsaWM6CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25z
dDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NJbWFnZVZhbHVlJikgY29uc3Q7CisK
ICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKICAgICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAppbmRleCA2OGMwMDFmLi5jYTRjZDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaApAQCAtMzUsNiArMzUsOCBA
QCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENTU0luaGVyaXRlZFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0luaXRpYWxWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5o
CmluZGV4IGQ1MjMzNDMuLjkzYjc3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbml0aWFsVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVl
LmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0ltcGxpY2l0KCkgY29u
c3QgeyByZXR1cm4gbV9pc0ltcGxpY2l0OyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTSW5pdGlhbFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdm9pZCByZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKaW5kZXgg
ZWViNjQ3MC4uM2Q4OTVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVC
b3hDb250YWluVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRh
aW5WYWx1ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBTdHJpbmcg
Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwotCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0xp
bmVCb3hDb250YWluVmFsdWUmIHJocykgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSByaHMubV92
YWx1ZTsgfQogICAgIExpbmVCb3hDb250YWluIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQogCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5k
ZXggYzY3MjZjZC4uYTg2OTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCkBAIC0xMjU1LDYgKzEyNTUsODEgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK2Jvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NT
UHJpbWl0aXZlVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAobV9wcmltaXRpdmVVbml0VHlw
ZSA9PSByaHMubV9wcmltaXRpdmVVbml0VHlwZSkKKyAgICAgICAgc3dpdGNoIChtX3ByaW1pdGl2
ZVVuaXRUeXBlKSB7CisgICAgICAgIGNhc2UgQ1NTX1VOS05PV046CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGNhc2UgQ1NTX05VTUJFUjoKKyAgICAgICAgY2FzZSBDU1NfUEFS
U0VSX0lOVEVHRVI6CisgICAgICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CisgICAgICAgIGNhc2Ug
Q1NTX0VNUzoKKyAgICAgICAgY2FzZSBDU1NfRVhTOgorICAgICAgICBjYXNlIENTU19SRU1TOgor
ICAgICAgICBjYXNlIENTU19QWDoKKyAgICAgICAgY2FzZSBDU1NfQ006CisjaWYgRU5BQkxFKENT
U19JTUFHRV9SRVNPTFVUSU9OKSB8fCBFTkFCTEUoUkVTT0xVVElPTl9NRURJQV9RVUVSWSkKKyAg
ICAgICAgY2FzZSBDU1NfRFBQWDoKKyAgICAgICAgY2FzZSBDU1NfRFBJOgorICAgICAgICBjYXNl
IENTU19EUENNOgorI2VuZGlmCisgICAgICAgIGNhc2UgQ1NTX01NOgorICAgICAgICBjYXNlIENT
U19JTjoKKyAgICAgICAgY2FzZSBDU1NfUFQ6CisgICAgICAgIGNhc2UgQ1NTX1BDOgorICAgICAg
ICBjYXNlIENTU19ERUc6CisgICAgICAgIGNhc2UgQ1NTX1JBRDoKKyAgICAgICAgY2FzZSBDU1Nf
R1JBRDoKKyAgICAgICAgY2FzZSBDU1NfTVM6CisgICAgICAgIGNhc2UgQ1NTX1M6CisgICAgICAg
IGNhc2UgQ1NTX0haOgorICAgICAgICBjYXNlIENTU19LSFo6CisgICAgICAgIGNhc2UgQ1NTX1RV
Uk46CisgICAgICAgIGNhc2UgQ1NTX1ZXOgorICAgICAgICBjYXNlIENTU19WSDoKKyAgICAgICAg
Y2FzZSBDU1NfVk1JTjoKKyAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgorICAgICAgICAgICAg
cmV0dXJuIG1fdmFsdWUubnVtID09IHJocy5tX3ZhbHVlLm51bTsKKyAgICAgICAgY2FzZSBDU1Nf
SURFTlQ6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlk
ZW50KSA9PSB2YWx1ZU9yUHJvcGVydHlOYW1lKHJocy5tX3ZhbHVlLmlkZW50KTsKKyAgICAgICAg
Y2FzZSBDU1NfU1RSSU5HOgorICAgICAgICBjYXNlIENTU19VUkk6CisgICAgICAgIGNhc2UgQ1NT
X0FUVFI6CisgICAgICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKKyAgICAgICAgY2FzZSBDU1Nf
UEFSU0VSX0lERU5USUZJRVI6CisgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKKyNp
ZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICAgICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFNRToK
KyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIGVxdWFsKG1fdmFsdWUuc3RyaW5nLCByaHMubV92
YWx1ZS5zdHJpbmcpOworICAgICAgICBjYXNlIENTU19DT1VOVEVSOgorICAgICAgICAgICAgcmV0
dXJuICptX3ZhbHVlLmNvdW50ZXIgPT0gKnJocy5tX3ZhbHVlLmNvdW50ZXI7CisgICAgICAgIGNh
c2UgQ1NTX1JFQ1Q6CisgICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUucmVjdCA9PSAqcmhzLm1f
dmFsdWUucmVjdDsKKyAgICAgICAgY2FzZSBDU1NfUVVBRDoKKyAgICAgICAgICAgIHJldHVybiAq
bV92YWx1ZS5xdWFkID09ICpyaHMubV92YWx1ZS5xdWFkOworICAgICAgICBjYXNlIENTU19SR0JD
T0xPUjoKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLnJnYmNvbG9yID09IHJocy5tX3ZhbHVl
LnJnYmNvbG9yOworICAgICAgICBjYXNlIENTU19QQUlSOgorICAgICAgICAgICAgcmV0dXJuICpt
X3ZhbHVlLnBhaXIgPT0gKnJocy5tX3ZhbHVlLnBhaXI7CisjaWYgRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKQorICAgICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOiB7CisgICAgICAgICAg
ICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7Cisg
ICAgICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHJoc1JlZ2lvbiA9IHJocy5nZXREYXNoYm9hcmRS
ZWdpb25WYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlZ2lvbiA/IHJoc1JlZ2lvbiAmJiAq
cmVnaW9uID09ICpyaHNSZWdpb24gOiAhcmhzUmVnaW9uOworICAgICAgICB9CisjZW5kaWYKKyAg
ICAgICAgY2FzZSBDU1NfUEFSU0VSX09QRVJBVE9SOgorICAgICAgICAgICAgcmV0dXJuIG1fdmFs
dWUuaWRlbnQgPT0gcmhzLm1fdmFsdWUuaWRlbnQ7CisgICAgICAgIGNhc2UgQ1NTX0NBTEM6Cisg
ICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUuY2FsYyA9PSAqcmhzLm1fdmFsdWUuY2FsYzsKKyAg
ICAgICAgY2FzZSBDU1NfU0hBUEU6CisgICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUuc2hhcGUg
PT0gKnJocy5tX3ZhbHVlLnNoYXBlOworICAgICAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFz
c0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNT
Uyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IGZjYzViODMuLjNh
NWU4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0zMTUsNiAr
MzE1LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNsb25l
Rm9yQ1NTT00oKSBjb25zdDsKICAgICB2b2lkIHNldENTU09NU2FmZSgpIHsgbV9pc0NTU09NU2Fm
ZSA9IHRydWU7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVj
dFZhbHVlLmNwcAppbmRleCA5NDM5ZDYwLi4yMTYxMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmNwcApAQCAtNjcsNiArNjcsMTIgQEAgdm9pZCBDU1NSZWZsZWN0VmFsdWU6
OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBT
dHkKICAgICAgICAgbV9tYXNrLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNo
ZWV0KTsKIH0KIAorYm9vbCBDU1NSZWZsZWN0VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTUmVm
bGVjdFZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlyZWN0aW9uID09IHJocy5t
X2RpcmVjdGlvbiAmJiAqbV9vZmZzZXQgPT0gKnJocy5tX29mZnNldAorICAgICAgICAmJiBtX21h
c2sgPyByaHMubV9tYXNrICYmICptX21hc2sgPT0gKnJocy5tX21hc2sgOiAhcmhzLm1fbWFzazsK
K30KKwogdm9pZCBDU1NSZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNs
YXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6
Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCAxYmRmZDVmLi5jYTlm
MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC01MSw2ICs1MSw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDU1NSZWZsZWN0VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAppbmRl
eCBlMWJiMWQxLi45MjZhZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1
bmN0aW9uVmFsdWUuY3BwCkBAIC01MCw2ICs1MCwxMiBAQCBTdHJpbmcgQ1NTQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICAgICAgKyBTdHJp
bmc6Om51bWJlcihtX3kyKSArICIpIjsKIH0KIAorYm9vbCBDU1NDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
blZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1feDEgPT0gcmhzLm1feDEgJiYgbV94
MiA9PSByaHMubV94MiAmJiBtX3kxID09IHJocy5tX3kxICYmIG1feTIgPT0gcmhzLm1feTI7Cit9
CisKKwogdm9pZCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKQEAgLTYwLDYgKzY2LDEyIEBAIFN0cmluZyBDU1NTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiAi
c3RlcHMoIiArIFN0cmluZzo6bnVtYmVyKG1fc3RlcHMpICsgIiwgIiArIChtX3N0ZXBBdFN0YXJ0
ID8gInN0YXJ0IiA6ICJlbmQiKSArICcpJzsKIH0KIAorYm9vbCBDU1NTdGVwc1RpbWluZ0Z1bmN0
aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlJiBy
aHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RlcHMgPT0gcmhzLm1fc3RlcHMgJiYgbV9zdGVw
QXRTdGFydCA9PSByaHMubV9zdGVwQXRTdGFydDsKK30KKworCiB2b2lkIENTU1N0ZXBzVGltaW5n
RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKaW5kZXggM2ViNGIyMi4uZDEx
ODkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBA
IC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29u
c3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25W
YWx1ZSYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTYz
LDYgKzY1LDggQEAgcHVibGljOgogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7
IH0KICAgICBkb3VibGUgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlJikgY29uc3Q7
CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05Myw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcAppbmRleCAzNGQ2
M2I2Li4wYjI5N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJh
bmdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1
ZS5jcHAKQEAgLTM4LDYgKzM4LDExIEBAIFN0cmluZyBDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6Y3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBDU1NVbmlj
b2RlUmFuZ2VWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYgcmhz
KSBjb25zdAoreworICAgIHJldHVybiBtX2Zyb20gPT0gcmhzLm1fZnJvbSAmJiBtX3RvID09IHJo
cy5tX3RvOworfQorCiB2b2lkIENTU1VuaWNvZGVSYW5nZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsK
ICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3Jl
TWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5p
Y29kZVJhbmdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1
ZS5oCmluZGV4IGQ1MGY1YjYuLjkxYThjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmlj
b2RlUmFuZ2VWYWx1ZS5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBj
dXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVW5p
Y29kZVJhbmdlVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCmluZGV4IDBhNjEyOWQuLmE2ZDE5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNw
cApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0xpbmVCb3hDb250YWluVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1
ZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKICNpbmNsdWRlICJD
U1NSZWZsZWN0VmFsdWUuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKQEAgLTczLDcgKzc0LDEzIEBAIHN0cnVj
dCBTYW1lU2l6ZUFzQ1NTVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxTYW1lU2l6ZUFzQ1NTVmFs
dWU+IHsKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihDU1NWYWx1ZSkgPT0gc2l6ZW9mKFNh
bWVTaXplQXNDU1NWYWx1ZSksIENTU192YWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7Ci0gICAgCisK
K3RlbXBsYXRlPGNsYXNzIENoaWxkQ2xhc3NUeXBlPgoraW5saW5lIHN0YXRpYyBib29sIGNvbXBh
cmVDc3NWYWx1ZXMoY29uc3QgQ1NTVmFsdWUmIGxocywgY29uc3QgQ1NTVmFsdWUmIHJocykKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ2hpbGRDbGFzc1R5cGUmPihsaHMpID09IHN0
YXRpY19jYXN0PGNvbnN0IENoaWxkQ2xhc3NUeXBlJj4ocmhzKTsKK30KKwogY2xhc3MgVGV4dENs
b25lQ1NTVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRleHRDbG9uZUNTU1ZhbHVlPiBjcmVhdGUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGV4dENsb25lQ1NTVmFsdWUo
Y2xhc3NUeXBlLCB0ZXh0KSk7IH0KQEAgLTI3Niw2ICsyODMsMTAyIEBAIHZvaWQgQ1NTVmFsdWU6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK2Jvb2wgQ1NTVmFsdWU6Om9wZXJh
dG9yPT0oY29uc3QgQ1NTVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAobV9pc1RleHRDbG9u
ZSkgeworICAgICAgICBBU1NFUlQoaXNDU1NPTVNhZmUoKSk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBUZXh0Q2xvbmVDU1NWYWx1ZSo+KHRoaXMpLT5jc3NUZXh0KCkgPT0gcmhz
LmNzc1RleHQoKTsKKyAgICB9CisKKyAgICBpZiAobV9jbGFzc1R5cGUgPT0gcmhzLm1fY2xhc3NU
eXBlKSB7CisgICAgICAgIHN3aXRjaCAobV9jbGFzc1R5cGUpIHsKKyAgICAgICAgY2FzZSBBc3Bl
Y3RSYXRpb0NsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTQXNw
ZWN0UmF0aW9WYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgQm9yZGVySW1hZ2VTbGlj
ZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBDYW52YXNDbGFzczoKKyAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0NhbnZhc1ZhbHVlPigqdGhpcywg
cmhzKTsKKyAgICAgICAgY2FzZSBDdXJzb3JJbWFnZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJu
IGNvbXBhcmVDc3NWYWx1ZXM8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAg
ICAgIGNhc2UgRm9udENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8
Rm9udFZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBGb250RmFjZVNyY0NsYXNzOgor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTRm9udEZhY2VTcmNWYWx1ZT4o
KnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgRm9udEZlYXR1cmVDbGFzczoKKyAgICAgICAgICAg
IHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPEZvbnRGZWF0dXJlVmFsdWU+KCp0aGlzLCByaHMpOwor
ICAgICAgICBjYXNlIEZ1bmN0aW9uQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNz
c1ZhbHVlczxDU1NGdW5jdGlvblZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBMaW5l
YXJHcmFkaWVudENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NT
TGluZWFyR3JhZGllbnRWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgUmFkaWFsR3Jh
ZGllbnRDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU1JhZGlh
bEdyYWRpZW50VmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIENyb3NzZmFkZUNsYXNz
OgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTQ3Jvc3NmYWRlVmFsdWU+
KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIEltYWdlQ2xhc3M6CisgICAgICAgICAgICByZXR1
cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NJbWFnZVZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAg
Y2FzZSBJbmhlcml0ZWRDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVz
PENTU0luaGVyaXRlZFZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBJbml0aWFsQ2xh
c3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NJbml0aWFsVmFsdWU+
KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIFByaW1pdGl2ZUNsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0aGlzLCByaHMpOwor
ICAgICAgICBjYXNlIFJlZmxlY3RDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3Nz
VmFsdWVzPENTU1JlZmxlY3RWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgU2hhZG93
Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxTaGFkb3dWYWx1ZT4o
KnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgTGluZWFyVGltaW5nRnVuY3Rpb25DbGFzczoKKyAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0xpbmVhclRpbWluZ0Z1bmN0aW9u
VmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rp
b25DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0N1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb25WYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgU3RlcHNU
aW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBV
bmljb2RlUmFuZ2VDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENT
U1VuaWNvZGVSYW5nZVZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBWYWx1ZUxpc3RD
bGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU1ZhbHVlTGlzdD4o
KnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtQ2xhc3M6CisgICAg
ICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZT4o
KnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgTGluZUJveENvbnRhaW5DbGFzczoKKyAgICAgICAg
ICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0xpbmVCb3hDb250YWluVmFsdWU+KCp0aGlz
LCByaHMpOworICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2xhc3M6CisgICAgICAgICAgICByZXR1
cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NDYWxjVmFsdWU+KCp0aGlzLCByaHMpOworI2lmIEVOQUJM
RShDU1NfSU1BR0VfU0VUKQorICAgICAgICBjYXNlIEltYWdlU2V0Q2xhc3M6CisgICAgICAgICAg
ICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NJbWFnZVNldFZhbHVlPigqdGhpcywgcmhzKTsK
KyNlbmRpZgorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NG
aWx0ZXJDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPFdlYktpdENT
U0ZpbHRlclZhbHVlPigqdGhpcywgcmhzKTsKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAg
ICAgIGNhc2UgV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlQ2xhc3M6CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU+KCp0aGlz
LCByaHMpOworICAgICAgICBjYXNlIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWVDbGFzczoKKyAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPFdlYktpdENTU01peEZ1bmN0aW9uVmFs
dWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIFdlYktpdENTU1NoYWRlckNsYXNzOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8V2ViS2l0Q1NTU2hhZGVyVmFsdWU+KCp0
aGlzLCByaHMpOworI2VuZGlmCisjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAg
ICAgICAgY2FzZSBWYXJpYWJsZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NW
YWx1ZXM8Q1NTVmFyaWFibGVWYWx1ZT4oKnRoaXMsIHJocyk7CisjZW5kaWYKKyNpZiBFTkFCTEUo
U1ZHKQorICAgICAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29t
cGFyZUNzc1ZhbHVlczxTVkdDb2xvcj4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgU1ZHUGFp
bnRDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPFNWR1BhaW50Pigq
dGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NTVkdEb2N1bWVudENsYXNzOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8V2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1
ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9IGVsc2UgaWYgKG1fY2xhc3NUeXBlID09IFZhbHVlTGlzdENsYXNzICYm
IHJocy5tX2NsYXNzVHlwZSAhPSBWYWx1ZUxpc3RDbGFzcykKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IENTU1ZhbHVlTGlzdCY+KCp0aGlzKSA9PSByaHM7CisgICAgZWxzZSBpZiAo
bV9jbGFzc1R5cGUgIT0gVmFsdWVMaXN0Q2xhc3MgJiYgcmhzLm1fY2xhc3NUeXBlID09IFZhbHVl
TGlzdENsYXNzKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0
Jj4ocmhzKSA9PSAqdGhpczsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBDU1NWYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNUZXh0Q2xvbmUpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmgKaW5kZXggYjJhNTMxYS4uYmMwOGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAg
LTEyNiw2ICsxMjYsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NW
YWx1ZSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU1NWYWx1ZSYgcmhzKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IHJocyk7IH0KKwogcHJvdGVjdGVkOgogCiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBDbGFzc1R5cGVCaXRzID0gNjsKQEAgLTIzNiw2ICsyMzksMjMgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NsYXNzVHlwZSA6IENsYXNzVHlwZUJpdHM7IC8vIENs
YXNzVHlwZQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgQ1NTVmFsdWVUeXBlPgoraW5saW5lIGJv
b2wgY29tcGFyZUNzc1ZhbHVlVmVjdG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTVmFsdWVUeXBl
PiA+JiBsaHMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTVmFsdWVUeXBlPiA+JiByaHMpCit7Cisg
ICAgc2l6ZV90IHNpemUgPSBsaHMuc2l6ZSgpOworICAgIGlmIChzaXplID09IHJocy5zaXplKCkp
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAg
ICAgIGNvbnN0IFJlZlB0cjxDU1NWYWx1ZVR5cGU+JiBsaHNQdHIgPSBsaHNbaV07CisgICAgICAg
ICAgICBjb25zdCBSZWZQdHI8Q1NTVmFsdWVUeXBlPiYgcmhzUHRyID0gcmhzW2ldOworICAgICAg
ICAgICAgaWYgKGxoc1B0ciA9PSByaHNQdHIgfHwgKGxoc1B0ciAmJiByaHNQdHIgJiYgKmxoc1B0
ciA9PSAqcmhzUHRyKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBD
U1NWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCmluZGV4IDllYzJkNTAuLmU0
NWFlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCkBAIC01NSwxMCArNTUsOCBA
QCBDU1NWYWx1ZUxpc3Q6OkNTU1ZhbHVlTGlzdChDU1NQYXJzZXJWYWx1ZUxpc3QqIHBhcnNlclZh
bHVlcykKIGJvb2wgQ1NTVmFsdWVMaXN0OjpyZW1vdmVBbGwoQ1NTVmFsdWUqIHZhbCkKIHsKICAg
ICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgLy8gRklYTUU6IHdlIHNob3VsZCBiZSBpbXBsZW1l
bnRpbmcgb3BlcmF0b3I9PSB0byBDU1NWYWx1ZSBhbmQgaXRzIGRlcml2ZWQgY2xhc3NlcwotICAg
IC8vIHRvIG1ha2UgY29tcGFyaXNvbiBtb3JlIGZsZXhpYmxlIGFuZCBmYXN0LgogICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX3ZhbHVlcy5zaXplKCk7IGluZGV4KyspIHsKLSAg
ICAgICAgaWYgKG1fdmFsdWVzLmF0KGluZGV4KS0+Y3NzVGV4dCgpID09IHZhbC0+Y3NzVGV4dCgp
KSB7CisgICAgICAgIGlmICgqbV92YWx1ZXMuYXQoaW5kZXgpID09ICp2YWwpIHsKICAgICAgICAg
ICAgIG1fdmFsdWVzLnJlbW92ZShpbmRleCk7CiAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAg
ICAgICAgIH0KQEAgLTY5LDEwICs2Nyw4IEBAIGJvb2wgQ1NTVmFsdWVMaXN0OjpyZW1vdmVBbGwo
Q1NTVmFsdWUqIHZhbCkKIAogYm9vbCBDU1NWYWx1ZUxpc3Q6Omhhc1ZhbHVlKENTU1ZhbHVlKiB2
YWwpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IHdlIHNob3VsZCBiZSBpbXBsZW1lbnRpbmcgb3Bl
cmF0b3I9PSB0byBDU1NWYWx1ZSBhbmQgaXRzIGRlcml2ZWQgY2xhc3NlcwotICAgIC8vIHRvIG1h
a2UgY29tcGFyaXNvbiBtb3JlIGZsZXhpYmxlIGFuZCBmYXN0LgogICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX3ZhbHVlcy5zaXplKCk7IGluZGV4KyspIHsKLSAgICAgICAgaWYg
KG1fdmFsdWVzLmF0KGluZGV4KS0+Y3NzVGV4dCgpID09IHZhbC0+Y3NzVGV4dCgpKQorICAgICAg
ICBpZiAoKm1fdmFsdWVzLmF0KGluZGV4KSA9PSAqdmFsKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNyw2ICsxMjMsMTkgQEAgU3RyaW5n
IENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOwogfQogCitib29sIENTU1ZhbHVlTGlzdDo6b3BlcmF0b3I9PShjb25zdCBDU1NW
YWx1ZUxpc3QmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gbV92YWx1ZUxpc3RTZXBhcmF0b3Ig
PT0gcmhzLm1fdmFsdWVMaXN0U2VwYXJhdG9yICYmIGNvbXBhcmVDc3NWYWx1ZVZlY3RvcjxDU1NW
YWx1ZT4obV92YWx1ZXMsIHJocy5tX3ZhbHVlcyk7Cit9CisKK2Jvb2wgQ1NTVmFsdWVMaXN0Ojpv
cGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFsdWVz
LnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gKm1fdmFsdWVzWzBdID09IHJoczsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENT
U1ZhbHVlTGlzdDo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVMaXN0LmgKaW5kZXggM2Q4OTdiYy4uN2QzZTVhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUxpc3QuaApAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGNvcHkoKTsKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlTGlzdCYpIGNvbnN0OworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDU1NWYWx1ZSYpIGNvbnN0OwogI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQogICAgIFN0cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3Qg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmgKaW5kZXggNGZjNGY3NS4uMTBjN2UwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1ZhcmlhYmxlVmFsdWUmIHJocykgY29uc3QgeyByZXR1
cm4gbV9uYW1lID09IHJocy5tX25hbWUgJiYgbV92YWx1ZSA9PSByaHMubV92YWx1ZTsgfQorCiAg
ICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7CiAgICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q291bnRlci5oCmluZGV4IDUxZmE3MTAuLmY5ZTdjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Db3VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaApAQCAt
NDIsNiArNDIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SWRlbnRpZmllcihQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVudGlmaWVyKSB7IG1faWRlbnRpZmllciA9IGlkZW50aWZp
ZXI7IH0KICAgICB2b2lkIHNldExpc3RTdHlsZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBsaXN0U3R5bGUpIHsgbV9saXN0U3R5bGUgPSBsaXN0U3R5bGU7IH0KICAgICB2b2lkIHNldFNl
cGFyYXRvcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpIHsgbV9zZXBh
cmF0b3IgPSBzZXBhcmF0b3I7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVy
JiByaHMpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaWRlbnRpZmllcigpID09IHJocy5p
ZGVudGlmaWVyKCkKKyAgICAgICAgICAgICYmIGxpc3RTdHlsZSgpID09IHJocy5saXN0U3R5bGUo
KQorICAgICAgICAgICAgJiYgc2VwYXJhdG9yKCkgPT0gcmhzLnNlcGFyYXRvcigpOworICAgIH0K
ICAgICAKICAgICBQYXNzUmVmUHRyPENvdW50ZXI+IGNsb25lRm9yQ1NTT00oKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdpb24uaAppbmRleCA5MWU1ZDdhLi4wYzZlN2U5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGFzaGJvYXJkUmVnaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0Rhc2hib2FyZFJlZ2lvbi5oCkBAIC0zMCw2ICszMCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXNoYm9hcmRSZWdpb24gOiBwdWJsaWMgUmVjdEJh
c2UsIHB1YmxpYyBSZWZDb3VudGVkPERhc2hib2FyZFJlZ2lvbj4gewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IERhc2hib2FyZFJlZ2lvbik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGFz
aGJvYXJkUmVnaW9uJiByaHMpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sYWJlbCA9
PSByaHMubV9sYWJlbCAmJiBtX2dlb21ldHJ5VHlwZSA9PSByaHMubV9nZW9tZXRyeVR5cGUKKyAg
ICAgICAgICAgICYmIG1faXNDaXJjbGUgPT0gcmhzLm1faXNDaXJjbGUgJiYgbV9pc1JlY3Rhbmds
ZSA9PSByaHMubV9pc1JlY3RhbmdsZQorICAgICAgICAgICAgJiYgbV9uZXh0ID8gcmhzLm1fbmV4
dCAmJiAqbV9uZXh0ID09ICpyaHMubV9uZXh0IDogIXJocy5tX25leHQ7CisgICAgfQogCiAgICAg
UmVmUHRyPERhc2hib2FyZFJlZ2lvbj4gbV9uZXh0OwogICAgIFN0cmluZyBtX2xhYmVsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCmluZGV4IDEwMzRmY2EuLjE3NDY4ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKQEAgLTUwLDYgKzUwLDEx
IEBAIFN0cmluZyBGb250RmVhdHVyZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCitib29sIEZvbnRGZWF0dXJlVmFsdWU6Om9w
ZXJhdG9yPT0oY29uc3QgRm9udEZlYXR1cmVWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVy
biBtX3RhZyA9PSByaHMubV90YWcgJiYgbV92YWx1ZSA9PSByaHMubV92YWx1ZTsKK30KKwogdm9p
ZCBGb250RmVhdHVyZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaAppbmRleCBmY2FiODE1Li44NjgzZTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVi
bGljOgogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBTdHJp
bmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZv
bnRGZWF0dXJlVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRWYWx1ZS5jcHAKaW5kZXggMGJhMWU2ZS4uODg0OTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1
ZS5jcHAKQEAgLTY1LDYgKzY1LDE2IEBAIFN0cmluZyBGb250VmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBGb250VmFs
dWU6Om9wZXJhdG9yPT0oY29uc3QgRm9udFZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHN0eWxlID8gcmhzLnN0eWxlICYmICpzdHlsZSA9PSAqcmhzLnN0eWxlIDogIXJocy5zdHlsZQor
ICAgICAgICAmJiB2YXJpYW50ID8gcmhzLnZhcmlhbnQgJiYgKnZhcmlhbnQgPT0gKnJocy52YXJp
YW50IDogIXJocy52YXJpYW50CisgICAgICAgICYmIHdlaWdodCA/IHJocy53ZWlnaHQgJiYgKndl
aWdodCA9PSAqcmhzLndlaWdodCA6ICFyaHMud2VpZ2h0CisgICAgICAgICYmIHNpemUgPyByaHMu
c2l6ZSAmJiAqc2l6ZSA9PSAqcmhzLnNpemUgOiAhcmhzLnNpemUKKyAgICAgICAgJiYgbGluZUhl
aWdodCA/IHJocy5saW5lSGVpZ2h0ICYmICpsaW5lSGVpZ2h0ID09ICpyaHMubGluZUhlaWdodCA6
ICFyaHMubGluZUhlaWdodAorICAgICAgICAmJiBmYW1pbHkgPyByaHMuZmFtaWx5ICYmICpmYW1p
bHkgPT0gKnJocy5mYW1pbHkgOiAhcmhzLmZhbWlseTsKK30KKwogdm9pZCBGb250VmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAppbmRl
eCAwM2E2MTI2Li5mZDA0NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCkBAIC0zOSw2ICszOSw4
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFeHAuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhw
LmgKaW5kZXggODEzZTBmOC4uN2I1NGZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlFeHAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiAob3RoZXIu
bV9tZWRpYUZlYXR1cmUgPT0gbV9tZWRpYUZlYXR1cmUpCiAgICAgICAgICAgICAmJiAoKCFvdGhl
ci5tX3ZhbHVlICYmICFtX3ZhbHVlKQotICAgICAgICAgICAgICAgIHx8IChvdGhlci5tX3ZhbHVl
ICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+Y3NzVGV4dCgpID09IG1fdmFsdWUtPmNzc1Rl
eHQoKSkpOworICAgICAgICAgICAgICAgIHx8IChvdGhlci5tX3ZhbHVlICYmIG1fdmFsdWUgJiYg
Km90aGVyLm1fdmFsdWUgPT0gKm1fdmFsdWUpKTsKICAgICB9CiAKICAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9QYWlyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCmluZGV4IDA0MWVlMjMuLmEw
YTc4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1BhaXIuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBnZW5lcmF0ZUNTU1N0cmluZyhmaXJzdCgpLT5jc3NUZXh0KCksIHNlY29uZCgpLT5jc3NU
ZXh0KCkpOwogICAgIH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYWlyJiByaHMpIGNv
bnN0IHsgcmV0dXJuICptX2ZpcnN0ID09ICpyaHMubV9maXJzdCAmJiAqbV9zZWNvbmQgPT0gKnJo
cy5tX3NlY29uZDsgfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgU3RyaW5nIHNl
cmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiYgdmFyaWFibGVzKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9SZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCmluZGV4IGZlZWY4NzUuLjE2
NmE1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1JlY3QuaApAQCAtMzksNiArMzksMTIgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Qm90dG9tKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvdHRvbSkgeyBtX2JvdHRv
bSA9IGJvdHRvbTsgfQogICAgIHZvaWQgc2V0TGVmdChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBSZWN0QmFzZSYgcmhzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICptX3RvcCA9PSAq
cmhzLm1fdG9wICYmICptX3JpZ2h0ID09ICpyaHMubV9yaWdodAorICAgICAgICAgICAgJiYgKm1f
bGVmdCA9PSAqcmhzLm1fbGVmdCAmJiAqbV9ib3R0b20gPT0gKnJocy5tX2JvdHRvbTsKKyAgICB9
CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBib29sIGhhc1ZhcmlhYmxlUmVmZXJl
bmNlKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcAppbmRleCBhNDA2
NGNjLi5jNDEyODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAKQEAgLTc5LDYgKzc5
LDE2IEBAIFN0cmluZyBTaGFkb3dWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIHRleHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBTaGFkb3dWYWx1ZTo6b3BlcmF0b3I9PShj
b25zdCBTaGFkb3dWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBjb2xvciA/IHJocy5j
b2xvciAmJiAqY29sb3IgPT0gKnJocy5jb2xvciA6ICFyaHMuY29sb3IKKyAgICAgICAgJiYgeCA/
IHJocy54ICYmICp4ID09ICpyaHMueCA6ICFyaHMueAorICAgICAgICAmJiB5ID8gcmhzLnkgJiYg
KnkgPT0gKnJocy55IDogIXJocy55CisgICAgICAgICYmIGJsdXIgPyByaHMuYmx1ciAmJiAqYmx1
ciA9PSAqcmhzLmJsdXIgOiAhcmhzLmJsdXIKKyAgICAgICAgJiYgc3ByZWFkID8gcmhzLnNwcmVh
ZCAmJiAqc3ByZWFkID09ICpyaHMuc3ByZWFkIDogIXJocy5zcHJlYWQKKyAgICAgICAgJiYgc3R5
bGUgPyByaHMuc3R5bGUgJiYgKnN0eWxlID09ICpyaHMuc3R5bGUgOiAhcmhzLnN0eWxlOworfQor
CiB2b2lkIFNoYWRvd1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TaGFkb3dWYWx1ZS5oCmluZGV4IGYyZDhlNmYuLjgyZDQzNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TaGFkb3dWYWx1ZS5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBj
dXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhZG93
VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
eDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBmNjYyY2NhLi40
Y2VhYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC0zMjcs
OSArMzI3LDkgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1ZXMoY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKSBjb24KICAgICBpZiAodG9wLmlzSW1wb3J0
YW50KCkgIT0gcmlnaHQuaXNJbXBvcnRhbnQoKSB8fCByaWdodC5pc0ltcG9ydGFudCgpICE9IGJv
dHRvbS5pc0ltcG9ydGFudCgpIHx8IGJvdHRvbS5pc0ltcG9ydGFudCgpICE9IGxlZnQuaXNJbXBv
cnRhbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYm9vbCBzaG93TGVmdCA9
IHJpZ2h0LnZhbHVlKCktPmNzc1RleHQoKSAhPSBsZWZ0LnZhbHVlKCktPmNzc1RleHQoKTsKLSAg
ICBib29sIHNob3dCb3R0b20gPSAodG9wLnZhbHVlKCktPmNzc1RleHQoKSAhPSBib3R0b20udmFs
dWUoKS0+Y3NzVGV4dCgpKSB8fCBzaG93TGVmdDsKLSAgICBib29sIHNob3dSaWdodCA9ICh0b3Au
dmFsdWUoKS0+Y3NzVGV4dCgpICE9IHJpZ2h0LnZhbHVlKCktPmNzc1RleHQoKSkgfHwgc2hvd0Jv
dHRvbTsKKyAgICBib29sIHNob3dMZWZ0ID0gKnJpZ2h0LnZhbHVlKCkgIT0gKmxlZnQudmFsdWUo
KTsKKyAgICBib29sIHNob3dCb3R0b20gPSAoKnRvcC52YWx1ZSgpICE9ICpib3R0b20udmFsdWUo
KSkgfHwgc2hvd0xlZnQ7CisgICAgYm9vbCBzaG93UmlnaHQgPSAoKnRvcC52YWx1ZSgpICE9ICpy
aWdodC52YWx1ZSgpKSB8fCBzaG93Qm90dG9tOwogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
CiAgICAgcmVzdWx0LmFwcGVuZCh0b3AudmFsdWUoKS0+Y3NzVGV4dCgpKTsKQEAgLTExMTksNyAr
MTExOSw3IEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlNYXRjaGVzKGNvbnN0IFBy
b3BlcnR5UmVmZXJlbmNlJiBwcm9wZXJ0eSkgY29uc3QKICAgICBpbnQgZm91bmRQcm9wZXJ0eUlu
ZGV4ID0gZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHkuaWQoKSk7CiAgICAgaWYgKGZvdW5kUHJv
cGVydHlJbmRleCA9PSAtMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBwcm9w
ZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUoKS0+Y3NzVGV4dCgpID09IHByb3BlcnR5
LnZhbHVlKCktPmNzc1RleHQoKTsKKyAgICByZXR1cm4gKnByb3BlcnR5QXQoZm91bmRQcm9wZXJ0
eUluZGV4KS52YWx1ZSgpID09ICpwcm9wZXJ0eS52YWx1ZSgpOwogfQogICAgIAogdm9pZCBTdHls
ZVByb3BlcnR5U2V0OjpyZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3Bl
cnR5U2V0KiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NB
cnJheUZ1bmN0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5
RnVuY3Rpb25WYWx1ZS5jcHAKaW5kZXggMmExN2E0NC4uZjcyODRjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTU2LDYg
KzU2LDExIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlPiBXZWJLaXRD
U1NBcnJheUZ1bmN0aW9uVmFsdWU6OmNsb25lRm9yQ1NTCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUoKnRoaXMpKTsKIH0KIAorYm9vbCBXZWJLaXRD
U1NBcnJheUZ1bmN0aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NTQXJyYXlGdW5j
dGlvblZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIENTU1ZhbHVlTGlzdDo6b3BlcmF0
b3I9PShzdGF0aWNfY2FzdDxjb25zdCBDU1NWYWx1ZUxpc3QmPihyaHMpKTsKK30KKwogdm9pZCBX
ZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNs
YXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6
Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0
aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFs
dWUuaAppbmRleCBiYWYyNzgyLi5mN2JjZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoK
IAogICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlPiBjbG9uZUZvckNT
U09NKCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NTQXJyYXlG
dW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAppbmRleCBmMWExZTBlLi5lMjI4ODVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKQEAgLTExMSw2
ICsxMTEsMTEgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gV2ViS2l0Q1NTRmls
dGVyVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViS2l0Q1NTRmlsdGVyVmFsdWUoKnRoaXMpKTsKIH0KIAorYm9vbCBXZWJLaXRDU1NGaWx0ZXJW
YWx1ZTo6b3BlcmF0b3I9PShjb25zdCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSYgcmhzKSBjb25zdAor
eworICAgIHJldHVybiBtX3R5cGUgPT0gcmhzLm1fdHlwZSAmJiBDU1NWYWx1ZUxpc3Q6Om9wZXJh
dG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Jj4ocmhzKSk7Cit9CisKIHZvaWQg
V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5m
byBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKaW5kZXggMDhiM2U5Zi4u
NGU5NWFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKQEAg
LTY4LDYgKzY4LDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJW
YWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFdlYktpdENTU0ZpbHRlclZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAKaW5kZXgg
M2FmNjg3ZS4uNWNiY2RiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U01peEZ1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
aXhGdW5jdGlvblZhbHVlLmNwcApAQCAtNTYsNiArNTYsMTEgQEAgUGFzc1JlZlB0cjxXZWJLaXRD
U1NNaXhGdW5jdGlvblZhbHVlPiBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlOjpjbG9uZUZvckNT
U09NKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUo
KnRoaXMpKTsKIH0KIAorYm9vbCBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlOjpvcGVyYXRvcj09
KGNvbnN0IFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1
cm4gQ1NTVmFsdWVMaXN0OjpvcGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IENTU1ZhbHVlTGlz
dCY+KHJocykpOworfQorCiB2b2lkIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU6OnJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oCmluZGV4IDdiYzA3YjQuLjRiODUxNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaApAQCAtNDgsNiArNDgs
OCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU+
IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJL
aXRDU1NNaXhGdW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAKaW5kZXgg
YjQzNGVlYy4uYWY4OWI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NWR0RvY3VtZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NT
VkdEb2N1bWVudFZhbHVlLmNwcApAQCAtNjcsNiArNjcsMTEgQEAgU3RyaW5nIFdlYktpdENTU1NW
R0RvY3VtZW50VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBxdW90ZUNT
U1N0cmluZ0lmTmVlZGVkKG1fdXJsKTsKIH0KIAorYm9vbCBXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlOjpvcGVyYXRvcj09KGNvbnN0IFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUmIHJocykgY29u
c3QKK3sKKyAgICByZXR1cm4gbV91cmwgPT0gcmhzLm1fdXJsOworfQorCiB2b2lkIFdlYktpdENT
U1NWR0RvY3VtZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oCmluZGV4IDk2
YmNjOGMuLmM1N2Y0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NT
VkdEb2N1bWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0Rv
Y3VtZW50VmFsdWUuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3Rv
bUNzc1RleHQoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgYm9vbCBsb2FkUmVxdWVzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fk
UmVxdWVzdGVkOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYktpdENTU1NWR0RvY3Vt
ZW50VmFsdWUmKSBjb25zdDsKIAogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NTaGFkZXJWYWx1ZS5jcHAKaW5kZXggOTFiZGRlMi4uOWE2M2EyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCkBAIC04Myw2ICs4MywxMSBAQCBTdHJp
bmcgV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVy
biAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdXJsKSArICIpIjsKIH0KIAorYm9vbCBX
ZWJLaXRDU1NTaGFkZXJWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBXZWJLaXRDU1NTaGFkZXJWYWx1
ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX3VybCA9PSByaHMubV91cmw7Cit9CisKIHZv
aWQgV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NT
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKaW5kZXggYzQzMjAx
Yy4uYmUyMjc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRl
clZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgK
QEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBj
b25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJLaXRDU1NTaGFkZXJWYWx1ZSYp
IGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuaAppbmRleCBmZDExN2YyLi45MjMyZDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaApAQCAtNjYsNiArNjYsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUmIHJocykgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IHJocy5tX3R5cGU7IH0KICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxF
UykKICAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCA5NjI5ZjY2Li4xMzQwMjY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0yNDQsOSArMjQ0LDcgQEAgYm9v
bCBIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6dmFsdWVJc1ByZXNlbnRJblN0eWxlKEVsZW1lbnQq
IGVsZW1lbnQsIFN0eWxlUHJvcGUKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gYXR0cmli
dXRlVmFsdWVBc0NTU1ZhbHVlKGVsZW1lbnQpOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3R5bGVW
YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7CiAgICAgCi0g
ICAgLy8gRklYTUU6IFRoaXMgaXMgdmVyeSBpbmVmZmljaWVudCB3YXkgb2YgY29tcGFyaW5nIHZh
bHVlcwotICAgIC8vIGJ1dCB3ZSBjYW4ndCBzdHJpbmcgY29tcGFyZSBhdHRyaWJ1dGUgdmFsdWUg
YW5kIENTUyBwcm9wZXJ0eSB2YWx1ZS4KLSAgICByZXR1cm4gdmFsdWUgJiYgc3R5bGVWYWx1ZSAm
JiB2YWx1ZS0+Y3NzVGV4dCgpID09IHN0eWxlVmFsdWUtPmNzc1RleHQoKTsKKyAgICByZXR1cm4g
dmFsdWUgJiYgc3R5bGVWYWx1ZSAmJiAqdmFsdWUgPT0gKnN0eWxlVmFsdWU7CiB9CiAKIHZvaWQg
SFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ6OmFkZFRvU3R5bGUoRWxlbWVudCogZWxlbWVudCwgRWRp
dGluZ1N0eWxlKiBzdHlsZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCmluZGV4IGEzNGFk
MTguLmY1MjliNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcApAQCAtMTA1LDYgKzEwNSwxMSBA
QCBQYXNzUmVmUHRyPFNWR0NvbG9yPiBTVkdDb2xvcjo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdDb2xvcihTVkdDb2xvckNsYXNzLCAqdGhpcykpOwog
fQogCitib29sIFNWR0NvbG9yOjpvcGVyYXRvcj09KGNvbnN0IFNWR0NvbG9yJiByaHMpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fY29sb3JUeXBlID09IHJocy5tX2NvbG9yVHlwZSAmJiBtX2NvbG9y
ID09IHJocy5tX2NvbG9yOworfQorCiB2b2lkIFNWR0NvbG9yOjpyZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAg
ICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVt
b3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCmluZGV4IDdkZGRjZDcuLjc1YTdhMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDb2xvci5oCkBAIC03NSw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICAKICAg
ICBQYXNzUmVmUHRyPFNWR0NvbG9yPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU1ZHQ29sb3ImKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJvdGVjdGVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAKaW5kZXggY2NlMWY0ZS4uYTE5ODg0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGFpbnQuY3BwCkBAIC0xMTIsNiArMTEyLDExIEBAIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+
IFNWR1BhaW50OjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNWR1BhaW50KCp0aGlzKSk7CiB9CiAKK2Jvb2wgU1ZHUGFpbnQ6Om9wZXJhdG9yPT0oY29uc3Qg
U1ZHUGFpbnQmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWludFR5cGUgPT0gcmhzLm1f
cGFpbnRUeXBlICYmIG1fdXJpID09IHJocy5tX3VyaSAmJiBTVkdDb2xvcjo6b3BlcmF0b3I9PShz
dGF0aWNfY2FzdDxjb25zdCBTVkdDb2xvciY+KHJocykpOworfQorCiB2b2lkIFNWR1BhaW50Ojpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFpbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5oCmluZGV4
IGFjNTY3NWIuLjE4YmU5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWlu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5oCkBAIC05NSw2ICs5NSw4IEBA
IHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGNsb25lRm9yQ1NTT00oKSBjb25z
dDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdQYWludCYpIGNvbnN0OworCiAgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCiBwcml2YXRlOgo=
</data>
<flag name="commit-queue"
          id="193286"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177501</attachid>
            <date>2012-12-04 09:40:26 -0800</date>
            <delta_ts>2013-01-17 00:21:04 -0800</delta_ts>
            <desc>Patch 4</desc>
            <filename>webcore_cssvalue_operator_eq_4.patch</filename>
            <type>text/plain</type>
            <size>68632</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNWVhOGU2Li4wN2I3YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgz
IEBACisyMDEyLTExLTI5ICBBbGV4YW5kZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZA
aW50ZWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1NWYWx1ZTo6b3BlcmF0b3I9PSgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5MDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb21w
YXJpc29uIG9wZXJhdG9yIHRvIENTU1ZhbHVlIGFuZCBpdHMgY2hpbGRyZW4sIHNvIHRoYXQgdGhl
CisgICAgICAgIGNzcyB2YWx1ZXMgY291bGQgYmUgY29tcGFyZWQgZWZmaWNpZW50bHkuIEJlZm9y
ZSB0aGlzIHBhdGNoLCBDU1NWYWx1ZQorICAgICAgICBvYmplY3RzIHdlcmUgY29tcGFyZWQgdXNp
bmcgc3RyaW5ncyB0aGF0IHdlcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjc3NUZXh0KCkgbWV0aG9kLgor
CisgICAgICAgICogY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQXNwZWN0UmF0aW9WYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0Fz
cGVjdFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKENTU0FzcGVjdFJhdGlvVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1No
YXBlUmVjdGFuZ2xlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hh
cGVDaXJjbGU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVs
bGlwc2U6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZVBvbHln
b246Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5oOgorICAgICAg
ICAoQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSk6CisgICAgICAgIChDU1NCYXNpY1NoYXBlQ2lyY2xl
KToKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVFbGxpcHNlKToKKyAgICAgICAgKENTU0Jhc2ljU2hh
cGVQb2x5Z29uKToKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oOgorICAgICAgICAoQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjVmFsdWU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKENTU0NhbGNQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJp
bWl0aXZlVmFsdWU6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0JpbmFyeU9wZXJh
dGlvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0NhbGNCaW5hcnlPcGVyYXRpb246OnR5cGUpOgorICAgICAgICAq
IGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NDYWxjVmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52
YXNWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6Cisg
ICAgICAgIChDU1NDYW52YXNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNp
ZGVzU2hvcnRoYW5kKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAq
IGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jvc3NmYWRlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0N1cnNvckltYWdlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNyY1ZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5oOgorICAgICAgICAoQ1NTRm9udEZhY2VTcmNWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0Z1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6
b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAg
KENTU0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dy
YWRpZW50Q29sb3JTdG9wOjpvcGVyYXRvcj09KToKKyAgICAgICAgKENTU0xpbmVhckdyYWRpZW50
VmFsdWUpOgorICAgICAgICAoQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0lt
YWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW5oZXJpdGVkVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoQ1NTSW5o
ZXJpdGVkVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0luaXRpYWxWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NJbml0
aWFsVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oOgorICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NSZWZs
ZWN0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVjdFZhbHVlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmg6CisgICAgICAgIChDU1NSZWZs
ZWN0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoQ1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKENTU1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1VuaWNvZGVSYW5nZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKENTU1VuaWNvZGVSYW5n
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcGFyZUNzc1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2xvbmVDU1NWYWx1ZTo6
VGV4dENsb25lQ1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoQ1NTVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcGFyZUNzc1ZhbHVlVmVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6cmVtb3ZlQWxsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ZhbHVlTGlzdDo6aGFzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFs
dWVMaXN0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0Lmg6CisgICAg
ICAgIChDU1NWYWx1ZUxpc3QpOgorICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KENTU1ZhcmlhYmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9Db3VudGVyLmg6CisgICAgICAgIChD
b3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXI6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAqIGNzcy9EYXNoYm9hcmRSZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhc2hib2FyZFJl
Z2lvbjo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaDoKKyAgICAgICAgKEZvbnRGZWF0dXJlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9Gb250VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhbHVl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvRm9udFZhbHVlLmg6CisgICAgICAgIChGb250
VmFsdWUpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXhwLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVF1ZXJ5RXhwOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvUGFpci5oOgorICAg
ICAgICAoV2ViQ29yZTo6UGFpcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChQYWlyKToKKyAgICAg
ICAgKiBjc3MvUmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEJhc2U6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoUmVjdEJhc2UpOgorICAgICAgICAqIGNzcy9TaGFkb3dWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3Nz
L1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChTaGFkb3dWYWx1ZSk6CisgICAgICAgICogY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
Z2V0NFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0
eU1hdGNoZXMpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlOjpvcGVyYXRv
cj09KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmg6CisgICAg
ICAgIChXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1
ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmg6Cisg
ICAgICAgIChXZWJLaXRDU1NGaWx0ZXJWYWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01peEZ1bmN0aW9u
VmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUpOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdENTU1NWR0RvY3VtZW50VmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTU2hhZGVyVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNz
cy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU2hhZGVyVmFsdWUp
OgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdHRyaWJ1dGVF
cXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUpOgorICAgICAgICAqIHN2Zy9TVkdDb2xv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICogc3ZnL1NWR0NvbG9yLmg6CisgICAgICAgIChTVkdDb2xvcik6CisgICAgICAgICogc3ZnL1NW
R1BhaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKFNWR1BhaW50KToKKwogMjAxMi0xMi0w
NCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVkcmF3aW5n
IGlzc3VlIHdpdGggaW5zZXJ0aW5nIG5ldyBpbmxpbmUgZWxlbWVudCBiZXR3ZWVuIGV4aXN0aW5n
IGlubGluZSBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVj
dFJhdGlvVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUu
Y3BwCmluZGV4IDgzMGY4Y2YuLjY3NDNjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNw
ZWN0UmF0aW9WYWx1ZS5jcHAKQEAgLTM5LDYgKzM5LDExIEBAIFN0cmluZyBDU1NBc3BlY3RSYXRp
b1ZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIo
bV9udW1lcmF0b3JWYWx1ZSkgKyAnLycgKyBTdHJpbmc6Om51bWJlcihtX2Rlbm9taW5hdG9yVmFs
dWUpOwogfQogCitib29sIENTU0FzcGVjdFJhdGlvVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NT
QXNwZWN0UmF0aW9WYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX251bWVyYXRvclZh
bHVlID09IHJocy5tX251bWVyYXRvclZhbHVlICYmIG1fZGVub21pbmF0b3JWYWx1ZSA9PSByaHMu
bV9kZW5vbWluYXRvclZhbHVlOworfQorCiB2b2lkIENTU0FzcGVjdFJhdGlvVmFsdWU6OnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0
UmF0aW9WYWx1ZS5oCmluZGV4IDVjYzMzOTIuLjAyMGZjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0FzcGVjdFJhdGlvVmFsdWUuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgZmxv
YXQgbnVtZXJhdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX251bWVyYXRvclZhbHVlOyB9CiAg
ICAgZmxvYXQgZGVub21pbmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVub21pbmF0b3JW
YWx1ZTsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0FzcGVjdFJhdGlvVmFsdWUm
KSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFw
ZXMuY3BwCmluZGV4IDNmZGE2YjEuLjIzNjBjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2lj
U2hhcGVzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5j
bHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTc0LDYg
Kzc1LDE4IEBAIFN0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0KCkgY29uc3QK
ICAgICAgICAgbV9yYWRpdXNZLmdldCgpID8gbV9yYWRpdXNZLT5jc3NUZXh0KCkgOiBTdHJpbmco
KSk7CiB9CiAKK2Jvb2wgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6b3BlcmF0b3I9PShjb25zdCBD
U1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpID09IHNoYXBlLnR5
cGUoKSkgeworICAgICAgICBjb25zdCBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlJiByaHMgPSBzdGF0
aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlJj4oc2hhcGUpOworICAgICAgICBy
ZXR1cm4gKm1feCA9PSAqcmhzLm1feCAmJiAqbV95ID09ICpyaHMubV95ICYmICptX3dpZHRoID09
ICpyaHMubV93aWR0aCAmJiAqbV9oZWlnaHQgPT0gKnJocy5tX2hlaWdodAorICAgICAgICAgICAg
JiYgbV9yYWRpdXNYID8gcmhzLm1fcmFkaXVzWCAmJiAqbV9yYWRpdXNYID09ICpyaHMubV9yYWRp
dXNYIDogIXJocy5tX3JhZGl1c1gKKyAgICAgICAgICAgICYmIG1fcmFkaXVzWSA/IHJocy5tX3Jh
ZGl1c1kgJiYgKm1fcmFkaXVzWSA9PSAqcmhzLm1fcmFkaXVzWSA6ICFyaHMubV9yYWRpdXNZOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVT
KQogU3RyaW5nIENTU0Jhc2ljU2hhcGVSZWN0YW5nbGU6OnNlcmlhbGl6ZVJlc29sdmluZ1Zhcmlh
Ymxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25z
dAogewpAQCAtMTA2LDYgKzExOSwxNiBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3Nz
VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGJ1aWxkQ2lyY2xlU3RyaW5nKG1fY2VudGVyWC0+Y3Nz
VGV4dCgpLCBtX2NlbnRlclktPmNzc1RleHQoKSwgbV9yYWRpdXMtPmNzc1RleHQoKSk7CiB9CiAK
K2Jvb2wgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6b3BlcmF0b3I9PShjb25zdCBDU1NCYXNpY1NoYXBl
JiBzaGFwZSkgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpID09IHNoYXBlLnR5cGUoKSkgeworICAg
ICAgICBjb25zdCBDU1NCYXNpY1NoYXBlQ2lyY2xlJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBD
U1NCYXNpY1NoYXBlQ2lyY2xlJj4oc2hhcGUpOworICAgICAgICByZXR1cm4gKm1fY2VudGVyWCA9
PSAqcmhzLm1fY2VudGVyWCAmJiAqbV9jZW50ZXJZID09ICpyaHMubV9jZW50ZXJZICYmICptX3Jh
ZGl1cyA9PSAqcmhzLm1fcmFkaXVzOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwog
I2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6OnNl
cmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3Ry
aW5nPiYgdmFyaWFibGVzKSBjb25zdAogewpAQCAtMTMyLDYgKzE1NSwxNyBAQCBTdHJpbmcgQ1NT
QmFzaWNTaGFwZUVsbGlwc2U6OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZEVsbGlw
c2VTdHJpbmcobV9jZW50ZXJYLT5jc3NUZXh0KCksIG1fY2VudGVyWS0+Y3NzVGV4dCgpLCBtX3Jh
ZGl1c1gtPmNzc1RleHQoKSwgbV9yYWRpdXNZLT5jc3NUZXh0KCkpOwogfQogCitib29sIENTU0Jh
c2ljU2hhcGVFbGxpcHNlOjpvcGVyYXRvcj09KGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBj
b25zdAoreworICAgIGlmICh0eXBlKCkgPT0gc2hhcGUudHlwZSgpKSB7CisgICAgICAgIGNvbnN0
IENTU0Jhc2ljU2hhcGVFbGxpcHNlJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1No
YXBlRWxsaXBzZSY+KHNoYXBlKTsKKyAgICAgICAgcmV0dXJuICptX2NlbnRlclggPT0gKnJocy5t
X2NlbnRlclggJiYgKm1fY2VudGVyWSA9PSAqcmhzLm1fY2VudGVyWQorICAgICAgICAgICAgJiYg
Km1fcmFkaXVzWCA9PSAqcmhzLm1fcmFkaXVzWCAmJiAqbV9yYWRpdXNZID09ICpyaHMubV9yYWRp
dXNZOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQogU3RyaW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpzZXJpYWxpemVSZXNvbHZpbmdW
YXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykg
Y29uc3QKIHsKQEAgLTE5OSw2ICsyMzMsMTYgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVQb2x5Z29u
Ojpjc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gYnVpbGRQb2x5Z29uU3RyaW5nKG1fd2luZFJ1
bGUsIHBvaW50cyk7CiB9CiAKK2Jvb2wgQ1NTQmFzaWNTaGFwZVBvbHlnb246Om9wZXJhdG9yPT0o
Y29uc3QgQ1NTQmFzaWNTaGFwZSYgc2hhcGUpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSA9PSBz
aGFwZS50eXBlKCkpIHsKKyAgICAgICAgY29uc3QgQ1NTQmFzaWNTaGFwZVBvbHlnb24mIHJocyA9
IHN0YXRpY19jYXN0PGNvbnN0IENTU0Jhc2ljU2hhcGVQb2x5Z29uJj4oc2hhcGUpOworICAgICAg
ICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlVmVjdG9yPENTU1ByaW1pdGl2ZVZhbHVlPihtX3ZhbHVl
cywgcmhzLm1fdmFsdWVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKICNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NCYXNpY1NoYXBlUG9seWdvbjo6c2VyaWFs
aXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+
JiB2YXJpYWJsZXMpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCmluZGV4
IGVmMzIwOTguLmUxN2ExNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNp
Y1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCkBAIC00
OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0ID0gMDsKIAogI2lmIEVO
QUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmlu
Z1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0ID0g
MDsKQEAgLTgyLDYgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBDU1NfQkFTSUNfU0hBUEVfUkVDVEFOR0xFOyB9CiAgICAgdmlydHVhbCBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAg
IHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFw
PEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwpAQCAtMTEzLDYgKzExNSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NI
QVBFX0NJUkNMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAKICNp
ZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNv
bHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25z
dDsKQEAgLTE0Myw2ICsxNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9FTExJUFNFOyB9CiAgICAgdmlydHVhbCBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAg
IHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFw
PEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwpAQCAtMTc3LDcgKzE4MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NI
QVBFX1BPTFlHT047IH0KICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7Ci0KKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAj
aWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4IDdk
MWIzZGEuLjYxODkzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUuY3BwCkBAIC01MCw2ICs1MCwxMSBAQCBTdHJpbmcgQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAor
Ym9vbCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZmlsbCA9PSByaHMu
bV9maWxsICYmIG1fc2xpY2VzICYmIHJocy5tX3NsaWNlcyAmJiAqbV9zbGljZXMgPT0gKnJocy5t
X3NsaWNlczsKK30KKwogdm9pZCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWUuaAppbmRleCA0ODhiNGE0Li42NmUxMzUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCkBAIC00NSw2ICs0NSw4IEBAIHB1
YmxpYzoKIAogICAgIFF1YWQqIHNsaWNlcygpIHsgcmV0dXJuIG1fc2xpY2VzID8gbV9zbGljZXMt
PmdldFF1YWRWYWx1ZSgpIDogMDsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgZm91
ciB2YWx1ZXMgYXJlIHVzZWQgdG8gbWFrZSAiY3V0cyIgaW4gdGhlIGJvcmRlciBpbWFnZS4gVGhl
eSBjYW4gYmUgbnVtYmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
Y3BwCmluZGV4IDFjMTU4Y2MuLjU5NWZlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKQEAgLTk1LDYgKzk1LDExIEBAIFN0cmluZyBDU1NDYWxjVmFsdWU6
OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZENzc1RleHQobV9leHByZXNz
aW9uLT5jdXN0b21Dc3NUZXh0KCkpOwogfQogCitib29sIENTU0NhbGNWYWx1ZTo6b3BlcmF0b3I9
PShjb25zdCBDU1NDYWxjVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fZXhwcmVz
c2lvbiA9PSAqcmhzLm1fZXhwcmVzc2lvbjsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVT
KQogU3RyaW5nIENTU0NhbGNWYWx1ZTo6Y3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7
CkBAIC0yMjMsMTEgKzIyOCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOyAgICAgICAg
CiAgICAgfQogCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQ2FsY0V4cHJl
c3Npb25Ob2RlJiByaHMpIGNvbnN0CisgICAgeworICAgICAgICBpZiAodHlwZSgpID09IHJocy50
eXBlKCkpCisgICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUgPT0gKnN0YXRpY19jYXN0PGNvbnN0
IENTU0NhbGNQcmltaXRpdmVWYWx1ZSY+KHJocykubV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKwogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdCBPVkVSUklERQogICAgIHsKICAgICAg
ICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1l
bW9yeVR5cGVzOjpDU1MpOwogICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlKTsKICAgICB9
CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENzc0NhbGNQcmltaXRp
dmVWYWx1ZTsgfQogICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDU1NDYWxjUHJpbWl0aXZl
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBib29sIGlzSW50ZWdlcikKQEAgLTM1OSw2
ICszNzMsMTcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCisgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJiBleHApIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAodHlwZSgpID09IGV4cC50eXBlKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IENT
U0NhbGNCaW5hcnlPcGVyYXRpb24mIHJocyA9IHN0YXRpY19jYXN0PGNvbnN0IENTU0NhbGNCaW5h
cnlPcGVyYXRpb24mPihleHApOworICAgICAgICAgICAgcmV0dXJuICptX2xlZnRTaWRlID09ICpy
aHMubV9sZWZ0U2lkZSAmJiAqbV9yaWdodFNpZGUgPT0gKnJocy5tX3JpZ2h0U2lkZSAmJiBtX29w
ZXJhdG9yID09IHJocy5tX29wZXJhdG9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENzc0Nh
bGNCaW5hcnlPcGVyYXRpb247IH0KKwogcHJpdmF0ZToKICAgICBDU1NDYWxjQmluYXJ5T3BlcmF0
aW9uKFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0
cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wLCBDYWxj
dWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5KQogICAgICAgICA6IENTU0NhbGNFeHByZXNzaW9uTm9k
ZShjYXRlZ29yeSwgbGVmdFNpZGUtPmlzSW50ZWdlcigpICYmIHJpZ2h0U2lkZS0+aXNJbnRlZ2Vy
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCAwNDRjZjMy
Li5mNDIyNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKQEAg
LTYwLDcgKzYwLDExIEBAIGVudW0gQ2FsY3VsYXRpb25DYXRlZ29yeSB7CiAgICAgCiBjbGFzcyBD
U1NDYWxjRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NDYWxjRXhwcmVzc2lv
bk5vZGU+IHsKIHB1YmxpYzoKLSAgICAKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBDc3NDYWxj
UHJpbWl0aXZlVmFsdWUgPSAxLAorICAgICAgICBDc3NDYWxjQmluYXJ5T3BlcmF0aW9uCisgICAg
fTsKKwogICAgIHZpcnR1YWwgfkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNaZXJvKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxj
RXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJv
b3RTdHlsZSwgZG91YmxlIHpvb20gPSAxLjApIGNvbnN0ID0gMDsgICAgCkBAIC03MSw5ICs3NSwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFi
bGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0ID0gMDsKICNlbmRpZgot
CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2Rl
JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3QgPSAwOwotICAgIAorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgPSAwOworCiAgICAgQ2FsY3VsYXRpb25DYXRlZ29yeSBjYXRlZ29yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2F0ZWdvcnk7IH0gICAgCiAgICAgYm9vbCBpc0ludGVnZXIoKSBjb25zdCB7IHJldHVy
biBtX2lzSW50ZWdlcjsgfQogICAgIApAQCAtMTA0LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICBk
b3VibGUgY29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0Zv
bnRTaXplID0gZmFsc2UpIGNvbnN0OwogICAgICAgICAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4
dCgpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NDYWxjVmFsdWUmKSBjb25z
dDsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXpl
UmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+Jikg
Y29uc3Q7CiAgICAgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKaW5kZXggM2FlYTE3Yy4uMzcxMGI5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCkBAIC05Niw2ICs5NiwxMSBAQCBQYXNzUmVmUHRy
PEltYWdlPiBDU1NDYW52YXNWYWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29u
c3QgSW50U2l6ZSYgLwogICAgIHJldHVybiBlbHQtPmNvcGllZEltYWdlKCk7CiB9CiAKK2Jvb2wg
Q1NTQ2FudmFzVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQ2FudmFzVmFsdWUmIHJocykgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9uYW1lID09IHJocy5tX25hbWU7Cit9CisKIHZvaWQgQ1NTQ2Fu
dmFzVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmgKaW5kZXggMTNmYjU4Ny4uYThiOWRmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNQ
ZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGxvYWRTdWJpbWFnZXMo
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
U1NDYW52YXNWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA3YTA2
YjAwLi41YTM4OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjU0NSw3ICsyNTQ1LDcgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENT
U1Byb3BlcnQKICAgICAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc1szXSA9
IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
IH07CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgo
cHJvcGVydGllcyk7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+Y3NzVGV4dCgp
ICE9ICBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNbaV0sIERvTm90VXBkYXRlTGF5b3V0
KS0+Y3NzVGV4dCgpKQorICAgICAgICAgICAgICAgIGlmICgqdmFsdWUgIT0gICpnZXRQcm9wZXJ0
eUNTU1ZhbHVlKHByb3BlcnRpZXNbaV0sIERvTm90VXBkYXRlTGF5b3V0KSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdmFs
dWUucmVsZWFzZSgpOwpAQCAtMjc3MCw3ICsyNzcwLDcgQEAgYm9vbCBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmNzc1Byb3BlcnR5TWF0Y2hlcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0OjpQ
cm8KICAgICAgICAgfQogICAgIH0KICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJv
cGVydHlDU1NWYWx1ZShwcm9wZXJ0eS5pZCgpKTsKLSAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUt
PmNzc1RleHQoKSA9PSBwcm9wZXJ0eS52YWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgcmV0dXJuIHZh
bHVlICYmICp2YWx1ZSA9PSAqcHJvcGVydHkudmFsdWUoKTsKIH0KIAogUGFzc1JlZlB0cjxTdHls
ZVByb3BlcnR5U2V0PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNvcHkoKSBjb25zdApA
QCAtMjgwNiw5ICsyODA2LDkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWQKICAgICBpZiAoIXRv
cFZhbHVlIHx8ICFyaWdodFZhbHVlIHx8ICFib3R0b21WYWx1ZSB8fCAhbGVmdFZhbHVlKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIGJvb2wgc2hvd0xlZnQgPSByaWdodFZhbHVlLT5jc3NUZXh0
KCkgIT0gbGVmdFZhbHVlLT5jc3NUZXh0KCk7Ci0gICAgYm9vbCBzaG93Qm90dG9tID0gKHRvcFZh
bHVlLT5jc3NUZXh0KCkgIT0gYm90dG9tVmFsdWUtPmNzc1RleHQoKSkgfHwgc2hvd0xlZnQ7Ci0g
ICAgYm9vbCBzaG93UmlnaHQgPSAodG9wVmFsdWUtPmNzc1RleHQoKSAhPSByaWdodFZhbHVlLT5j
c3NUZXh0KCkpIHx8IHNob3dCb3R0b207CisgICAgYm9vbCBzaG93TGVmdCA9ICpyaWdodFZhbHVl
ICE9ICpsZWZ0VmFsdWU7CisgICAgYm9vbCBzaG93Qm90dG9tID0gKCp0b3BWYWx1ZSAhPSAqYm90
dG9tVmFsdWUpIHx8IHNob3dMZWZ0OworICAgIGJvb2wgc2hvd1JpZ2h0ID0gKCp0b3BWYWx1ZSAh
PSAqcmlnaHRWYWx1ZSkgfHwgc2hvd0JvdHRvbTsKIAogICAgIGxpc3QtPmFwcGVuZCh0b3BWYWx1
ZSk7CiAgICAgaWYgKHNob3dSaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFs
dWUuY3BwCmluZGV4IDczNzVkMDguLmE2YTQ1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmNwcApAQCAtMjE3LDQgKzIxNyw5IEBAIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFs
dWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1ND
cm9zc2ZhZGVWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiAqbV9mcm9tVmFsdWUgPT0g
KnJocy5tX2Zyb21WYWx1ZSAmJiAqbV90b1ZhbHVlID09ICpyaHMubV90b1ZhbHVlICYmICptX3Bl
cmNlbnRhZ2VWYWx1ZSA9PSAqcmhzLm1fcGVyY2VudGFnZVZhbHVlOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IDgw
ZDI2ZDEuLjg4NTZlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBA
IC02Niw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1
YnJlc291cmNlcygpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0Nyb3Nz
ZmFkZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKaW5kZXggMGZhYTgxMy4uMzQ3MjZmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtMTQ5LDYgKzE0OSwx
MSBAQCB2b2lkIENTU0N1cnNvckltYWdlVmFsdWU6OnJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNW
R0VsZW1lbnQqIGVsZW1lbnQpCiB9CiAjZW5kaWYKIAorYm9vbCBDU1NDdXJzb3JJbWFnZVZhbHVl
OjpvcGVyYXRvcj09KGNvbnN0IENTU0N1cnNvckltYWdlVmFsdWUmIHJocykgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9oYXNIb3RTcG90ID8gcmhzLm1faGFzSG90U3BvdCAmJiBtX2hvdFNwb3QgPT0g
cmhzLm1faG90U3BvdCA6ICFyaHMubV9oYXNIb3RTcG90OworfQorCiB2b2lkIENTU0N1cnNvcklt
YWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCmluZGV4IDgwZDNmMTUuLjIwMWE2OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaApAQCAtNTcsNiArNTcsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50Kik7CiAj
ZW5kaWYKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NDdXJzb3JJbWFnZVZhbHVlJikg
Y29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5jcHAKaW5kZXggMGQxZmExMC4uYjNhM2ZiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcApAQCAtMTA0LDYgKzEwNCwxMSBAQCBDYWNoZWRG
b250KiBDU1NGb250RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICByZXR1cm4gbV9jYWNoZWRGb250LmdldCgpOwogfQogCitib29sIENTU0ZvbnRGYWNlU3Jj
VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYgcmhzKSBjb25zdAor
eworICAgIHJldHVybiBtX2lzTG9jYWwgPT0gcmhzLm1faXNMb2NhbCAmJiBtX2Zvcm1hdCA9PSBy
aHMubV9mb3JtYXQgJiYgbV9yZXNvdXJjZSA9PSByaHMubV9yZXNvdXJjZTsKK30KKwogdm9pZCBD
U1NGb250RmFjZVNyY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBhMmM1NDY2Li4wZDdk
OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTcxLDYg
KzcxLDggQEAgcHVibGljOgogCiAgICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udChEb2N1bWVudCop
OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmKSBjb25z
dDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGdW5jdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVl
LmNwcAppbmRleCBiYzI3MGRlLi4yODNjNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0
aW9uVmFsdWUuY3BwCkBAIC01Miw2ICs1MiwxMSBAQCBTdHJpbmcgQ1NTRnVuY3Rpb25WYWx1ZTo6
Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQog
Citib29sIENTU0Z1bmN0aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTRnVuY3Rpb25WYWx1
ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX25hbWUgPT0gcmhzLm1fbmFtZSAmJiBtX2Fy
Z3MgPyByaHMubV9hcmdzICYmICptX2FyZ3MgPT0gKnJocy5tX2FyZ3MgOiAhcmhzLm1fYXJnczsK
K30KKwogdm9pZCBDU1NGdW5jdGlvblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlD
bGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6
OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRleCA2YjdmYmM2Li43
MjYxNTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKQEAgLTQyLDYgKzQy
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NGdW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2
b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXgg
M2IxYmVjZS4uNWNkNGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRp
ZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNw
cApAQCAtNjQ0LDYgKzY0NCwzMCBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFk
aWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAgIHJldHVy
biBncmFkaWVudC5yZWxlYXNlKCk7CiB9CiAKK2Jvb2wgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6
b3BlcmF0b3I9PShjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlJiByaHMpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fZGVwcmVjYXRlZFR5cGUpCisgICAgICAgIHJldHVybiByaHMubV9kZXByZWNhdGVk
VHlwZSAmJiAqbV9maXJzdFggPT0gKnJocy5tX2ZpcnN0WCAmJiAqbV9maXJzdFkgPT0gKnJocy5t
X2ZpcnN0WQorICAgICAgICAgICAgJiYgKm1fc2Vjb25kWCA9PSAqcmhzLm1fc2Vjb25kWCAmJiAq
bV9zZWNvbmRZID09ICpyaHMubV9zZWNvbmRZICYmIG1fc3RvcHMgPT0gcmhzLm1fc3RvcHM7CisK
KyAgICBib29sIGVxdWFsUmVwZWF0aW5nID0gbV9yZXBlYXRpbmcgPT0gcmhzLm1fcmVwZWF0aW5n
OworICAgIGJvb2wgZXF1YWxYb3JZID0gZmFsc2U7CisKKyAgICBpZiAobV9hbmdsZSkKKyAgICAg
ICAgcmV0dXJuIHJocy5tX2FuZ2xlICYmICptX2FuZ2xlID09ICpyaHMubV9hbmdsZSAmJiBtX3N0
b3BzID09IHJocy5tX3N0b3BzICYmIGVxdWFsUmVwZWF0aW5nOworCisgICAgaWYgKG1fZmlyc3RY
ICYmIG1fZmlyc3RZKQorICAgICAgICBlcXVhbFhvclkgPSByaHMubV9maXJzdFggJiYgcmhzLm1f
Zmlyc3RZICYmICptX2ZpcnN0WCA9PSAqcmhzLm1fZmlyc3RYICYmICptX2ZpcnN0WSA9PSAqcmhz
Lm1fZmlyc3RZOworICAgIGVsc2UgaWYgKG1fZmlyc3RYKQorICAgICAgICBlcXVhbFhvclkgPSBy
aHMubV9maXJzdFggJiYgKm1fZmlyc3RYID09ICpyaHMubV9maXJzdFggJiYgIXJocy5tX2ZpcnN0
WTsKKyAgICBlbHNlIGlmIChtX2ZpcnN0WSkKKyAgICAgICAgZXF1YWxYb3JZID0gcmhzLm1fZmly
c3RZICYmICptX2ZpcnN0WSA9PSAqcmhzLm1fZmlyc3RZICYmICFyaHMubV9maXJzdFg7CisgICAg
ZWxzZQorICAgICAgICBlcXVhbFhvclkgPSAhcmhzLm1fZmlyc3RYIHx8ICFyaHMubV9maXJzdFk7
CisKKyAgICByZXR1cm4gZXF1YWxSZXBlYXRpbmcgJiYgZXF1YWxYb3JZICYmICFyaHMubV9hbmds
ZSAmJiBtX3N0b3BzID09IHJocy5tX3N0b3BzOworfQorCiB2b2lkIENTU0xpbmVhckdyYWRpZW50
VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKQEAgLTk2OSw2ICs5OTMs
NDMgQEAgUGFzc1JlZlB0cjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
R3JhZGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXIKICAgICByZXR1cm4gZ3JhZGllbnQucmVsZWFz
ZSgpOwogfQogCitib29sIENTU1JhZGlhbEdyYWRpZW50VmFsdWU6Om9wZXJhdG9yPT0oY29uc3Qg
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIGlmIChtX2RlcHJlY2F0
ZWRUeXBlKQorICAgICAgICByZXR1cm4gcmhzLm1fZGVwcmVjYXRlZFR5cGUgJiYgKm1fZmlyc3RY
ID09ICpyaHMubV9maXJzdFggJiYgKm1fZmlyc3RZID09ICpyaHMubV9maXJzdFkKKyAgICAgICAg
ICAgICYmICptX3NlY29uZFggPT0gKnJocy5tX3NlY29uZFggJiYgKm1fc2Vjb25kWSA9PSAqcmhz
Lm1fc2Vjb25kWSAmJiAqbV9maXJzdFJhZGl1cyA9PSAqcmhzLm1fZmlyc3RSYWRpdXMKKyAgICAg
ICAgICAgICYmICptX3NlY29uZFJhZGl1cyA9PSAqcmhzLm1fc2Vjb25kUmFkaXVzICYmIG1fc3Rv
cHMgPT0gcmhzLm1fc3RvcHM7CisKKyAgICBib29sIGVxdWFsUmVwZWF0aW5nID0gbV9yZXBlYXRp
bmcgPT0gcmhzLm1fcmVwZWF0aW5nOworICAgIGJvb2wgZXF1YWxYb3JZID0gZmFsc2U7CisKKyAg
ICBpZiAobV9maXJzdFggJiYgbV9maXJzdFkpCisgICAgICAgIGVxdWFsWG9yWSA9IHJocy5tX2Zp
cnN0WCAmJiByaHMubV9maXJzdFkgJiYgKm1fZmlyc3RYID09ICpyaHMubV9maXJzdFggJiYgKm1f
Zmlyc3RZID09ICpyaHMubV9maXJzdFk7CisgICAgZWxzZSBpZiAobV9maXJzdFgpCisgICAgICAg
IGVxdWFsWG9yWSA9IHJocy5tX2ZpcnN0WCAmJiAqbV9maXJzdFggPT0gKnJocy5tX2ZpcnN0WCAm
JiAhcmhzLm1fZmlyc3RZOworICAgIGVsc2UgaWYgKG1fZmlyc3RZKQorICAgICAgICBlcXVhbFhv
clkgPSByaHMubV9maXJzdFkgJiYgKm1fZmlyc3RZID09ICpyaHMubV9maXJzdFkgJiYgIXJocy5t
X2ZpcnN0WDsKKyAgICBlbHNlCisgICAgICAgIGVxdWFsWG9yWSA9PSAhcmhzLm1fZmlyc3RYIHx8
ICFyaHMubV9maXJzdFk7CisKKyAgICBib29sIGVxdWFsU2hhcGUgPSB0cnVlOworICAgIGJvb2wg
ZXF1YWxTaXppbmdCZWhhdmlvciA9IHRydWU7CisgICAgYm9vbCBlcXVhbEhvcml6b250YWxBbmRW
ZXJ0aWNhbFNpemUgPSB0cnVlOworCisgICAgaWYgKG1fc2hhcGUpCisgICAgICAgIGVxdWFsU2hh
cGUgPSByaHMubV9zaGFwZSAmJiAqbV9zaGFwZSA9PSAqcmhzLm1fc2hhcGU7CisgICAgZWxzZSBp
ZiAobV9zaXppbmdCZWhhdmlvcikKKyAgICAgICAgZXF1YWxTaXppbmdCZWhhdmlvciA9IHJocy5t
X3NpemluZ0JlaGF2aW9yICYmICptX3NpemluZ0JlaGF2aW9yID09ICpyaHMubV9zaXppbmdCZWhh
dmlvcjsKKyAgICBlbHNlIGlmIChtX2VuZEhvcml6b250YWxTaXplICYmIG1fZW5kVmVydGljYWxT
aXplKQorICAgICAgICBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSByaHMubV9lbmRI
b3Jpem9udGFsU2l6ZSAmJiByaHMubV9lbmRWZXJ0aWNhbFNpemUgJiYgKnJocy5tX2VuZEhvcml6
b250YWxTaXplID09ICptX2VuZEhvcml6b250YWxTaXplICYmICpyaHMubV9lbmRWZXJ0aWNhbFNp
emUgPT0gKm1fZW5kVmVydGljYWxTaXplOworICAgIGVsc2UgeworICAgICAgICBlcXVhbFNoYXBl
ID0gIXJocy5tX3NoYXBlOworICAgICAgICBlcXVhbFNpemluZ0JlaGF2aW9yID0gIXJocy5tX3Np
emluZ0JlaGF2aW9yOworICAgICAgICBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSAh
cmhzLm1fZW5kSG9yaXpvbnRhbFNpemUgJiYgIXJocy5tX2VuZFZlcnRpY2FsU2l6ZTsKKyAgICB9
CisgICAgcmV0dXJuIGVxdWFsUmVwZWF0aW5nICYmIGVxdWFsWG9yWSAmJiBlcXVhbFNoYXBlICYm
IGVxdWFsU2l6aW5nQmVoYXZpb3IgJiYgZXF1YWxIb3Jpem9udGFsQW5kVmVydGljYWxTaXplICYm
IG1fc3RvcHMgPT0gcmhzLm1fc3RvcHM7Cit9CisKIHZvaWQgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmgKaW5kZXggMWUyNWFjZi4uYzE3ZWZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhZGllbnRWYWx1ZS5oCkBAIC00Niw2ICs0NiwxMSBAQCBzdHJ1Y3QgQ1NTR3JhZGllbnRD
b2xvclN0b3AgewogICAgIENvbG9yIG1fcmVzb2x2ZWRDb2xvcjsKICAgICBib29sIG1fY29sb3JJ
c0Rlcml2ZWRGcm9tRWxlbWVudDsKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTR3JhZGllbnRD
b2xvclN0b3AmIHJocykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbG9yID8gcmhz
Lm1fY29sb3IgJiYgKm1fY29sb3IgPT0gKnJocy5tX2NvbG9yIDogIXJocy5tX2NvbG9yCisgICAg
ICAgICYmIG1fcG9zaXRpb24gPyByaHMubV9wb3NpdGlvbiAmJiAqbV9wb3NpdGlvbiA9PSAqcmhz
Lm1fcG9zaXRpb24gOiAhcmhzLm1fcG9zaXRpb247CisgICAgfQogfTsKIAogY2xhc3MgQ1NTR3Jh
ZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKQEAgLTE0NCw2ICsx
NDksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZSgqdGhpcykpOwogICAgIH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
U1NMaW5lYXJHcmFkaWVudFZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0x
ODcsNiArMTk0LDggQEAgcHVibGljOgogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEg
Z2l2ZW4gc2l6ZS4KICAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5k
ZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJik7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGI1ODY3YmYuLjU2MTVkYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTEyMCw2ICsxMjAsMTEgQEAgYm9vbCBD
U1NJbWFnZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKICAg
ICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCk7CiB9CiAKK2Jv
b2wgQ1NTSW1hZ2VWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NJbWFnZVZhbHVlJiByaHMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fdXJsID09IHJocy5tX3VybDsKK30KKwogU3RyaW5nIENTU0lt
YWdlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogewogICAgIHJldHVybiAidXJsKCIgKyBx
dW90ZUNTU1VSTElmTmVlZGVkKG1fdXJsKSArICIpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5oCmluZGV4IGExOTYzZjcuLmNmYmFkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
aApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2Vs
ZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NJ
bWFnZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKICAgICBib29sIGhhc0FscGhhKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lu
aGVyaXRlZFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaApp
bmRleCA2OGMwMDFmLi5jYTRjZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW5oZXJpdGVkVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFs
dWUuaApAQCAtMzUsNiArMzUsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4
dCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0luaGVyaXRlZFZhbHVl
JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0luaXRpYWxWYWx1ZS5oCmluZGV4IGQ1MjMzNDMuLjkzYjc3MjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc0ltcGxpY2l0KCkgY29uc3QgeyByZXR1cm4gbV9pc0ltcGxpY2l0OyB9CiAKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTSW5pdGlhbFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0xpbmVCb3hDb250YWluVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94
Q29udGFpblZhbHVlLmgKaW5kZXggZWViNjQ3MC4uM2Q4OTVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwotCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTU0xpbmVCb3hDb250YWluVmFsdWUmIHJocykgY29uc3QgeyByZXR1
cm4gbV92YWx1ZSA9PSByaHMubV92YWx1ZTsgfQogICAgIExpbmVCb3hDb250YWluIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggYzY3MjZjZC4uYTg2OTczYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC0xMjU1LDYgKzEyNTUsODEgQEAgUGFzc1Jl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNsb25lRm9yQ1NTT00o
KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6
Om9wZXJhdG9yPT0oY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICBp
ZiAobV9wcmltaXRpdmVVbml0VHlwZSA9PSByaHMubV9wcmltaXRpdmVVbml0VHlwZSkKKyAgICAg
ICAgc3dpdGNoIChtX3ByaW1pdGl2ZVVuaXRUeXBlKSB7CisgICAgICAgIGNhc2UgQ1NTX1VOS05P
V046CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgQ1NTX05VTUJFUjoK
KyAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lOVEVHRVI6CisgICAgICAgIGNhc2UgQ1NTX1BFUkNF
TlRBR0U6CisgICAgICAgIGNhc2UgQ1NTX0VNUzoKKyAgICAgICAgY2FzZSBDU1NfRVhTOgorICAg
ICAgICBjYXNlIENTU19SRU1TOgorICAgICAgICBjYXNlIENTU19QWDoKKyAgICAgICAgY2FzZSBD
U1NfQ006CisjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKSB8fCBFTkFCTEUoUkVTT0xV
VElPTl9NRURJQV9RVUVSWSkKKyAgICAgICAgY2FzZSBDU1NfRFBQWDoKKyAgICAgICAgY2FzZSBD
U1NfRFBJOgorICAgICAgICBjYXNlIENTU19EUENNOgorI2VuZGlmCisgICAgICAgIGNhc2UgQ1NT
X01NOgorICAgICAgICBjYXNlIENTU19JTjoKKyAgICAgICAgY2FzZSBDU1NfUFQ6CisgICAgICAg
IGNhc2UgQ1NTX1BDOgorICAgICAgICBjYXNlIENTU19ERUc6CisgICAgICAgIGNhc2UgQ1NTX1JB
RDoKKyAgICAgICAgY2FzZSBDU1NfR1JBRDoKKyAgICAgICAgY2FzZSBDU1NfTVM6CisgICAgICAg
IGNhc2UgQ1NTX1M6CisgICAgICAgIGNhc2UgQ1NTX0haOgorICAgICAgICBjYXNlIENTU19LSFo6
CisgICAgICAgIGNhc2UgQ1NTX1RVUk46CisgICAgICAgIGNhc2UgQ1NTX1ZXOgorICAgICAgICBj
YXNlIENTU19WSDoKKyAgICAgICAgY2FzZSBDU1NfVk1JTjoKKyAgICAgICAgY2FzZSBDU1NfRElN
RU5TSU9OOgorICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUubnVtID09IHJocy5tX3ZhbHVlLm51
bTsKKyAgICAgICAgY2FzZSBDU1NfSURFTlQ6CisgICAgICAgICAgICByZXR1cm4gdmFsdWVPclBy
b3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KSA9PSB2YWx1ZU9yUHJvcGVydHlOYW1lKHJocy5tX3Zh
bHVlLmlkZW50KTsKKyAgICAgICAgY2FzZSBDU1NfU1RSSU5HOgorICAgICAgICBjYXNlIENTU19V
Ukk6CisgICAgICAgIGNhc2UgQ1NTX0FUVFI6CisgICAgICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFN
RToKKyAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5USUZJRVI6CisgICAgICAgIGNhc2UgQ1NT
X1BBUlNFUl9IRVhDT0xPUjoKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICAgICAgY2Fz
ZSBDU1NfVkFSSUFCTEVfTkFNRToKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIGVxdWFsKG1f
dmFsdWUuc3RyaW5nLCByaHMubV92YWx1ZS5zdHJpbmcpOworICAgICAgICBjYXNlIENTU19DT1VO
VEVSOgorICAgICAgICAgICAgcmV0dXJuICptX3ZhbHVlLmNvdW50ZXIgPT0gKnJocy5tX3ZhbHVl
LmNvdW50ZXI7CisgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6CisgICAgICAgICAgICByZXR1cm4gKm1f
dmFsdWUucmVjdCA9PSAqcmhzLm1fdmFsdWUucmVjdDsKKyAgICAgICAgY2FzZSBDU1NfUVVBRDoK
KyAgICAgICAgICAgIHJldHVybiAqbV92YWx1ZS5xdWFkID09ICpyaHMubV92YWx1ZS5xdWFkOwor
ICAgICAgICBjYXNlIENTU19SR0JDT0xPUjoKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLnJn
YmNvbG9yID09IHJocy5tX3ZhbHVlLnJnYmNvbG9yOworICAgICAgICBjYXNlIENTU19QQUlSOgor
ICAgICAgICAgICAgcmV0dXJuICptX3ZhbHVlLnBhaXIgPT0gKnJocy5tX3ZhbHVlLnBhaXI7Cisj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQorICAgICAgICBjYXNlIENTU19EQVNIQk9BUkRf
UkVHSU9OOiB7CisgICAgICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hi
b2FyZFJlZ2lvblZhbHVlKCk7CisgICAgICAgICAgICBEYXNoYm9hcmRSZWdpb24qIHJoc1JlZ2lv
biA9IHJocy5nZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJl
Z2lvbiA/IHJoc1JlZ2lvbiAmJiAqcmVnaW9uID09ICpyaHNSZWdpb24gOiAhcmhzUmVnaW9uOwor
ICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgY2FzZSBDU1NfUEFSU0VSX09QRVJBVE9SOgorICAg
ICAgICAgICAgcmV0dXJuIG1fdmFsdWUuaWRlbnQgPT0gcmhzLm1fdmFsdWUuaWRlbnQ7CisgICAg
ICAgIGNhc2UgQ1NTX0NBTEM6CisgICAgICAgICAgICByZXR1cm4gKm1fdmFsdWUuY2FsYyA9PSAq
cmhzLm1fdmFsdWUuY2FsYzsKKyAgICAgICAgY2FzZSBDU1NfU0hBUEU6CisgICAgICAgICAgICBy
ZXR1cm4gKm1fdmFsdWUuc2hhcGUgPT0gKnJocy5tX3ZhbHVlLnNoYXBlOworICAgICAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBX
ZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5oCmluZGV4IGZjYzViODMuLjNhNWU4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5oCkBAIC0zMTUsNiArMzE1LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKICAgICB2b2lkIHNldENTU09N
U2FmZSgpIHsgbV9pc0NTU09NU2FmZSA9IHRydWU7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAppbmRleCA5NDM5ZDYwLi4yMTYxMTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcApAQCAtNjcsNiArNjcsMTIgQEAg
dm9pZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JiB1cmxzLCBjb25zdCBTdHkKICAgICAgICAgbV9tYXNrLT5hZGRTdWJyZXNvdXJjZVN0
eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKIH0KIAorYm9vbCBDU1NSZWZsZWN0VmFsdWU6Om9w
ZXJhdG9yPT0oY29uc3QgQ1NTUmVmbGVjdFZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZGlyZWN0aW9uID09IHJocy5tX2RpcmVjdGlvbiAmJiAqbV9vZmZzZXQgPT0gKnJocy5tX29m
ZnNldAorICAgICAgICAmJiBtX21hc2sgPyByaHMubV9tYXNrICYmICptX21hc2sgPT0gKnJocy5t
X21hc2sgOiAhcmhzLm1fbWFzazsKK30KKwogdm9pZCBDU1NSZWZsZWN0VmFsdWU6OnJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSZWZsZWN0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUu
aAppbmRleCAxYmRmZDVmLi5jYTlmMDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUmVmbGVjdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1
ZS5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VT
dHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBj
b25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NSZWZsZWN0VmFsdWUmKSBjb25z
dDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdG
dW5jdGlvblZhbHVlLmNwcAppbmRleCBlMWJiMWQxLi45MjZhZDgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCkBAIC01MCw2ICs1MCwxMiBAQCBT
dHJpbmcgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21Dc3NUZXh0KCkg
Y29uc3QKICAgICAgICAgKyBTdHJpbmc6Om51bWJlcihtX3kyKSArICIpIjsKIH0KIAorYm9vbCBD
U1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
eDEgPT0gcmhzLm1feDEgJiYgbV94MiA9PSByaHMubV94MiAmJiBtX3kxID09IHJocy5tX3kxICYm
IG1feTIgPT0gcmhzLm1feTI7Cit9CisKKwogdm9pZCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKQEAgLTYwLDYgKzY2
LDEyIEBAIFN0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgIHJldHVybiAic3RlcHMoIiArIFN0cmluZzo6bnVtYmVyKG1fc3RlcHMpICsg
IiwgIiArIChtX3N0ZXBBdFN0YXJ0ID8gInN0YXJ0IiA6ICJlbmQiKSArICcpJzsKIH0KIAorYm9v
bCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgQ1NTU3RlcHNU
aW1pbmdGdW5jdGlvblZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RlcHMgPT0g
cmhzLm1fc3RlcHMgJiYgbV9zdGVwQXRTdGFydCA9PSByaHMubV9zdGVwQXRTdGFydDsKK30KKwor
CiB2b2lkIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1
bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVl
LmgKaW5kZXggM2ViNGIyMi4uZDExODkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmlu
ZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NT
TGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAg
IHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dDsKIAogcHJpdmF0ZToKQEAgLTYzLDYgKzY1LDggQEAgcHVibGljOgogICAgIGRvdWJsZSB4Migp
IGNvbnN0IHsgcmV0dXJuIG1feDI7IH0KICAgICBkb3VibGUgeTIoKSBjb25zdCB7IHJldHVybiBt
X3kyOyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC05Myw2ICs5Nyw4
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlJikgY29uc3Q7
CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VW5pY29kZVJhbmdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5n
ZVZhbHVlLmNwcAppbmRleCAzNGQ2M2I2Li4wYjI5N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKQEAgLTM4LDYgKzM4LDExIEBAIFN0cmluZyBDU1NV
bmljb2RlUmFuZ2VWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorYm9vbCBDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBDU1NV
bmljb2RlUmFuZ2VWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBtX2Zyb20gPT0gcmhz
Lm1fZnJvbSAmJiBtX3RvID09IHJocy5tX3RvOworfQorCiB2b2lkIENTU1VuaWNvZGVSYW5nZVZh
bHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCmluZGV4IGQ1MGY1YjYuLjkxYThjODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCkBAIC00NCw2ICs0NCw4IEBAIHB1
YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ1NTVW5pY29kZVJhbmdlVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQg
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IDBhNjEyOWQuLjU5MjUwZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtNzMsNyArNzMsMTMgQEAgc3RydWN0IFNhbWVTaXpl
QXNDU1NWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVTaXplQXNDU1NWYWx1ZT4gewogfTsK
IAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENTU1ZhbHVlKSA9PSBzaXplb2YoU2FtZVNpemVBc0NT
U1ZhbHVlKSwgQ1NTX3ZhbHVlX3Nob3VsZF9zdGF5X3NtYWxsKTsKLSAgICAKKwordGVtcGxhdGU8
Y2xhc3MgQ2hpbGRDbGFzc1R5cGU+CitpbmxpbmUgc3RhdGljIGJvb2wgY29tcGFyZUNzc1ZhbHVl
cyhjb25zdCBDU1NWYWx1ZSYgbGhzLCBjb25zdCBDU1NWYWx1ZSYgcmhzKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBDaGlsZENsYXNzVHlwZSY+KGxocykgPT0gc3RhdGljX2Nhc3Q8
Y29uc3QgQ2hpbGRDbGFzc1R5cGUmPihyaHMpOworfQorCiBjbGFzcyBUZXh0Q2xvbmVDU1NWYWx1
ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dENsb25lQ1NTVmFsdWU+IGNyZWF0ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBjb25zdCBTdHJpbmcm
IHRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0Q2xvbmVDU1NWYWx1ZShjbGFzc1R5cGUs
IHRleHQpKTsgfQpAQCAtMjc2LDYgKzI4MiwxMDIgQEAgdm9pZCBDU1NWYWx1ZTo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorYm9vbCBDU1NWYWx1ZTo6b3BlcmF0b3I9PShjb25z
dCBDU1NWYWx1ZSYgcmhzKSBjb25zdAoreworICAgIGlmIChtX2lzVGV4dENsb25lKSB7CisgICAg
ICAgIEFTU0VSVChpc0NTU09NU2FmZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFRleHRDbG9uZUNTU1ZhbHVlKj4odGhpcyktPmNzc1RleHQoKSA9PSByaHMuY3NzVGV4dCgp
OworICAgIH0KKworICAgIGlmIChtX2NsYXNzVHlwZSA9PSByaHMubV9jbGFzc1R5cGUpIHsKKyAg
ICAgICAgc3dpdGNoIChtX2NsYXNzVHlwZSkgeworICAgICAgICBjYXNlIEFzcGVjdFJhdGlvQ2xh
c3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NBc3BlY3RSYXRpb1Zh
bHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBCb3JkZXJJbWFnZVNsaWNlQ2xhc3M6Cisg
ICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIENhbnZhc0NsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTQ2FudmFzVmFsdWU+KCp0aGlzLCByaHMpOworICAg
ICAgICBjYXNlIEN1cnNvckltYWdlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNz
c1ZhbHVlczxDU1NDdXJzb3JJbWFnZVZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBG
b250Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxGb250VmFsdWU+
KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIEZvbnRGYWNlU3JjQ2xhc3M6CisgICAgICAgICAg
ICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NGb250RmFjZVNyY1ZhbHVlPigqdGhpcywgcmhz
KTsKKyAgICAgICAgY2FzZSBGb250RmVhdHVyZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNv
bXBhcmVDc3NWYWx1ZXM8Rm9udEZlYXR1cmVWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNh
c2UgRnVuY3Rpb25DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENT
U0Z1bmN0aW9uVmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIExpbmVhckdyYWRpZW50
Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NMaW5lYXJHcmFk
aWVudFZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNz
OgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTUmFkaWFsR3JhZGllbnRW
YWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNhc2UgQ3Jvc3NmYWRlQ2xhc3M6CisgICAgICAg
ICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NDcm9zc2ZhZGVWYWx1ZT4oKnRoaXMsIHJo
cyk7CisgICAgICAgIGNhc2UgSW1hZ2VDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJl
Q3NzVmFsdWVzPENTU0ltYWdlVmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIEluaGVy
aXRlZENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTSW5oZXJp
dGVkVmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIEluaXRpYWxDbGFzczoKKyAgICAg
ICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPENTU0luaXRpYWxWYWx1ZT4oKnRoaXMsIHJo
cyk7CisgICAgICAgIGNhc2UgUHJpbWl0aXZlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29t
cGFyZUNzc1ZhbHVlczxDU1NQcmltaXRpdmVWYWx1ZT4oKnRoaXMsIHJocyk7CisgICAgICAgIGNh
c2UgUmVmbGVjdENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NT
UmVmbGVjdFZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBTaGFkb3dDbGFzczoKKyAg
ICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFsdWVzPFNoYWRvd1ZhbHVlPigqdGhpcywgcmhz
KTsKKyAgICAgICAgY2FzZSBMaW5lYXJUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZT4oKnRo
aXMsIHJocyk7CisgICAgICAgIGNhc2UgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbkNsYXNzOgor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvblZhbHVlPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBTdGVwc1RpbWluZ0Z1bmN0
aW9uQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NTdGVwc1Rp
bWluZ0Z1bmN0aW9uVmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIFVuaWNvZGVSYW5n
ZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTVW5pY29kZVJh
bmdlVmFsdWU+KCp0aGlzLCByaHMpOworICAgICAgICBjYXNlIFZhbHVlTGlzdENsYXNzOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8Q1NTVmFsdWVMaXN0PigqdGhpcywgcmhz
KTsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1DbGFzczoKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlQ3NzVmFsdWVzPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPigqdGhpcywgcmhz
KTsKKyAgICAgICAgY2FzZSBMaW5lQm94Q29udGFpbkNsYXNzOgorICAgICAgICAgICAgcmV0dXJu
IGNvbXBhcmVDc3NWYWx1ZXM8Q1NTTGluZUJveENvbnRhaW5WYWx1ZT4oKnRoaXMsIHJocyk7Cisg
ICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJl
Q3NzVmFsdWVzPENTU0NhbGNWYWx1ZT4oKnRoaXMsIHJocyk7CisjaWYgRU5BQkxFKENTU19JTUFH
RV9TRVQpCisgICAgICAgIGNhc2UgSW1hZ2VTZXRDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBj
b21wYXJlQ3NzVmFsdWVzPENTU0ltYWdlU2V0VmFsdWU+KCp0aGlzLCByaHMpOworI2VuZGlmCisj
aWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgICAgICBjYXNlIFdlYktpdENTU0ZpbHRlckNsYXNz
OgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8V2ViS2l0Q1NTRmlsdGVyVmFs
dWU+KCp0aGlzLCByaHMpOworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAgY2FzZSBX
ZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWVDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21w
YXJlQ3NzVmFsdWVzPFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZT4oKnRoaXMsIHJocyk7Cisg
ICAgICAgIGNhc2UgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZUNsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZT4oKnRoaXMs
IHJocyk7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTU2hhZGVyQ2xhc3M6CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxXZWJLaXRDU1NTaGFkZXJWYWx1ZT4oKnRoaXMsIHJocyk7
CisjZW5kaWYKKyNlbmRpZgorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgICAgICBjYXNl
IFZhcmlhYmxlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxDU1NW
YXJpYWJsZVZhbHVlPigqdGhpcywgcmhzKTsKKyNlbmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAg
ICAgIGNhc2UgU1ZHQ29sb3JDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ3NzVmFs
dWVzPFNWR0NvbG9yPigqdGhpcywgcmhzKTsKKyAgICAgICAgY2FzZSBTVkdQYWludENsYXNzOgor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDc3NWYWx1ZXM8U1ZHUGFpbnQ+KCp0aGlzLCByaHMp
OworICAgICAgICBjYXNlIFdlYktpdENTU1NWR0RvY3VtZW50Q2xhc3M6CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGFyZUNzc1ZhbHVlczxXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlPigqdGhpcywg
cmhzKTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0gZWxzZSBpZiAobV9jbGFzc1R5cGUgPT0gVmFsdWVMaXN0Q2xhc3MgJiYgcmhzLm1fY2xh
c3NUeXBlICE9IFZhbHVlTGlzdENsYXNzKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgQ1NTVmFsdWVMaXN0Jj4oKnRoaXMpID09IHJoczsKKyAgICBlbHNlIGlmIChtX2NsYXNzVHlw
ZSAhPSBWYWx1ZUxpc3RDbGFzcyAmJiByaHMubV9jbGFzc1R5cGUgPT0gVmFsdWVMaXN0Q2xhc3Mp
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NWYWx1ZUxpc3QmPihyaHMpID09
ICp0aGlzOworICAgIHJldHVybiBmYWxzZTsKK30KKwogU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0
KCkgY29uc3QKIHsKICAgICBpZiAobV9pc1RleHRDbG9uZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApp
bmRleCBiMmE1MzFhLi5iYzA4YzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMTI2LDYgKzEy
Niw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlJikgY29u
c3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTU1ZhbHVlJiByaHMpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gcmhzKTsgfQorCiBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IENsYXNzVHlwZUJpdHMgPSA2OwpAQCAtMjM2LDYgKzIzOSwyMyBAQCBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIG1fY2xhc3NUeXBlIDogQ2xhc3NUeXBlQml0czsgLy8gQ2xhc3NUeXBlCiB9
OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDU1NWYWx1ZVR5cGU+CitpbmxpbmUgYm9vbCBjb21wYXJl
Q3NzVmFsdWVWZWN0b3IoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NWYWx1ZVR5cGU+ID4mIGxocywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NWYWx1ZVR5cGU+ID4mIHJocykKK3sKKyAgICBzaXplX3Qg
c2l6ZSA9IGxocy5zaXplKCk7CisgICAgaWYgKHNpemUgPT0gcmhzLnNpemUoKSkgeworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgY29uc3Qg
UmVmUHRyPENTU1ZhbHVlVHlwZT4mIGxoc1B0ciA9IGxoc1tpXTsKKyAgICAgICAgICAgIGNvbnN0
IFJlZlB0cjxDU1NWYWx1ZVR5cGU+JiByaHNQdHIgPSByaHNbaV07CisgICAgICAgICAgICBpZiAo
bGhzUHRyID09IHJoc1B0ciB8fCAobGhzUHRyICYmIHJoc1B0ciAmJiAqbGhzUHRyID09ICpyaHNQ
dHIpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU1ZhbHVlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggOWVjMmQ1MC4uZTQ1YWU1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTU1LDEwICs1NSw4IEBAIENTU1ZhbHVl
TGlzdDo6Q1NTVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlzdCogcGFyc2VyVmFsdWVzKQogYm9v
bCBDU1NWYWx1ZUxpc3Q6OnJlbW92ZUFsbChDU1NWYWx1ZSogdmFsKQogewogICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGJlIGltcGxlbWVudGluZyBvcGVy
YXRvcj09IHRvIENTU1ZhbHVlIGFuZCBpdHMgZGVyaXZlZCBjbGFzc2VzCi0gICAgLy8gdG8gbWFr
ZSBjb21wYXJpc29uIG1vcmUgZmxleGlibGUgYW5kIGZhc3QuCiAgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fdmFsdWVzLnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBpZiAo
bV92YWx1ZXMuYXQoaW5kZXgpLT5jc3NUZXh0KCkgPT0gdmFsLT5jc3NUZXh0KCkpIHsKKyAgICAg
ICAgaWYgKCptX3ZhbHVlcy5hdChpbmRleCkgPT0gKnZhbCkgewogICAgICAgICAgICAgbV92YWx1
ZXMucmVtb3ZlKGluZGV4KTsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgfQpA
QCAtNjksMTAgKzY3LDggQEAgYm9vbCBDU1NWYWx1ZUxpc3Q6OnJlbW92ZUFsbChDU1NWYWx1ZSog
dmFsKQogCiBib29sIENTU1ZhbHVlTGlzdDo6aGFzVmFsdWUoQ1NTVmFsdWUqIHZhbCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGJlIGltcGxlbWVudGluZyBvcGVyYXRvcj09IHRv
IENTU1ZhbHVlIGFuZCBpdHMgZGVyaXZlZCBjbGFzc2VzCi0gICAgLy8gdG8gbWFrZSBjb21wYXJp
c29uIG1vcmUgZmxleGlibGUgYW5kIGZhc3QuCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG1fdmFsdWVzLnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBpZiAobV92YWx1ZXMu
YXQoaW5kZXgpLT5jc3NUZXh0KCkgPT0gdmFsLT5jc3NUZXh0KCkpCisgICAgICAgIGlmICgqbV92
YWx1ZXMuYXQoaW5kZXgpID09ICp2YWwpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI3LDYgKzEyMywxOSBAQCBTdHJpbmcgQ1NTVmFsdWVM
aXN0OjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CiB9CiAKK2Jvb2wgQ1NTVmFsdWVMaXN0OjpvcGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlTGlzdCYg
cmhzKSBjb25zdAoreworICAgIHJldHVybiBtX3ZhbHVlTGlzdFNlcGFyYXRvciA9PSByaHMubV92
YWx1ZUxpc3RTZXBhcmF0b3IgJiYgY29tcGFyZUNzc1ZhbHVlVmVjdG9yPENTU1ZhbHVlPihtX3Zh
bHVlcywgcmhzLm1fdmFsdWVzKTsKK30KKworYm9vbCBDU1NWYWx1ZUxpc3Q6Om9wZXJhdG9yPT0o
Y29uc3QgQ1NTVmFsdWUmIHJocykgY29uc3QKK3sKKyAgICBpZiAobV92YWx1ZXMuc2l6ZSgpID09
IDEpCisgICAgICAgIHJldHVybiAqbV92YWx1ZXNbMF0gPT0gcmhzOworCisgICAgcmV0dXJuIGZh
bHNlOworfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NTVmFsdWVMaXN0
OjpjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNT
dHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuaAppbmRleCAzZDg5N2JjLi43ZDNlNWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5o
CkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4g
Y29weSgpOwogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ1NTVmFsdWVMaXN0JikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENTU1ZhbHVlJikgY29uc3Q7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAg
U3RyaW5nIGN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0
b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
cmlhYmxlVmFsdWUuaAppbmRleCA0ZmM0Zjc1Li4xMGM3ZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYXJpYWJsZVZhbHVlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIGNvbnN0IFN0
cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ1NTVmFyaWFibGVWYWx1ZSYgcmhzKSBjb25zdCB7IHJldHVybiBtX25hbWUg
PT0gcmhzLm1fbmFtZSAmJiBtX3ZhbHVlID09IHJocy5tX3ZhbHVlOyB9CisKICAgICB2b2lkIHJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogICAgIHsKICAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgK
aW5kZXggNTFmYTcxMC4uZjllN2MwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Nv
dW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCkBAIC00Miw2ICs0Miwx
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQogICAg
IHZvaWQgc2V0TGlzdFN0eWxlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHls
ZSkgeyBtX2xpc3RTdHlsZSA9IGxpc3RTdHlsZTsgfQogICAgIHZvaWQgc2V0U2VwYXJhdG9yKFBh
c3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikgeyBtX3NlcGFyYXRvciA9IHNl
cGFyYXRvcjsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXImIHJocykgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBpZGVudGlmaWVyKCkgPT0gcmhzLmlkZW50aWZpZXIo
KQorICAgICAgICAgICAgJiYgbGlzdFN0eWxlKCkgPT0gcmhzLmxpc3RTdHlsZSgpCisgICAgICAg
ICAgICAmJiBzZXBhcmF0b3IoKSA9PSByaHMuc2VwYXJhdG9yKCk7CisgICAgfQogICAgIAogICAg
IFBhc3NSZWZQdHI8Q291bnRlcj4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Rhc2hib2FyZFJlZ2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0Rhc2hib2FyZFJlZ2lvbi5oCmluZGV4IDkxZTVkN2EuLjBjNmU3ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRGFzaGJvYXJkUmVnaW9uLmgKQEAgLTMwLDYgKzMwLDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIERhc2hib2FyZFJlZ2lvbiA6IHB1YmxpYyBSZWN0QmFzZSwgcHVibGlj
IFJlZkNvdW50ZWQ8RGFzaGJvYXJkUmVnaW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RGFzaGJvYXJkUmVnaW9uPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRGFz
aGJvYXJkUmVnaW9uKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEYXNoYm9hcmRSZWdp
b24mIHJocykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xhYmVsID09IHJocy5tX2xh
YmVsICYmIG1fZ2VvbWV0cnlUeXBlID09IHJocy5tX2dlb21ldHJ5VHlwZQorICAgICAgICAgICAg
JiYgbV9pc0NpcmNsZSA9PSByaHMubV9pc0NpcmNsZSAmJiBtX2lzUmVjdGFuZ2xlID09IHJocy5t
X2lzUmVjdGFuZ2xlCisgICAgICAgICAgICAmJiBtX25leHQgPyByaHMubV9uZXh0ICYmICptX25l
eHQgPT0gKnJocy5tX25leHQgOiAhcmhzLm1fbmV4dDsKKyAgICB9CiAKICAgICBSZWZQdHI8RGFz
aGJvYXJkUmVnaW9uPiBtX25leHQ7CiAgICAgU3RyaW5nIG1fbGFiZWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKaW5kZXggMTAzNGZjYS4uMTc0NjhkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcApAQCAtNTAsNiArNTAsMTEgQEAgU3RyaW5n
IEZvbnRGZWF0dXJlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgRm9udEZlYXR1cmVWYWx1ZTo6b3BlcmF0b3I9PShj
b25zdCBGb250RmVhdHVyZVZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGFnID09
IHJocy5tX3RhZyAmJiBtX3ZhbHVlID09IHJocy5tX3ZhbHVlOworfQorCiB2b2lkIEZvbnRGZWF0
dXJlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZlYXR1cmVWYWx1ZS5oCmluZGV4IGZjYWI4MTUuLjg2ODNlNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaApAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAg
aW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIFN0cmluZyBjdXN0b21D
c3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udEZlYXR1cmVW
YWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNw
cAppbmRleCAwYmExZTZlLi44ODQ5MDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcApAQCAt
NjUsNiArNjUsMTYgQEAgU3RyaW5nIEZvbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCitib29sIEZvbnRWYWx1ZTo6b3BlcmF0
b3I9PShjb25zdCBGb250VmFsdWUmIHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gc3R5bGUgPyBy
aHMuc3R5bGUgJiYgKnN0eWxlID09ICpyaHMuc3R5bGUgOiAhcmhzLnN0eWxlCisgICAgICAgICYm
IHZhcmlhbnQgPyByaHMudmFyaWFudCAmJiAqdmFyaWFudCA9PSAqcmhzLnZhcmlhbnQgOiAhcmhz
LnZhcmlhbnQKKyAgICAgICAgJiYgd2VpZ2h0ID8gcmhzLndlaWdodCAmJiAqd2VpZ2h0ID09ICpy
aHMud2VpZ2h0IDogIXJocy53ZWlnaHQKKyAgICAgICAgJiYgc2l6ZSA/IHJocy5zaXplICYmICpz
aXplID09ICpyaHMuc2l6ZSA6ICFyaHMuc2l6ZQorICAgICAgICAmJiBsaW5lSGVpZ2h0ID8gcmhz
LmxpbmVIZWlnaHQgJiYgKmxpbmVIZWlnaHQgPT0gKnJocy5saW5lSGVpZ2h0IDogIXJocy5saW5l
SGVpZ2h0CisgICAgICAgICYmIGZhbWlseSA/IHJocy5mYW1pbHkgJiYgKmZhbWlseSA9PSAqcmhz
LmZhbWlseSA6ICFyaHMuZmFtaWx5OworfQorCiB2b2lkIEZvbnRWYWx1ZTo6cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCmluZGV4IDAzYTYxMjYu
LmZkMDQ1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGlj
OgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGb250VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gc3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV4cC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaAppbmRleCA4
MTNlMGY4Li43YjU0ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV4cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIChvdGhlci5tX21lZGlhRmVh
dHVyZSA9PSBtX21lZGlhRmVhdHVyZSkKICAgICAgICAgICAgICYmICgoIW90aGVyLm1fdmFsdWUg
JiYgIW1fdmFsdWUpCi0gICAgICAgICAgICAgICAgfHwgKG90aGVyLm1fdmFsdWUgJiYgbV92YWx1
ZSAmJiBvdGhlci5tX3ZhbHVlLT5jc3NUZXh0KCkgPT0gbV92YWx1ZS0+Y3NzVGV4dCgpKSk7Cisg
ICAgICAgICAgICAgICAgfHwgKG90aGVyLm1fdmFsdWUgJiYgbV92YWx1ZSAmJiAqb3RoZXIubV92
YWx1ZSA9PSAqbV92YWx1ZSkpOwogICAgIH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNWYWxpZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKaW5kZXggMDQxZWUyMy4uYTBhNzhlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUGFpci5oCkBAIC01Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdlbmVy
YXRlQ1NTU3RyaW5nKGZpcnN0KCktPmNzc1RleHQoKSwgc2Vjb25kKCktPmNzc1RleHQoKSk7CiAg
ICAgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhaXImIHJocykgY29uc3QgeyByZXR1
cm4gKm1fZmlyc3QgPT0gKnJocy5tX2ZpcnN0ICYmICptX3NlY29uZCA9PSAqcmhzLm1fc2Vjb25k
OyB9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBTdHJpbmcgc2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJp
YWJsZXMpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1JlY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKaW5kZXggZmVlZjg3NS4uMTY2YTUzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUmVjdC5oCkBAIC0zOSw2ICszOSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCb3R0b20o
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gYm90dG9tKSB7IG1fYm90dG9tID0gYm90dG9t
OyB9CiAgICAgdm9pZCBzZXRMZWZ0KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlZnQp
IHsgbV9sZWZ0ID0gbGVmdDsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlY3RCYXNl
JiByaHMpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKm1fdG9wID09ICpyaHMubV90b3Ag
JiYgKm1fcmlnaHQgPT0gKnJocy5tX3JpZ2h0CisgICAgICAgICAgICAmJiAqbV9sZWZ0ID09ICpy
aHMubV9sZWZ0ICYmICptX2JvdHRvbSA9PSAqcmhzLm1fYm90dG9tOworICAgIH0KKwogI2lmIEVO
QUJMRShDU1NfVkFSSUFCTEVTKQogICAgIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25z
dAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCmluZGV4IGE0MDY0Y2MuLmM0MTI4
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcApAQCAtNzksNiArNzksMTYgQEAgU3Ry
aW5nIFNoYWRvd1ZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dC50
b1N0cmluZygpOwogfQogCitib29sIFNoYWRvd1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IFNoYWRv
d1ZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbG9yID8gcmhzLmNvbG9yICYmICpj
b2xvciA9PSAqcmhzLmNvbG9yIDogIXJocy5jb2xvcgorICAgICAgICAmJiB4ID8gcmhzLnggJiYg
KnggPT0gKnJocy54IDogIXJocy54CisgICAgICAgICYmIHkgPyByaHMueSAmJiAqeSA9PSAqcmhz
LnkgOiAhcmhzLnkKKyAgICAgICAgJiYgYmx1ciA/IHJocy5ibHVyICYmICpibHVyID09ICpyaHMu
Ymx1ciA6ICFyaHMuYmx1cgorICAgICAgICAmJiBzcHJlYWQgPyByaHMuc3ByZWFkICYmICpzcHJl
YWQgPT0gKnJocy5zcHJlYWQgOiAhcmhzLnNwcmVhZAorICAgICAgICAmJiBzdHlsZSA/IHJocy5z
dHlsZSAmJiAqc3R5bGUgPT0gKnJocy5zdHlsZSA6ICFyaHMuc3R5bGU7Cit9CisKIHZvaWQgU2hh
ZG93VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1No
YWRvd1ZhbHVlLmgKaW5kZXggZjJkOGU2Zi4uODJkNDM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1Zh
bHVlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFkb3dWYWx1ZSYpIGNv
bnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4IGY2NjJjY2EuLjRjZWFhNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTMyNyw5ICszMjcsOSBA
QCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiBzaG9ydGhhbmQpIGNvbgogICAgIGlmICh0b3AuaXNJbXBvcnRhbnQoKSAhPSBy
aWdodC5pc0ltcG9ydGFudCgpIHx8IHJpZ2h0LmlzSW1wb3J0YW50KCkgIT0gYm90dG9tLmlzSW1w
b3J0YW50KCkgfHwgYm90dG9tLmlzSW1wb3J0YW50KCkgIT0gbGVmdC5pc0ltcG9ydGFudCgpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBib29sIHNob3dMZWZ0ID0gcmlnaHQudmFs
dWUoKS0+Y3NzVGV4dCgpICE9IGxlZnQudmFsdWUoKS0+Y3NzVGV4dCgpOwotICAgIGJvb2wgc2hv
d0JvdHRvbSA9ICh0b3AudmFsdWUoKS0+Y3NzVGV4dCgpICE9IGJvdHRvbS52YWx1ZSgpLT5jc3NU
ZXh0KCkpIHx8IHNob3dMZWZ0OwotICAgIGJvb2wgc2hvd1JpZ2h0ID0gKHRvcC52YWx1ZSgpLT5j
c3NUZXh0KCkgIT0gcmlnaHQudmFsdWUoKS0+Y3NzVGV4dCgpKSB8fCBzaG93Qm90dG9tOworICAg
IGJvb2wgc2hvd0xlZnQgPSAqcmlnaHQudmFsdWUoKSAhPSAqbGVmdC52YWx1ZSgpOworICAgIGJv
b2wgc2hvd0JvdHRvbSA9ICgqdG9wLnZhbHVlKCkgIT0gKmJvdHRvbS52YWx1ZSgpKSB8fCBzaG93
TGVmdDsKKyAgICBib29sIHNob3dSaWdodCA9ICgqdG9wLnZhbHVlKCkgIT0gKnJpZ2h0LnZhbHVl
KCkpIHx8IHNob3dCb3R0b207CiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1
bHQuYXBwZW5kKHRvcC52YWx1ZSgpLT5jc3NUZXh0KCkpOwpAQCAtMTExOSw3ICsxMTE5LDcgQEAg
Ym9vbCBTdHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0eU1hdGNoZXMoY29uc3QgUHJvcGVydHlSZWZl
cmVuY2UmIHByb3BlcnR5KSBjb25zdAogICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5k
UHJvcGVydHlJbmRleChwcm9wZXJ0eS5pZCgpKTsKICAgICBpZiAoZm91bmRQcm9wZXJ0eUluZGV4
ID09IC0xKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHByb3BlcnR5QXQoZm91
bmRQcm9wZXJ0eUluZGV4KS52YWx1ZSgpLT5jc3NUZXh0KCkgPT0gcHJvcGVydHkudmFsdWUoKS0+
Y3NzVGV4dCgpOworICAgIHJldHVybiAqcHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5kZXgpLnZh
bHVlKCkgPT0gKnByb3BlcnR5LnZhbHVlKCk7CiB9CiAgICAgCiB2b2lkIFN0eWxlUHJvcGVydHlT
ZXQ6OnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHN0
eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rp
b25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZh
bHVlLmNwcAppbmRleCAyYTE3YTQ0Li5mNzI4NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcApAQCAtNTYsNiArNTYsMTEgQEAg
UGFzc1JlZlB0cjxXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU+IFdlYktpdENTU0FycmF5RnVu
Y3Rpb25WYWx1ZTo6Y2xvbmVGb3JDU1MKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENT
U0FycmF5RnVuY3Rpb25WYWx1ZSgqdGhpcykpOwogfQogCitib29sIFdlYktpdENTU0FycmF5RnVu
Y3Rpb25WYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUm
IHJocykgY29uc3QKK3sKKyAgICByZXR1cm4gQ1NTVmFsdWVMaXN0OjpvcGVyYXRvcj09KHN0YXRp
Y19jYXN0PGNvbnN0IENTU1ZhbHVlTGlzdCY+KHJocykpOworfQorCiB2b2lkIFdlYktpdENTU0Fy
cmF5RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oCmluZGV4
IGJhZjI3ODIuLmY3YmNlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NBcnJheUZ1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
QXJyYXlGdW5jdGlvblZhbHVlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAgUGFz
c1JlZlB0cjxXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25z
dDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFs
dWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTRmlsdGVyVmFsdWUuY3BwCmluZGV4IGYxYTFlMGUuLmUyMjg4NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcApAQCAtMTExLDYgKzExMSwxMSBA
QCBQYXNzUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NG
aWx0ZXJWYWx1ZSgqdGhpcykpOwogfQogCitib29sIFdlYktpdENTU0ZpbHRlclZhbHVlOjpvcGVy
YXRvcj09KGNvbnN0IFdlYktpdENTU0ZpbHRlclZhbHVlJiByaHMpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdHlwZSA9PSByaHMubV90eXBlICYmIENTU1ZhbHVlTGlzdDo6b3BlcmF0b3I9PShzdGF0
aWNfY2FzdDxjb25zdCBDU1NWYWx1ZUxpc3QmPihyaHMpKTsKK30KKwogdm9pZCBXZWJLaXRDU1NG
aWx0ZXJWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAppbmRleCAwOGIzZTlmLi40ZTk1YWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaApAQCAtNjgsNiArNjgs
OCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBjbG9u
ZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NT
RmlsdGVyVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmNwcAppbmRleCAzYWY2ODdlLi41
Y2JjZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9u
VmFsdWUuY3BwCkBAIC01Niw2ICs1NiwxMSBAQCBQYXNzUmVmUHRyPFdlYktpdENTU01peEZ1bmN0
aW9uVmFsdWU+IFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU6OmNsb25lRm9yQ1NTT00oKQogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSgqdGhpcykpOwog
fQogCitib29sIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgV2Vi
S2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSYgcmhzKSBjb25zdAoreworICAgIHJldHVybiBDU1NWYWx1
ZUxpc3Q6Om9wZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Jj4ocmhzKSk7
Cit9CisKIHZvaWQgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAg
ICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1l
bW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U01peEZ1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5j
dGlvblZhbHVlLmgKaW5kZXggN2JjMDdiNC4uNGI4NTE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1Ymxp
YzoKIAogICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZT4gY2xvbmVGb3JD
U1NPTSgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYktpdENTU01peEZ1
bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcAppbmRleCBiNDM0ZWVjLi5h
Zjg5YjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1l
bnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50
VmFsdWUuY3BwCkBAIC02Nyw2ICs2NywxMSBAQCBTdHJpbmcgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRW
YWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHF1b3RlQ1NTU3RyaW5nSWZO
ZWVkZWQobV91cmwpOwogfQogCitib29sIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6Om9wZXJh
dG9yPT0oY29uc3QgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSYgcmhzKSBjb25zdAoreworICAg
IHJldHVybiBtX3VybCA9PSByaHMubV91cmw7Cit9CisKIHZvaWQgV2ViS2l0Q1NTU1ZHRG9jdW1l
bnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgKaW5kZXggOTZiY2M4Yy4uYzU3
ZjQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1
ZS5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgp
IGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
ICAgICBib29sIGxvYWRSZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRSZXF1ZXN0ZWQ7
IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSYp
IGNvbnN0OwogCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTU2hhZGVyVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZh
bHVlLmNwcAppbmRleCA5MWJkZGUyLi45YTYzYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKQEAgLTgzLDYgKzgzLDExIEBAIFN0cmluZyBXZWJLaXRD
U1NTaGFkZXJWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICJ1cmwoIiAr
IHF1b3RlQ1NTVVJMSWZOZWVkZWQobV91cmwpICsgIikiOwogfQogCitib29sIFdlYktpdENTU1No
YWRlclZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IFdlYktpdENTU1NoYWRlclZhbHVlJiByaHMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fdXJsID09IHJocy5tX3VybDsKK30KKwogdm9pZCBXZWJLaXRD
U1NTaGFkZXJWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAppbmRleCBjNDMyMDFjLi5iZTIyNzVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApAQCAtNTAsNiAr
NTAsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYktpdENTU1NoYWRlclZhbHVlJikgY29uc3Q7CisK
ICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZS5oCmluZGV4IGZkMTE3ZjIuLjkyMzJkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSYgcmhzKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gcmhzLm1fdHlwZTsgfQogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0
cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nU3R5bGUuY3BwCmluZGV4IDk2MjlmNjYuLjEzNDAyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTI0NCw5ICsyNDQsNyBAQCBib29sIEhUTUxBdHRy
aWJ1dGVFcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVudCwg
U3R5bGVQcm9wZQogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZUFz
Q1NTVmFsdWUoZWxlbWVudCk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdHlsZVZhbHVlID0gc3R5
bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsKICAgICAKLSAgICAvLyBGSVhN
RTogVGhpcyBpcyB2ZXJ5IGluZWZmaWNpZW50IHdheSBvZiBjb21wYXJpbmcgdmFsdWVzCi0gICAg
Ly8gYnV0IHdlIGNhbid0IHN0cmluZyBjb21wYXJlIGF0dHJpYnV0ZSB2YWx1ZSBhbmQgQ1NTIHBy
b3BlcnR5IHZhbHVlLgotICAgIHJldHVybiB2YWx1ZSAmJiBzdHlsZVZhbHVlICYmIHZhbHVlLT5j
c3NUZXh0KCkgPT0gc3R5bGVWYWx1ZS0+Y3NzVGV4dCgpOworICAgIHJldHVybiB2YWx1ZSAmJiBz
dHlsZVZhbHVlICYmICp2YWx1ZSA9PSAqc3R5bGVWYWx1ZTsKIH0KIAogdm9pZCBIVE1MQXR0cmli
dXRlRXF1aXZhbGVudDo6YWRkVG9TdHlsZShFbGVtZW50KiBlbGVtZW50LCBFZGl0aW5nU3R5bGUq
IHN0eWxlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAKaW5kZXggYTM0YWQxOC4uZjUyOWI1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCkBAIC0xMDUsNiArMTA1LDExIEBAIFBhc3NSZWZQ
dHI8U1ZHQ29sb3I+IFNWR0NvbG9yOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR0NvbG9yKFNWR0NvbG9yQ2xhc3MsICp0aGlzKSk7CiB9CiAKK2Jvb2wg
U1ZHQ29sb3I6Om9wZXJhdG9yPT0oY29uc3QgU1ZHQ29sb3ImIHJocykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jb2xvclR5cGUgPT0gcmhzLm1fY29sb3JUeXBlICYmIG1fY29sb3IgPT0gcmhzLm1f
Y29sb3I7Cit9CisKIHZvaWQgU1ZHQ29sb3I6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNs
YXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6
Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKaW5kZXggN2RkZGNkNy4uNzVhN2EyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbG9yLmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogICAgIAogICAgIFBhc3NSZWZQ
dHI8U1ZHQ29sb3I+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTVkdDb2xvciYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhaW50LmNwcAppbmRleCBjY2UxZjRlLi5hMTk4ODRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWlu
dC5jcHAKQEAgLTExMiw2ICsxMTIsMTEgQEAgUGFzc1JlZlB0cjxTVkdQYWludD4gU1ZHUGFpbnQ6
OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGFpbnQo
KnRoaXMpKTsKIH0KIAorYm9vbCBTVkdQYWludDo6b3BlcmF0b3I9PShjb25zdCBTVkdQYWludCYg
cmhzKSBjb25zdAoreworICAgIHJldHVybiBtX3BhaW50VHlwZSA9PSByaHMubV9wYWludFR5cGUg
JiYgbV91cmkgPT0gcmhzLm1fdXJpICYmIFNWR0NvbG9yOjpvcGVyYXRvcj09KHN0YXRpY19jYXN0
PGNvbnN0IFNWR0NvbG9yJj4ocmhzKSk7Cit9CisKIHZvaWQgU1ZHUGFpbnQ6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYWludC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKaW5kZXggYWM1Njc1Yi4u
MThiZTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKQEAgLTk1LDYgKzk1LDggQEAgcHVibGljOgog
CiAgICAgUGFzc1JlZlB0cjxTVkdQYWludD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR1BhaW50JikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZh
dGU6Cg==
</data>
<flag name="review"
          id="193674"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183132</attachid>
            <date>2013-01-17 00:21:04 -0800</date>
            <delta_ts>2013-01-21 01:30:30 -0800</delta_ts>
            <desc>Patch 5</desc>
            <filename>webcore_cssvalue_operator_eq_5.patch</filename>
            <type>text/plain</type>
            <size>82211</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ODU0YjI3Li45MjFiZWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEt
MTYgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IENTU1ZhbHVlOjpvcGVyYXRvcj09KCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjkwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBsYXlvdXQgdGVzdCB0byB2ZXJp
ZnkgdGhhdCBDU1NWYWx1ZSBvYmplY3RzIGNvbXBhcmlzb24gd29ya3MgcHJvcGVybHkuCisKKyAg
ICAgICAgKiBjc3NvbS9jc3N2YWx1ZS1jb21wYXJpc29uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi5odG1sOiBBZGRlZC4KKwogMjAxMy0w
MS0xNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IEZpeGluZyBjcmFzaGluZyBidWcgaW4gTWVkaWFTdHJlYW0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Nzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViZTQzYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Nzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNTkgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IENTU1ZhbHVlIG9iamVjdHMg
Y29tcGFyaXNvbiB3b3JrcyBjb3JyZWN0bHkuCisKKworUEFTUyBUd28gQ1NTVmFsdWVzICIyMCUi
IGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjJl
bSIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAi
MnJlbSIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVl
cyAiMjBweCIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1Zh
bHVlcyAiMmNtIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NT
VmFsdWVzICIyMG1tIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28g
Q1NTVmFsdWVzICI0aW4iIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3
byBDU1NWYWx1ZXMgIjIwcHQiIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgIjEwcGMiIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQ
QVNTIFR3byBDU1NWYWx1ZXMgIjZ2dyIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAK
K1BBU1MgVHdvIENTU1ZhbHVlcyAiNnZoIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICI0dm1pbiIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVx
dWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiLXdlYmtpdC1jYWxjKC0xMDBweCArIDEwMCUpIiBm
b3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJyb3Rh
dGUoMzBkZWcpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtdHJhbnNmb3JtIiBhcmUgZXF1YWwuIAor
UEFTUyBUd28gQ1NTVmFsdWVzICJ0cmFuc2xhdGUoNTBweCw1MHB4KSIgZm9yIHByb3BlcnR5ICIt
d2Via2l0LXRyYW5zZm9ybSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAic2NhbGUo
Miw0KSIgZm9yIHByb3BlcnR5ICItd2Via2l0LXRyYW5zZm9ybSIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAic2tldygzMGRlZywyMGRlZykiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10
cmFuc2Zvcm0iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIm1hdHJpeCgwLjQsMC41
LC0wLjUsMC40LDAsMCkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10cmFuc2Zvcm0iIGFyZSBlcXVh
bC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRv
cCwgbGVmdCBib3R0b20sIGZyb20oI2NjYyksIHRvKCMwMDApKSIgZm9yIHByb3BlcnR5ICJiYWNr
Z3JvdW5kIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICItd2Via2l0LWdyYWRpZW50
KHJhZGlhbCwgNDUgNDUsIDAsIDUyIDUwLCAwLCBmcm9tKCNBN0QzMEMpLCB0byhyZ2JhKDEsMTU5
LDk4LDApKSwgY29sb3Itc3RvcCg5MCUsICMwMTlGNjIpKSIgZm9yIHByb3BlcnR5ICJiYWNrZ3Jv
dW5kIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJib2xkIiBmb3IgcHJvcGVydHkg
ImZvbnQtd2VpZ2h0IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJpbmhlcml0IiBm
b3IgcHJvcGVydHkgImZvbnQtd2VpZ2h0IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVz
ICJhdHRyKGEpIiBmb3IgcHJvcGVydHkgImNvbnRlbnQiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBD
U1NWYWx1ZXMgImNvdW50ZXIoYSkiIGZvciBwcm9wZXJ0eSAiY29udGVudCIgYXJlIGVxdWFsLiAK
K1BBU1MgVHdvIENTU1ZhbHVlcyAiY291bnRlcnMoYSwgJy4nKSIgZm9yIHByb3BlcnR5ICJjb250
ZW50IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJyZWN0KDQwcHgsIDAsIDQ1cHgs
IC01cHgpIiBmb3IgcHJvcGVydHkgImNsaXAiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1
ZXMgIjMwcHggNzVweCAxNXB4IDE1cHgiIGZvciBwcm9wZXJ0eSAiYm9yZGVyLXJhZGl1cyIgYXJl
IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMTY0cHggLyA4MnB4IiBmb3IgcHJvcGVydHkg
ImJvcmRlci1yYWRpdXMiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjQwcHgiIGZv
ciBwcm9wZXJ0eSAiYm9yZGVyLXJhZGl1cyIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVl
cyAicmdiKDI1NSwwLDApIiBmb3IgcHJvcGVydHkgInN0b3AtY29sb3IiIGFyZSBlcXVhbC4gCitQ
QVNTIFR3byBDU1NWYWx1ZXMgIiNGRjU1NjYiIGZvciBwcm9wZXJ0eSAic3RvcC1jb2xvciIgYXJl
IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAicG9seWdvbihldmVub2RkLCAxMHB4IDc1cHgs
IDE4MHB4IDE4MHB4LCAxMDBweCAxMHB4LCAxMHB4IDE4MHB4LCAxODBweCA3NXB4LCAxMHB4IDc1
cHgpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtY2xpcC1wYXRoIiBhcmUgZXF1YWwuIAorUEFTUyBU
d28gQ1NTVmFsdWVzICIxMHMiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRp
b24iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjEwMG1zIiBmb3IgcHJvcGVydHkg
Ii13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFs
dWVzICJyZWQiIGZvciBwcm9wZXJ0eSAiY29sb3IiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NW
YWx1ZXMgImJsdWUiIGZvciBwcm9wZXJ0eSAiY29sb3IiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBD
U1NWYWx1ZXMgInVybChyZXNvdXJjZXMvZ3JlZW5ib3gucG5nKSAxIDIgMyA0IHJlcGVhdCBzdHJl
dGNoIiBmb3IgcHJvcGVydHkgImJvcmRlci1pbWFnZSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENT
U1ZhbHVlcyAidXJsKHJlc291cmNlcy9ncmVlbmJveC5wbmcpIDAgMCwgcG9pbnRlciIgZm9yIHBy
b3BlcnR5ICJjdXJzb3IiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIml0YWxpYyBi
b2xkIDEycHgvMzBweCBhcmlhbCIgZm9yIHByb3BlcnR5ICJmb250IiBhcmUgZXF1YWwuIAorUEFT
UyBUd28gQ1NTVmFsdWVzICItd2Via2l0LWltYWdlLXNldCh1cmwoZHVtbXk6Ly90ZXN0LnBuZykg
MXgsIHVybChkdW1teTovL3Rlc3QucG5nKSAyeCkiIGZvciBwcm9wZXJ0eSAiYmFja2dyb3VuZC1p
bWFnZSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiYmVsb3cgMTBweCIgZm9yIHBy
b3BlcnR5ICItd2Via2l0LWJveC1yZWZsZWN0IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFs
dWVzICJiZWxvdyAwcHggLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJv
dHRvbSwgZnJvbSh0cmFuc3BhcmVudCksIHRvKHJnYmEoMTAsIDU1LCAyMzQsIDEpKSkiIGZvciBw
cm9wZXJ0eSAiLXdlYmtpdC1ib3gtcmVmbGVjdCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1Zh
bHVlcyAiMCAtMjBweCAxMHB4IHJlZCwgMCAyMHB4IDEwcHggYmx1ZSIgZm9yIHByb3BlcnR5ICIt
d2Via2l0LWJveC1zaGFkb3ciIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjAgMjBw
eCAxMHB4IGJsdWUiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1ib3gtc2hhZG93IiBhcmUgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICI1cHggNXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMykiIGZv
ciBwcm9wZXJ0eSAiLXdlYmtpdC1ib3gtc2hhZG93IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NT
VmFsdWVzICJjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKSIgZm9yIHByb3BlcnR5ICIt
d2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiBhcmUgZXF1YWwuIAorUEFTUyBUd28g
Q1NTVmFsdWVzICJsaW5lYXIiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10cmFuc2l0aW9uLXRpbWlu
Zy1mdW5jdGlvbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAic3RlcHMoMywgZW5k
KSIgZm9yIHByb3BlcnR5ICItd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiBhcmUg
ZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJpbmxpbmUtYm94IiBmb3IgcHJvcGVydHkgIi13
ZWJraXQtbGluZS1ib3gtY29udGFpbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAi
Zm9udCIgZm9yIHByb3BlcnR5ICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iIGFyZSBlcXVhbC4g
CitQQVNTIFR3byBDU1NWYWx1ZXMgImdseXBocyIgZm9yIHByb3BlcnR5ICItd2Via2l0LWxpbmUt
Ym94LWNvbnRhaW4iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJlcGxhY2VkIiBm
b3IgcHJvcGVydHkgIi13ZWJraXQtbGluZS1ib3gtY29udGFpbiIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAiZ3JheXNjYWxlKDEwMCUpIHNlcGlhKDEwMCUpIiBmb3IgcHJvcGVydHkg
Ii13ZWJraXQtZmlsdGVyIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJkYXNoYm9h
cmQtcmVnaW9uKGxhYmVsIGNpcmNsZSkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1kYXNoYm9hcmQt
cmVnaW9uIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJkYXNoYm9hcmQtcmVnaW9u
KGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpIGRhc2hib2FyZC1yZWdpb24obGFiZWwgcmVj
dGFuZ2xlIDVweCA2cHggN3B4IDhweCkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1kYXNoYm9hcmQt
cmVnaW9uIiBhcmUgZXF1YWwuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3NvbS9jc3N2
YWx1ZS1jb21wYXJpc29uLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3NvbS9jc3N2YWx1ZS1jb21wYXJp
c29uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1NjBhNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24uaHRt
bApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgIDx0
aXRsZT5DU1NWYWx1ZSBjb21wYXJpc29uIHRlc3Q8L3RpdGxlPgorICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW4o
KSI+Cis8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBDU1NWYWx1ZSBvYmplY3RzIGNvbXBhcmlz
b24gd29ya3MgY29ycmVjdGx5LjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48
L2Rpdj4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorc2V0dXAoeyAiZXhwbGlj
aXRfZG9uZSI6IHRydWUgfSk7CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICB2YXIgc3R5bGVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICBzdHlsZUVsZW1lbnQu
dHlwZSA9ICJ0ZXh0L2NzcyI7CisgICAgdmFyIHN0eWxlVGV4dE5vZGUgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiIik7CisgICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKHN0eWxlVGV4dE5v
ZGUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5k
Q2hpbGQoc3R5bGVFbGVtZW50KTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdCIpOworICAgIGRpdi5mb2N1cygpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdChw
cm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUpIHsKKyAgICAgIHN0eWxlVGV4dE5vZGUuZGF0YSA9
ICJkaXYgeyAiICsgcHJvcGVydHlOYW1lICsgIiA6ICIgKyBwcm9wZXJ0eVZhbHVlICsgIjsgfSI7
CisgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCAiPGRpdiBp
ZD1cImluc2VydGVkRGl2XCIgc3R5bGU9XCIiICsgcHJvcGVydHlOYW1lICsgIiA6ICIgKyBwcm9w
ZXJ0eVZhbHVlICsgIjsgXCI+PC9kaXY+Iik7CisgICAgICB2YXIgaW5zZXJ0ZWREaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zZXJ0ZWREaXYnKTsKKyAgICAgIHZhciByZXN1bHQgPSB0
cnVlOworICAgICAgaWYgKHByb3BlcnR5TmFtZSBpbiBpbnNlcnRlZERpdi5zdHlsZSkKKyAgICAg
ICAgICByZXN1bHQgPSBpbnNlcnRlZERpdi5zdHlsZVtwcm9wZXJ0eU5hbWVdID09PSAiIjsKKyAg
ICAgIGluc2VydGVkRGl2LnJlbW92ZSgpOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICB2YXIgdGVzdHMgPSB7ICJ3aWR0aCIgOiBbIjIwJSIsICIyZW0iLCAiMnJlbSIsICIyMHB4
IiwgIjJjbSIsICIyMG1tIiwgIjRpbiIsICIyMHB0IiwgIjEwcGMiLCAiNnZ3IiwgIjZ2aCIsICI0
dm1pbiIsICItd2Via2l0LWNhbGMoLTEwMHB4ICsgMTAwJSkiXSwgLy8gbGVuZ3RocywgY2FsYwor
ICAgICAgICAgICAgICAgICAgIi13ZWJraXQtdHJhbnNmb3JtIiA6IFsicm90YXRlKDE1ZGVnKSIs
ICJyb3RhdGUoMS41NXJhZCkiLCAicm90YXRlKDIwMGdyYWQpIiwgInJvdGF0ZSgwLjV0dXJuKSJd
LCAvLyBhbmdsZQorICAgICAgICAgICAgICAgICAgImJhY2tncm91bmQiIDogWyJ1cmwoZHVtbXk6
Ly90ZXN0LnBuZykiXSwgLy8gdXJpCisgICAgICAgICAgICAgICAgICAiZm9udC13ZWlnaHQiIDog
WyJib2xkIiwgImluaGVyaXQiXSwgLy8gaWRlbnQKKyAgICAgICAgICAgICAgICAgICJjb250ZW50
IiA6IFsiYXR0cihhKSIsICJjb3VudGVyKGEpIiwgImNvdW50ZXJzKGEsICcuJykiXSwgLy8gYXR0
ciwgY291bnRlcgorICAgICAgICAgICAgICAgICAgImNsaXAiIDogWyJyZWN0KDQwcHgsIDAsIDQ1
cHgsIC01cHgpIl0sIC8vIHJlY3QKKyAgICAgICAgICAgICAgICAgICJib3JkZXItcmFkaXVzIiA6
IFsiMzBweCA3NXB4IDE1cHggMTVweCIsICIxNjRweCAvIDgycHgiLCAiNDBweCJdLCAvLyBxdWFk
cworICAgICAgICAgICAgICAgICAgInN0b3AtY29sb3IiIDogWyJyZ2IoMjU1LDAsMCkiLCAiI0ZG
NTU2NiJdLCAvLyBoZXgsIHJnYiBjb2xvcgorICAgICAgICAgICAgICAgICAgIi13ZWJraXQtY2xp
cC1wYXRoIiA6IFsicG9seWdvbihldmVub2RkLCAxMHB4IDc1cHgsIDE4MHB4IDE4MHB4LCAxMDBw
eCAxMHB4LCAxMHB4IDE4MHB4LCAxODBweCA3NXB4LCAxMHB4IDc1cHgpIl0sIC8vIHNoYXBlIHZh
bHVlCisgICAgICAgICAgICAgICAgICAiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24iIDogWyIx
MHMiLCAiMTAwbXMiXSwgLy8gc2Vjb25kcywgbWlsbGlzZWNvbmRzCisgICAgICAgICAgICAgICAg
ICAiY29sb3IiIDogWyJyZWQiLCAiYmx1ZSJdLCAvLyBpZGVudAorICAgICAgICAgICAgICAgICAg
ImJvcmRlci1pbWFnZSIgOiBbInVybChyZXNvdXJjZXMvZ3JlZW5ib3gucG5nKSAxIDIgMyA0IHJl
cGVhdCBzdHJldGNoIl0sIC8vIGJvcmRlciBpbWFnZSwgaW1hZ2UKKyAgICAgICAgICAgICAgICAg
ICJjdXJzb3IiIDogWyJ1cmwocmVzb3VyY2VzL2dyZWVuYm94LnBuZykgMCAwLCBwb2ludGVyIl0s
IC8vIGN1cnNvcgorICAgICAgICAgICAgICAgICAgImZvbnQiIDogWyJpdGFsaWMgYm9sZCAxMnB4
LzMwcHggYXJpYWwiXSwgLy8gZm9udAorICAgICAgICAgICAgICAgICAgImJhY2tncm91bmQiIDog
WyItd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCNj
Y2MpLCB0bygjMDAwKSkiLCAiLXdlYmtpdC1ncmFkaWVudChyYWRpYWwsIDQ1IDQ1LCAwLCA1MiA1
MCwgMCwgZnJvbSgjQTdEMzBDKSwgdG8ocmdiYSgxLDE1OSw5OCwwKSksIGNvbG9yLXN0b3AoOTAl
LCAjMDE5RjYyKSkiXSwgLy8gZ3JhZGllbnRzCisgICAgICAgICAgICAgICAgICAiYmFja2dyb3Vu
ZC1pbWFnZSIgOiBbIi13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoZHVtbXk6Ly9leGFtcGxlLnBuZyks
IHVybChkdW1teTovL2V4YW1wbGUucG5nKSwgNTAlKSJdLCAvLyBjcm9zc2ZhZGUKKyAgICAgICAg
ICAgICAgICAgICItd2Via2l0LWJveC1yZWZsZWN0IiA6IFsiYmVsb3cgMTBweCIsICJiZWxvdyAw
cHggLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSh0
cmFuc3BhcmVudCksIHRvKHJnYmEoMTAsIDU1LCAyMzQsIDEpKSkiXSwgLy8gcmVmbGVjdAorICAg
ICAgICAgICAgICAgICAgIi13ZWJraXQtYm94LXNoYWRvdyIgOiBbIjAgLTIwcHggMTBweCByZWQs
IDAgMjBweCAxMHB4IGJsdWUiLCAiMCAyMHB4IDEwcHggYmx1ZSIsICI1cHggNXB4IDVweCByZ2Jh
KDAsIDAsIDAsIDAuMykiXSwgLy8gc2hhZG93CisgICAgICAgICAgICAgICAgICAiLXdlYmtpdC10
cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIgOiBbImN1YmljLWJlemllcigwLjI1LCAwLjEsIDAu
MjUsIDEpIiwgImxpbmVhciIsICJzdGVwcygzLCBlbmQpIl0sIC8vIHRpbWluZyBmdW5jdGlvbnMK
KyAgICAgICAgICAgICAgICAgICItd2Via2l0LXRyYW5zZm9ybSIgOiBbInJvdGF0ZSgzMGRlZyki
LCAidHJhbnNsYXRlKDUwcHgsNTBweCkiLCAic2NhbGUoMiw0KSIsICJza2V3KDMwZGVnLDIwZGVn
KSIsICJtYXRyaXgoMC40LDAuNSwtMC41LDAuNCwwLDApIl0sIC8vIHRyYW5zZm9ybXMKKyAgICAg
ICAgICAgICAgICAgICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iIDogWyJpbmxpbmUtYm94Iiwg
ImZvbnQiLCAiZ2x5cGhzIiwgInJlcGxhY2VkIl0sIC8vIGxpbmUtYm94LWNvbnRhaW4KKyAgICAg
ICAgICAgICAgICAgICJiYWNrZ3JvdW5kLWltYWdlIiA6IFsiLXdlYmtpdC1pbWFnZS1zZXQodXJs
KGR1bW15Oi8vdGVzdC5wbmcpIDF4LCB1cmwoZHVtbXk6Ly90ZXN0LnBuZykgMngpIl0sIC8vIGlt
YWdlIHNldAorICAgICAgICAgICAgICAgICAgIi13ZWJraXQtZmlsdGVyIiA6IFsiZ3JheXNjYWxl
KDEwMCUpIHNlcGlhKDEwMCUpIl0sIC8vIGZpbHRlcgorICAgICAgICAgICAgICAgICAgIi13ZWJr
aXQtZGFzaGJvYXJkLXJlZ2lvbiIgOiBbImRhc2hib2FyZC1yZWdpb24obGFiZWwgY2lyY2xlKSIs
ICJkYXNoYm9hcmQtcmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpIGRhc2hib2Fy
ZC1yZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2cHggN3B4IDhweCkiXSAvLyBkYXNoYm9hcmQg
cmVnaW9uCisgICAgICAgICAgICAgICAgICB9OworCisgICAgZm9yICh2YXIga2V5IGluIHRlc3Rz
KSB7CisgICAgICAgdmFyIHZhbHVlcyA9IHRlc3RzW2tleV07CisgICAgICAgZm9yKHZhciBpbmRl
eCBpbiB2YWx1ZXMpCisgICAgICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7YXNzZXJ0X3RydWUocnVu
VGVzdChrZXksIHZhbHVlc1tpbmRleF0pKX0sICJUd28gQ1NTVmFsdWVzIFwiIiArIHZhbHVlc1tp
bmRleF0gKyAiXCIgZm9yIHByb3BlcnR5IFwiIiArIGtleSArICJcIiBhcmUgZXF1YWwuIik7Cisg
ICAgfQorCisgICAgZG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBlM2I4NTc1Li45NTUwMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIxIEBA
CisyMDEzLTAxLTEwICBBbGV4YW5kZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50
ZWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1NWYWx1ZTo6b3BlcmF0b3I9PSgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb21wYXJp
c29uIG1ldGhvZCB0byBDU1NWYWx1ZSBhbmQgaXRzIGNoaWxkcmVuLCBzbyB0aGF0IHRoZQorICAg
ICAgICBjc3MgdmFsdWVzIGNvdWxkIGJlIGNvbXBhcmVkIGVmZmljaWVudGx5LiBCZWZvcmUgdGhp
cyBwYXRjaCwgQ1NTVmFsdWUKKyAgICAgICAgb2JqZWN0cyB3ZXJlIGNvbXBhcmVkIHVzaW5nIHN0
cmluZ3MgdGhhdCB3ZXJlIGdlbmVyYXRlZCBieSB0aGUgY3NzVGV4dCgpIG1ldGhvZC4KKworICAg
ICAgICBUZXN0OiBjc3NvbS9jc3N2YWx1ZS1jb21wYXJpc29uLmh0bWwKKworICAgICAgICBJbXBs
ZW1lbnQgQ1NTVmFsdWU6Om9wZXJhdG9yPT0oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi5odG1s
CisKKyAgICAgICAgKiBjc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NBc3BlY3RSYXRpb1ZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKENTU0FzcGVjdFJh
dGlvVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xlOjplcXVhbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVsbGlwc2U6OmVxdWFscyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NCYXNpY1NoYXBlUG9seWdvbjo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvQ1NT
QmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVSZWN0YW5nbGUpOgorICAgICAg
ICAoQ1NTQmFzaWNTaGFwZUNpcmNsZSk6CisgICAgICAgIChDU1NCYXNpY1NoYXBlRWxsaXBzZSk6
CisgICAgICAgIChDU1NCYXNpY1NoYXBlUG9seWdvbik6CisgICAgICAgICogY3NzL0NTU0JvcmRl
ckltYWdlU2xpY2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlLmg6CisgICAgICAgIChDU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWUpOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbGNWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoQ1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQcmltaXRpdmVW
YWx1ZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjpl
cXVhbHMpOgorICAgICAgICAoQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjp0eXBlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2Rl
OjplcXVhbHMpOgorICAgICAgICAoQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKENT
U0NhbGNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6CisgICAgICAgIChDU1NDYW52YXNWYWx1ZSk6
CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQ
cm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3Nm
YWRlVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuaDoKKyAgICAgICAgKENTU0Nyb3NzZmFkZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJz
b3JJbWFnZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0NTU0N1cnNvckltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0N1cnNvckltYWdlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oOgorICAgICAgICAoQ1NTRm9udEZhY2VTcmNW
YWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGNzcy9DU1NGdW5jdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NGdW5jdGlvblZhbHVl
KToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjplcXVhbHMpOgorICAgICAg
ICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVu
dENvbG9yU3RvcDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NMaW5lYXJHcmFkaWVudFZhbHVl
KToKKyAgICAgICAgKENTU1JhZGlhbEdyYWRpZW50VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmVxdWFscyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5oOgorICAg
ICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0luaGVyaXRlZFZhbHVlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbmhlcml0ZWRWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAg
KENTU0luaGVyaXRlZFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW5pdGlhbFZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbml0aWFsVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChDU1NJ
bml0aWFsVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlOjplcXVhbHMpOgorICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NSZWZsZWN0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVj
dFZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU1Jl
ZmxlY3RWYWx1ZS5oOgorICAgICAgICAoQ1NTUmVmbGVjdFZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKToKKyAg
ICAgICAgKiBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKENTU0xpbmVh
clRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvblZhbHVlKToKKyAgICAgICAgKENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAg
ICAgICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1VuaWNvZGVSYW5nZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmg6CisgICAgICAgIChDU1NVbmljb2RlUmFuZ2VW
YWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNTU1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKENT
U1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNT
U1ZhbHVlVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVDU1NWYWx1ZVB0cik6Cisg
ICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1
ZUxpc3Q6OnJlbW92ZUFsbCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6Omhhc1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6ZXF1YWxzKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKENTU1Zh
bHVlTGlzdCk6CisgICAgICAgICogY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ZhcmlhYmxlVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChDU1NWYXJpYWJsZVZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ291bnRlci5oOgorICAgICAgICAoQ291bnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDb3VudGVyOjplcXVhbHMpOgorICAgICAgICAqIGNzcy9EYXNoYm9hcmRS
ZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhc2hib2FyZFJlZ2lvbjo6ZXF1YWxzKToKKyAg
ICAgICAgKiBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
RmVhdHVyZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0ZvbnRGZWF0dXJlVmFsdWUuaDoKKyAgICAgICAgKEZvbnRGZWF0dXJlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9Gb250VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhbHVlOjplcXVh
bHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0ZvbnRWYWx1ZS5oOgorICAg
ICAgICAoRm9udFZhbHVlKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4cC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV4cDo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1Bh
aXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6OmVxdWFscyk6CisgICAgICAgIChQYWlyKToK
KyAgICAgICAgKiBjc3MvUmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEJhc2U6OmVxdWFs
cyk6CisgICAgICAgIChSZWN0QmFzZSk6CisgICAgICAgICogY3NzL1NoYWRvd1ZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1ZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChTaGFkb3dWYWx1ZSk6
CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBy
b3BlcnR5U2V0Ojpwcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NBcnJh
eUZ1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTQXJyYXlGdW5j
dGlvblZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dl
YktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTQXJyYXlGdW5j
dGlvblZhbHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAg
KFdlYktpdENTU0ZpbHRlclZhbHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVl
OjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUpOgor
ICAgICAgICAqIGNzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oOgorICAgICAg
ICAoV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU1No
YWRlclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1NoYWRlclZhbHVlOjpl
cXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU1NoYWRl
clZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NTaGFkZXJWYWx1ZSk6CisgICAgICAgICogY3Nz
L1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6dmFsdWVJc1By
ZXNlbnRJblN0eWxlKToKKyAgICAgICAgKiBzdmcvU1ZHQ29sb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQ29sb3I6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBz
dmcvU1ZHQ29sb3IuaDoKKyAgICAgICAgKFNWR0NvbG9yKToKKyAgICAgICAgKiBzdmcvU1ZHUGFp
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OmVxdWFscyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKFNWR1BhaW50KToK
KwogMjAxMy0wMS0xNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEZpeGluZyBjcmFzaGluZyBidWcgaW4gTWVkaWFTdHJl
YW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcAppbmRleCA4MzBm
OGNmLi5jZGUwZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0
aW9WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUu
Y3BwCkBAIC0zOSw2ICszOSwxMSBAQCBTdHJpbmcgQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6Y3VzdG9t
Q3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fbnVtZXJhdG9yVmFs
dWUpICsgJy8nICsgU3RyaW5nOjpudW1iZXIobV9kZW5vbWluYXRvclZhbHVlKTsKIH0KIAorYm9v
bCBDU1NBc3BlY3RSYXRpb1ZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQXNwZWN0UmF0aW9WYWx1ZSYg
b3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbnVtZXJhdG9yVmFsdWUgPT0gb3RoZXIubV9u
dW1lcmF0b3JWYWx1ZSAmJiBtX2Rlbm9taW5hdG9yVmFsdWUgPT0gb3RoZXIubV9kZW5vbWluYXRv
clZhbHVlOworfQorCiB2b2lkIENTU0FzcGVjdFJhdGlvVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewog
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVN
ZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3Bl
Y3RSYXRpb1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5o
CmluZGV4IDVjYzMzOTIuLmQ5YzVkZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBc3BlY3RSYXRpb1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJh
dGlvVmFsdWUuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgbnVtZXJhdG9y
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX251bWVyYXRvclZhbHVlOyB9CiAgICAgZmxvYXQgZGVu
b21pbmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVub21pbmF0b3JWYWx1ZTsgfQogCisg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQXNwZWN0UmF0aW9WYWx1ZSYpIGNvbnN0OworCiAgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hh
cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggM2Zk
YTZiMS4uYTI2M2QwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hh
cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJDU1NCYXNpY1No
YXBlcy5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKIAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNzQsNiArNzUsMjAgQEAgU3RyaW5n
IENTU0Jhc2ljU2hhcGVSZWN0YW5nbGU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICBtX3JhZGl1
c1kuZ2V0KCkgPyBtX3JhZGl1c1ktPmNzc1RleHQoKSA6IFN0cmluZygpKTsKIH0KIAorYm9vbCBD
U1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgc2hhcGUp
IGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSAhPSBzaGFwZS50eXBlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVSZWN0YW5nbGUmIG90aGVyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSY+KHNoYXBlKTsKKyAgICByZXR1
cm4gY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3gsIG90aGVyLm1feCkK
KyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3ksIG90
aGVyLm1feSkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PihtX3dpZHRoLCBvdGhlci5tX3dpZHRoKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+KG1faGVpZ2h0LCBvdGhlci5tX2hlaWdodCkKKyAgICAgICAgJiYg
Y29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3JhZGl1c1gsIG90aGVyLm1f
cmFkaXVzWCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PihtX3JhZGl1c1ksIG90aGVyLm1fcmFkaXVzWSk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKIFN0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpzZXJpYWxpemVSZXNvbHZpbmdW
YXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykg
Y29uc3QKIHsKQEAgLTEwNiw2ICsxMjEsMTcgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6
OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZENpcmNsZVN0cmluZyhtX2NlbnRlclgt
PmNzc1RleHQoKSwgbV9jZW50ZXJZLT5jc3NUZXh0KCksIG1fcmFkaXVzLT5jc3NUZXh0KCkpOwog
fQogCitib29sIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBl
JiBzaGFwZSkgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IHNoYXBlLnR5cGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgQ1NTQmFzaWNTaGFwZUNpcmNsZSYgb3RoZXIg
PSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlQ2lyY2xlJj4oc2hhcGUpOworICAgIHJl
dHVybiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fY2VudGVyWCwgb3Ro
ZXIubV9jZW50ZXJYKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+KG1fY2VudGVyWSwgb3RoZXIubV9jZW50ZXJZKQorICAgICAgICAmJiBjb21wYXJlQ1NT
VmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fcmFkaXVzLCBvdGhlci5tX3JhZGl1cyk7Cit9
CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NCYXNpY1NoYXBlQ2lyY2xl
OjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTEzMiw2ICsxNTgsMTggQEAgU3RyaW5n
IENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gYnVpbGRF
bGxpcHNlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBtX2NlbnRlclktPmNzc1RleHQoKSwg
bV9yYWRpdXNYLT5jc3NUZXh0KCksIG1fcmFkaXVzWS0+Y3NzVGV4dCgpKTsKIH0KIAorYm9vbCBD
U1NCYXNpY1NoYXBlRWxsaXBzZTo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBj
b25zdAoreworICAgIGlmICh0eXBlKCkgIT0gc2hhcGUudHlwZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBjb25zdCBDU1NCYXNpY1NoYXBlRWxsaXBzZSYgb3RoZXIgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlRWxsaXBzZSY+KHNoYXBlKTsKKyAgICByZXR1cm4gY29t
cGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2NlbnRlclgsIG90aGVyLm1fY2Vu
dGVyWCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiht
X2NlbnRlclksIG90aGVyLm1fY2VudGVyWSkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPihtX3JhZGl1c1gsIG90aGVyLm1fcmFkaXVzWCkKKyAgICAgICAg
JiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3JhZGl1c1ksIG90aGVy
Lm1fcmFkaXVzWSk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NC
YXNpY1NoYXBlRWxsaXBzZTo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7CkBAIC0xOTksNiAr
MjM3LDE1IEBAIFN0cmluZyBDU1NCYXNpY1NoYXBlUG9seWdvbjo6Y3NzVGV4dCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGJ1aWxkUG9seWdvblN0cmluZyhtX3dpbmRSdWxlLCBwb2ludHMpOwogfQogCiti
b29sIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgc2hh
cGUpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSAhPSBzaGFwZS50eXBlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVQb2x5Z29uJiByaHMgPSBzdGF0
aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlUG9seWdvbiY+KHNoYXBlKTsKKyAgICByZXR1cm4g
Y29tcGFyZUNTU1ZhbHVlVmVjdG9yPENTU1ByaW1pdGl2ZVZhbHVlPihtX3ZhbHVlcywgcmhzLm1f
dmFsdWVzKTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU0Jhc2lj
U2hhcGVQb2x5Z29uOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Jhc2ljU2hhcGVzLmgKaW5kZXggZWYzMjA5OC4uOGRiMGQyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Jhc2ljU2hhcGVzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dCA9IDA7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBz
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdCA9IDA7CkBAIC04Miw2ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX1JFQ1RBTkdMRTsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhj
b25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwpAQCAtMTEzLDYgKzEx
NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
Q1NTX0JBU0lDX1NIQVBFX0NJUkNMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5n
PiYpIGNvbnN0OwpAQCAtMTQzLDYgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX0VMTElQU0U7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGVxdWFscyhj
b25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykK
ICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKQEAgLTE3Nyw3ICsxODEsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU19CQVNJ
Q19TSEFQRV9QT0xZR09OOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0Owot
CisgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAj
aWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4IDdk
MWIzZGEuLjAyZGNkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUuY3BwCkBAIC01MCw2ICs1MCwxMSBAQCBTdHJpbmcgQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAor
Ym9vbCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2ZpbGwgPT0gb3RoZXIu
bV9maWxsICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9zbGljZXMs
IG90aGVyLm1fc2xpY2VzKTsKK30KKwogdm9pZCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRleCA0ODhiNGE0Li5jMjg2ZThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCkBAIC00NSw2ICs0
NSw4IEBAIHB1YmxpYzoKIAogICAgIFF1YWQqIHNsaWNlcygpIHsgcmV0dXJuIG1fc2xpY2VzID8g
bV9zbGljZXMtPmdldFF1YWRWYWx1ZSgpIDogMDsgfQogCisgICAgYm9vbCBlcXVhbHMoY29uc3Qg
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKICAgICAvLyBUaGVz
ZSBmb3VyIHZhbHVlcyBhcmUgdXNlZCB0byBtYWtlICJjdXRzIiBpbiB0aGUgYm9yZGVyIGltYWdl
LiBUaGV5IGNhbiBiZSBudW1iZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5jcHAKaW5kZXggMWMxNThjYy4uMjg2MDk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtOTUsNiArOTUsMTEgQEAgU3RyaW5nIENTU0NhbGNW
YWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGJ1aWxkQ3NzVGV4dChtX2V4
cHJlc3Npb24tPmN1c3RvbUNzc1RleHQoKSk7CiB9CiAKK2Jvb2wgQ1NTQ2FsY1ZhbHVlOjplcXVh
bHMoY29uc3QgQ1NTQ2FsY1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGFy
ZUNTU1ZhbHVlUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4obV9leHByZXNzaW9uLCBvdGhlci5t
X2V4cHJlc3Npb24pOworfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NT
Q2FsY1ZhbHVlOjpjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTIyMywxMSAr
MjI4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDA7ICAgICAgICAKICAgICB9CiAKKyAg
ICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9kZSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPihtX3ZhbHVlLCBzdGF0aWNfY2FzdDxjb25zdCBDU1NDYWxjUHJp
bWl0aXZlVmFsdWUmPihvdGhlcikubV92YWx1ZSk7CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CiAgICAgICAgIGluZm8u
YWRkTWVtYmVyKG1fdmFsdWUpOwogICAgIH0KKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gQ3NzQ2FsY1ByaW1pdGl2ZVZhbHVlOyB9CiAgICAgCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IENTU0NhbGNQcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUs
IGJvb2wgaXNJbnRlZ2VyKQpAQCAtMzU5LDYgKzM3NCwxOSBAQCBwdWJsaWM6CiAgICAgfQogI2Vu
ZGlmCiAKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9k
ZSYgZXhwKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHR5cGUoKSAhPSBleHAudHlwZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IENTU0NhbGNCaW5hcnlP
cGVyYXRpb24mIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlv
biY+KGV4cCk7CisgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTQ2FsY0V4cHJl
c3Npb25Ob2RlPihtX2xlZnRTaWRlLCBvdGhlci5tX2xlZnRTaWRlKQorICAgICAgICAgICAgJiYg
Y29tcGFyZUNTU1ZhbHVlUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4obV9yaWdodFNpZGUsIG90
aGVyLm1fcmlnaHRTaWRlKQorICAgICAgICAgICAgJiYgbV9vcGVyYXRvciA9PSBvdGhlci5tX29w
ZXJhdG9yOworICAgIH0KKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
Q3NzQ2FsY0JpbmFyeU9wZXJhdGlvbjsgfQorCiBwcml2YXRlOgogICAgIENTU0NhbGNCaW5hcnlP
cGVyYXRpb24oUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNz
UmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlLCBDYWxjT3BlcmF0b3Igb3As
IENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkpCiAgICAgICAgIDogQ1NTQ2FsY0V4cHJlc3Np
b25Ob2RlKGNhdGVnb3J5LCBsZWZ0U2lkZS0+aXNJbnRlZ2VyKCkgJiYgcmlnaHRTaWRlLT5pc0lu
dGVnZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4IDA0
NGNmMzIuLjU2OWRiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxh
dGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
aApAQCAtNjAsNyArNjAsMTEgQEAgZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsKICAgICAKIGNs
YXNzIENTU0NhbGNFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0NhbGNFeHBy
ZXNzaW9uTm9kZT4gewogcHVibGljOgotICAgIAorICAgIGVudW0gVHlwZSB7CisgICAgICAgIENz
c0NhbGNQcmltaXRpdmVWYWx1ZSA9IDEsCisgICAgICAgIENzc0NhbGNCaW5hcnlPcGVyYXRpb24K
KyAgICB9OworCiAgICAgdmlydHVhbCB+Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlKCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpc1plcm8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzT3duUHRy
PENhbGNFeHByZXNzaW9uTm9kZT4gdG9DYWxjVmFsdWUoUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLCBkb3VibGUgem9vbSA9IDEuMCkgY29uc3QgPSAwOyAgICAKQEAgLTcxLDkg
Kzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdW
YXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgPSAwOwogI2Vu
ZGlmCi0KKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9k
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2F0ZWdvcnkgPT0gb3RoZXIubV9jYXRlZ29yeSAm
JiBtX2lzSW50ZWdlciA9PSBvdGhlci5tX2lzSW50ZWdlcjsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgPSAwOwotICAgIAorICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOworCiAgICAgQ2FsY3VsYXRpb25DYXRlZ29y
eSBjYXRlZ29yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2F0ZWdvcnk7IH0gICAgCiAgICAgYm9vbCBp
c0ludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2lzSW50ZWdlcjsgfQogICAgIApAQCAtMTA0LDYg
KzEwOSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxl
KiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVy
ID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpIGNvbnN0OwogICAgICAgICAK
ICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworICAgIGJvb2wgZXF1YWxzKGNvbnN0
IENTU0NhbGNWYWx1ZSYpIGNvbnN0OwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0
cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKICAgICBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCAzYWVhMTdj
Li44OGFmNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKQEAgLTk2LDYg
Kzk2LDExIEBAIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0NhbnZhc1ZhbHVlOjppbWFnZShSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiAvCiAgICAgcmV0dXJuIGVsdC0+Y29waWVk
SW1hZ2UoKTsKIH0KIAorYm9vbCBDU1NDYW52YXNWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0NhbnZh
c1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uYW1lID09IG90aGVyLm1fbmFt
ZTsKK30KKwogdm9pZCBDU1NDYW52YXNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5
Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVz
OjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAppbmRleCAxM2ZiNTg3Li43NzIy
OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApAQCAtNDcsNiArNDcsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopIHsgfQogCisgICAgYm9v
bCBlcXVhbHMoY29uc3QgQ1NTQ2FudmFzVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggZDU3Nzc3Mi4uYzZjYTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI2MDIsNyArMjYwMiw3IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlE
IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyTGVmdCB9OwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBX
VEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAo
dmFsdWUtPmNzc1RleHQoKSAhPSAgZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldLCBE
b05vdFVwZGF0ZUxheW91dCktPmNzc1RleHQoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWNvbXBh
cmVDU1NWYWx1ZVB0cjxDU1NWYWx1ZT4odmFsdWUsIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVy
dGllc1tpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZSgpOwpA
QCAtMjgyNiw3ICsyODI2LDcgQEAgYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNz
c1Byb3BlcnR5TWF0Y2hlcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0OjpQcm8KICAgICAgICAgfQog
ICAgIH0KICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShw
cm9wZXJ0eS5pZCgpKTsKLSAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUtPmNzc1RleHQoKSA9PSBw
cm9wZXJ0eS52YWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgcmV0dXJuIHZhbHVlICYmIHByb3BlcnR5
LnZhbHVlKCkgJiYgdmFsdWUtPmVxdWFscygqcHJvcGVydHkudmFsdWUoKSk7CiB9CiAKIFBhc3NS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjb3B5
KCkgY29uc3QKQEAgLTI4NjIsOSArMjg2Miw5IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkCiAg
ICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1ZSB8fCAhYm90dG9tVmFsdWUgfHwgIWxlZnRW
YWx1ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBib29sIHNob3dMZWZ0ID0gcmlnaHRWYWx1
ZS0+Y3NzVGV4dCgpICE9IGxlZnRWYWx1ZS0+Y3NzVGV4dCgpOwotICAgIGJvb2wgc2hvd0JvdHRv
bSA9ICh0b3BWYWx1ZS0+Y3NzVGV4dCgpICE9IGJvdHRvbVZhbHVlLT5jc3NUZXh0KCkpIHx8IHNo
b3dMZWZ0OwotICAgIGJvb2wgc2hvd1JpZ2h0ID0gKHRvcFZhbHVlLT5jc3NUZXh0KCkgIT0gcmln
aHRWYWx1ZS0+Y3NzVGV4dCgpKSB8fCBzaG93Qm90dG9tOworICAgIGJvb2wgc2hvd0xlZnQgPSAh
Y29tcGFyZUNTU1ZhbHVlUHRyPENTU1ZhbHVlPihyaWdodFZhbHVlLCBsZWZ0VmFsdWUpOworICAg
IGJvb2wgc2hvd0JvdHRvbSA9ICFjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+KHRvcFZhbHVl
LCBib3R0b21WYWx1ZSkgfHwgc2hvd0xlZnQ7CisgICAgYm9vbCBzaG93UmlnaHQgPSAhY29tcGFy
ZUNTU1ZhbHVlUHRyPENTU1ZhbHVlPih0b3BWYWx1ZSwgcmlnaHRWYWx1ZSkgfHwgc2hvd0JvdHRv
bTsKIAogICAgIGxpc3QtPmFwcGVuZCh0b3BWYWx1ZSk7CiAgICAgaWYgKHNob3dSaWdodCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IDJiNzg4MmMuLmRiNTcx
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMjI5LDQg
KzIyOSwxMSBAQCBib29sIENTU0Nyb3NzZmFkZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ1NTQ3Jvc3Nm
YWRlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NWYWx1ZT4obV9mcm9tVmFsdWUsIG90
aGVyLm1fZnJvbVZhbHVlKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+
KG1fdG9WYWx1ZSwgb3RoZXIubV90b1ZhbHVlKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fcGVyY2VudGFnZVZhbHVlLCBvdGhlci5tX3BlcmNlbnRh
Z2VWYWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmgKaW5kZXggODBkMjZkMS4uY2YwZDM4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKKyAgICBib29s
IGVxdWFscyhjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDMy
NjcwZWQuLmRhODFlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJ
bWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5jcHAKQEAgLTIxNyw2ICsyMTcsMTIgQEAgdm9pZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpyZW1v
dmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogfQogI2VuZGlmCiAKK2Jv
b2wgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0N1cnNvckltYWdlVmFsdWUm
IG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2hhc0hvdFNwb3QgPyBvdGhlci5tX2hhc0hv
dFNwb3QgJiYgbV9ob3RTcG90ID09IG90aGVyLm1faG90U3BvdCA6ICFvdGhlci5tX2hhc0hvdFNw
b3QKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ZhbHVlPihtX2ltYWdlVmFsdWUs
IG90aGVyLm1faW1hZ2VWYWx1ZSk7Cit9CisKIHZvaWQgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmgKaW5kZXggY2ZjNzhlYy4uZDA3NDg3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqKTsKICNlbmRpZgogCisgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9p
ZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmlu
ZGV4IDBkMWZhMTAuLjIwZDhmOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuY3BwCkBAIC0xMDQsNiArMTA0LDExIEBAIENhY2hlZEZvbnQqIENTU0ZvbnRGYWNl
U3JjVmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBtX2Nh
Y2hlZEZvbnQuZ2V0KCk7CiB9CiAKK2Jvb2wgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6ZXF1YWxzKGNv
bnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2lz
TG9jYWwgPT0gb3RoZXIubV9pc0xvY2FsICYmIG1fZm9ybWF0ID09IG90aGVyLm1fZm9ybWF0ICYm
IG1fcmVzb3VyY2UgPT0gb3RoZXIubV9yZXNvdXJjZTsKK30KKwogdm9pZCBDU1NGb250RmFjZVNy
Y1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBhMmM1NDY2Li40OGM4Mzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVi
bGljOgogCiAgICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udChEb2N1bWVudCopOwogCisgICAgYm9v
bCBlcXVhbHMoY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCBy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IGJjMjk1
ODQuLjA3NTExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAKQEAg
LTU5LDYgKzU5LDExIEBAIFN0cmluZyBDU1NGdW5jdGlvblZhbHVlOjpjdXN0b21Dc3NUZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgQ1NTRnVuY3Rp
b25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0Z1bmN0aW9uVmFsdWUmIG90aGVyKSBjb25zdAorewor
ICAgIHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxD
U1NWYWx1ZUxpc3Q+KG1fYXJncywgb3RoZXIubV9hcmdzKTsKK30KKwogdm9pZCBDU1NGdW5jdGlv
blZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRleCA0Y2NiNDc3Li4xNzljN2U1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAg
U3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0Z1bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCA3ZGMyMmJiLi5hYTcwMGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC02NTEsNiArNjUxLDM4IEBAIFBh
c3NSZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50
KFJlbmRlck9iamVjdCogcmVuZGVyCiAgICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2UoKTsKIH0K
IAorYm9vbCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fZ3JhZGllbnRUeXBlID09IENT
U0RlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudCkKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fZ3JhZGll
bnRUeXBlID09IG1fZ3JhZGllbnRUeXBlCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmlyc3RYLCBvdGhlci5tX2ZpcnN0WCkKKyAgICAgICAg
ICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9maXJzdFksIG90
aGVyLm1fZmlyc3RZKQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPihtX3NlY29uZFgsIG90aGVyLm1fc2Vjb25kWCkKKyAgICAgICAgICAgICYmIGNv
bXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9zZWNvbmRZLCBvdGhlci5tX3Nl
Y29uZFkpCisgICAgICAgICAgICAmJiBtX3N0b3BzID09IG90aGVyLm1fc3RvcHM7CisKKyAgICBp
ZiAobV9yZXBlYXRpbmcgIT0gb3RoZXIubV9yZXBlYXRpbmcpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtX2FuZ2xlKQorICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPihtX2FuZ2xlLCBvdGhlci5tX2FuZ2xlKSAmJiBtX3N0b3BzID09
IG90aGVyLm1fc3RvcHM7CisKKyAgICBpZiAob3RoZXIubV9hbmdsZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYm9vbCBlcXVhbFhvclkgPSBmYWxzZTsKKyAgICBpZiAobV9maXJzdFgg
JiYgbV9maXJzdFkpCisgICAgICAgIGVxdWFsWG9yWSA9IGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4obV9maXJzdFgsIG90aGVyLm1fZmlyc3RYKSAmJiBjb21wYXJlQ1NTVmFs
dWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmlyc3RZLCBvdGhlci5tX2ZpcnN0WSk7CisgICAg
ZWxzZSBpZiAobV9maXJzdFgpCisgICAgICAgIGVxdWFsWG9yWSA9Y29tcGFyZUNTU1ZhbHVlUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPihtX2ZpcnN0WCwgb3RoZXIubV9maXJzdFgpICYmICFvdGhlci5t
X2ZpcnN0WTsKKyAgICBlbHNlIGlmIChtX2ZpcnN0WSkKKyAgICAgICAgZXF1YWxYb3JZID0gY29t
cGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2ZpcnN0WSwgb3RoZXIubV9maXJz
dFkpICYmICFvdGhlci5tX2ZpcnN0WDsKKyAgICBlbHNlCisgICAgICAgIGVxdWFsWG9yWSA9ICFv
dGhlci5tX2ZpcnN0WCB8fCAhb3RoZXIubV9maXJzdFk7CisKKyAgICByZXR1cm4gZXF1YWxYb3JZ
ICYmIG1fc3RvcHMgPT0gb3RoZXIubV9zdG9wczsKK30KKwogdm9pZCBDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CkBAIC05NzYsNiArMTAw
OCw1MiBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVh
dGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAgIHJldHVybiBncmFkaWVudC5yZWxl
YXNlKCk7CiB9CiAKK2Jvb2wgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENT
U1JhZGlhbEdyYWRpZW50VmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX2dyYWRpZW50
VHlwZSA9PSBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpCisgICAgICAgIHJldHVybiBvdGhl
ci5tX2dyYWRpZW50VHlwZSA9PSBtX2dyYWRpZW50VHlwZQorICAgICAgICAgICAgJiYgY29tcGFy
ZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2ZpcnN0WCwgb3RoZXIubV9maXJzdFgp
CisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1f
Zmlyc3RZLCBvdGhlci5tX2ZpcnN0WSkKKyAgICAgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9zZWNvbmRYLCBvdGhlci5tX3NlY29uZFgpCisgICAgICAg
ICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fc2Vjb25kWSwg
b3RoZXIubV9zZWNvbmRZKQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1By
aW1pdGl2ZVZhbHVlPihtX2ZpcnN0UmFkaXVzLCBvdGhlci5tX2ZpcnN0UmFkaXVzKQorICAgICAg
ICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3NlY29uZFJh
ZGl1cywgb3RoZXIubV9zZWNvbmRSYWRpdXMpCisgICAgICAgICAgICAmJiBtX3N0b3BzID09IG90
aGVyLm1fc3RvcHM7CisKKyAgICBpZiAobV9yZXBlYXRpbmcgIT0gb3RoZXIubV9yZXBlYXRpbmcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgZXF1YWxYb3JZID0gZmFsc2U7Cisg
ICAgaWYgKG1fZmlyc3RYICYmIG1fZmlyc3RZKQorICAgICAgICBlcXVhbFhvclkgPSBjb21wYXJl
Q1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmlyc3RYLCBvdGhlci5tX2ZpcnN0WCkg
JiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2ZpcnN0WSwgb3RoZXIu
bV9maXJzdFkpOworICAgIGVsc2UgaWYgKG1fZmlyc3RYKQorICAgICAgICBlcXVhbFhvclkgPSBj
b21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmlyc3RYLCBvdGhlci5tX2Zp
cnN0WCkgJiYgIW90aGVyLm1fZmlyc3RZOworICAgIGVsc2UgaWYgKG1fZmlyc3RZKQorICAgICAg
ICBlcXVhbFhvclkgPSBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmly
c3RZLCBvdGhlci5tX2ZpcnN0WSkgJiYgIW90aGVyLm1fZmlyc3RYOworICAgIGVsc2UKKyAgICAg
ICAgZXF1YWxYb3JZID09ICFvdGhlci5tX2ZpcnN0WCB8fCAhb3RoZXIubV9maXJzdFk7CisKKyAg
ICBpZiAoIWVxdWFsWG9yWSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBlcXVh
bFNoYXBlID0gdHJ1ZTsKKyAgICBib29sIGVxdWFsU2l6aW5nQmVoYXZpb3IgPSB0cnVlOworICAg
IGJvb2wgZXF1YWxIb3Jpem9udGFsQW5kVmVydGljYWxTaXplID0gdHJ1ZTsKKworICAgIGlmICht
X3NoYXBlKQorICAgICAgICBlcXVhbFNoYXBlID0gY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPihtX3NoYXBlLCBvdGhlci5tX3NoYXBlKTsKKyAgICBlbHNlIGlmIChtX3Npemlu
Z0JlaGF2aW9yKQorICAgICAgICBlcXVhbFNpemluZ0JlaGF2aW9yID0gY29tcGFyZUNTU1ZhbHVl
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3NpemluZ0JlaGF2aW9yLCBvdGhlci5tX3NpemluZ0Jl
aGF2aW9yKTsKKyAgICBlbHNlIGlmIChtX2VuZEhvcml6b250YWxTaXplICYmIG1fZW5kVmVydGlj
YWxTaXplKQorICAgICAgICBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSBjb21wYXJl
Q1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZW5kSG9yaXpvbnRhbFNpemUsIG90aGVy
Lm1fZW5kSG9yaXpvbnRhbFNpemUpICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4obV9lbmRWZXJ0aWNhbFNpemUsIG90aGVyLm1fZW5kVmVydGljYWxTaXplKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgZXF1YWxTaGFwZSA9ICFvdGhlci5tX3NoYXBlOworICAgICAgICBlcXVh
bFNpemluZ0JlaGF2aW9yID0gIW90aGVyLm1fc2l6aW5nQmVoYXZpb3I7CisgICAgICAgIGVxdWFs
SG9yaXpvbnRhbEFuZFZlcnRpY2FsU2l6ZSA9ICFvdGhlci5tX2VuZEhvcml6b250YWxTaXplICYm
ICFvdGhlci5tX2VuZFZlcnRpY2FsU2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIGVxdWFsU2hhcGUg
JiYgZXF1YWxTaXppbmdCZWhhdmlvciAmJiBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUg
JiYgbV9zdG9wcyA9PSBvdGhlci5tX3N0b3BzOworfQorCiB2b2lkIENTU1JhZGlhbEdyYWRpZW50
VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IGMwYThhYTQuLjAwMjdlMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuaApAQCAtNTMsNiArNTMsMTEgQEAgc3RydWN0IENTU0dyYWRp
ZW50Q29sb3JTdG9wIHsKICAgICBDb2xvciBtX3Jlc29sdmVkQ29sb3I7CiAgICAgYm9vbCBtX2Nv
bG9ySXNEZXJpdmVkRnJvbUVsZW1lbnQ7CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0dyYWRp
ZW50Q29sb3JTdG9wJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wYXJl
Q1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fY29sb3IsIG90aGVyLm1fY29sb3IpCisg
ICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9wb3NpdGlv
biwgb3RoZXIubV9wb3NpdGlvbik7CisgICAgfQogfTsKIAogY2xhc3MgQ1NTR3JhZGllbnRWYWx1
ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKQEAgLTE1Miw2ICsxNTcsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1
ZSgqdGhpcykpOwogICAgIH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0xpbmVhckdyYWRp
ZW50VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTE5NSw2ICsyMDIsOCBA
QCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIHRoZSBncmFkaWVudCBmb3IgYSBnaXZlbiBzaXplLgog
ICAgIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVjdCosIGNv
bnN0IEludFNpemUmKTsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1JhZGlhbEdyYWRpZW50
VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVZhbHVlLmNwcAppbmRleCA3YjEyZTZmLi4xMzhiYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlVmFsdWUuY3BwCkBAIC05Myw2ICs5MywxMSBAQCBib29sIENTU0ltYWdlVmFsdWU6Omhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdAogICAgIHJldHVybiBjYWNoZWRSZXNv
dXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKTsKIH0KIAorYm9vbCBDU1NJbWFnZVZhbHVlOjpl
cXVhbHMoY29uc3QgQ1NTSW1hZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dXJsID09IG90aGVyLm1fdXJsOworfQorCiBTdHJpbmcgQ1NTSW1hZ2VWYWx1ZTo6Y3VzdG9tQ3Nz
VGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQo
bV91cmwpICsgIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKaW5kZXggZTIxOTY0Mi4u
MDJhNDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCkBAIC01MCw2ICs1MCw4IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNv
bnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTSW1hZ2VWYWx1ZSYpIGNvbnN0OworCiAg
ICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNv
bnN0OwogCiAgICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKaW5kZXggNjhjMDAxZi4uM2NhMWQ3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKQEAgLTM1LDYgKzM1LDggQEAg
cHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0luaGVyaXRlZFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
CiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lu
aXRpYWxWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCmluZGV4
IGQ1MjMzNDMuLjA4MTMyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0
aWFsVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKQEAg
LTQxLDYgKzQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0ltcGxpY2l0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0ltcGxpY2l0OyB9CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NJbml0aWFs
VmFsdWUmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaAppbmRleCBlZWI2NDcwLi5h
MTkyNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5W
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFN0cmluZyBjdXN0b21Dc3NU
ZXh0KCkgY29uc3Q7Ci0KKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NMaW5lQm94Q29udGFpblZh
bHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CiAg
ICAgTGluZUJveENvbnRhaW4gdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0ODA0ZTE5
Li5iZjgyOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAg
LTEyNjAsNiArMTI2MCw4MyBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
JiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBvdGhlci5t
X3ByaW1pdGl2ZVVuaXRUeXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2gg
KG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKKyAgICBjYXNlIENTU19VTktOT1dOOgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgY2FzZSBDU1NfTlVNQkVSOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9J
TlRFR0VSOgorICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CisgICAgY2FzZSBDU1NfRU1TOgorICAg
IGNhc2UgQ1NTX0VYUzoKKyAgICBjYXNlIENTU19SRU1TOgorICAgIGNhc2UgQ1NTX1BYOgorICAg
IGNhc2UgQ1NTX0NNOgorI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikgfHwgRU5BQkxF
KFJFU09MVVRJT05fTUVESUFfUVVFUlkpCisgICAgY2FzZSBDU1NfRFBQWDoKKyAgICBjYXNlIENT
U19EUEk6CisgICAgY2FzZSBDU1NfRFBDTToKKyNlbmRpZgorICAgIGNhc2UgQ1NTX01NOgorICAg
IGNhc2UgQ1NTX0lOOgorICAgIGNhc2UgQ1NTX1BUOgorICAgIGNhc2UgQ1NTX1BDOgorICAgIGNh
c2UgQ1NTX0RFRzoKKyAgICBjYXNlIENTU19SQUQ6CisgICAgY2FzZSBDU1NfR1JBRDoKKyAgICBj
YXNlIENTU19NUzoKKyAgICBjYXNlIENTU19TOgorICAgIGNhc2UgQ1NTX0haOgorICAgIGNhc2Ug
Q1NTX0tIWjoKKyAgICBjYXNlIENTU19UVVJOOgorICAgIGNhc2UgQ1NTX1ZXOgorICAgIGNhc2Ug
Q1NTX1ZIOgorICAgIGNhc2UgQ1NTX1ZNSU46CisgICAgY2FzZSBDU1NfRElNRU5TSU9OOgorICAg
ICAgICByZXR1cm4gbV92YWx1ZS5udW0gPT0gb3RoZXIubV92YWx1ZS5udW07CisgICAgY2FzZSBD
U1NfSURFTlQ6CisgICAgICAgIHJldHVybiB2YWx1ZU9yUHJvcGVydHlOYW1lKG1fdmFsdWUuaWRl
bnQpID09IHZhbHVlT3JQcm9wZXJ0eU5hbWUob3RoZXIubV92YWx1ZS5pZGVudCk7CisgICAgY2Fz
ZSBDU1NfU1RSSU5HOgorICAgIGNhc2UgQ1NTX1VSSToKKyAgICBjYXNlIENTU19BVFRSOgorICAg
IGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKKyAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoK
KyAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09MT1I6CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CisgICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFNRToKKyNlbmRpZgorICAgICAgICByZXR1cm4gZXF1
YWwobV92YWx1ZS5zdHJpbmcsIG90aGVyLm1fdmFsdWUuc3RyaW5nKTsKKyAgICBjYXNlIENTU19D
T1VOVEVSOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5jb3VudGVyICYmIG90aGVyLm1fdmFsdWUu
Y291bnRlciAmJiBtX3ZhbHVlLmNvdW50ZXItPmVxdWFscygqb3RoZXIubV92YWx1ZS5jb3VudGVy
KTsKKyAgICBjYXNlIENTU19SRUNUOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5yZWN0ICYmIG90
aGVyLm1fdmFsdWUucmVjdCAmJiBtX3ZhbHVlLnJlY3QtPmVxdWFscygqb3RoZXIubV92YWx1ZS5y
ZWN0KTsKKyAgICBjYXNlIENTU19RVUFEOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5xdWFkICYm
IG90aGVyLm1fdmFsdWUucXVhZCAmJiBtX3ZhbHVlLnF1YWQtPmVxdWFscygqb3RoZXIubV92YWx1
ZS5xdWFkKTsKKyAgICBjYXNlIENTU19SR0JDT0xPUjoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUu
cmdiY29sb3IgPT0gb3RoZXIubV92YWx1ZS5yZ2Jjb2xvcjsKKyAgICBjYXNlIENTU19QQUlSOgor
ICAgICAgICByZXR1cm4gbV92YWx1ZS5wYWlyICYmIG90aGVyLm1fdmFsdWUucGFpciAmJiBtX3Zh
bHVlLnBhaXItPmVxdWFscygqb3RoZXIubV92YWx1ZS5wYWlyKTsKKyNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCisgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjogeworICAgICAgICBE
YXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7CisgICAg
ICAgIERhc2hib2FyZFJlZ2lvbiogb3RoZXJSZWdpb24gPSBvdGhlci5nZXREYXNoYm9hcmRSZWdp
b25WYWx1ZSgpOworICAgICAgICByZXR1cm4gcmVnaW9uID8gb3RoZXJSZWdpb24gJiYgKnJlZ2lv
biA9PSAqb3RoZXJSZWdpb24gOiAhb3RoZXJSZWdpb247CisgICAgfQorI2VuZGlmCisgICAgY2Fz
ZSBDU1NfUEFSU0VSX09QRVJBVE9SOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5pZGVudCA9PSBv
dGhlci5tX3ZhbHVlLmlkZW50OworICAgIGNhc2UgQ1NTX0NBTEM6CisgICAgICAgIHJldHVybiBt
X3ZhbHVlLmNhbGMgJiYgb3RoZXIubV92YWx1ZS5jYWxjICYmIG1fdmFsdWUuY2FsYy0+ZXF1YWxz
KCpvdGhlci5tX3ZhbHVlLmNhbGMpOworICAgIGNhc2UgQ1NTX1NIQVBFOgorICAgICAgICByZXR1
cm4gbV92YWx1ZS5zaGFwZSAmJiBvdGhlci5tX3ZhbHVlLnNoYXBlICYmIG1fdmFsdWUuc2hhcGUt
PmVxdWFscygqb3RoZXIubV92YWx1ZS5zaGFwZSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKwogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5
Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVz
OjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBmY2M1Yjgz
Li43ZjI2NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMzE1
LDYgKzMxNSw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
bG9uZUZvckNTU09NKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDU1NPTVNhZmUoKSB7IG1faXNDU1NP
TVNhZmUgPSB0cnVlOyB9CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVj
dFZhbHVlLmNwcAppbmRleCA5NDM5ZDYwLi4zOWY2NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmNwcApAQCAtNjcsNiArNjcsMTMgQEAgdm9pZCBDU1NSZWZsZWN0VmFsdWU6
OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBT
dHkKICAgICAgICAgbV9tYXNrLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNo
ZWV0KTsKIH0KIAorYm9vbCBDU1NSZWZsZWN0VmFsdWU6OmVxdWFscyhjb25zdCBDU1NSZWZsZWN0
VmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2RpcmVjdGlvbiA9PSBvdGhlci5t
X2RpcmVjdGlvbgorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+KG1fb2Zmc2V0LCBvdGhlci5tX29mZnNldCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVl
UHRyPENTU1ZhbHVlPihtX21hc2ssIG90aGVyLm1fbWFzayk7Cit9CisKIHZvaWQgQ1NTUmVmbGVj
dFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUmVmbGVjdFZhbHVlLmgKaW5kZXggMWJkZmQ1Zi4uYmFkM2U3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSZWZsZWN0VmFsdWUuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgU3R5bGVT
aGVldENvbnRlbnRzKikgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NSZWZsZWN0
VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAppbmRleCBlMWJiMWQxLi4yMzk5YjU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCkBAIC01MCw2
ICs1MCwxMiBAQCBTdHJpbmcgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0
b21Dc3NUZXh0KCkgY29uc3QKICAgICAgICAgKyBTdHJpbmc6Om51bWJlcihtX3kyKSArICIpIjsK
IH0KIAorYm9vbCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25z
dCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUmIG90aGVyKSBjb25zdAoreworICAg
IHJldHVybiBtX3gxID09IG90aGVyLm1feDEgJiYgbV94MiA9PSBvdGhlci5tX3gyICYmIG1feTEg
PT0gb3RoZXIubV95MSAmJiBtX3kyID09IG90aGVyLm1feTI7Cit9CisKKwogdm9pZCBDU1NDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNs
YXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6
Q1NTKTsKQEAgLTYwLDYgKzY2LDEyIEBAIFN0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiAic3RlcHMoIiArIFN0cmluZzo6
bnVtYmVyKG1fc3RlcHMpICsgIiwgIiArIChtX3N0ZXBBdFN0YXJ0ID8gInN0YXJ0IiA6ICJlbmQi
KSArICcpJzsKIH0KIAorYm9vbCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyhj
b25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJl
dHVybiBtX3N0ZXBzID09IG90aGVyLm1fc3RlcHMgJiYgbV9zdGVwQXRTdGFydCA9PSBvdGhlci5t
X3N0ZXBBdFN0YXJ0OworfQorCisKIHZvaWQgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAppbmRleCAzZWI0YjIyLi40YzNmZTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKQEAgLTQwLDYgKzQwLDggQEAg
cHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUmKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC02Myw2ICs2NSw4IEBAIHB1YmxpYzoK
ICAgICBkb3VibGUgeDIoKSBjb25zdCB7IHJldHVybiBtX3gyOyB9CiAgICAgZG91YmxlIHkyKCkg
Y29uc3QgeyByZXR1cm4gbV95MjsgfQogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CkBA
IC05Myw2ICs5Nyw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29u
c3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUm
KSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5p
Y29kZVJhbmdlVmFsdWUuY3BwCmluZGV4IDM0ZDYzYjYuLmYxZDU5YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcApAQCAtMzgsNiArMzgsMTEgQEAgU3Ry
aW5nIENTU1VuaWNvZGVSYW5nZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitib29sIENTU1VuaWNvZGVSYW5nZVZhbHVlOjplcXVhbHMoY29uc3Qg
Q1NTVW5pY29kZVJhbmdlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2Zyb20g
PT0gb3RoZXIubV9mcm9tICYmIG1fdG8gPT0gb3RoZXIubV90bzsKK30KKwogdm9pZCBDU1NVbmlj
b2RlUmFuZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaAppbmRleCBkNTBmNWI2Li5hMTdmMTE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaApAQCAtNDQsNiAr
NDQsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVW5pY29kZVJhbmdlVmFsdWUmKSBjb25zdDsKKwogICAg
IHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IDBhNjEyOWQuLmYzZWFk
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtNzMsNyArNzMsMTMgQEAgc3RydWN0IFNh
bWVTaXplQXNDU1NWYWx1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVTaXplQXNDU1NWYWx1ZT4g
ewogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENTU1ZhbHVlKSA9PSBzaXplb2YoU2FtZVNp
emVBc0NTU1ZhbHVlKSwgQ1NTX3ZhbHVlX3Nob3VsZF9zdGF5X3NtYWxsKTsKLSAgICAKKwordGVt
cGxhdGU8Y2xhc3MgQ2hpbGRDbGFzc1R5cGU+CitpbmxpbmUgc3RhdGljIGJvb2wgY29tcGFyZUNT
U1ZhbHVlcyhjb25zdCBDU1NWYWx1ZSYgZmlyc3QsIGNvbnN0IENTU1ZhbHVlJiBzZWNvbmQpCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENoaWxkQ2xhc3NUeXBlJj4oZmlyc3QpLmVx
dWFscyhzdGF0aWNfY2FzdDxjb25zdCBDaGlsZENsYXNzVHlwZSY+KHNlY29uZCkpOworfQorCiBj
bGFzcyBUZXh0Q2xvbmVDU1NWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8VGV4dENsb25lQ1NTVmFsdWU+IGNyZWF0ZShDbGFzc1R5cGUgY2xh
c3NUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0Q2xv
bmVDU1NWYWx1ZShjbGFzc1R5cGUsIHRleHQpKTsgfQpAQCAtMjc2LDYgKzI4MiwxMDIgQEAgdm9p
ZCBDU1NWYWx1ZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorYm9vbCBDU1NW
YWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9p
c1RleHRDbG9uZSkgeworICAgICAgICBBU1NFUlQoaXNDU1NPTVNhZmUoKSk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBUZXh0Q2xvbmVDU1NWYWx1ZSo+KHRoaXMpLT5jc3NUZXh0
KCkgPT0gb3RoZXIuY3NzVGV4dCgpOworICAgIH0KKworICAgIGlmIChtX2NsYXNzVHlwZSA9PSBv
dGhlci5tX2NsYXNzVHlwZSkgeworICAgICAgICBzd2l0Y2ggKG1fY2xhc3NUeXBlKSB7CisgICAg
ICAgIGNhc2UgQXNwZWN0UmF0aW9DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NT
VmFsdWVzPENTU0FzcGVjdFJhdGlvVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2Ug
Qm9yZGVySW1hZ2VTbGljZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNl
IENhbnZhc0NsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTQ2Fu
dmFzVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgQ3Vyc29ySW1hZ2VDbGFzczoK
KyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0N1cnNvckltYWdlVmFsdWU+
KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgRm9udENsYXNzOgorICAgICAgICAgICAgcmV0
dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Rm9udFZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBj
YXNlIEZvbnRGYWNlU3JjQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVl
czxDU1NGb250RmFjZVNyY1ZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIEZvbnRG
ZWF0dXJlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxGb250RmVh
dHVyZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIEZ1bmN0aW9uQ2xhc3M6Cisg
ICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NGdW5jdGlvblZhbHVlPigqdGhp
cywgb3RoZXIpOworICAgICAgICBjYXNlIExpbmVhckdyYWRpZW50Q2xhc3M6CisgICAgICAgICAg
ICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPigqdGhpcywg
b3RoZXIpOworICAgICAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPigqdGhpcywgb3Ro
ZXIpOworICAgICAgICBjYXNlIENyb3NzZmFkZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNv
bXBhcmVDU1NWYWx1ZXM8Q1NTQ3Jvc3NmYWRlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAg
IGNhc2UgSW1hZ2VDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENT
U0ltYWdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgSW5oZXJpdGVkQ2xhc3M6
CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NJbmhlcml0ZWRWYWx1ZT4o
KnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBJbml0aWFsQ2xhc3M6CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NJbml0aWFsVmFsdWU+KCp0aGlzLCBvdGhlcik7Cisg
ICAgICAgIGNhc2UgUHJpbWl0aXZlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNT
U1ZhbHVlczxDU1NQcmltaXRpdmVWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBS
ZWZsZWN0Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NSZWZs
ZWN0VmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgU2hhZG93Q2xhc3M6CisgICAg
ICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxTaGFkb3dWYWx1ZT4oKnRoaXMsIG90aGVy
KTsKKyAgICAgICAgY2FzZSBMaW5lYXJUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZT4oKnRo
aXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uQ2xhc3M6
CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NDdWJpY0JlemllclRpbWlu
Z0Z1bmN0aW9uVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgU3RlcHNUaW1pbmdG
dW5jdGlvbkNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTU3Rl
cHNUaW1pbmdGdW5jdGlvblZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFVuaWNv
ZGVSYW5nZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTVW5p
Y29kZVJhbmdlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgVmFsdWVMaXN0Q2xh
c3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NWYWx1ZUxpc3Q+KCp0
aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtQ2xhc3M6CisgICAg
ICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZT4o
KnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBMaW5lQm94Q29udGFpbkNsYXNzOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTTGluZUJveENvbnRhaW5WYWx1ZT4oKnRo
aXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTQ2FsY1ZhbHVlPigqdGhpcywgb3RoZXIpOworI2lm
IEVOQUJMRShDU1NfSU1BR0VfU0VUKQorICAgICAgICBjYXNlIEltYWdlU2V0Q2xhc3M6CisgICAg
ICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NJbWFnZVNldFZhbHVlPigqdGhpcywg
b3RoZXIpOworI2VuZGlmCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorICAgICAgICBjYXNlIFdl
YktpdENTU0ZpbHRlckNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8
V2ViS2l0Q1NTRmlsdGVyVmFsdWU+KCp0aGlzLCBvdGhlcik7CisjaWYgRU5BQkxFKENTU19TSEFE
RVJTKQorICAgICAgICBjYXNlIFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZUNsYXNzOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8V2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZh
bHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFdlYktpdENTU01peEZ1bmN0aW9uVmFs
dWVDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPFdlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTU2hh
ZGVyQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxXZWJLaXRDU1NT
aGFkZXJWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyNlbmRpZgorI2VuZGlmCisjaWYgRU5BQkxFKENT
U19WQVJJQUJMRVMpCisgICAgICAgIGNhc2UgVmFyaWFibGVDbGFzczoKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU1ZhcmlhYmxlVmFsdWU+KCp0aGlzLCBvdGhlcik7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoU1ZHKQorICAgICAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6CisgICAg
ICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxTVkdDb2xvcj4oKnRoaXMsIG90aGVyKTsK
KyAgICAgICAgY2FzZSBTVkdQYWludENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVD
U1NWYWx1ZXM8U1ZHUGFpbnQ+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NT
U1ZHRG9jdW1lbnRDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPFdl
YktpdENTU1NWR0RvY3VtZW50VmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIH0KKyNlbmRp
ZgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9IGVsc2UgaWYgKG1fY2xhc3NU
eXBlID09IFZhbHVlTGlzdENsYXNzICYmIG90aGVyLm1fY2xhc3NUeXBlICE9IFZhbHVlTGlzdENs
YXNzKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Kj4odGhp
cyktPmVxdWFscyhvdGhlcik7CisgICAgZWxzZSBpZiAobV9jbGFzc1R5cGUgIT0gVmFsdWVMaXN0
Q2xhc3MgJiYgb3RoZXIubV9jbGFzc1R5cGUgPT0gVmFsdWVMaXN0Q2xhc3MpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NWYWx1ZUxpc3QmPihvdGhlcikuZXF1YWxzKCp0aGlz
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBDU1NWYWx1ZTo6Y3NzVGV4dCgpIGNv
bnN0CiB7CiAgICAgaWYgKG1faXNUZXh0Q2xvbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXgg
MjIwZjBhMS4uNTliMTc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTEyNiw2ICsxMjYsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ZhbHVlJikgY29uc3Q7CisKIHBy
b3RlY3RlZDoKIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgQ2xhc3NUeXBlQml0cyA9IDY7CkBA
IC0yMzYsNiArMjM4LDI5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9jbGFzc1R5cGUgOiBD
bGFzc1R5cGVCaXRzOyAvLyBDbGFzc1R5cGUKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENTU1Zh
bHVlVHlwZT4KK2lubGluZSBib29sIGNvbXBhcmVDU1NWYWx1ZVZlY3Rvcihjb25zdCBWZWN0b3I8
UmVmUHRyPENTU1ZhbHVlVHlwZT4gPiYgZmlyc3RWZWN0b3IsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
Q1NTVmFsdWVUeXBlPiA+JiBzZWNvbmRWZWN0b3IpCit7CisgICAgc2l6ZV90IHNpemUgPSBmaXJz
dFZlY3Rvci5zaXplKCk7CisgICAgaWYgKHNpemUgPT0gc2Vjb25kVmVjdG9yLnNpemUoKSkgewor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAg
Y29uc3QgUmVmUHRyPENTU1ZhbHVlVHlwZT4mIGZpcnN0UHRyID0gZmlyc3RWZWN0b3JbaV07Cisg
ICAgICAgICAgICBjb25zdCBSZWZQdHI8Q1NTVmFsdWVUeXBlPiYgc2Vjb25kUHRyID0gc2Vjb25k
VmVjdG9yW2ldOworICAgICAgICAgICAgaWYgKGZpcnN0UHRyID09IHNlY29uZFB0ciB8fCAoZmly
c3RQdHIgJiYgc2Vjb25kUHRyICYmIGZpcnN0UHRyLT5lcXVhbHMoKnNlY29uZFB0cikpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENTU1ZhbHVlVHlwZT4KK2lubGluZSBib29sIGNvbXBhcmVDU1NW
YWx1ZVB0cihjb25zdCBSZWZQdHI8Q1NTVmFsdWVUeXBlPiYgZmlyc3QsIGNvbnN0IFJlZlB0cjxD
U1NWYWx1ZVR5cGU+JiBzZWNvbmQpCit7CisgICAgcmV0dXJuIGZpcnN0ID8gc2Vjb25kICYmIGZp
cnN0LT5lcXVhbHMoKnNlY29uZCkgOiAhc2Vjb25kOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBDU1NWYWx1ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3Bw
CmluZGV4IDllYzJkNTAuLmQ3ZDA0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3Bw
CkBAIC01NSwxMCArNTUsOSBAQCBDU1NWYWx1ZUxpc3Q6OkNTU1ZhbHVlTGlzdChDU1NQYXJzZXJW
YWx1ZUxpc3QqIHBhcnNlclZhbHVlcykKIGJvb2wgQ1NTVmFsdWVMaXN0OjpyZW1vdmVBbGwoQ1NT
VmFsdWUqIHZhbCkKIHsKICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgLy8gRklYTUU6IHdl
IHNob3VsZCBiZSBpbXBsZW1lbnRpbmcgb3BlcmF0b3I9PSB0byBDU1NWYWx1ZSBhbmQgaXRzIGRl
cml2ZWQgY2xhc3NlcwotICAgIC8vIHRvIG1ha2UgY29tcGFyaXNvbiBtb3JlIGZsZXhpYmxlIGFu
ZCBmYXN0LgogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX3ZhbHVlcy5zaXpl
KCk7IGluZGV4KyspIHsKLSAgICAgICAgaWYgKG1fdmFsdWVzLmF0KGluZGV4KS0+Y3NzVGV4dCgp
ID09IHZhbC0+Y3NzVGV4dCgpKSB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlID0g
bV92YWx1ZXMuYXQoaW5kZXgpOworICAgICAgICBpZiAodmFsdWUgJiYgdmFsICYmIHZhbHVlLT5l
cXVhbHMoKnZhbCkpIHsKICAgICAgICAgICAgIG1fdmFsdWVzLnJlbW92ZShpbmRleCk7CiAgICAg
ICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTY5LDEwICs2OCw5IEBAIGJvb2wg
Q1NTVmFsdWVMaXN0OjpyZW1vdmVBbGwoQ1NTVmFsdWUqIHZhbCkKIAogYm9vbCBDU1NWYWx1ZUxp
c3Q6Omhhc1ZhbHVlKENTU1ZhbHVlKiB2YWwpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IHdlIHNo
b3VsZCBiZSBpbXBsZW1lbnRpbmcgb3BlcmF0b3I9PSB0byBDU1NWYWx1ZSBhbmQgaXRzIGRlcml2
ZWQgY2xhc3NlcwotICAgIC8vIHRvIG1ha2UgY29tcGFyaXNvbiBtb3JlIGZsZXhpYmxlIGFuZCBm
YXN0LgogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX3ZhbHVlcy5zaXplKCk7
IGluZGV4KyspIHsKLSAgICAgICAgaWYgKG1fdmFsdWVzLmF0KGluZGV4KS0+Y3NzVGV4dCgpID09
IHZhbC0+Y3NzVGV4dCgpKQorICAgICAgICBjb25zdCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSA9
IG1fdmFsdWVzLmF0KGluZGV4KTsKKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbCAmJiB2YWx1ZS0+
ZXF1YWxzKCp2YWwpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVy
biBmYWxzZTsKQEAgLTEyNyw2ICsxMjUsMjAgQEAgU3RyaW5nIENTU1ZhbHVlTGlzdDo6Y3VzdG9t
Q3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCitib29s
IENTU1ZhbHVlTGlzdDo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlTGlzdCYgb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fdmFsdWVMaXN0U2VwYXJhdG9yID09IG90aGVyLm1fdmFsdWVMaXN0U2Vw
YXJhdG9yICYmIGNvbXBhcmVDU1NWYWx1ZVZlY3RvcjxDU1NWYWx1ZT4obV92YWx1ZXMsIG90aGVy
Lm1fdmFsdWVzKTsKK30KKworYm9vbCBDU1NWYWx1ZUxpc3Q6OmVxdWFscyhjb25zdCBDU1NWYWx1
ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fdmFsdWVzLnNpemUoKSAhPSAxKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSA9IG1f
dmFsdWVzWzBdOworICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS0+ZXF1YWxzKG90aGVyKTsKK30K
KwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU1ZhbHVlTGlzdDo6Y3VzdG9t
U2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBT
dHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKaW5k
ZXggM2Q4OTdiYy4uYzY2YjgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaApAQCAtNjAs
NiArNjAsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvcHkoKTsK
IAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CisgICAgYm9vbCBlcXVhbHMoY29u
c3QgQ1NTVmFsdWVMaXN0JikgY29uc3Q7CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVmFsdWUm
KSBjb25zdDsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBTdHJpbmcgY3VzdG9tU2Vy
aWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJp
bmc+JikgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YXJpYWJsZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCmlu
ZGV4IDRmYzRmNzUuLjU0ODAxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YXJpYWJsZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUu
aApAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1Zhcmlh
YmxlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lICYm
IG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsgfQorCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAg
ICB7CiAgICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Db3VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCmluZGV4IDUxZmE3MTAu
LmZjMjI3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaApAQCAtNDIsNiArNDIsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0SWRlbnRpZmllcihQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpZGVu
dGlmaWVyKSB7IG1faWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExpc3RT
dHlsZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaXN0U3R5bGUpIHsgbV9saXN0U3R5
bGUgPSBsaXN0U3R5bGU7IH0KICAgICB2b2lkIHNldFNlcGFyYXRvcihQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBzZXBhcmF0b3IpIHsgbV9zZXBhcmF0b3IgPSBzZXBhcmF0b3I7IH0KKwor
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IENvdW50ZXImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGlkZW50aWZpZXIoKSA9PSBvdGhlci5pZGVudGlmaWVyKCkKKyAgICAgICAgICAg
ICYmIGxpc3RTdHlsZSgpID09IG90aGVyLmxpc3RTdHlsZSgpCisgICAgICAgICAgICAmJiBzZXBh
cmF0b3IoKSA9PSBvdGhlci5zZXBhcmF0b3IoKTsKKyAgICB9CiAgICAgCiAgICAgUGFzc1JlZlB0
cjxDb3VudGVyPiBjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRGFzaGJvYXJkUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGFz
aGJvYXJkUmVnaW9uLmgKaW5kZXggOTFlNWQ3YS4uNWI1ZjBiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0Rhc2hib2FyZFJlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
YXNoYm9hcmRSZWdpb24uaApAQCAtMzAsNiArMzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgRGFzaGJvYXJkUmVnaW9uIDogcHVibGljIFJlY3RCYXNlLCBwdWJsaWMgUmVmQ291bnRl
ZDxEYXNoYm9hcmRSZWdpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXNo
Ym9hcmRSZWdpb24+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXNoYm9hcmRSZWdp
b24pOyB9CisgICAgYm9vbCBlcXVhbHMoY29uc3QgRGFzaGJvYXJkUmVnaW9uJiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xhYmVsID09IG90aGVyLm1fbGFiZWwgJiYgbV9n
ZW9tZXRyeVR5cGUgPT0gb3RoZXIubV9nZW9tZXRyeVR5cGUKKyAgICAgICAgICAgICYmIG1faXND
aXJjbGUgPT0gb3RoZXIubV9pc0NpcmNsZSAmJiBtX2lzUmVjdGFuZ2xlID09IG90aGVyLm1faXNS
ZWN0YW5nbGUKKyAgICAgICAgICAgICYmIG1fbmV4dCA/IG90aGVyLm1fbmV4dCAmJiBtX25leHQt
PmVxdWFscygqb3RoZXIubV9uZXh0KSA6ICFvdGhlci5tX25leHQ7CisgICAgfQogCiAgICAgUmVm
UHRyPERhc2hib2FyZFJlZ2lvbj4gbV9uZXh0OwogICAgIFN0cmluZyBtX2xhYmVsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCmluZGV4IDEwMzRmY2EuLjc4MTU4MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKQEAgLTUwLDYgKzUwLDExIEBA
IFN0cmluZyBGb250RmVhdHVyZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCitib29sIEZvbnRGZWF0dXJlVmFsdWU6OmVxdWFs
cyhjb25zdCBGb250RmVhdHVyZVZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV90
YWcgPT0gb3RoZXIubV90YWcgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOworfQorCiB2b2lk
IEZvbnRGZWF0dXJlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5oCmluZGV4IGZjYWI4MTUuLjIxNGY0MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaApAQCAtNDIsNiArNDIsOCBAQCBwdWJs
aWM6CiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIFN0cmlu
ZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBGb250RmVh
dHVyZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFs
dWUuY3BwCmluZGV4IDBiYTFlNmUuLmEyOTY3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuY3Bw
CkBAIC02NSw2ICs2NSwxNiBAQCBTdHJpbmcgRm9udFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29u
c3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgRm9udFZhbHVlOjpl
cXVhbHMoY29uc3QgRm9udFZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGFy
ZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihzdHlsZSwgb3RoZXIuc3R5bGUpCisgICAg
ICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4odmFyaWFudCwgb3Ro
ZXIudmFyaWFudCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPih3ZWlnaHQsIG90aGVyLndlaWdodCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPihzaXplLCBvdGhlci5zaXplKQorICAgICAgICAmJiBjb21wYXJl
Q1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KGxpbmVIZWlnaHQsIG90aGVyLmxpbmVIZWln
aHQpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NWYWx1ZUxpc3Q+KGZhbWlseSwg
b3RoZXIuZmFtaWx5KTsKK30KKwogdm9pZCBGb250VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAg
IE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1v
cnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAppbmRleCAwM2E2MTI2Li40NTc4NjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCkBAIC0zOSw2ICszOSw4IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBG
b250VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gc3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaAppbmRleCA4MTNlMGY4Li5jNDFi
MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIChvdGhlci5tX21lZGlhRmVhdHVyZSA9PSBtX21l
ZGlhRmVhdHVyZSkKICAgICAgICAgICAgICYmICgoIW90aGVyLm1fdmFsdWUgJiYgIW1fdmFsdWUp
Ci0gICAgICAgICAgICAgICAgfHwgKG90aGVyLm1fdmFsdWUgJiYgbV92YWx1ZSAmJiBvdGhlci5t
X3ZhbHVlLT5jc3NUZXh0KCkgPT0gbV92YWx1ZS0+Y3NzVGV4dCgpKSk7CisgICAgICAgICAgICAg
ICAgfHwgKG90aGVyLm1fdmFsdWUgJiYgbV92YWx1ZSAmJiBvdGhlci5tX3ZhbHVlLT5lcXVhbHMo
Km1fdmFsdWUpKSk7CiAgICAgfQogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1ZhbGlkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1BhaXIuaAppbmRleCAwNDFlZTIzLi40NjVmMTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWly
LmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2VuZXJhdGVDU1NT
dHJpbmcoZmlyc3QoKS0+Y3NzVGV4dCgpLCBzZWNvbmQoKS0+Y3NzVGV4dCgpKTsKICAgICB9CiAK
KyAgICBib29sIGVxdWFscyhjb25zdCBQYWlyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gY29tcGFy
ZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2ZpcnN0LCBvdGhlci5tX2ZpcnN0KSAm
JiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fc2Vjb25kLCBvdGhlci5t
X3NlY29uZCk7IH0KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0cmluZyBzZXJp
YWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
Zz4mIHZhcmlhYmxlcykgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaAppbmRleCBmZWVmODc1Li42ZWM0
YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9SZWN0LmgKQEAgLTM5LDYgKzM5LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEJvdHRvbShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBib3R0b20pIHsgbV9ib3R0b20g
PSBib3R0b207IH0KICAgICB2b2lkIHNldExlZnQoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gbGVmdCkgeyBtX2xlZnQgPSBsZWZ0OyB9CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBSZWN0
QmFzZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVl
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3RvcCwgb3RoZXIubV90b3ApCisgICAgICAgICAgICAm
JiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fcmlnaHQsIG90aGVyLm1f
cmlnaHQpCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+KG1fbGVmdCwgb3RoZXIubV9sZWZ0KQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVl
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2JvdHRvbSwgb3RoZXIubV9ib3R0b20pOworICAgIH0K
KwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIGJvb2wgaGFzVmFyaWFibGVSZWZlcmVu
Y2UoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCmluZGV4IGE0MDY0
Y2MuLjNlYjljMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcApAQCAtNzksNiArNzks
MTYgQEAgU3RyaW5nIFNoYWRvd1ZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gdGV4dC50b1N0cmluZygpOwogfQogCitib29sIFNoYWRvd1ZhbHVlOjplcXVhbHMoY29uc3Qg
U2hhZG93VmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+KGNvbG9yLCBvdGhlci5jb2xvcikKKyAgICAgICAgJiYgY29t
cGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPih4LCBvdGhlci54KQorICAgICAgICAm
JiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KHksIG90aGVyLnkpCisgICAg
ICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4oYmx1ciwgb3RoZXIu
Ymx1cikKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihz
cHJlYWQsIG90aGVyLnNwcmVhZCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1By
aW1pdGl2ZVZhbHVlPihzdHlsZSwgb3RoZXIuc3R5bGUpOworfQorCiB2b2lkIFNoYWRvd1ZhbHVl
OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1
ZS5oCmluZGV4IGYyZDhlNmYuLmEzNTNkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TaGFkb3dWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5oCkBA
IC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29u
c3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBTaGFkb3dWYWx1ZSYpIGNvbnN0OworCiAgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4IDlmMDdhZmQuLjJkYzhhOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTMyMiw5ICszMjIsOSBAQCBTdHJpbmcgU3R5
bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBz
aG9ydGhhbmQpIGNvbgogICAgIGlmICh0b3AuaXNJbXBvcnRhbnQoKSAhPSByaWdodC5pc0ltcG9y
dGFudCgpIHx8IHJpZ2h0LmlzSW1wb3J0YW50KCkgIT0gYm90dG9tLmlzSW1wb3J0YW50KCkgfHwg
Ym90dG9tLmlzSW1wb3J0YW50KCkgIT0gbGVmdC5pc0ltcG9ydGFudCgpKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKLSAgICBib29sIHNob3dMZWZ0ID0gcmlnaHQudmFsdWUoKS0+Y3NzVGV4
dCgpICE9IGxlZnQudmFsdWUoKS0+Y3NzVGV4dCgpOwotICAgIGJvb2wgc2hvd0JvdHRvbSA9ICh0
b3AudmFsdWUoKS0+Y3NzVGV4dCgpICE9IGJvdHRvbS52YWx1ZSgpLT5jc3NUZXh0KCkpIHx8IHNo
b3dMZWZ0OwotICAgIGJvb2wgc2hvd1JpZ2h0ID0gKHRvcC52YWx1ZSgpLT5jc3NUZXh0KCkgIT0g
cmlnaHQudmFsdWUoKS0+Y3NzVGV4dCgpKSB8fCBzaG93Qm90dG9tOworICAgIGJvb2wgc2hvd0xl
ZnQgPSAhcmlnaHQudmFsdWUoKS0+ZXF1YWxzKCpsZWZ0LnZhbHVlKCkpOworICAgIGJvb2wgc2hv
d0JvdHRvbSA9ICF0b3AudmFsdWUoKS0+ZXF1YWxzKCpib3R0b20udmFsdWUoKSkgfHwgc2hvd0xl
ZnQ7CisgICAgYm9vbCBzaG93UmlnaHQgPSAhdG9wLnZhbHVlKCktPmVxdWFscygqcmlnaHQudmFs
dWUoKSkgfHwgc2hvd0JvdHRvbTsKIAogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJl
c3VsdC5hcHBlbmQodG9wLnZhbHVlKCktPmNzc1RleHQoKSk7CkBAIC0xMTE0LDcgKzExMTQsNyBA
QCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OnByb3BlcnR5TWF0Y2hlcyhjb25zdCBQcm9wZXJ0eVJl
ZmVyZW5jZSYgcHJvcGVydHkpIGNvbnN0CiAgICAgaW50IGZvdW5kUHJvcGVydHlJbmRleCA9IGZp
bmRQcm9wZXJ0eUluZGV4KHByb3BlcnR5LmlkKCkpOwogICAgIGlmIChmb3VuZFByb3BlcnR5SW5k
ZXggPT0gLTEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcHJvcGVydHlBdChm
b3VuZFByb3BlcnR5SW5kZXgpLnZhbHVlKCktPmNzc1RleHQoKSA9PSBwcm9wZXJ0eS52YWx1ZSgp
LT5jc3NUZXh0KCk7CisgICAgcmV0dXJuIHByb3BlcnR5QXQoZm91bmRQcm9wZXJ0eUluZGV4KS52
YWx1ZSgpLT5lcXVhbHMoKnByb3BlcnR5LnZhbHVlKCkpOwogfQogICAgIAogdm9pZCBTdHlsZVBy
b3BlcnR5U2V0OjpyZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5
U2V0KiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NBcnJh
eUZ1bmN0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVu
Y3Rpb25WYWx1ZS5jcHAKaW5kZXggMmExN2E0NC4uZjU2NDBhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTU2LDYgKzU2
LDExIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlPiBXZWJLaXRDU1NB
cnJheUZ1bmN0aW9uVmFsdWU6OmNsb25lRm9yQ1NTCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUoKnRoaXMpKTsKIH0KIAorYm9vbCBXZWJLaXRDU1NB
cnJheUZ1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFs
dWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBDU1NWYWx1ZUxpc3Q6OmVxdWFscyhvdGhl
cik7Cit9CisKIHZvaWQgV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
IHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJD
b3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
QXJyYXlGdW5jdGlvblZhbHVlLmgKaW5kZXggYmFmMjc4Mi4uZmMzYWJhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuaApAQCAtNDgsNiAr
NDgsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU0FycmF5RnVuY3Rpb25W
YWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgV2Vi
S2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAppbmRleCBmMWExZTBl
Li4wNzBlZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVy
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5j
cHAKQEAgLTExMSw2ICsxMTEsMTEgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4g
V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViS2l0Q1NTRmlsdGVyVmFsdWUoKnRoaXMpKTsKIH0KIAorYm9vbCBXZWJL
aXRDU1NGaWx0ZXJWYWx1ZTo6ZXF1YWxzKGNvbnN0IFdlYktpdENTU0ZpbHRlclZhbHVlJiBvdGhl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZSAmJiBDU1NWYWx1
ZUxpc3Q6OmVxdWFscyhvdGhlcik7Cit9CisKIHZvaWQgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU0ZpbHRlclZhbHVlLmgKaW5kZXggMDhiM2U5Zi4uYjI0MDA3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgog
CiAgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNv
bnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgV2ViS2l0Q1NTRmlsdGVyVmFsdWUmKSBjb25z
dDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NNaXhGdW5jdGlvblZhbHVlLmNwcAppbmRleCAzYWY2ODdlLi5jMDhiODQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwCkBAIC01Niw2
ICs1NiwxMSBAQCBQYXNzUmVmUHRyPFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU+IFdlYktpdENT
U01peEZ1bmN0aW9uVmFsdWU6OmNsb25lRm9yQ1NTT00oKQogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSgqdGhpcykpOwogfQogCitib29sIFdlYktpdENT
U01peEZ1bmN0aW9uVmFsdWU6OmVxdWFscyhjb25zdCBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVl
JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gQ1NTVmFsdWVMaXN0OjplcXVhbHMob3RoZXIp
OworfQorCiB2b2lkIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewog
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVN
ZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NNaXhGdW5jdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVu
Y3Rpb25WYWx1ZS5oCmluZGV4IDdiYzA3YjQuLmNiOTkzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaApAQCAtNDgsNiArNDgsOCBAQCBwdWJs
aWM6CiAKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU+IGNsb25lRm9y
Q1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IFdlYktpdENTU01peEZ1bmN0
aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcAppbmRleCBiNDM0ZWVjLi5mZWY3
NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFs
dWUuY3BwCkBAIC02Nyw2ICs2NywxMSBAQCBTdHJpbmcgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1
ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHF1b3RlQ1NTU3RyaW5nSWZOZWVk
ZWQobV91cmwpOwogfQogCitib29sIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OmVxdWFscyhj
b25zdCBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1
cm4gbV91cmwgPT0gb3RoZXIubV91cmw7Cit9CisKIHZvaWQgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRW
YWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgKaW5kZXggOTZiY2M4Yy4uOWEzYWM2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5o
CkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNv
bnN0OwogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAg
ICBib29sIGxvYWRSZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRSZXF1ZXN0ZWQ7IH0K
KyAgICBib29sIGVxdWFscyhjb25zdCBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlJikgY29uc3Q7
CiAKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFk
ZXJWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3Bw
CmluZGV4IDkxYmRkZTIuLjM2ZTM3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NoYWRlclZhbHVlLmNwcApAQCAtODMsNiArODMsMTEgQEAgU3RyaW5nIFdlYktpdENTU1NoYWRl
clZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gInVybCgiICsgcXVvdGVD
U1NVUkxJZk5lZWRlZChtX3VybCkgKyAiKSI7CiB9CiAKK2Jvb2wgV2ViS2l0Q1NTU2hhZGVyVmFs
dWU6OmVxdWFscyhjb25zdCBXZWJLaXRDU1NTaGFkZXJWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fdXJsID09IG90aGVyLm1fdXJsOworfQorCiB2b2lkIFdlYktpdENTU1NoYWRl
clZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oCmluZGV4IGM0MzIwMWMuLjdiMDVlOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oCkBAIC01MCw2ICs1MCw4IEBA
IHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29s
IGVxdWFscyhjb25zdCBXZWJLaXRDU1NTaGFkZXJWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCBy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaApp
bmRleCBmZDExN2YyLi4xOGY3MGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
U3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyAgICBib29sIGVxdWFscyhjb25zdCBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBvdGhl
ci5tX3R5cGU7IH0KICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBTdHJpbmcgY3VzdG9t
U2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBT
dHJpbmc+JikgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcAppbmRleCAyOTZhNjNjLi4xMzJkMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCkBAIC0yNDUsOSArMjQ1LDcgQEAgYm9vbCBIVE1MQXR0cmlidXRlRXF1aXZh
bGVudDo6dmFsdWVJc1ByZXNlbnRJblN0eWxlKEVsZW1lbnQqIGVsZW1lbnQsIFN0eWxlUHJvcGUK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gYXR0cmlidXRlVmFsdWVBc0NTU1ZhbHVlKGVs
ZW1lbnQpOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3R5bGVWYWx1ZSA9IHN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7CiAgICAgCi0gICAgLy8gRklYTUU6IFRoaXMgaXMg
dmVyeSBpbmVmZmljaWVudCB3YXkgb2YgY29tcGFyaW5nIHZhbHVlcwotICAgIC8vIGJ1dCB3ZSBj
YW4ndCBzdHJpbmcgY29tcGFyZSBhdHRyaWJ1dGUgdmFsdWUgYW5kIENTUyBwcm9wZXJ0eSB2YWx1
ZS4KLSAgICByZXR1cm4gdmFsdWUgJiYgc3R5bGVWYWx1ZSAmJiB2YWx1ZS0+Y3NzVGV4dCgpID09
IHN0eWxlVmFsdWUtPmNzc1RleHQoKTsKKyAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRyPENT
U1ZhbHVlPih2YWx1ZSwgc3R5bGVWYWx1ZSk7CiB9CiAKIHZvaWQgSFRNTEF0dHJpYnV0ZUVxdWl2
YWxlbnQ6OmFkZFRvU3R5bGUoRWxlbWVudCogZWxlbWVudCwgRWRpdGluZ1N0eWxlKiBzdHlsZSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCmluZGV4IGEzNGFkMTguLjA5YWVlY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NvbG9yLmNwcApAQCAtMTA1LDYgKzEwNSwxMSBAQCBQYXNzUmVmUHRyPFNWR0Nv
bG9yPiBTVkdDb2xvcjo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTVkdDb2xvcihTVkdDb2xvckNsYXNzLCAqdGhpcykpOwogfQogCitib29sIFNWR0NvbG9y
OjplcXVhbHMoY29uc3QgU1ZHQ29sb3ImIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2Nv
bG9yVHlwZSA9PSBvdGhlci5tX2NvbG9yVHlwZSAmJiBtX2NvbG9yID09IG90aGVyLm1fY29sb3I7
Cit9CisKIHZvaWQgU1ZHQ29sb3I6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5m
byBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NvbG9yLmgKaW5kZXggN2RkZGNkNy4uNWIzNjBhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bG9yLmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogICAgIAogICAgIFBhc3NSZWZQdHI8U1ZH
Q29sb3I+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IFNW
R0NvbG9yJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQu
Y3BwCmluZGV4IGNjZTFmNGUuLjNjOWYzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYWludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcApAQCAt
MTEyLDYgKzExMiwxMSBAQCBQYXNzUmVmUHRyPFNWR1BhaW50PiBTVkdQYWludDo6Y2xvbmVGb3JD
U1NPTSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYWludCgqdGhpcykpOwog
fQogCitib29sIFNWR1BhaW50OjplcXVhbHMoY29uc3QgU1ZHUGFpbnQmIG90aGVyKSBjb25zdAor
eworICAgIHJldHVybiBtX3BhaW50VHlwZSA9PSBvdGhlci5tX3BhaW50VHlwZSAmJiBtX3VyaSA9
PSBvdGhlci5tX3VyaSAmJiBTVkdDb2xvcjo6ZXF1YWxzKG90aGVyKTsKK30KKwogdm9pZCBTVkdQ
YWludDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQu
aAppbmRleCBhYzU2NzViLi5hNmZkMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaApAQCAtOTUsNiAr
OTUsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPFNWR1BhaW50PiBjbG9uZUZvckNTU09N
KCkgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBTVkdQYWludCYpIGNvbnN0OworCiAg
ICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNv
bnN0OwogCiBwcml2YXRlOgo=
</data>
<flag name="commit-queue"
          id="201520"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183732</attachid>
            <date>2013-01-21 01:30:30 -0800</date>
            <delta_ts>2013-01-28 01:24:57 -0800</delta_ts>
            <desc>Patch 6</desc>
            <filename>webcore_cssvalue_operator_eq_6.patch</filename>
            <type>text/plain</type>
            <size>82216</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ODU0YjI3Li45MjFiZWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEt
MTYgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IENTU1ZhbHVlOjpvcGVyYXRvcj09KCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjkwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyBsYXlvdXQgdGVzdCB0byB2ZXJp
ZnkgdGhhdCBDU1NWYWx1ZSBvYmplY3RzIGNvbXBhcmlzb24gd29ya3MgcHJvcGVybHkuCisKKyAg
ICAgICAgKiBjc3NvbS9jc3N2YWx1ZS1jb21wYXJpc29uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi5odG1sOiBBZGRlZC4KKwogMjAxMy0w
MS0xNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IEZpeGluZyBjcmFzaGluZyBidWcgaW4gTWVkaWFTdHJlYW0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Nzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViZTQzYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Nzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNTkgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IENTU1ZhbHVlIG9iamVjdHMg
Y29tcGFyaXNvbiB3b3JrcyBjb3JyZWN0bHkuCisKKworUEFTUyBUd28gQ1NTVmFsdWVzICIyMCUi
IGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjJl
bSIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAi
MnJlbSIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVl
cyAiMjBweCIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1Zh
bHVlcyAiMmNtIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NT
VmFsdWVzICIyMG1tIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28g
Q1NTVmFsdWVzICI0aW4iIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3
byBDU1NWYWx1ZXMgIjIwcHQiIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgIjEwcGMiIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQ
QVNTIFR3byBDU1NWYWx1ZXMgIjZ2dyIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAK
K1BBU1MgVHdvIENTU1ZhbHVlcyAiNnZoIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICI0dm1pbiIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVx
dWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiLXdlYmtpdC1jYWxjKC0xMDBweCArIDEwMCUpIiBm
b3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJyb3Rh
dGUoMzBkZWcpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtdHJhbnNmb3JtIiBhcmUgZXF1YWwuIAor
UEFTUyBUd28gQ1NTVmFsdWVzICJ0cmFuc2xhdGUoNTBweCw1MHB4KSIgZm9yIHByb3BlcnR5ICIt
d2Via2l0LXRyYW5zZm9ybSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAic2NhbGUo
Miw0KSIgZm9yIHByb3BlcnR5ICItd2Via2l0LXRyYW5zZm9ybSIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAic2tldygzMGRlZywyMGRlZykiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10
cmFuc2Zvcm0iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIm1hdHJpeCgwLjQsMC41
LC0wLjUsMC40LDAsMCkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10cmFuc2Zvcm0iIGFyZSBlcXVh
bC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRv
cCwgbGVmdCBib3R0b20sIGZyb20oI2NjYyksIHRvKCMwMDApKSIgZm9yIHByb3BlcnR5ICJiYWNr
Z3JvdW5kIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICItd2Via2l0LWdyYWRpZW50
KHJhZGlhbCwgNDUgNDUsIDAsIDUyIDUwLCAwLCBmcm9tKCNBN0QzMEMpLCB0byhyZ2JhKDEsMTU5
LDk4LDApKSwgY29sb3Itc3RvcCg5MCUsICMwMTlGNjIpKSIgZm9yIHByb3BlcnR5ICJiYWNrZ3Jv
dW5kIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJib2xkIiBmb3IgcHJvcGVydHkg
ImZvbnQtd2VpZ2h0IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJpbmhlcml0IiBm
b3IgcHJvcGVydHkgImZvbnQtd2VpZ2h0IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVz
ICJhdHRyKGEpIiBmb3IgcHJvcGVydHkgImNvbnRlbnQiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBD
U1NWYWx1ZXMgImNvdW50ZXIoYSkiIGZvciBwcm9wZXJ0eSAiY29udGVudCIgYXJlIGVxdWFsLiAK
K1BBU1MgVHdvIENTU1ZhbHVlcyAiY291bnRlcnMoYSwgJy4nKSIgZm9yIHByb3BlcnR5ICJjb250
ZW50IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJyZWN0KDQwcHgsIDAsIDQ1cHgs
IC01cHgpIiBmb3IgcHJvcGVydHkgImNsaXAiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1
ZXMgIjMwcHggNzVweCAxNXB4IDE1cHgiIGZvciBwcm9wZXJ0eSAiYm9yZGVyLXJhZGl1cyIgYXJl
IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMTY0cHggLyA4MnB4IiBmb3IgcHJvcGVydHkg
ImJvcmRlci1yYWRpdXMiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjQwcHgiIGZv
ciBwcm9wZXJ0eSAiYm9yZGVyLXJhZGl1cyIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVl
cyAicmdiKDI1NSwwLDApIiBmb3IgcHJvcGVydHkgInN0b3AtY29sb3IiIGFyZSBlcXVhbC4gCitQ
QVNTIFR3byBDU1NWYWx1ZXMgIiNGRjU1NjYiIGZvciBwcm9wZXJ0eSAic3RvcC1jb2xvciIgYXJl
IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAicG9seWdvbihldmVub2RkLCAxMHB4IDc1cHgs
IDE4MHB4IDE4MHB4LCAxMDBweCAxMHB4LCAxMHB4IDE4MHB4LCAxODBweCA3NXB4LCAxMHB4IDc1
cHgpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtY2xpcC1wYXRoIiBhcmUgZXF1YWwuIAorUEFTUyBU
d28gQ1NTVmFsdWVzICIxMHMiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRp
b24iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjEwMG1zIiBmb3IgcHJvcGVydHkg
Ii13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFs
dWVzICJyZWQiIGZvciBwcm9wZXJ0eSAiY29sb3IiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NW
YWx1ZXMgImJsdWUiIGZvciBwcm9wZXJ0eSAiY29sb3IiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBD
U1NWYWx1ZXMgInVybChyZXNvdXJjZXMvZ3JlZW5ib3gucG5nKSAxIDIgMyA0IHJlcGVhdCBzdHJl
dGNoIiBmb3IgcHJvcGVydHkgImJvcmRlci1pbWFnZSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENT
U1ZhbHVlcyAidXJsKHJlc291cmNlcy9ncmVlbmJveC5wbmcpIDAgMCwgcG9pbnRlciIgZm9yIHBy
b3BlcnR5ICJjdXJzb3IiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIml0YWxpYyBi
b2xkIDEycHgvMzBweCBhcmlhbCIgZm9yIHByb3BlcnR5ICJmb250IiBhcmUgZXF1YWwuIAorUEFT
UyBUd28gQ1NTVmFsdWVzICItd2Via2l0LWltYWdlLXNldCh1cmwoZHVtbXk6Ly90ZXN0LnBuZykg
MXgsIHVybChkdW1teTovL3Rlc3QucG5nKSAyeCkiIGZvciBwcm9wZXJ0eSAiYmFja2dyb3VuZC1p
bWFnZSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiYmVsb3cgMTBweCIgZm9yIHBy
b3BlcnR5ICItd2Via2l0LWJveC1yZWZsZWN0IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFs
dWVzICJiZWxvdyAwcHggLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJv
dHRvbSwgZnJvbSh0cmFuc3BhcmVudCksIHRvKHJnYmEoMTAsIDU1LCAyMzQsIDEpKSkiIGZvciBw
cm9wZXJ0eSAiLXdlYmtpdC1ib3gtcmVmbGVjdCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1Zh
bHVlcyAiMCAtMjBweCAxMHB4IHJlZCwgMCAyMHB4IDEwcHggYmx1ZSIgZm9yIHByb3BlcnR5ICIt
d2Via2l0LWJveC1zaGFkb3ciIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjAgMjBw
eCAxMHB4IGJsdWUiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1ib3gtc2hhZG93IiBhcmUgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICI1cHggNXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMykiIGZv
ciBwcm9wZXJ0eSAiLXdlYmtpdC1ib3gtc2hhZG93IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NT
VmFsdWVzICJjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKSIgZm9yIHByb3BlcnR5ICIt
d2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiBhcmUgZXF1YWwuIAorUEFTUyBUd28g
Q1NTVmFsdWVzICJsaW5lYXIiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10cmFuc2l0aW9uLXRpbWlu
Zy1mdW5jdGlvbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAic3RlcHMoMywgZW5k
KSIgZm9yIHByb3BlcnR5ICItd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiBhcmUg
ZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJpbmxpbmUtYm94IiBmb3IgcHJvcGVydHkgIi13
ZWJraXQtbGluZS1ib3gtY29udGFpbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAi
Zm9udCIgZm9yIHByb3BlcnR5ICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iIGFyZSBlcXVhbC4g
CitQQVNTIFR3byBDU1NWYWx1ZXMgImdseXBocyIgZm9yIHByb3BlcnR5ICItd2Via2l0LWxpbmUt
Ym94LWNvbnRhaW4iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJlcGxhY2VkIiBm
b3IgcHJvcGVydHkgIi13ZWJraXQtbGluZS1ib3gtY29udGFpbiIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAiZ3JheXNjYWxlKDEwMCUpIHNlcGlhKDEwMCUpIiBmb3IgcHJvcGVydHkg
Ii13ZWJraXQtZmlsdGVyIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJkYXNoYm9h
cmQtcmVnaW9uKGxhYmVsIGNpcmNsZSkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1kYXNoYm9hcmQt
cmVnaW9uIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJkYXNoYm9hcmQtcmVnaW9u
KGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpIGRhc2hib2FyZC1yZWdpb24obGFiZWwgcmVj
dGFuZ2xlIDVweCA2cHggN3B4IDhweCkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1kYXNoYm9hcmQt
cmVnaW9uIiBhcmUgZXF1YWwuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3NvbS9jc3N2
YWx1ZS1jb21wYXJpc29uLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3NvbS9jc3N2YWx1ZS1jb21wYXJp
c29uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1NjBhNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24uaHRt
bApAQCAtMCwwICsxLDczIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+CisgIDx0
aXRsZT5DU1NWYWx1ZSBjb21wYXJpc29uIHRlc3Q8L3RpdGxlPgorICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW4o
KSI+Cis8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBDU1NWYWx1ZSBvYmplY3RzIGNvbXBhcmlz
b24gd29ya3MgY29ycmVjdGx5LjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48
L2Rpdj4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorc2V0dXAoeyAiZXhwbGlj
aXRfZG9uZSI6IHRydWUgfSk7CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICB2YXIgc3R5bGVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICBzdHlsZUVsZW1lbnQu
dHlwZSA9ICJ0ZXh0L2NzcyI7CisgICAgdmFyIHN0eWxlVGV4dE5vZGUgPSBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiIik7CisgICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKHN0eWxlVGV4dE5v
ZGUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5k
Q2hpbGQoc3R5bGVFbGVtZW50KTsKKworICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdCIpOworICAgIGRpdi5mb2N1cygpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdChw
cm9wZXJ0eU5hbWUsIHByb3BlcnR5VmFsdWUpIHsKKyAgICAgIHN0eWxlVGV4dE5vZGUuZGF0YSA9
ICJkaXYgeyAiICsgcHJvcGVydHlOYW1lICsgIiA6ICIgKyBwcm9wZXJ0eVZhbHVlICsgIjsgfSI7
CisgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCAiPGRpdiBp
ZD1cImluc2VydGVkRGl2XCIgc3R5bGU9XCIiICsgcHJvcGVydHlOYW1lICsgIiA6ICIgKyBwcm9w
ZXJ0eVZhbHVlICsgIjsgXCI+PC9kaXY+Iik7CisgICAgICB2YXIgaW5zZXJ0ZWREaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zZXJ0ZWREaXYnKTsKKyAgICAgIHZhciByZXN1bHQgPSB0
cnVlOworICAgICAgaWYgKHByb3BlcnR5TmFtZSBpbiBpbnNlcnRlZERpdi5zdHlsZSkKKyAgICAg
ICAgICByZXN1bHQgPSBpbnNlcnRlZERpdi5zdHlsZVtwcm9wZXJ0eU5hbWVdID09PSAiIjsKKyAg
ICAgIGluc2VydGVkRGl2LnJlbW92ZSgpOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICB2YXIgdGVzdHMgPSB7ICJ3aWR0aCIgOiBbIjIwJSIsICIyZW0iLCAiMnJlbSIsICIyMHB4
IiwgIjJjbSIsICIyMG1tIiwgIjRpbiIsICIyMHB0IiwgIjEwcGMiLCAiNnZ3IiwgIjZ2aCIsICI0
dm1pbiIsICItd2Via2l0LWNhbGMoLTEwMHB4ICsgMTAwJSkiXSwgLy8gbGVuZ3RocywgY2FsYwor
ICAgICAgICAgICAgICAgICAgIi13ZWJraXQtdHJhbnNmb3JtIiA6IFsicm90YXRlKDE1ZGVnKSIs
ICJyb3RhdGUoMS41NXJhZCkiLCAicm90YXRlKDIwMGdyYWQpIiwgInJvdGF0ZSgwLjV0dXJuKSJd
LCAvLyBhbmdsZQorICAgICAgICAgICAgICAgICAgImJhY2tncm91bmQiIDogWyJ1cmwoZHVtbXk6
Ly90ZXN0LnBuZykiXSwgLy8gdXJpCisgICAgICAgICAgICAgICAgICAiZm9udC13ZWlnaHQiIDog
WyJib2xkIiwgImluaGVyaXQiXSwgLy8gaWRlbnQKKyAgICAgICAgICAgICAgICAgICJjb250ZW50
IiA6IFsiYXR0cihhKSIsICJjb3VudGVyKGEpIiwgImNvdW50ZXJzKGEsICcuJykiXSwgLy8gYXR0
ciwgY291bnRlcgorICAgICAgICAgICAgICAgICAgImNsaXAiIDogWyJyZWN0KDQwcHgsIDAsIDQ1
cHgsIC01cHgpIl0sIC8vIHJlY3QKKyAgICAgICAgICAgICAgICAgICJib3JkZXItcmFkaXVzIiA6
IFsiMzBweCA3NXB4IDE1cHggMTVweCIsICIxNjRweCAvIDgycHgiLCAiNDBweCJdLCAvLyBxdWFk
cworICAgICAgICAgICAgICAgICAgInN0b3AtY29sb3IiIDogWyJyZ2IoMjU1LDAsMCkiLCAiI0ZG
NTU2NiJdLCAvLyBoZXgsIHJnYiBjb2xvcgorICAgICAgICAgICAgICAgICAgIi13ZWJraXQtY2xp
cC1wYXRoIiA6IFsicG9seWdvbihldmVub2RkLCAxMHB4IDc1cHgsIDE4MHB4IDE4MHB4LCAxMDBw
eCAxMHB4LCAxMHB4IDE4MHB4LCAxODBweCA3NXB4LCAxMHB4IDc1cHgpIl0sIC8vIHNoYXBlIHZh
bHVlCisgICAgICAgICAgICAgICAgICAiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24iIDogWyIx
MHMiLCAiMTAwbXMiXSwgLy8gc2Vjb25kcywgbWlsbGlzZWNvbmRzCisgICAgICAgICAgICAgICAg
ICAiY29sb3IiIDogWyJyZWQiLCAiYmx1ZSJdLCAvLyBpZGVudAorICAgICAgICAgICAgICAgICAg
ImJvcmRlci1pbWFnZSIgOiBbInVybChyZXNvdXJjZXMvZ3JlZW5ib3gucG5nKSAxIDIgMyA0IHJl
cGVhdCBzdHJldGNoIl0sIC8vIGJvcmRlciBpbWFnZSwgaW1hZ2UKKyAgICAgICAgICAgICAgICAg
ICJjdXJzb3IiIDogWyJ1cmwocmVzb3VyY2VzL2dyZWVuYm94LnBuZykgMCAwLCBwb2ludGVyIl0s
IC8vIGN1cnNvcgorICAgICAgICAgICAgICAgICAgImZvbnQiIDogWyJpdGFsaWMgYm9sZCAxMnB4
LzMwcHggYXJpYWwiXSwgLy8gZm9udAorICAgICAgICAgICAgICAgICAgImJhY2tncm91bmQiIDog
WyItd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCNj
Y2MpLCB0bygjMDAwKSkiLCAiLXdlYmtpdC1ncmFkaWVudChyYWRpYWwsIDQ1IDQ1LCAwLCA1MiA1
MCwgMCwgZnJvbSgjQTdEMzBDKSwgdG8ocmdiYSgxLDE1OSw5OCwwKSksIGNvbG9yLXN0b3AoOTAl
LCAjMDE5RjYyKSkiXSwgLy8gZ3JhZGllbnRzCisgICAgICAgICAgICAgICAgICAiYmFja2dyb3Vu
ZC1pbWFnZSIgOiBbIi13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoZHVtbXk6Ly9leGFtcGxlLnBuZyks
IHVybChkdW1teTovL2V4YW1wbGUucG5nKSwgNTAlKSJdLCAvLyBjcm9zc2ZhZGUKKyAgICAgICAg
ICAgICAgICAgICItd2Via2l0LWJveC1yZWZsZWN0IiA6IFsiYmVsb3cgMTBweCIsICJiZWxvdyAw
cHggLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSh0
cmFuc3BhcmVudCksIHRvKHJnYmEoMTAsIDU1LCAyMzQsIDEpKSkiXSwgLy8gcmVmbGVjdAorICAg
ICAgICAgICAgICAgICAgIi13ZWJraXQtYm94LXNoYWRvdyIgOiBbIjAgLTIwcHggMTBweCByZWQs
IDAgMjBweCAxMHB4IGJsdWUiLCAiMCAyMHB4IDEwcHggYmx1ZSIsICI1cHggNXB4IDVweCByZ2Jh
KDAsIDAsIDAsIDAuMykiXSwgLy8gc2hhZG93CisgICAgICAgICAgICAgICAgICAiLXdlYmtpdC10
cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIgOiBbImN1YmljLWJlemllcigwLjI1LCAwLjEsIDAu
MjUsIDEpIiwgImxpbmVhciIsICJzdGVwcygzLCBlbmQpIl0sIC8vIHRpbWluZyBmdW5jdGlvbnMK
KyAgICAgICAgICAgICAgICAgICItd2Via2l0LXRyYW5zZm9ybSIgOiBbInJvdGF0ZSgzMGRlZyki
LCAidHJhbnNsYXRlKDUwcHgsNTBweCkiLCAic2NhbGUoMiw0KSIsICJza2V3KDMwZGVnLDIwZGVn
KSIsICJtYXRyaXgoMC40LDAuNSwtMC41LDAuNCwwLDApIl0sIC8vIHRyYW5zZm9ybXMKKyAgICAg
ICAgICAgICAgICAgICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iIDogWyJpbmxpbmUtYm94Iiwg
ImZvbnQiLCAiZ2x5cGhzIiwgInJlcGxhY2VkIl0sIC8vIGxpbmUtYm94LWNvbnRhaW4KKyAgICAg
ICAgICAgICAgICAgICJiYWNrZ3JvdW5kLWltYWdlIiA6IFsiLXdlYmtpdC1pbWFnZS1zZXQodXJs
KGR1bW15Oi8vdGVzdC5wbmcpIDF4LCB1cmwoZHVtbXk6Ly90ZXN0LnBuZykgMngpIl0sIC8vIGlt
YWdlIHNldAorICAgICAgICAgICAgICAgICAgIi13ZWJraXQtZmlsdGVyIiA6IFsiZ3JheXNjYWxl
KDEwMCUpIHNlcGlhKDEwMCUpIl0sIC8vIGZpbHRlcgorICAgICAgICAgICAgICAgICAgIi13ZWJr
aXQtZGFzaGJvYXJkLXJlZ2lvbiIgOiBbImRhc2hib2FyZC1yZWdpb24obGFiZWwgY2lyY2xlKSIs
ICJkYXNoYm9hcmQtcmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpIGRhc2hib2Fy
ZC1yZWdpb24obGFiZWwgcmVjdGFuZ2xlIDVweCA2cHggN3B4IDhweCkiXSAvLyBkYXNoYm9hcmQg
cmVnaW9uCisgICAgICAgICAgICAgICAgICB9OworCisgICAgZm9yICh2YXIga2V5IGluIHRlc3Rz
KSB7CisgICAgICAgdmFyIHZhbHVlcyA9IHRlc3RzW2tleV07CisgICAgICAgZm9yKHZhciBpbmRl
eCBpbiB2YWx1ZXMpCisgICAgICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7YXNzZXJ0X3RydWUocnVu
VGVzdChrZXksIHZhbHVlc1tpbmRleF0pKX0sICJUd28gQ1NTVmFsdWVzIFwiIiArIHZhbHVlc1tp
bmRleF0gKyAiXCIgZm9yIHByb3BlcnR5IFwiIiArIGtleSArICJcIiBhcmUgZXF1YWwuIik7Cisg
ICAgfQorCisgICAgZG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBlM2I4NTc1Li45NTUwMGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIxIEBA
CisyMDEzLTAxLTEwICBBbGV4YW5kZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50
ZWwuY29tPgorCisgICAgICAgIEltcGxlbWVudCBDU1NWYWx1ZTo6b3BlcmF0b3I9PSgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb21wYXJp
c29uIG1ldGhvZCB0byBDU1NWYWx1ZSBhbmQgaXRzIGNoaWxkcmVuLCBzbyB0aGF0IHRoZQorICAg
ICAgICBjc3MgdmFsdWVzIGNvdWxkIGJlIGNvbXBhcmVkIGVmZmljaWVudGx5LiBCZWZvcmUgdGhp
cyBwYXRjaCwgQ1NTVmFsdWUKKyAgICAgICAgb2JqZWN0cyB3ZXJlIGNvbXBhcmVkIHVzaW5nIHN0
cmluZ3MgdGhhdCB3ZXJlIGdlbmVyYXRlZCBieSB0aGUgY3NzVGV4dCgpIG1ldGhvZC4KKworICAg
ICAgICBUZXN0OiBjc3NvbS9jc3N2YWx1ZS1jb21wYXJpc29uLmh0bWwKKworICAgICAgICBJbXBs
ZW1lbnQgQ1NTVmFsdWU6Om9wZXJhdG9yPT0oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi5odG1s
CisKKyAgICAgICAgKiBjc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NBc3BlY3RSYXRpb1ZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKENTU0FzcGVjdFJh
dGlvVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xlOjplcXVhbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVsbGlwc2U6OmVxdWFscyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NCYXNpY1NoYXBlUG9seWdvbjo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvQ1NT
QmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVSZWN0YW5nbGUpOgorICAgICAg
ICAoQ1NTQmFzaWNTaGFwZUNpcmNsZSk6CisgICAgICAgIChDU1NCYXNpY1NoYXBlRWxsaXBzZSk6
CisgICAgICAgIChDU1NCYXNpY1NoYXBlUG9seWdvbik6CisgICAgICAgICogY3NzL0NTU0JvcmRl
ckltYWdlU2xpY2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlLmg6CisgICAgICAgIChDU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWUpOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbGNWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoQ1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNQcmltaXRpdmVW
YWx1ZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjpl
cXVhbHMpOgorICAgICAgICAoQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjp0eXBlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0V4cHJlc3Npb25Ob2Rl
OjplcXVhbHMpOgorICAgICAgICAoQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKENT
U0NhbGNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6CisgICAgICAgIChDU1NDYW52YXNWYWx1ZSk6
CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQ
cm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3Nm
YWRlVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuaDoKKyAgICAgICAgKENTU0Nyb3NzZmFkZVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJz
b3JJbWFnZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0NTU0N1cnNvckltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0N1cnNvckltYWdlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oOgorICAgICAgICAoQ1NTRm9udEZhY2VTcmNW
YWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGNzcy9DU1NGdW5jdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NGdW5jdGlvblZhbHVl
KToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjplcXVhbHMpOgorICAgICAg
ICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVu
dENvbG9yU3RvcDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NMaW5lYXJHcmFkaWVudFZhbHVl
KToKKyAgICAgICAgKENTU1JhZGlhbEdyYWRpZW50VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmVxdWFscyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5oOgorICAg
ICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0luaGVyaXRlZFZhbHVlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbmhlcml0ZWRWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAg
KENTU0luaGVyaXRlZFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW5pdGlhbFZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbml0aWFsVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChDU1NJ
bml0aWFsVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlOjplcXVhbHMpOgorICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9D
U1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NSZWZsZWN0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmVmbGVj
dFZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU1Jl
ZmxlY3RWYWx1ZS5oOgorICAgICAgICAoQ1NTUmVmbGVjdFZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKToKKyAg
ICAgICAgKiBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKENTU0xpbmVh
clRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvblZhbHVlKToKKyAgICAgICAgKENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSk6CisgICAg
ICAgICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1VuaWNvZGVSYW5nZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmg6CisgICAgICAgIChDU1NVbmljb2RlUmFuZ2VW
YWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNTU1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKENT
U1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNT
U1ZhbHVlVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVDU1NWYWx1ZVB0cik6Cisg
ICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1
ZUxpc3Q6OnJlbW92ZUFsbCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6Omhhc1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6ZXF1YWxzKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKENTU1Zh
bHVlTGlzdCk6CisgICAgICAgICogY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ZhcmlhYmxlVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChDU1NWYXJpYWJsZVZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ291bnRlci5oOgorICAgICAgICAoQ291bnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDb3VudGVyOjplcXVhbHMpOgorICAgICAgICAqIGNzcy9EYXNoYm9hcmRS
ZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhc2hib2FyZFJlZ2lvbjo6ZXF1YWxzKToKKyAg
ICAgICAgKiBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
RmVhdHVyZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0ZvbnRGZWF0dXJlVmFsdWUuaDoKKyAgICAgICAgKEZvbnRGZWF0dXJlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9Gb250VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhbHVlOjplcXVh
bHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0ZvbnRWYWx1ZS5oOgorICAg
ICAgICAoRm9udFZhbHVlKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4cC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV4cDo6b3BlcmF0b3I9PSk6CisgICAgICAgICogY3NzL1Bh
aXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6OmVxdWFscyk6CisgICAgICAgIChQYWlyKToK
KyAgICAgICAgKiBjc3MvUmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEJhc2U6OmVxdWFs
cyk6CisgICAgICAgIChSZWN0QmFzZSk6CisgICAgICAgICogY3NzL1NoYWRvd1ZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1ZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChTaGFkb3dWYWx1ZSk6
CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBy
b3BlcnR5U2V0Ojpwcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NBcnJh
eUZ1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTQXJyYXlGdW5j
dGlvblZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dl
YktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTQXJyYXlGdW5j
dGlvblZhbHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAg
KFdlYktpdENTU0ZpbHRlclZhbHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVl
OjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01p
eEZ1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUpOgor
ICAgICAgICAqIGNzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oOgorICAgICAg
ICAoV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU1No
YWRlclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1NoYWRlclZhbHVlOjpl
cXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU1NoYWRl
clZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NTaGFkZXJWYWx1ZSk6CisgICAgICAgICogY3Nz
L1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0cmlidXRlRXF1aXZhbGVudDo6dmFsdWVJc1By
ZXNlbnRJblN0eWxlKToKKyAgICAgICAgKiBzdmcvU1ZHQ29sb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQ29sb3I6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBz
dmcvU1ZHQ29sb3IuaDoKKyAgICAgICAgKFNWR0NvbG9yKToKKyAgICAgICAgKiBzdmcvU1ZHUGFp
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OmVxdWFscyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAgICAgKFNWR1BhaW50KToK
KwogMjAxMy0wMS0xNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEZpeGluZyBjcmFzaGluZyBidWcgaW4gTWVkaWFTdHJl
YW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcAppbmRleCA4MzBm
OGNmLi5jZGUwZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0
aW9WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUu
Y3BwCkBAIC0zOSw2ICszOSwxMSBAQCBTdHJpbmcgQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6Y3VzdG9t
Q3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fbnVtZXJhdG9yVmFs
dWUpICsgJy8nICsgU3RyaW5nOjpudW1iZXIobV9kZW5vbWluYXRvclZhbHVlKTsKIH0KIAorYm9v
bCBDU1NBc3BlY3RSYXRpb1ZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQXNwZWN0UmF0aW9WYWx1ZSYg
b3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbnVtZXJhdG9yVmFsdWUgPT0gb3RoZXIubV9u
dW1lcmF0b3JWYWx1ZSAmJiBtX2Rlbm9taW5hdG9yVmFsdWUgPT0gb3RoZXIubV9kZW5vbWluYXRv
clZhbHVlOworfQorCiB2b2lkIENTU0FzcGVjdFJhdGlvVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewog
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVN
ZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3Bl
Y3RSYXRpb1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5o
CmluZGV4IDVjYzMzOTIuLmQ5YzVkZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBc3BlY3RSYXRpb1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJh
dGlvVmFsdWUuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgbnVtZXJhdG9y
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX251bWVyYXRvclZhbHVlOyB9CiAgICAgZmxvYXQgZGVu
b21pbmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVub21pbmF0b3JWYWx1ZTsgfQogCisg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQXNwZWN0UmF0aW9WYWx1ZSYpIGNvbnN0OworCiAgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hh
cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggM2Zk
YTZiMS4uYTI2M2QwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hh
cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJDU1NCYXNpY1No
YXBlcy5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKIAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNzQsNiArNzUsMjAgQEAgU3RyaW5n
IENTU0Jhc2ljU2hhcGVSZWN0YW5nbGU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICBtX3JhZGl1
c1kuZ2V0KCkgPyBtX3JhZGl1c1ktPmNzc1RleHQoKSA6IFN0cmluZygpKTsKIH0KIAorYm9vbCBD
U1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgc2hhcGUp
IGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSAhPSBzaGFwZS50eXBlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVSZWN0YW5nbGUmIG90aGVyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSY+KHNoYXBlKTsKKyAgICByZXR1
cm4gY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3gsIG90aGVyLm1feCkK
KyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3ksIG90
aGVyLm1feSkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PihtX3dpZHRoLCBvdGhlci5tX3dpZHRoKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+KG1faGVpZ2h0LCBvdGhlci5tX2hlaWdodCkKKyAgICAgICAgJiYg
Y29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3JhZGl1c1gsIG90aGVyLm1f
cmFkaXVzWCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PihtX3JhZGl1c1ksIG90aGVyLm1fcmFkaXVzWSk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKIFN0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpzZXJpYWxpemVSZXNvbHZpbmdW
YXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykg
Y29uc3QKIHsKQEAgLTEwNiw2ICsxMjEsMTcgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJjbGU6
OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZENpcmNsZVN0cmluZyhtX2NlbnRlclgt
PmNzc1RleHQoKSwgbV9jZW50ZXJZLT5jc3NUZXh0KCksIG1fcmFkaXVzLT5jc3NUZXh0KCkpOwog
fQogCitib29sIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBl
JiBzaGFwZSkgY29uc3QKK3sKKyAgICBpZiAodHlwZSgpICE9IHNoYXBlLnR5cGUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgQ1NTQmFzaWNTaGFwZUNpcmNsZSYgb3RoZXIg
PSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlQ2lyY2xlJj4oc2hhcGUpOworICAgIHJl
dHVybiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fY2VudGVyWCwgb3Ro
ZXIubV9jZW50ZXJYKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+KG1fY2VudGVyWSwgb3RoZXIubV9jZW50ZXJZKQorICAgICAgICAmJiBjb21wYXJlQ1NT
VmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fcmFkaXVzLCBvdGhlci5tX3JhZGl1cyk7Cit9
CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NCYXNpY1NoYXBlQ2lyY2xl
OjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTEzMiw2ICsxNTgsMTggQEAgU3RyaW5n
IENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gYnVpbGRF
bGxpcHNlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBtX2NlbnRlclktPmNzc1RleHQoKSwg
bV9yYWRpdXNYLT5jc3NUZXh0KCksIG1fcmFkaXVzWS0+Y3NzVGV4dCgpKTsKIH0KIAorYm9vbCBD
U1NCYXNpY1NoYXBlRWxsaXBzZTo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBj
b25zdAoreworICAgIGlmICh0eXBlKCkgIT0gc2hhcGUudHlwZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBjb25zdCBDU1NCYXNpY1NoYXBlRWxsaXBzZSYgb3RoZXIgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlRWxsaXBzZSY+KHNoYXBlKTsKKyAgICByZXR1cm4gY29t
cGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2NlbnRlclgsIG90aGVyLm1fY2Vu
dGVyWCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiht
X2NlbnRlclksIG90aGVyLm1fY2VudGVyWSkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPihtX3JhZGl1c1gsIG90aGVyLm1fcmFkaXVzWCkKKyAgICAgICAg
JiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3JhZGl1c1ksIG90aGVy
Lm1fcmFkaXVzWSk7Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NC
YXNpY1NoYXBlRWxsaXBzZTo6c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JiB2YXJpYWJsZXMpIGNvbnN0CiB7CkBAIC0xOTksNiAr
MjM3LDE1IEBAIFN0cmluZyBDU1NCYXNpY1NoYXBlUG9seWdvbjo6Y3NzVGV4dCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGJ1aWxkUG9seWdvblN0cmluZyhtX3dpbmRSdWxlLCBwb2ludHMpOwogfQogCiti
b29sIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjplcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYgc2hh
cGUpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUoKSAhPSBzaGFwZS50eXBlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVQb2x5Z29uJiByaHMgPSBzdGF0
aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlUG9seWdvbiY+KHNoYXBlKTsKKyAgICByZXR1cm4g
Y29tcGFyZUNTU1ZhbHVlVmVjdG9yPENTU1ByaW1pdGl2ZVZhbHVlPihtX3ZhbHVlcywgcmhzLm1f
dmFsdWVzKTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5nIENTU0Jhc2lj
U2hhcGVQb2x5Z29uOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxB
dG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Jhc2ljU2hhcGVzLmgKaW5kZXggZWYzMjA5OC4uOGRiMGQyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Jhc2ljU2hhcGVzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dCA9IDA7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBz
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdCA9IDA7CkBAIC04Miw2ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX1JFQ1RBTkdMRTsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhj
b25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwpAQCAtMTEzLDYgKzEx
NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
Q1NTX0JBU0lDX1NIQVBFX0NJUkNMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25z
dDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlh
bGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5n
PiYpIGNvbnN0OwpAQCAtMTQzLDYgKzE0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX0VMTElQU0U7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGVxdWFscyhj
b25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykK
ICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKQEAgLTE3Nyw3ICsxODEsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENTU19CQVNJ
Q19TSEFQRV9QT0xZR09OOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0Owot
CisgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAj
aWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4IDdk
MWIzZGEuLjAyZGNkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUuY3BwCkBAIC01MCw2ICs1MCwxMSBAQCBTdHJpbmcgQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAor
Ym9vbCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2ZpbGwgPT0gb3RoZXIu
bV9maWxsICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9zbGljZXMs
IG90aGVyLm1fc2xpY2VzKTsKK30KKwogdm9pZCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRleCA0ODhiNGE0Li5jMjg2ZThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCkBAIC00NSw2ICs0
NSw4IEBAIHB1YmxpYzoKIAogICAgIFF1YWQqIHNsaWNlcygpIHsgcmV0dXJuIG1fc2xpY2VzID8g
bV9zbGljZXMtPmdldFF1YWRWYWx1ZSgpIDogMDsgfQogCisgICAgYm9vbCBlcXVhbHMoY29uc3Qg
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKICAgICAvLyBUaGVz
ZSBmb3VyIHZhbHVlcyBhcmUgdXNlZCB0byBtYWtlICJjdXRzIiBpbiB0aGUgYm9yZGVyIGltYWdl
LiBUaGV5IGNhbiBiZSBudW1iZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5jcHAKaW5kZXggMWMxNThjYy4uMjg2MDk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtOTUsNiArOTUsMTEgQEAgU3RyaW5nIENTU0NhbGNW
YWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGJ1aWxkQ3NzVGV4dChtX2V4
cHJlc3Npb24tPmN1c3RvbUNzc1RleHQoKSk7CiB9CiAKK2Jvb2wgQ1NTQ2FsY1ZhbHVlOjplcXVh
bHMoY29uc3QgQ1NTQ2FsY1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGFy
ZUNTU1ZhbHVlUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4obV9leHByZXNzaW9uLCBvdGhlci5t
X2V4cHJlc3Npb24pOworfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NT
Q2FsY1ZhbHVlOjpjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTIyMywxMSAr
MjI4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDA7ICAgICAgICAKICAgICB9CiAKKyAg
ICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9kZSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPihtX3ZhbHVlLCBzdGF0aWNfY2FzdDxjb25zdCBDU1NDYWxjUHJp
bWl0aXZlVmFsdWUmPihvdGhlcikubV92YWx1ZSk7CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CiAgICAgICAgIGluZm8u
YWRkTWVtYmVyKG1fdmFsdWUpOwogICAgIH0KKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gQ3NzQ2FsY1ByaW1pdGl2ZVZhbHVlOyB9CiAgICAgCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IENTU0NhbGNQcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUs
IGJvb2wgaXNJbnRlZ2VyKQpAQCAtMzU5LDYgKzM3NCwxOSBAQCBwdWJsaWM6CiAgICAgfQogI2Vu
ZGlmCiAKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9k
ZSYgZXhwKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHR5cGUoKSAhPSBleHAudHlwZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IENTU0NhbGNCaW5hcnlP
cGVyYXRpb24mIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlv
biY+KGV4cCk7CisgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTQ2FsY0V4cHJl
c3Npb25Ob2RlPihtX2xlZnRTaWRlLCBvdGhlci5tX2xlZnRTaWRlKQorICAgICAgICAgICAgJiYg
Y29tcGFyZUNTU1ZhbHVlUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4obV9yaWdodFNpZGUsIG90
aGVyLm1fcmlnaHRTaWRlKQorICAgICAgICAgICAgJiYgbV9vcGVyYXRvciA9PSBvdGhlci5tX29w
ZXJhdG9yOworICAgIH0KKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
Q3NzQ2FsY0JpbmFyeU9wZXJhdGlvbjsgfQorCiBwcml2YXRlOgogICAgIENTU0NhbGNCaW5hcnlP
cGVyYXRpb24oUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGxlZnRTaWRlLCBQYXNz
UmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gcmlnaHRTaWRlLCBDYWxjT3BlcmF0b3Igb3As
IENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkpCiAgICAgICAgIDogQ1NTQ2FsY0V4cHJlc3Np
b25Ob2RlKGNhdGVnb3J5LCBsZWZ0U2lkZS0+aXNJbnRlZ2VyKCkgJiYgcmlnaHRTaWRlLT5pc0lu
dGVnZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4IDA0
NGNmMzIuLjU2OWRiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxh
dGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
aApAQCAtNjAsNyArNjAsMTEgQEAgZW51bSBDYWxjdWxhdGlvbkNhdGVnb3J5IHsKICAgICAKIGNs
YXNzIENTU0NhbGNFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0NhbGNFeHBy
ZXNzaW9uTm9kZT4gewogcHVibGljOgotICAgIAorICAgIGVudW0gVHlwZSB7CisgICAgICAgIENz
c0NhbGNQcmltaXRpdmVWYWx1ZSA9IDEsCisgICAgICAgIENzc0NhbGNCaW5hcnlPcGVyYXRpb24K
KyAgICB9OworCiAgICAgdmlydHVhbCB+Q1NTQ2FsY0V4cHJlc3Npb25Ob2RlKCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpc1plcm8oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzT3duUHRy
PENhbGNFeHByZXNzaW9uTm9kZT4gdG9DYWxjVmFsdWUoUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLCBkb3VibGUgem9vbSA9IDEuMCkgY29uc3QgPSAwOyAgICAKQEAgLTcxLDkg
Kzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdW
YXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QgPSAwOwogI2Vu
ZGlmCi0KKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9k
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2F0ZWdvcnkgPT0gb3RoZXIubV9jYXRlZ29yeSAm
JiBtX2lzSW50ZWdlciA9PSBvdGhlci5tX2lzSW50ZWdlcjsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgPSAwOwotICAgIAorICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOworCiAgICAgQ2FsY3VsYXRpb25DYXRlZ29y
eSBjYXRlZ29yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2F0ZWdvcnk7IH0gICAgCiAgICAgYm9vbCBp
c0ludGVnZXIoKSBjb25zdCB7IHJldHVybiBtX2lzSW50ZWdlcjsgfQogICAgIApAQCAtMTA0LDYg
KzEwOSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aFB4KFJlbmRlclN0eWxl
KiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVy
ID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpIGNvbnN0OwogICAgICAgICAK
ICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworICAgIGJvb2wgZXF1YWxzKGNvbnN0
IENTU0NhbGNWYWx1ZSYpIGNvbnN0OwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0
cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKICAgICBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCAzYWVhMTdj
Li44OGFmNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKQEAgLTk2LDYg
Kzk2LDExIEBAIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0NhbnZhc1ZhbHVlOjppbWFnZShSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiAvCiAgICAgcmV0dXJuIGVsdC0+Y29waWVk
SW1hZ2UoKTsKIH0KIAorYm9vbCBDU1NDYW52YXNWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0NhbnZh
c1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uYW1lID09IG90aGVyLm1fbmFt
ZTsKK30KKwogdm9pZCBDU1NDYW52YXNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5
Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVz
OjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAppbmRleCAxM2ZiNTg3Li43NzIy
OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApAQCAtNDcsNiArNDcsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopIHsgfQogCisgICAgYm9v
bCBlcXVhbHMoY29uc3QgQ1NTQ2FudmFzVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggZDU3Nzc3Mi4uYzZjYTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI2MDIsNyArMjYwMiw3IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlE
IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyTGVmdCB9OwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBX
VEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAo
dmFsdWUtPmNzc1RleHQoKSAhPSAgZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldLCBE
b05vdFVwZGF0ZUxheW91dCktPmNzc1RleHQoKSkKKyAgICAgICAgICAgICAgICBpZiAoIWNvbXBh
cmVDU1NWYWx1ZVB0cjxDU1NWYWx1ZT4odmFsdWUsIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVy
dGllc1tpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZSgpOwpA
QCAtMjgyNiw3ICsyODI2LDcgQEAgYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNz
c1Byb3BlcnR5TWF0Y2hlcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0OjpQcm8KICAgICAgICAgfQog
ICAgIH0KICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShw
cm9wZXJ0eS5pZCgpKTsKLSAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUtPmNzc1RleHQoKSA9PSBw
cm9wZXJ0eS52YWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgcmV0dXJuIHZhbHVlICYmIHByb3BlcnR5
LnZhbHVlKCkgJiYgdmFsdWUtPmVxdWFscygqcHJvcGVydHkudmFsdWUoKSk7CiB9CiAKIFBhc3NS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjb3B5
KCkgY29uc3QKQEAgLTI4NjIsOSArMjg2Miw5IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2lkCiAg
ICAgaWYgKCF0b3BWYWx1ZSB8fCAhcmlnaHRWYWx1ZSB8fCAhYm90dG9tVmFsdWUgfHwgIWxlZnRW
YWx1ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBib29sIHNob3dMZWZ0ID0gcmlnaHRWYWx1
ZS0+Y3NzVGV4dCgpICE9IGxlZnRWYWx1ZS0+Y3NzVGV4dCgpOwotICAgIGJvb2wgc2hvd0JvdHRv
bSA9ICh0b3BWYWx1ZS0+Y3NzVGV4dCgpICE9IGJvdHRvbVZhbHVlLT5jc3NUZXh0KCkpIHx8IHNo
b3dMZWZ0OwotICAgIGJvb2wgc2hvd1JpZ2h0ID0gKHRvcFZhbHVlLT5jc3NUZXh0KCkgIT0gcmln
aHRWYWx1ZS0+Y3NzVGV4dCgpKSB8fCBzaG93Qm90dG9tOworICAgIGJvb2wgc2hvd0xlZnQgPSAh
Y29tcGFyZUNTU1ZhbHVlUHRyPENTU1ZhbHVlPihyaWdodFZhbHVlLCBsZWZ0VmFsdWUpOworICAg
IGJvb2wgc2hvd0JvdHRvbSA9ICFjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+KHRvcFZhbHVl
LCBib3R0b21WYWx1ZSkgfHwgc2hvd0xlZnQ7CisgICAgYm9vbCBzaG93UmlnaHQgPSAhY29tcGFy
ZUNTU1ZhbHVlUHRyPENTU1ZhbHVlPih0b3BWYWx1ZSwgcmlnaHRWYWx1ZSkgfHwgc2hvd0JvdHRv
bTsKIAogICAgIGxpc3QtPmFwcGVuZCh0b3BWYWx1ZSk7CiAgICAgaWYgKHNob3dSaWdodCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IDJiNzg4MmMuLmRiNTcx
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMjI5LDQg
KzIyOSwxMSBAQCBib29sIENTU0Nyb3NzZmFkZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ1NTQ3Jvc3Nm
YWRlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NWYWx1ZT4obV9mcm9tVmFsdWUsIG90
aGVyLm1fZnJvbVZhbHVlKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+
KG1fdG9WYWx1ZSwgb3RoZXIubV90b1ZhbHVlKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fcGVyY2VudGFnZVZhbHVlLCBvdGhlci5tX3BlcmNlbnRh
Z2VWYWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmgKaW5kZXggODBkMjZkMS4uY2YwZDM4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgogCiAgICAg
Ym9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKKyAgICBib29s
IGVxdWFscyhjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDMy
NjcwZWQuLmRhODFlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJ
bWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZS5jcHAKQEAgLTIxNyw2ICsyMTcsMTIgQEAgdm9pZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpyZW1v
dmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogfQogI2VuZGlmCiAKK2Jv
b2wgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0N1cnNvckltYWdlVmFsdWUm
IG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2hhc0hvdFNwb3QgPyBvdGhlci5tX2hhc0hv
dFNwb3QgJiYgbV9ob3RTcG90ID09IG90aGVyLm1faG90U3BvdCA6ICFvdGhlci5tX2hhc0hvdFNw
b3QKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ZhbHVlPihtX2ltYWdlVmFsdWUs
IG90aGVyLm1faW1hZ2VWYWx1ZSk7Cit9CisKIHZvaWQgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmgKaW5kZXggY2ZjNzhlYy4uZDA3NDg3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqKTsKICNlbmRpZgogCisgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9p
ZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmlu
ZGV4IDBkMWZhMTAuLjIwZDhmOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuY3BwCkBAIC0xMDQsNiArMTA0LDExIEBAIENhY2hlZEZvbnQqIENTU0ZvbnRGYWNl
U3JjVmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBtX2Nh
Y2hlZEZvbnQuZ2V0KCk7CiB9CiAKK2Jvb2wgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6ZXF1YWxzKGNv
bnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX2lz
TG9jYWwgPT0gb3RoZXIubV9pc0xvY2FsICYmIG1fZm9ybWF0ID09IG90aGVyLm1fZm9ybWF0ICYm
IG1fcmVzb3VyY2UgPT0gb3RoZXIubV9yZXNvdXJjZTsKK30KKwogdm9pZCBDU1NGb250RmFjZVNy
Y1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBhMmM1NDY2Li40OGM4Mzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVi
bGljOgogCiAgICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udChEb2N1bWVudCopOwogCisgICAgYm9v
bCBlcXVhbHMoY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCBy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IGJjMjk1
ODQuLjA3NTExNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAKQEAg
LTU5LDYgKzU5LDExIEBAIFN0cmluZyBDU1NGdW5jdGlvblZhbHVlOjpjdXN0b21Dc3NUZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgQ1NTRnVuY3Rp
b25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0Z1bmN0aW9uVmFsdWUmIG90aGVyKSBjb25zdAorewor
ICAgIHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxD
U1NWYWx1ZUxpc3Q+KG1fYXJncywgb3RoZXIubV9hcmdzKTsKK30KKwogdm9pZCBDU1NGdW5jdGlv
blZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRleCA0Y2NiNDc3Li4xNzljN2U1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAg
U3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0Z1bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCA3ZGMyMmJiLi5hYTcwMGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC02NTEsNiArNjUxLDM4IEBAIFBh
c3NSZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50
KFJlbmRlck9iamVjdCogcmVuZGVyCiAgICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2UoKTsKIH0K
IAorYm9vbCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fZ3JhZGllbnRUeXBlID09IENT
U0RlcHJlY2F0ZWRMaW5lYXJHcmFkaWVudCkKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fZ3JhZGll
bnRUeXBlID09IG1fZ3JhZGllbnRUeXBlCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmlyc3RYLCBvdGhlci5tX2ZpcnN0WCkKKyAgICAgICAg
ICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9maXJzdFksIG90
aGVyLm1fZmlyc3RZKQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPihtX3NlY29uZFgsIG90aGVyLm1fc2Vjb25kWCkKKyAgICAgICAgICAgICYmIGNv
bXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9zZWNvbmRZLCBvdGhlci5tX3Nl
Y29uZFkpCisgICAgICAgICAgICAmJiBtX3N0b3BzID09IG90aGVyLm1fc3RvcHM7CisKKyAgICBp
ZiAobV9yZXBlYXRpbmcgIT0gb3RoZXIubV9yZXBlYXRpbmcpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtX2FuZ2xlKQorICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPihtX2FuZ2xlLCBvdGhlci5tX2FuZ2xlKSAmJiBtX3N0b3BzID09
IG90aGVyLm1fc3RvcHM7CisKKyAgICBpZiAob3RoZXIubV9hbmdsZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYm9vbCBlcXVhbFhvclkgPSBmYWxzZTsKKyAgICBpZiAobV9maXJzdFgg
JiYgbV9maXJzdFkpCisgICAgICAgIGVxdWFsWG9yWSA9IGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4obV9maXJzdFgsIG90aGVyLm1fZmlyc3RYKSAmJiBjb21wYXJlQ1NTVmFs
dWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmlyc3RZLCBvdGhlci5tX2ZpcnN0WSk7CisgICAg
ZWxzZSBpZiAobV9maXJzdFgpCisgICAgICAgIGVxdWFsWG9yWSA9Y29tcGFyZUNTU1ZhbHVlUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPihtX2ZpcnN0WCwgb3RoZXIubV9maXJzdFgpICYmICFvdGhlci5t
X2ZpcnN0WTsKKyAgICBlbHNlIGlmIChtX2ZpcnN0WSkKKyAgICAgICAgZXF1YWxYb3JZID0gY29t
cGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2ZpcnN0WSwgb3RoZXIubV9maXJz
dFkpICYmICFvdGhlci5tX2ZpcnN0WDsKKyAgICBlbHNlCisgICAgICAgIGVxdWFsWG9yWSA9ICFv
dGhlci5tX2ZpcnN0WCB8fCAhb3RoZXIubV9maXJzdFk7CisKKyAgICByZXR1cm4gZXF1YWxYb3JZ
ICYmIG1fc3RvcHMgPT0gb3RoZXIubV9zdG9wczsKK30KKwogdm9pZCBDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CkBAIC05NzYsNiArMTAw
OCw1MiBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVh
dGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAgIHJldHVybiBncmFkaWVudC5yZWxl
YXNlKCk7CiB9CiAKK2Jvb2wgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENT
U1JhZGlhbEdyYWRpZW50VmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX2dyYWRpZW50
VHlwZSA9PSBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpCisgICAgICAgIHJldHVybiBvdGhl
ci5tX2dyYWRpZW50VHlwZSA9PSBtX2dyYWRpZW50VHlwZQorICAgICAgICAgICAgJiYgY29tcGFy
ZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2ZpcnN0WCwgb3RoZXIubV9maXJzdFgp
CisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1f
Zmlyc3RZLCBvdGhlci5tX2ZpcnN0WSkKKyAgICAgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9zZWNvbmRYLCBvdGhlci5tX3NlY29uZFgpCisgICAgICAg
ICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fc2Vjb25kWSwg
b3RoZXIubV9zZWNvbmRZKQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1By
aW1pdGl2ZVZhbHVlPihtX2ZpcnN0UmFkaXVzLCBvdGhlci5tX2ZpcnN0UmFkaXVzKQorICAgICAg
ICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3NlY29uZFJh
ZGl1cywgb3RoZXIubV9zZWNvbmRSYWRpdXMpCisgICAgICAgICAgICAmJiBtX3N0b3BzID09IG90
aGVyLm1fc3RvcHM7CisKKyAgICBpZiAobV9yZXBlYXRpbmcgIT0gb3RoZXIubV9yZXBlYXRpbmcp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgZXF1YWxYb3JZID0gZmFsc2U7Cisg
ICAgaWYgKG1fZmlyc3RYICYmIG1fZmlyc3RZKQorICAgICAgICBlcXVhbFhvclkgPSBjb21wYXJl
Q1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmlyc3RYLCBvdGhlci5tX2ZpcnN0WCkg
JiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX2ZpcnN0WSwgb3RoZXIu
bV9maXJzdFkpOworICAgIGVsc2UgaWYgKG1fZmlyc3RYKQorICAgICAgICBlcXVhbFhvclkgPSBj
b21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmlyc3RYLCBvdGhlci5tX2Zp
cnN0WCkgJiYgIW90aGVyLm1fZmlyc3RZOworICAgIGVsc2UgaWYgKG1fZmlyc3RZKQorICAgICAg
ICBlcXVhbFhvclkgPSBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmly
c3RZLCBvdGhlci5tX2ZpcnN0WSkgJiYgIW90aGVyLm1fZmlyc3RYOworICAgIGVsc2UKKyAgICAg
ICAgZXF1YWxYb3JZID09ICFvdGhlci5tX2ZpcnN0WCB8fCAhb3RoZXIubV9maXJzdFk7CisKKyAg
ICBpZiAoIWVxdWFsWG9yWSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBlcXVh
bFNoYXBlID0gdHJ1ZTsKKyAgICBib29sIGVxdWFsU2l6aW5nQmVoYXZpb3IgPSB0cnVlOworICAg
IGJvb2wgZXF1YWxIb3Jpem9udGFsQW5kVmVydGljYWxTaXplID0gdHJ1ZTsKKworICAgIGlmICht
X3NoYXBlKQorICAgICAgICBlcXVhbFNoYXBlID0gY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPihtX3NoYXBlLCBvdGhlci5tX3NoYXBlKTsKKyAgICBlbHNlIGlmIChtX3Npemlu
Z0JlaGF2aW9yKQorICAgICAgICBlcXVhbFNpemluZ0JlaGF2aW9yID0gY29tcGFyZUNTU1ZhbHVl
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPihtX3NpemluZ0JlaGF2aW9yLCBvdGhlci5tX3NpemluZ0Jl
aGF2aW9yKTsKKyAgICBlbHNlIGlmIChtX2VuZEhvcml6b250YWxTaXplICYmIG1fZW5kVmVydGlj
YWxTaXplKQorICAgICAgICBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUgPSBjb21wYXJl
Q1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZW5kSG9yaXpvbnRhbFNpemUsIG90aGVy
Lm1fZW5kSG9yaXpvbnRhbFNpemUpICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4obV9lbmRWZXJ0aWNhbFNpemUsIG90aGVyLm1fZW5kVmVydGljYWxTaXplKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgZXF1YWxTaGFwZSA9ICFvdGhlci5tX3NoYXBlOworICAgICAgICBlcXVh
bFNpemluZ0JlaGF2aW9yID0gIW90aGVyLm1fc2l6aW5nQmVoYXZpb3I7CisgICAgICAgIGVxdWFs
SG9yaXpvbnRhbEFuZFZlcnRpY2FsU2l6ZSA9ICFvdGhlci5tX2VuZEhvcml6b250YWxTaXplICYm
ICFvdGhlci5tX2VuZFZlcnRpY2FsU2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIGVxdWFsU2hhcGUg
JiYgZXF1YWxTaXppbmdCZWhhdmlvciAmJiBlcXVhbEhvcml6b250YWxBbmRWZXJ0aWNhbFNpemUg
JiYgbV9zdG9wcyA9PSBvdGhlci5tX3N0b3BzOworfQorCiB2b2lkIENTU1JhZGlhbEdyYWRpZW50
VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IGMwYThhYTQuLjAwMjdlMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuaApAQCAtNTMsNiArNTMsMTEgQEAgc3RydWN0IENTU0dyYWRp
ZW50Q29sb3JTdG9wIHsKICAgICBDb2xvciBtX3Jlc29sdmVkQ29sb3I7CiAgICAgYm9vbCBtX2Nv
bG9ySXNEZXJpdmVkRnJvbUVsZW1lbnQ7CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0dyYWRp
ZW50Q29sb3JTdG9wJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wYXJl
Q1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fY29sb3IsIG90aGVyLm1fY29sb3IpCisg
ICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9wb3NpdGlv
biwgb3RoZXIubV9wb3NpdGlvbik7CisgICAgfQogfTsKIAogY2xhc3MgQ1NTR3JhZGllbnRWYWx1
ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKQEAgLTE1Miw2ICsxNTcsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1
ZSgqdGhpcykpOwogICAgIH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0xpbmVhckdyYWRp
ZW50VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTE5NSw2ICsyMDIsOCBA
QCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIHRoZSBncmFkaWVudCBmb3IgYSBnaXZlbiBzaXplLgog
ICAgIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVjdCosIGNv
bnN0IEludFNpemUmKTsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1JhZGlhbEdyYWRpZW50
VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVZhbHVlLmNwcAppbmRleCA3YjEyZTZmLi4xMzhiYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlVmFsdWUuY3BwCkBAIC05Myw2ICs5MywxMSBAQCBib29sIENTU0ltYWdlVmFsdWU6Omhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdAogICAgIHJldHVybiBjYWNoZWRSZXNv
dXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKTsKIH0KIAorYm9vbCBDU1NJbWFnZVZhbHVlOjpl
cXVhbHMoY29uc3QgQ1NTSW1hZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dXJsID09IG90aGVyLm1fdXJsOworfQorCiBTdHJpbmcgQ1NTSW1hZ2VWYWx1ZTo6Y3VzdG9tQ3Nz
VGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQo
bV91cmwpICsgIikiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKaW5kZXggZTIxOTY0Mi4u
MDJhNDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCkBAIC01MCw2ICs1MCw4IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNv
bnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTSW1hZ2VWYWx1ZSYpIGNvbnN0OworCiAg
ICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNv
bnN0OwogCiAgICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKaW5kZXggNjhjMDAxZi4uM2NhMWQ3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKQEAgLTM1LDYgKzM1LDggQEAg
cHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0luaGVyaXRlZFZhbHVlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQor
CiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lu
aXRpYWxWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCmluZGV4
IGQ1MjMzNDMuLjA4MTMyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0
aWFsVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKQEAg
LTQxLDYgKzQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0ltcGxpY2l0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0ltcGxpY2l0OyB9CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NJbml0aWFs
VmFsdWUmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaAppbmRleCBlZWI2NDcwLi5h
MTkyNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5W
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFN0cmluZyBjdXN0b21Dc3NU
ZXh0KCkgY29uc3Q7Ci0KKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NMaW5lQm94Q29udGFpblZh
bHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CiAg
ICAgTGluZUJveENvbnRhaW4gdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0ODA0ZTE5
Li5jZjRmOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAg
LTEyNjAsNiArMTI2MCw4MyBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
JiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBvdGhlci5t
X3ByaW1pdGl2ZVVuaXRUeXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2gg
KG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKKyAgICBjYXNlIENTU19VTktOT1dOOgorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgY2FzZSBDU1NfTlVNQkVSOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9J
TlRFR0VSOgorICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6CisgICAgY2FzZSBDU1NfRU1TOgorICAg
IGNhc2UgQ1NTX0VYUzoKKyAgICBjYXNlIENTU19SRU1TOgorICAgIGNhc2UgQ1NTX1BYOgorICAg
IGNhc2UgQ1NTX0NNOgorI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVTT0xVVElPTikgfHwgRU5BQkxF
KFJFU09MVVRJT05fTUVESUFfUVVFUlkpCisgICAgY2FzZSBDU1NfRFBQWDoKKyAgICBjYXNlIENT
U19EUEk6CisgICAgY2FzZSBDU1NfRFBDTToKKyNlbmRpZgorICAgIGNhc2UgQ1NTX01NOgorICAg
IGNhc2UgQ1NTX0lOOgorICAgIGNhc2UgQ1NTX1BUOgorICAgIGNhc2UgQ1NTX1BDOgorICAgIGNh
c2UgQ1NTX0RFRzoKKyAgICBjYXNlIENTU19SQUQ6CisgICAgY2FzZSBDU1NfR1JBRDoKKyAgICBj
YXNlIENTU19NUzoKKyAgICBjYXNlIENTU19TOgorICAgIGNhc2UgQ1NTX0haOgorICAgIGNhc2Ug
Q1NTX0tIWjoKKyAgICBjYXNlIENTU19UVVJOOgorICAgIGNhc2UgQ1NTX1ZXOgorICAgIGNhc2Ug
Q1NTX1ZIOgorICAgIGNhc2UgQ1NTX1ZNSU46CisgICAgY2FzZSBDU1NfRElNRU5TSU9OOgorICAg
ICAgICByZXR1cm4gbV92YWx1ZS5udW0gPT0gb3RoZXIubV92YWx1ZS5udW07CisgICAgY2FzZSBD
U1NfSURFTlQ6CisgICAgICAgIHJldHVybiB2YWx1ZU9yUHJvcGVydHlOYW1lKG1fdmFsdWUuaWRl
bnQpID09IHZhbHVlT3JQcm9wZXJ0eU5hbWUob3RoZXIubV92YWx1ZS5pZGVudCk7CisgICAgY2Fz
ZSBDU1NfU1RSSU5HOgorICAgIGNhc2UgQ1NTX1VSSToKKyAgICBjYXNlIENTU19BVFRSOgorICAg
IGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKKyAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoK
KyAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09MT1I6CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CisgICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFNRToKKyNlbmRpZgorICAgICAgICByZXR1cm4gZXF1
YWwobV92YWx1ZS5zdHJpbmcsIG90aGVyLm1fdmFsdWUuc3RyaW5nKTsKKyAgICBjYXNlIENTU19D
T1VOVEVSOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5jb3VudGVyICYmIG90aGVyLm1fdmFsdWUu
Y291bnRlciAmJiBtX3ZhbHVlLmNvdW50ZXItPmVxdWFscygqb3RoZXIubV92YWx1ZS5jb3VudGVy
KTsKKyAgICBjYXNlIENTU19SRUNUOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5yZWN0ICYmIG90
aGVyLm1fdmFsdWUucmVjdCAmJiBtX3ZhbHVlLnJlY3QtPmVxdWFscygqb3RoZXIubV92YWx1ZS5y
ZWN0KTsKKyAgICBjYXNlIENTU19RVUFEOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5xdWFkICYm
IG90aGVyLm1fdmFsdWUucXVhZCAmJiBtX3ZhbHVlLnF1YWQtPmVxdWFscygqb3RoZXIubV92YWx1
ZS5xdWFkKTsKKyAgICBjYXNlIENTU19SR0JDT0xPUjoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUu
cmdiY29sb3IgPT0gb3RoZXIubV92YWx1ZS5yZ2Jjb2xvcjsKKyAgICBjYXNlIENTU19QQUlSOgor
ICAgICAgICByZXR1cm4gbV92YWx1ZS5wYWlyICYmIG90aGVyLm1fdmFsdWUucGFpciAmJiBtX3Zh
bHVlLnBhaXItPmVxdWFscygqb3RoZXIubV92YWx1ZS5wYWlyKTsKKyNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCisgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjogeworICAgICAgICBE
YXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7CisgICAg
ICAgIERhc2hib2FyZFJlZ2lvbiogb3RoZXJSZWdpb24gPSBvdGhlci5nZXREYXNoYm9hcmRSZWdp
b25WYWx1ZSgpOworICAgICAgICByZXR1cm4gcmVnaW9uID8gb3RoZXJSZWdpb24gJiYgcmVnaW9u
LT5lcXVhbHMoKm90aGVyUmVnaW9uKSA6ICFvdGhlclJlZ2lvbjsKKyAgICB9CisjZW5kaWYKKyAg
ICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6CisgICAgICAgIHJldHVybiBtX3ZhbHVlLmlkZW50
ID09IG90aGVyLm1fdmFsdWUuaWRlbnQ7CisgICAgY2FzZSBDU1NfQ0FMQzoKKyAgICAgICAgcmV0
dXJuIG1fdmFsdWUuY2FsYyAmJiBvdGhlci5tX3ZhbHVlLmNhbGMgJiYgbV92YWx1ZS5jYWxjLT5l
cXVhbHMoKm90aGVyLm1fdmFsdWUuY2FsYyk7CisgICAgY2FzZSBDU1NfU0hBUEU6CisgICAgICAg
IHJldHVybiBtX3ZhbHVlLnNoYXBlICYmIG90aGVyLm1fdmFsdWUuc2hhcGUgJiYgbV92YWx1ZS5z
aGFwZS0+ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLnNoYXBlKTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBN
ZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5
VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IGZj
YzViODMuLjdmMjY2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBA
IC0zMTUsNiArMzE1LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKICAgICB2b2lkIHNldENTU09NU2FmZSgpIHsgbV9p
c0NTU09NU2FmZSA9IHRydWU7IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NS
ZWZsZWN0VmFsdWUuY3BwCmluZGV4IDk0MzlkNjAuLjM5ZjY1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSZWZsZWN0VmFsdWUuY3BwCkBAIC02Nyw2ICs2NywxMyBAQCB2b2lkIENTU1JlZmxlY3RW
YWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNv
bnN0IFN0eQogICAgICAgICBtX21hc2stPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIHN0
eWxlU2hlZXQpOwogfQogCitib29sIENTU1JlZmxlY3RWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1Jl
ZmxlY3RWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlyZWN0aW9uID09IG90
aGVyLm1fZGlyZWN0aW9uCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4obV9vZmZzZXQsIG90aGVyLm1fb2Zmc2V0KQorICAgICAgICAmJiBjb21wYXJlQ1NT
VmFsdWVQdHI8Q1NTVmFsdWU+KG1fbWFzaywgb3RoZXIubV9tYXNrKTsKK30KKwogdm9pZCBDU1NS
ZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCAxYmRmZDVmLi5iYWQzZTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25zdCBT
dHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1Jl
ZmxlY3RWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IGUxYmIxZDEuLjIzOTliNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAg
LTUwLDYgKzUwLDEyIEBAIFN0cmluZyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6
OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAgICArIFN0cmluZzo6bnVtYmVyKG1feTIpICsg
IikiOwogfQogCitib29sIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxz
KGNvbnN0IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1feDEgPT0gb3RoZXIubV94MSAmJiBtX3gyID09IG90aGVyLm1feDIgJiYg
bV95MSA9PSBvdGhlci5tX3kxICYmIG1feTIgPT0gb3RoZXIubV95MjsKK30KKworCiB2b2lkIENT
U0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5
cGVzOjpDU1MpOwpAQCAtNjAsNiArNjYsMTIgQEAgU3RyaW5nIENTU1N0ZXBzVGltaW5nRnVuY3Rp
b25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICJzdGVwcygiICsgU3Ry
aW5nOjpudW1iZXIobV9zdGVwcykgKyAiLCAiICsgKG1fc3RlcEF0U3RhcnQgPyAic3RhcnQiIDog
ImVuZCIpICsgJyknOwogfQogCitib29sIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1
YWxzKGNvbnN0IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3RlcHMgPT0gb3RoZXIubV9zdGVwcyAmJiBtX3N0ZXBBdFN0YXJ0ID09IG90
aGVyLm1fc3RlcEF0U3RhcnQ7Cit9CisKKwogdm9pZCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCmluZGV4IDNlYjRiMjIuLjRjM2ZlMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaApAQCAtNDAsNiArNDAs
OCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSYpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTYzLDYgKzY1LDggQEAgcHVi
bGljOgogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7IH0KICAgICBkb3VibGUg
eTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1ND
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0
ZToKQEAgLTkzLDYgKzk3LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQo
KSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25W
YWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKaW5kZXggMzRkNjNiNi4uZjFkNTlhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwCkBAIC0zOCw2ICszOCwxMSBA
QCBTdHJpbmcgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmVxdWFscyhj
b25zdCBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
ZnJvbSA9PSBvdGhlci5tX2Zyb20gJiYgbV90byA9PSBvdGhlci5tX3RvOworfQorCiB2b2lkIENT
U1VuaWNvZGVSYW5nZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCmluZGV4IGQ1MGY1YjYuLmEx
N2YxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCkBAIC00
NCw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7
CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYpIGNvbnN0Owor
CiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKaW5kZXggMGE2MTI5ZC4u
ZjNlYWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCkBAIC03Myw3ICs3MywxMyBAQCBzdHJ1
Y3QgU2FtZVNpemVBc0NTU1ZhbHVlIDogcHVibGljIFJlZkNvdW50ZWQ8U2FtZVNpemVBc0NTU1Zh
bHVlPiB7CiB9OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQ1NTVmFsdWUpID09IHNpemVvZihT
YW1lU2l6ZUFzQ1NTVmFsdWUpLCBDU1NfdmFsdWVfc2hvdWxkX3N0YXlfc21hbGwpOwotICAgIAor
Cit0ZW1wbGF0ZTxjbGFzcyBDaGlsZENsYXNzVHlwZT4KK2lubGluZSBzdGF0aWMgYm9vbCBjb21w
YXJlQ1NTVmFsdWVzKGNvbnN0IENTU1ZhbHVlJiBmaXJzdCwgY29uc3QgQ1NTVmFsdWUmIHNlY29u
ZCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ2hpbGRDbGFzc1R5cGUmPihmaXJz
dCkuZXF1YWxzKHN0YXRpY19jYXN0PGNvbnN0IENoaWxkQ2xhc3NUeXBlJj4oc2Vjb25kKSk7Cit9
CisKIGNsYXNzIFRleHRDbG9uZUNTU1ZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0Q2xvbmVDU1NWYWx1ZT4gY3JlYXRlKENsYXNzVHlw
ZSBjbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHRDbG9uZUNTU1ZhbHVlKGNsYXNzVHlwZSwgdGV4dCkpOyB9CkBAIC0yNzYsNiArMjgyLDEwMiBA
QCB2b2lkIENTU1ZhbHVlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitib29s
IENTU1ZhbHVlOjplcXVhbHMoY29uc3QgQ1NTVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIGlm
IChtX2lzVGV4dENsb25lKSB7CisgICAgICAgIEFTU0VSVChpc0NTU09NU2FmZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFRleHRDbG9uZUNTU1ZhbHVlKj4odGhpcyktPmNz
c1RleHQoKSA9PSBvdGhlci5jc3NUZXh0KCk7CisgICAgfQorCisgICAgaWYgKG1fY2xhc3NUeXBl
ID09IG90aGVyLm1fY2xhc3NUeXBlKSB7CisgICAgICAgIHN3aXRjaCAobV9jbGFzc1R5cGUpIHsK
KyAgICAgICAgY2FzZSBBc3BlY3RSYXRpb0NsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBh
cmVDU1NWYWx1ZXM8Q1NTQXNwZWN0UmF0aW9WYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAg
Y2FzZSBCb3JkZXJJbWFnZVNsaWNlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNT
U1ZhbHVlczxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAg
IGNhc2UgQ2FudmFzQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxD
U1NDYW52YXNWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBDdXJzb3JJbWFnZUNs
YXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTQ3Vyc29ySW1hZ2VW
YWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBGb250Q2xhc3M6CisgICAgICAgICAg
ICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxGb250VmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAg
ICAgIGNhc2UgRm9udEZhY2VTcmNDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NT
VmFsdWVzPENTU0ZvbnRGYWNlU3JjVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2Ug
Rm9udEZlYXR1cmVDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPEZv
bnRGZWF0dXJlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgRnVuY3Rpb25DbGFz
czoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0Z1bmN0aW9uVmFsdWU+
KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoKKyAgICAg
ICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0xpbmVhckdyYWRpZW50VmFsdWU+KCp0
aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKKyAgICAgICAg
ICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+KCp0aGlz
LCBvdGhlcik7CisgICAgICAgIGNhc2UgQ3Jvc3NmYWRlQ2xhc3M6CisgICAgICAgICAgICByZXR1
cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NDcm9zc2ZhZGVWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAg
ICAgICAgY2FzZSBJbWFnZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8Q1NTSW1hZ2VWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBJbmhlcml0ZWRD
bGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0luaGVyaXRlZFZh
bHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIEluaXRpYWxDbGFzczoKKyAgICAgICAg
ICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0luaXRpYWxWYWx1ZT4oKnRoaXMsIG90aGVy
KTsKKyAgICAgICAgY2FzZSBQcmltaXRpdmVDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21w
YXJlQ1NTVmFsdWVzPENTU1ByaW1pdGl2ZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBj
YXNlIFJlZmxlY3RDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENT
U1JlZmxlY3RWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBTaGFkb3dDbGFzczoK
KyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPFNoYWRvd1ZhbHVlPigqdGhpcywg
b3RoZXIpOworICAgICAgICBjYXNlIExpbmVhclRpbWluZ0Z1bmN0aW9uQ2xhc3M6CisgICAgICAg
ICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVl
PigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25D
bGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0N1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb25WYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBTdGVwc1Rp
bWluZ0Z1bmN0aW9uQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxD
U1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2Ug
VW5pY29kZVJhbmdlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxD
U1NVbmljb2RlUmFuZ2VWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBWYWx1ZUxp
c3RDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU1ZhbHVlTGlz
dD4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1DbGFzczoK
KyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIExpbmVCb3hDb250YWluQ2xhc3M6Cisg
ICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NMaW5lQm94Q29udGFpblZhbHVl
PigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIENhbGN1bGF0aW9uQ2xhc3M6CisgICAgICAg
ICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NDYWxjVmFsdWU+KCp0aGlzLCBvdGhlcik7
CisjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCisgICAgICAgIGNhc2UgSW1hZ2VTZXRDbGFzczoK
KyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0ltYWdlU2V0VmFsdWU+KCp0
aGlzLCBvdGhlcik7CisjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgICAgIGNh
c2UgV2ViS2l0Q1NTRmlsdGVyQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1Zh
bHVlczxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCisgICAgICAgIGNhc2UgV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlQ2xhc3M6
CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxXZWJLaXRDU1NBcnJheUZ1bmN0
aW9uVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8V2ViS2l0
Q1NTTWl4RnVuY3Rpb25WYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBXZWJLaXRD
U1NTaGFkZXJDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPFdlYktp
dENTU1NoYWRlclZhbHVlPigqdGhpcywgb3RoZXIpOworI2VuZGlmCisjZW5kaWYKKyNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKKyAgICAgICAgY2FzZSBWYXJpYWJsZUNsYXNzOgorICAgICAgICAg
ICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTVmFyaWFibGVWYWx1ZT4oKnRoaXMsIG90aGVy
KTsKKyNlbmRpZgorI2lmIEVOQUJMRShTVkcpCisgICAgICAgIGNhc2UgU1ZHQ29sb3JDbGFzczoK
KyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPFNWR0NvbG9yPigqdGhpcywgb3Ro
ZXIpOworICAgICAgICBjYXNlIFNWR1BhaW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29t
cGFyZUNTU1ZhbHVlczxTVkdQYWludD4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBXZWJL
aXRDU1NTVkdEb2N1bWVudENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8V2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgfQor
I2VuZGlmCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0gZWxzZSBpZiAobV9j
bGFzc1R5cGUgPT0gVmFsdWVMaXN0Q2xhc3MgJiYgb3RoZXIubV9jbGFzc1R5cGUgIT0gVmFsdWVM
aXN0Q2xhc3MpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NWYWx1ZUxpc3Qq
Pih0aGlzKS0+ZXF1YWxzKG90aGVyKTsKKyAgICBlbHNlIGlmIChtX2NsYXNzVHlwZSAhPSBWYWx1
ZUxpc3RDbGFzcyAmJiBvdGhlci5tX2NsYXNzVHlwZSA9PSBWYWx1ZUxpc3RDbGFzcykKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1ZhbHVlTGlzdCY+KG90aGVyKS5lcXVhbHMo
KnRoaXMpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogU3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0
KCkgY29uc3QKIHsKICAgICBpZiAobV9pc1RleHRDbG9uZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApp
bmRleCAyMjBmMGExLi41OWIxNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMTI2LDYgKzEy
Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVmFsdWUmKSBjb25zdDsK
KwogcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBDbGFzc1R5cGVCaXRzID0g
NjsKQEAgLTIzNiw2ICsyMzgsMjkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NsYXNzVHlw
ZSA6IENsYXNzVHlwZUJpdHM7IC8vIENsYXNzVHlwZQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
Q1NTVmFsdWVUeXBlPgoraW5saW5lIGJvb2wgY29tcGFyZUNTU1ZhbHVlVmVjdG9yKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q1NTVmFsdWVUeXBlPiA+JiBmaXJzdFZlY3RvciwgY29uc3QgVmVjdG9yPFJl
ZlB0cjxDU1NWYWx1ZVR5cGU+ID4mIHNlY29uZFZlY3RvcikKK3sKKyAgICBzaXplX3Qgc2l6ZSA9
IGZpcnN0VmVjdG9yLnNpemUoKTsKKyAgICBpZiAoc2l6ZSA9PSBzZWNvbmRWZWN0b3Iuc2l6ZSgp
KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAg
ICAgICBjb25zdCBSZWZQdHI8Q1NTVmFsdWVUeXBlPiYgZmlyc3RQdHIgPSBmaXJzdFZlY3Rvcltp
XTsKKyAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxDU1NWYWx1ZVR5cGU+JiBzZWNvbmRQdHIgPSBz
ZWNvbmRWZWN0b3JbaV07CisgICAgICAgICAgICBpZiAoZmlyc3RQdHIgPT0gc2Vjb25kUHRyIHx8
IChmaXJzdFB0ciAmJiBzZWNvbmRQdHIgJiYgZmlyc3RQdHItPmVxdWFscygqc2Vjb25kUHRyKSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ1NTVmFsdWVUeXBlPgoraW5saW5lIGJvb2wgY29tcGFy
ZUNTU1ZhbHVlUHRyKGNvbnN0IFJlZlB0cjxDU1NWYWx1ZVR5cGU+JiBmaXJzdCwgY29uc3QgUmVm
UHRyPENTU1ZhbHVlVHlwZT4mIHNlY29uZCkKK3sKKyAgICByZXR1cm4gZmlyc3QgPyBzZWNvbmQg
JiYgZmlyc3QtPmVxdWFscygqc2Vjb25kKSA6ICFzZWNvbmQ7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU1ZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlz
dC5jcHAKaW5kZXggOWVjMmQ1MC4uZDdkMDRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlz
dC5jcHAKQEAgLTU1LDEwICs1NSw5IEBAIENTU1ZhbHVlTGlzdDo6Q1NTVmFsdWVMaXN0KENTU1Bh
cnNlclZhbHVlTGlzdCogcGFyc2VyVmFsdWVzKQogYm9vbCBDU1NWYWx1ZUxpc3Q6OnJlbW92ZUFs
bChDU1NWYWx1ZSogdmFsKQogewogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAvLyBGSVhN
RTogd2Ugc2hvdWxkIGJlIGltcGxlbWVudGluZyBvcGVyYXRvcj09IHRvIENTU1ZhbHVlIGFuZCBp
dHMgZGVyaXZlZCBjbGFzc2VzCi0gICAgLy8gdG8gbWFrZSBjb21wYXJpc29uIG1vcmUgZmxleGli
bGUgYW5kIGZhc3QuCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fdmFsdWVz
LnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBpZiAobV92YWx1ZXMuYXQoaW5kZXgpLT5jc3NU
ZXh0KCkgPT0gdmFsLT5jc3NUZXh0KCkpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiYgdmFs
dWUgPSBtX3ZhbHVlcy5hdChpbmRleCk7CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWwgJiYgdmFs
dWUtPmVxdWFscygqdmFsKSkgewogICAgICAgICAgICAgbV92YWx1ZXMucmVtb3ZlKGluZGV4KTsK
ICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNjksMTAgKzY4LDkgQEAg
Ym9vbCBDU1NWYWx1ZUxpc3Q6OnJlbW92ZUFsbChDU1NWYWx1ZSogdmFsKQogCiBib29sIENTU1Zh
bHVlTGlzdDo6aGFzVmFsdWUoQ1NTVmFsdWUqIHZhbCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTog
d2Ugc2hvdWxkIGJlIGltcGxlbWVudGluZyBvcGVyYXRvcj09IHRvIENTU1ZhbHVlIGFuZCBpdHMg
ZGVyaXZlZCBjbGFzc2VzCi0gICAgLy8gdG8gbWFrZSBjb21wYXJpc29uIG1vcmUgZmxleGlibGUg
YW5kIGZhc3QuCiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fdmFsdWVzLnNp
emUoKTsgaW5kZXgrKykgewotICAgICAgICBpZiAobV92YWx1ZXMuYXQoaW5kZXgpLT5jc3NUZXh0
KCkgPT0gdmFsLT5jc3NUZXh0KCkpCisgICAgICAgIGNvbnN0IFJlZlB0cjxDU1NWYWx1ZT4mIHZh
bHVlID0gbV92YWx1ZXMuYXQoaW5kZXgpOworICAgICAgICBpZiAodmFsdWUgJiYgdmFsICYmIHZh
bHVlLT5lcXVhbHMoKnZhbCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTI3LDYgKzEyNSwyMCBAQCBTdHJpbmcgQ1NTVmFsdWVMaXN0Ojpj
dXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAK
K2Jvb2wgQ1NTVmFsdWVMaXN0OjplcXVhbHMoY29uc3QgQ1NTVmFsdWVMaXN0JiBvdGhlcikgY29u
c3QKK3sKKyAgICByZXR1cm4gbV92YWx1ZUxpc3RTZXBhcmF0b3IgPT0gb3RoZXIubV92YWx1ZUxp
c3RTZXBhcmF0b3IgJiYgY29tcGFyZUNTU1ZhbHVlVmVjdG9yPENTU1ZhbHVlPihtX3ZhbHVlcywg
b3RoZXIubV92YWx1ZXMpOworfQorCitib29sIENTU1ZhbHVlTGlzdDo6ZXF1YWxzKGNvbnN0IENT
U1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV92YWx1ZXMuc2l6ZSgpICE9IDEpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVl
ID0gbV92YWx1ZXNbMF07CisgICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLT5lcXVhbHMob3RoZXIp
OworfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NTVmFsdWVMaXN0Ojpj
dXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3Qu
aAppbmRleCAzZDg5N2JjLi5jNjZiODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBA
IC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29w
eSgpOwogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NWYWx1ZUxpc3QmKSBjb25zdDsKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NW
YWx1ZSYpIGNvbnN0OwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0cmluZyBjdXN0
b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFN0cmluZz4mKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhcmlhYmxlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVl
LmgKaW5kZXggNGZjNGY3NS4uNTQ4MDFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhcmlhYmxlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVW
YWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NT
VmFyaWFibGVWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSBvdGhlci5tX25h
bWUgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9CisKICAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogICAgIHsKICAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NvdW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgKaW5kZXggNTFm
YTcxMC4uZmMyMjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCkBAIC00Miw2ICs0MiwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRJZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0
TGlzdFN0eWxlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHlsZSkgeyBtX2xp
c3RTdHlsZSA9IGxpc3RTdHlsZTsgfQogICAgIHZvaWQgc2V0U2VwYXJhdG9yKFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikgeyBtX3NlcGFyYXRvciA9IHNlcGFyYXRvcjsg
fQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ291bnRlciYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gaWRlbnRpZmllcigpID09IG90aGVyLmlkZW50aWZpZXIoKQorICAgICAg
ICAgICAgJiYgbGlzdFN0eWxlKCkgPT0gb3RoZXIubGlzdFN0eWxlKCkKKyAgICAgICAgICAgICYm
IHNlcGFyYXRvcigpID09IG90aGVyLnNlcGFyYXRvcigpOworICAgIH0KICAgICAKICAgICBQYXNz
UmVmUHRyPENvdW50ZXI+IGNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9EYXNoYm9hcmRSZWdpb24uaAppbmRleCA5MWU1ZDdhLi41YjVmMGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRGFzaGJvYXJkUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0Rhc2hib2FyZFJlZ2lvbi5oCkBAIC0zMCw2ICszMCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBEYXNoYm9hcmRSZWdpb24gOiBwdWJsaWMgUmVjdEJhc2UsIHB1YmxpYyBSZWZD
b3VudGVkPERhc2hib2FyZFJlZ2lvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERhc2hib2FyZFJlZ2lvbj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERhc2hib2Fy
ZFJlZ2lvbik7IH0KKyAgICBib29sIGVxdWFscyhjb25zdCBEYXNoYm9hcmRSZWdpb24mIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGFiZWwgPT0gb3RoZXIubV9sYWJlbCAm
JiBtX2dlb21ldHJ5VHlwZSA9PSBvdGhlci5tX2dlb21ldHJ5VHlwZQorICAgICAgICAgICAgJiYg
bV9pc0NpcmNsZSA9PSBvdGhlci5tX2lzQ2lyY2xlICYmIG1faXNSZWN0YW5nbGUgPT0gb3RoZXIu
bV9pc1JlY3RhbmdsZQorICAgICAgICAgICAgJiYgbV9uZXh0ID8gb3RoZXIubV9uZXh0ICYmIG1f
bmV4dC0+ZXF1YWxzKCpvdGhlci5tX25leHQpIDogIW90aGVyLm1fbmV4dDsKKyAgICB9CiAKICAg
ICBSZWZQdHI8RGFzaGJvYXJkUmVnaW9uPiBtX25leHQ7CiAgICAgU3RyaW5nIG1fbGFiZWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKaW5kZXggMTAzNGZjYS4uNzgxNTgx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcApAQCAtNTAsNiArNTAs
MTEgQEAgU3RyaW5nIEZvbnRGZWF0dXJlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgRm9udEZlYXR1cmVWYWx1ZTo6
ZXF1YWxzKGNvbnN0IEZvbnRGZWF0dXJlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVy
biBtX3RhZyA9PSBvdGhlci5tX3RhZyAmJiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7Cit9CisK
IHZvaWQgRm9udEZlYXR1cmVWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmgKaW5kZXggZmNhYjgxNS4uMjE0ZjQy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5oCkBAIC00Miw2ICs0Miw4IEBA
IHB1YmxpYzoKICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAg
U3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IEZv
bnRGZWF0dXJlVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRWYWx1ZS5jcHAKaW5kZXggMGJhMWU2ZS4uYTI5Njc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1
ZS5jcHAKQEAgLTY1LDYgKzY1LDE2IEBAIFN0cmluZyBGb250VmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBGb250VmFs
dWU6OmVxdWFscyhjb25zdCBGb250VmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBj
b21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KHN0eWxlLCBvdGhlci5zdHlsZSkK
KyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPih2YXJpYW50
LCBvdGhlci52YXJpYW50KQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+KHdlaWdodCwgb3RoZXIud2VpZ2h0KQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFs
dWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KHNpemUsIG90aGVyLnNpemUpCisgICAgICAgICYmIGNv
bXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obGluZUhlaWdodCwgb3RoZXIubGlu
ZUhlaWdodCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ZhbHVlTGlzdD4oZmFt
aWx5LCBvdGhlci5mYW1pbHkpOworfQorCiB2b2lkIEZvbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7
CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29y
ZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCmluZGV4IDAzYTYxMjYuLjQ1
Nzg2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgog
CiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNv
bnN0IEZvbnRWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBzdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
RXhwLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oCmluZGV4IDgxM2UwZjgu
LmM0MWIzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gKG90aGVyLm1fbWVkaWFGZWF0dXJlID09
IG1fbWVkaWFGZWF0dXJlKQogICAgICAgICAgICAgJiYgKCghb3RoZXIubV92YWx1ZSAmJiAhbV92
YWx1ZSkKLSAgICAgICAgICAgICAgICB8fCAob3RoZXIubV92YWx1ZSAmJiBtX3ZhbHVlICYmIG90
aGVyLm1fdmFsdWUtPmNzc1RleHQoKSA9PSBtX3ZhbHVlLT5jc3NUZXh0KCkpKTsKKyAgICAgICAg
ICAgICAgICB8fCAob3RoZXIubV92YWx1ZSAmJiBtX3ZhbHVlICYmIG90aGVyLm1fdmFsdWUtPmVx
dWFscygqbV92YWx1ZSkpKTsKICAgICB9CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzVmFsaWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCmluZGV4IDA0MWVlMjMuLjQ2NWYxMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1BhaXIuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBnZW5lcmF0
ZUNTU1N0cmluZyhmaXJzdCgpLT5jc3NUZXh0KCksIHNlY29uZCgpLT5jc3NUZXh0KCkpOwogICAg
IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IFBhaXImIG90aGVyKSBjb25zdCB7IHJldHVybiBj
b21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fZmlyc3QsIG90aGVyLm1fZmly
c3QpICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9zZWNvbmQsIG90
aGVyLm1fc2Vjb25kKTsgfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgU3RyaW5n
IHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywg
U3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCmluZGV4IGZlZWY4NzUu
LjZlYzRiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1JlY3QuaApAQCAtMzksNiArMzksMTQgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Qm90dG9tKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvdHRvbSkgeyBtX2Jv
dHRvbSA9IGJvdHRvbTsgfQogICAgIHZvaWQgc2V0TGVmdChQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0
IFJlY3RCYXNlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wYXJlQ1NT
VmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fdG9wLCBvdGhlci5tX3RvcCkKKyAgICAgICAg
ICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4obV9yaWdodCwgb3Ro
ZXIubV9yaWdodCkKKyAgICAgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4obV9sZWZ0LCBvdGhlci5tX2xlZnQpCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NT
VmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KG1fYm90dG9tLCBvdGhlci5tX2JvdHRvbSk7Cisg
ICAgfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgYm9vbCBoYXNWYXJpYWJsZVJl
ZmVyZW5jZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1No
YWRvd1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAKaW5kZXgg
YTQwNjRjYy4uM2ViOWMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1Zh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCkBAIC03OSw2
ICs3OSwxNiBAQCBTdHJpbmcgU2hhZG93VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAg
IHJldHVybiB0ZXh0LnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgU2hhZG93VmFsdWU6OmVxdWFscyhj
b25zdCBTaGFkb3dWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXBhcmVDU1NW
YWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4oY29sb3IsIG90aGVyLmNvbG9yKQorICAgICAgICAm
JiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+KHgsIG90aGVyLngpCisgICAg
ICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cjxDU1NQcmltaXRpdmVWYWx1ZT4oeSwgb3RoZXIueSkK
KyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyPENTU1ByaW1pdGl2ZVZhbHVlPihibHVyLCBv
dGhlci5ibHVyKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+KHNwcmVhZCwgb3RoZXIuc3ByZWFkKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+KHN0eWxlLCBvdGhlci5zdHlsZSk7Cit9CisKIHZvaWQgU2hhZG93
VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRv
d1ZhbHVlLmgKaW5kZXggZjJkOGU2Zi4uYTM1M2QzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1NoYWRvd1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVl
LmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQo
KSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IFNoYWRvd1ZhbHVlJikgY29uc3Q7CisK
ICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggOWYwN2FmZC4uMmRjOGE5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMzIyLDkgKzMyMiw5IEBAIFN0cmlu
ZyBTdHlsZVByb3BlcnR5U2V0OjpnZXQ0VmFsdWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHNob3J0aGFuZCkgY29uCiAgICAgaWYgKHRvcC5pc0ltcG9ydGFudCgpICE9IHJpZ2h0Lmlz
SW1wb3J0YW50KCkgfHwgcmlnaHQuaXNJbXBvcnRhbnQoKSAhPSBib3R0b20uaXNJbXBvcnRhbnQo
KSB8fCBib3R0b20uaXNJbXBvcnRhbnQoKSAhPSBsZWZ0LmlzSW1wb3J0YW50KCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAotICAgIGJvb2wgc2hvd0xlZnQgPSByaWdodC52YWx1ZSgpLT5j
c3NUZXh0KCkgIT0gbGVmdC52YWx1ZSgpLT5jc3NUZXh0KCk7Ci0gICAgYm9vbCBzaG93Qm90dG9t
ID0gKHRvcC52YWx1ZSgpLT5jc3NUZXh0KCkgIT0gYm90dG9tLnZhbHVlKCktPmNzc1RleHQoKSkg
fHwgc2hvd0xlZnQ7Ci0gICAgYm9vbCBzaG93UmlnaHQgPSAodG9wLnZhbHVlKCktPmNzc1RleHQo
KSAhPSByaWdodC52YWx1ZSgpLT5jc3NUZXh0KCkpIHx8IHNob3dCb3R0b207CisgICAgYm9vbCBz
aG93TGVmdCA9ICFyaWdodC52YWx1ZSgpLT5lcXVhbHMoKmxlZnQudmFsdWUoKSk7CisgICAgYm9v
bCBzaG93Qm90dG9tID0gIXRvcC52YWx1ZSgpLT5lcXVhbHMoKmJvdHRvbS52YWx1ZSgpKSB8fCBz
aG93TGVmdDsKKyAgICBib29sIHNob3dSaWdodCA9ICF0b3AudmFsdWUoKS0+ZXF1YWxzKCpyaWdo
dC52YWx1ZSgpKSB8fCBzaG93Qm90dG9tOwogCiAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAg
ICAgcmVzdWx0LmFwcGVuZCh0b3AudmFsdWUoKS0+Y3NzVGV4dCgpKTsKQEAgLTExMTQsNyArMTEx
NCw3IEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlNYXRjaGVzKGNvbnN0IFByb3Bl
cnR5UmVmZXJlbmNlJiBwcm9wZXJ0eSkgY29uc3QKICAgICBpbnQgZm91bmRQcm9wZXJ0eUluZGV4
ID0gZmluZFByb3BlcnR5SW5kZXgocHJvcGVydHkuaWQoKSk7CiAgICAgaWYgKGZvdW5kUHJvcGVy
dHlJbmRleCA9PSAtMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBwcm9wZXJ0
eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUoKS0+Y3NzVGV4dCgpID09IHByb3BlcnR5LnZh
bHVlKCktPmNzc1RleHQoKTsKKyAgICByZXR1cm4gcHJvcGVydHlBdChmb3VuZFByb3BlcnR5SW5k
ZXgpLnZhbHVlKCktPmVxdWFscygqcHJvcGVydHkudmFsdWUoKSk7CiB9CiAgICAgCiB2b2lkIFN0
eWxlUHJvcGVydHlTZXQ6OnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U0FycmF5RnVuY3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJy
YXlGdW5jdGlvblZhbHVlLmNwcAppbmRleCAyYTE3YTQ0Li5mNTY0MGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcApAQCAtNTYs
NiArNTYsMTEgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU+IFdlYktp
dENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6Y2xvbmVGb3JDU1MKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZSgqdGhpcykpOwogfQogCitib29sIFdlYktp
dENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IFdlYktpdENTU0FycmF5RnVuY3Rp
b25WYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIENTU1ZhbHVlTGlzdDo6ZXF1YWxz
KG90aGVyKTsKK30KKwogdm9pZCBXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU6OnJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuaAppbmRleCBiYWYyNzgyLi5mYzNhYmE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oCkBAIC00
OCw2ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTQXJyYXlGdW5j
dGlvblZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25z
dCBXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCmluZGV4IGYx
YTFlMGUuLjA3MGVmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NG
aWx0ZXJWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZh
bHVlLmNwcApAQCAtMTExLDYgKzExMSwxMSBAQCBQYXNzUmVmUHRyPFdlYktpdENTU0ZpbHRlclZh
bHVlPiBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSgqdGhpcykpOwogfQogCitib29s
IFdlYktpdENTU0ZpbHRlclZhbHVlOjplcXVhbHMoY29uc3QgV2ViS2l0Q1NTRmlsdGVyVmFsdWUm
IG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlICYmIENT
U1ZhbHVlTGlzdDo6ZXF1YWxzKG90aGVyKTsKK30KKwogdm9pZCBXZWJLaXRDU1NGaWx0ZXJWYWx1
ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAppbmRleCAwOGIzZTlmLi5iMjQwMDcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaApAQCAtNjgsNiArNjgsOCBAQCBwdWJs
aWM6CiAKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBjbG9uZUZvckNTU09N
KCkgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSYp
IGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwCmluZGV4IDNhZjY4N2UuLmMwOGI4NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAKQEAg
LTU2LDYgKzU2LDExIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZT4gV2Vi
S2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlKCp0aGlzKSk7CiB9CiAKK2Jvb2wgV2Vi
S2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IFdlYktpdENTU01peEZ1bmN0aW9u
VmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBDU1NWYWx1ZUxpc3Q6OmVxdWFscyhv
dGhlcik7Cit9CisKIHZvaWQgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU01peEZ1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
aXhGdW5jdGlvblZhbHVlLmgKaW5kZXggN2JjMDdiNC4uY2I5OTM0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBA
IHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZT4gY2xv
bmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgV2ViS2l0Q1NTTWl4
RnVuY3Rpb25WYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwCmluZGV4IGI0MzRlZWMu
LmZlZjc3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1
bWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1l
bnRWYWx1ZS5jcHAKQEAgLTY3LDYgKzY3LDExIEBAIFN0cmluZyBXZWJLaXRDU1NTVkdEb2N1bWVu
dFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcXVvdGVDU1NTdHJpbmdJ
Zk5lZWRlZChtX3VybCk7CiB9CiAKK2Jvb2wgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZTo6ZXF1
YWxzKGNvbnN0IFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUmIG90aGVyKSBjb25zdAoreworICAg
IHJldHVybiBtX3VybCA9PSBvdGhlci5tX3VybDsKK30KKwogdm9pZCBXZWJLaXRDU1NTVkdEb2N1
bWVudFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaAppbmRleCA5NmJjYzhjLi45
YTNhYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1l
bnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0
KCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogICAgIGJvb2wgbG9hZFJlcXVlc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFJlcXVlc3Rl
ZDsgfQorICAgIGJvb2wgZXF1YWxzKGNvbnN0IFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUmKSBj
b25zdDsKIAogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NoYWRlclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1
ZS5jcHAKaW5kZXggOTFiZGRlMi4uMzZlMzdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTU2hhZGVyVmFsdWUuY3BwCkBAIC04Myw2ICs4MywxMSBAQCBTdHJpbmcgV2ViS2l0Q1NT
U2hhZGVyVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiAidXJsKCIgKyBx
dW90ZUNTU1VSTElmTmVlZGVkKG1fdXJsKSArICIpIjsKIH0KIAorYm9vbCBXZWJLaXRDU1NTaGFk
ZXJWYWx1ZTo6ZXF1YWxzKGNvbnN0IFdlYktpdENTU1NoYWRlclZhbHVlJiBvdGhlcikgY29uc3QK
K3sKKyAgICByZXR1cm4gbV91cmwgPT0gb3RoZXIubV91cmw7Cit9CisKIHZvaWQgV2ViS2l0Q1NT
U2hhZGVyVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKaW5kZXggYzQzMjAxYy4uN2IwNWU5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKQEAgLTUwLDYgKzUw
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAg
IGJvb2wgZXF1YWxzKGNvbnN0IFdlYktpdENTU1NoYWRlclZhbHVlJikgY29uc3Q7CisKICAgICB2
b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5oCmluZGV4IGZkMTE3ZjIuLjE4ZjcwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworICAgIGJvb2wgZXF1YWxzKGNvbnN0
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IG90aGVyLm1fdHlwZTsgfQogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0cmluZyBj
dXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIFN0cmluZz4mKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCmluZGV4IDI5NmE2M2MuLjEzMmQxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAKQEAgLTI0NSw5ICsyNDUsNyBAQCBib29sIEhUTUxBdHRyaWJ1dGVF
cXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVudCwgU3R5bGVQ
cm9wZQogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZUFzQ1NTVmFs
dWUoZWxlbWVudCk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdHlsZVZhbHVlID0gc3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsKICAgICAKLSAgICAvLyBGSVhNRTogVGhp
cyBpcyB2ZXJ5IGluZWZmaWNpZW50IHdheSBvZiBjb21wYXJpbmcgdmFsdWVzCi0gICAgLy8gYnV0
IHdlIGNhbid0IHN0cmluZyBjb21wYXJlIGF0dHJpYnV0ZSB2YWx1ZSBhbmQgQ1NTIHByb3BlcnR5
IHZhbHVlLgotICAgIHJldHVybiB2YWx1ZSAmJiBzdHlsZVZhbHVlICYmIHZhbHVlLT5jc3NUZXh0
KCkgPT0gc3R5bGVWYWx1ZS0+Y3NzVGV4dCgpOworICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQ
dHI8Q1NTVmFsdWU+KHZhbHVlLCBzdHlsZVZhbHVlKTsKIH0KIAogdm9pZCBIVE1MQXR0cmlidXRl
RXF1aXZhbGVudDo6YWRkVG9TdHlsZShFbGVtZW50KiBlbGVtZW50LCBFZGl0aW5nU3R5bGUqIHN0
eWxlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAKaW5kZXggYTM0YWQxOC4uMDlhZWVjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCkBAIC0xMDUsNiArMTA1LDExIEBAIFBhc3NSZWZQdHI8
U1ZHQ29sb3I+IFNWR0NvbG9yOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNWR0NvbG9yKFNWR0NvbG9yQ2xhc3MsICp0aGlzKSk7CiB9CiAKK2Jvb2wgU1ZH
Q29sb3I6OmVxdWFscyhjb25zdCBTVkdDb2xvciYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fY29sb3JUeXBlID09IG90aGVyLm1fY29sb3JUeXBlICYmIG1fY29sb3IgPT0gb3RoZXIubV9j
b2xvcjsKK30KKwogdm9pZCBTVkdDb2xvcjo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xh
c3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpD
U1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ29sb3IuaAppbmRleCA3ZGRkY2Q3Li41YjM2MGFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29sb3IuaApAQCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGFzc1JlZlB0
cjxTVkdDb2xvcj4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29u
c3QgU1ZHQ29sb3ImKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YWludC5jcHAKaW5kZXggY2NlMWY0ZS4uM2M5ZjM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3Bw
CkBAIC0xMTIsNiArMTEyLDExIEBAIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IFNWR1BhaW50OjpjbG9u
ZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhaW50KCp0aGlz
KSk7CiB9CiAKK2Jvb2wgU1ZHUGFpbnQ6OmVxdWFscyhjb25zdCBTVkdQYWludCYgb3RoZXIpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcGFpbnRUeXBlID09IG90aGVyLm1fcGFpbnRUeXBlICYmIG1f
dXJpID09IG90aGVyLm1fdXJpICYmIFNWR0NvbG9yOjplcXVhbHMob3RoZXIpOworfQorCiB2b2lk
IFNWR1BhaW50OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YWludC5oCmluZGV4IGFjNTY3NWIuLmE2ZmQwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYWludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5oCkBAIC05
NSw2ICs5NSw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGNsb25lRm9y
Q1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IFNWR1BhaW50JikgY29uc3Q7
CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CiAKIHByaXZhdGU6Cg==
</data>
<flag name="review"
          id="202220"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184951</attachid>
            <date>2013-01-28 01:24:57 -0800</date>
            <delta_ts>2013-02-11 00:28:53 -0800</delta_ts>
            <desc>Patch 7</desc>
            <filename>webcore_cssvalue_operator_eq_7.patch</filename>
            <type>text/plain</type>
            <size>87282</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZWVjZTVjLi5lZDhjODk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDEt
MTYgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IENTU1ZhbHVlOjpvcGVyYXRvcj09KCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjkwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIE5ldyBsYXlvdXQgdGVzdCB0byB2ZXJp
ZnkgdGhhdCBDU1NWYWx1ZSBvYmplY3RzIGNvbXBhcmlzb24gd29ya3MgcHJvcGVybHkuCisKKyAg
ICAgICAgKiBjc3NvbS9jc3N2YWx1ZS1jb21wYXJpc29uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi5odG1sOiBBZGRlZC4KKwogMjAxMy0w
MS0yMyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgY2xlYW51cCBvZiBjb21tZW50cyBhbmQgYSBjb21tZW50ZWQgdGVzdC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Nzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg3ODM5ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Nzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAzIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBDU1NWYWx1ZSBvYmplY3RzIGNv
bXBhcmlzb24gd29ya3MgY29ycmVjdGx5LgorCisKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMjAlIiBm
b3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICIyZW0i
IGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjJy
ZW0iIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMg
IjIwcHgiIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1
ZXMgIjJjbSIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1Zh
bHVlcyAiMjBtbSIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENT
U1ZhbHVlcyAiNGluIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28g
Q1NTVmFsdWVzICIyMHB0IiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBU
d28gQ1NTVmFsdWVzICIxMHBjIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFT
UyBUd28gQ1NTVmFsdWVzICI2dnciIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQ
QVNTIFR3byBDU1NWYWx1ZXMgIjZ2aCIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAK
K1BBU1MgVHdvIENTU1ZhbHVlcyAiNHZtaW4iIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVh
bC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIi13ZWJraXQtY2FsYygtMTAwcHggKyAxMDAlKSIgZm9y
IHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMjAlIiBh
bmQgIjJlbSIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIG5vdCBlcXVhbC4gCitQQVNTIFR3byBD
U1NWYWx1ZXMgInJvdGF0ZSgxNWRlZykiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10cmFuc2Zvcm0i
IGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJvdGF0ZSgxLjU1cmFkKSIgZm9yIHBy
b3BlcnR5ICItd2Via2l0LXRyYW5zZm9ybSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVl
cyAicm90YXRlKDIwMGdyYWQpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtdHJhbnNmb3JtIiBhcmUg
ZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJyb3RhdGUoMC41dHVybikiIGZvciBwcm9wZXJ0
eSAiLXdlYmtpdC10cmFuc2Zvcm0iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJv
dGF0ZSgxNWRlZykiIGFuZCAicm90YXRlKDEuNTVyYWQpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQt
dHJhbnNmb3JtIiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAidXJsKGR1bW15
Oi8vdGVzdC5wbmcpIiBmb3IgcHJvcGVydHkgImJhY2tncm91bmQiIGFyZSBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgInVybChkdW1teTovL2dyZWVuLnBuZykiIGZvciBwcm9wZXJ0eSAiYmFj
a2dyb3VuZCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAidXJsKGR1bW15Oi8vdGVz
dC5wbmcpIiBhbmQgInVybChkdW1teTovL2dyZWVuLnBuZykiIGZvciBwcm9wZXJ0eSAiYmFja2dy
b3VuZCIgYXJlIG5vdCBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgImJvbGQiIGZvciBwcm9w
ZXJ0eSAiZm9udC13ZWlnaHQiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgImluaGVy
aXQiIGZvciBwcm9wZXJ0eSAiZm9udC13ZWlnaHQiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NW
YWx1ZXMgImJvbGQiIGFuZCAiaW5oZXJpdCIgZm9yIHByb3BlcnR5ICJmb250LXdlaWdodCIgYXJl
IG5vdCBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgImNvdW50ZXIoYSkiIGZvciBwcm9wZXJ0
eSAiY29udGVudCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiY291bnRlcnMoYSwg
Jy4nKSIgZm9yIHByb3BlcnR5ICJjb250ZW50IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFs
dWVzICJjb3VudGVyKGEpIiBhbmQgImNvdW50ZXJzKGEsICcuJykiIGZvciBwcm9wZXJ0eSAiY29u
dGVudCIgYXJlIG5vdCBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgImF0dHIoYSkiIGZvciBw
cm9wZXJ0eSAiY29udGVudCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiYXR0cihw
KSIgZm9yIHByb3BlcnR5ICJjb250ZW50IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVz
ICJhdHRyKGEpIiBhbmQgImF0dHIocCkiIGZvciBwcm9wZXJ0eSAiY29udGVudCIgYXJlIG5vdCBl
cXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJlY3QoNDBweCwgMCwgNDVweCwgLTVweCkiIGZv
ciBwcm9wZXJ0eSAiY2xpcCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAicmVjdCgx
MHB4LCA1cHgsIDE1cHgsIC0xMHB4KSIgZm9yIHByb3BlcnR5ICJjbGlwIiBhcmUgZXF1YWwuIAor
UEFTUyBUd28gQ1NTVmFsdWVzICJyZWN0KDQwcHgsIDAsIDQ1cHgsIC01cHgpIiBhbmQgInJlY3Qo
MTBweCwgNXB4LCAxNXB4LCAtMTBweCkiIGZvciBwcm9wZXJ0eSAiY2xpcCIgYXJlIG5vdCBlcXVh
bC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjMwcHggNzVweCAxNXB4IDE1cHgiIGZvciBwcm9wZXJ0
eSAiYm9yZGVyLXJhZGl1cyIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMTY0cHgg
LyA4MnB4IiBmb3IgcHJvcGVydHkgImJvcmRlci1yYWRpdXMiIGFyZSBlcXVhbC4gCitQQVNTIFR3
byBDU1NWYWx1ZXMgIjQwcHgiIGZvciBwcm9wZXJ0eSAiYm9yZGVyLXJhZGl1cyIgYXJlIGVxdWFs
LiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMzBweCA3NXB4IDE1cHggMTVweCIgYW5kICIxNjRweCAv
IDgycHgiIGZvciBwcm9wZXJ0eSAiYm9yZGVyLXJhZGl1cyIgYXJlIG5vdCBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgInJnYigyNTUsMCwwKSIgZm9yIHByb3BlcnR5ICJzdG9wLWNvbG9yIiBh
cmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICIjRkY1NTY2IiBmb3IgcHJvcGVydHkgInN0
b3AtY29sb3IiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJnYigyNTUsMCwwKSIg
YW5kICIjRkY1NTY2IiBmb3IgcHJvcGVydHkgInN0b3AtY29sb3IiIGFyZSBub3QgZXF1YWwuIAor
UEFTUyBUd28gQ1NTVmFsdWVzICJwb2x5Z29uKGV2ZW5vZGQsIDEwcHggNzVweCwgMTgwcHggMTgw
cHgsIDEwMHB4IDEwcHgsIDEwcHggMTgwcHgsIDE4MHB4IDc1cHgsIDEwcHggNzVweCkiIGZvciBw
cm9wZXJ0eSAiLXdlYmtpdC1jbGlwLXBhdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1
ZXMgInBvbHlnb24obm9uemVybywgMjAlIDIwJSwgODAlIDIwJSwgODAlIDgwJSwgMjAlIDgwJSki
IGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1jbGlwLXBhdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBD
U1NWYWx1ZXMgInBvbHlnb24oZXZlbm9kZCwgMTBweCA3NXB4LCAxODBweCAxODBweCwgMTAwcHgg
MTBweCwgMTBweCAxODBweCwgMTgwcHggNzVweCwgMTBweCA3NXB4KSIgYW5kICJwb2x5Z29uKG5v
bnplcm8sIDIwJSAyMCUsIDgwJSAyMCUsIDgwJSA4MCUsIDIwJSA4MCUpIiBmb3IgcHJvcGVydHkg
Ii13ZWJraXQtY2xpcC1wYXRoIiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAi
MTBzIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uIiBhcmUgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICIxMDBtcyIgZm9yIHByb3BlcnR5ICItd2Via2l0LWFuaW1h
dGlvbi1kdXJhdGlvbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMTBzIiBhbmQg
IjEwMG1zIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uIiBhcmUgbm90
IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAicmVkIiBmb3IgcHJvcGVydHkgImNvbG9yIiBh
cmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJibHVlIiBmb3IgcHJvcGVydHkgImNvbG9y
IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJyZWQiIGFuZCAiYmx1ZSIgZm9yIHBy
b3BlcnR5ICJjb2xvciIgYXJlIG5vdCBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInVybChy
ZXNvdXJjZXMvZ3JlZW5ib3gucG5nKSIgZm9yIHByb3BlcnR5ICJib3JkZXItaW1hZ2Utc291cmNl
IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJ1cmwocmVzb3VyY2VzL3JlZGJveC5w
bmcpIiBmb3IgcHJvcGVydHkgImJvcmRlci1pbWFnZS1zb3VyY2UiIGFyZSBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgInVybChyZXNvdXJjZXMvZ3JlZW5ib3gucG5nKSIgYW5kICJ1cmwocmVz
b3VyY2VzL3JlZGJveC5wbmcpIiBmb3IgcHJvcGVydHkgImJvcmRlci1pbWFnZS1zb3VyY2UiIGFy
ZSBub3QgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICIxIDIgMyA0IiBmb3IgcHJvcGVydHkg
ImJvcmRlci1pbWFnZS1zbGljZSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMiAz
IDQgNSIgZm9yIHByb3BlcnR5ICJib3JkZXItaW1hZ2Utc2xpY2UiIGFyZSBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgIjEgMiAzIDQiIGFuZCAiMiAzIDQgNSIgZm9yIHByb3BlcnR5ICJib3Jk
ZXItaW1hZ2Utc2xpY2UiIGFyZSBub3QgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJ1cmwo
cmVzb3VyY2VzL2dyZWVuYm94LnBuZykgMCAwLCBwb2ludGVyIiBmb3IgcHJvcGVydHkgImN1cnNv
ciIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAidXJsKHJlc291cmNlcy9jdXJzb3Iu
cG5nKSAxIDEsIHdhaXQiIGZvciBwcm9wZXJ0eSAiY3Vyc29yIiBhcmUgZXF1YWwuIAorUEFTUyBU
d28gQ1NTVmFsdWVzICJ1cmwocmVzb3VyY2VzL2dyZWVuYm94LnBuZykgMCAwLCBwb2ludGVyIiBh
bmQgInVybChyZXNvdXJjZXMvY3Vyc29yLnBuZykgMSAxLCB3YWl0IiBmb3IgcHJvcGVydHkgImN1
cnNvciIgYXJlIG5vdCBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIml0YWxpYyBib2xkIDEy
cHgvMzBweCBhcmlhbCIgZm9yIHByb3BlcnR5ICJmb250IiBhcmUgZXF1YWwuIAorUEFTUyBUd28g
Q1NTVmFsdWVzICJpdGFsaWMgYm9sZCA4cHgvMTZweCBoZWx2ZXRpY2EiIGZvciBwcm9wZXJ0eSAi
Zm9udCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiaXRhbGljIGJvbGQgMTJweC8z
MHB4IGFyaWFsIiBhbmQgIml0YWxpYyBib2xkIDhweC8xNnB4IGhlbHZldGljYSIgZm9yIHByb3Bl
cnR5ICJmb250IiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiLXdlYmtpdC1n
cmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgjY2NjKSwgdG8oIzAw
MCkpIiBmb3IgcHJvcGVydHkgImJhY2tncm91bmQiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NW
YWx1ZXMgIi13ZWJraXQtZ3JhZGllbnQocmFkaWFsLCA0NSA0NSwgMCwgNTIgNTAsIDAsIGZyb20o
I0E3RDMwQyksIHRvKHJnYmEoMSwxNTksOTgsMCkpLCBjb2xvci1zdG9wKDkwJSwgIzAxOUY2Mikp
IiBmb3IgcHJvcGVydHkgImJhY2tncm91bmQiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1
ZXMgIi13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20o
I2NjYyksIHRvKCMwMDApKSIgYW5kICItd2Via2l0LWdyYWRpZW50KHJhZGlhbCwgNDUgNDUsIDAs
IDUyIDUwLCAwLCBmcm9tKCNBN0QzMEMpLCB0byhyZ2JhKDEsMTU5LDk4LDApKSwgY29sb3Itc3Rv
cCg5MCUsICMwMTlGNjIpKSIgZm9yIHByb3BlcnR5ICJiYWNrZ3JvdW5kIiBhcmUgbm90IGVxdWFs
LiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiLXdlYmtpdC1jcm9zcy1mYWRlKHVybChkdW1teTovL2V4
YW1wbGUucG5nKSwgdXJsKGR1bW15Oi8vZXhhbXBsZS5wbmcpLCA1MCUpIiBmb3IgcHJvcGVydHkg
ImJhY2tncm91bmQtaW1hZ2UiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIi13ZWJr
aXQtY3Jvc3MtZmFkZSh1cmwoZHVtbXk6Ly9iYWNrZ3JvdW5kLnBuZyksIHVybChkdW1teTovL2Zv
cmVncm91bmQucG5nKSwgODAlKSIgZm9yIHByb3BlcnR5ICJiYWNrZ3JvdW5kLWltYWdlIiBhcmUg
ZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICItd2Via2l0LWNyb3NzLWZhZGUodXJsKGR1bW15
Oi8vZXhhbXBsZS5wbmcpLCB1cmwoZHVtbXk6Ly9leGFtcGxlLnBuZyksIDUwJSkiIGFuZCAiLXdl
YmtpdC1jcm9zcy1mYWRlKHVybChkdW1teTovL2JhY2tncm91bmQucG5nKSwgdXJsKGR1bW15Oi8v
Zm9yZWdyb3VuZC5wbmcpLCA4MCUpIiBmb3IgcHJvcGVydHkgImJhY2tncm91bmQtaW1hZ2UiIGFy
ZSBub3QgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJiZWxvdyAxMHB4IiBmb3IgcHJvcGVy
dHkgIi13ZWJraXQtYm94LXJlZmxlY3QiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMg
ImJlbG93IDBweCAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9t
LCBmcm9tKHRyYW5zcGFyZW50KSwgdG8ocmdiYSgxMCwgNTUsIDIzNCwgMSkpKSIgZm9yIHByb3Bl
cnR5ICItd2Via2l0LWJveC1yZWZsZWN0IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVz
ICJiZWxvdyAxMHB4IiBhbmQgImJlbG93IDBweCAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVm
dCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHRyYW5zcGFyZW50KSwgdG8ocmdiYSgxMCwgNTUsIDIz
NCwgMSkpKSIgZm9yIHByb3BlcnR5ICItd2Via2l0LWJveC1yZWZsZWN0IiBhcmUgbm90IGVxdWFs
LiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMCAtMjBweCAxMHB4IHJlZCwgMCAyMHB4IDEwcHggYmx1
ZSIgZm9yIHByb3BlcnR5ICItd2Via2l0LWJveC1zaGFkb3ciIGFyZSBlcXVhbC4gCitQQVNTIFR3
byBDU1NWYWx1ZXMgIjAgMjBweCAxMHB4IGJsdWUiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1ib3gt
c2hhZG93IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICI1cHggNXB4IDVweCByZ2Jh
KDAsIDAsIDAsIDAuMykiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1ib3gtc2hhZG93IiBhcmUgZXF1
YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICIwIC0yMHB4IDEwcHggcmVkLCAwIDIwcHggMTBweCBi
bHVlIiBhbmQgIjAgMjBweCAxMHB4IGJsdWUiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1ib3gtc2hh
ZG93IiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiY3ViaWMtYmV6aWVyKDAu
MjUsIDAuMSwgMC4yNSwgMSkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10cmFuc2l0aW9uLXRpbWlu
Zy1mdW5jdGlvbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAibGluZWFyIiBmb3Ig
cHJvcGVydHkgIi13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iIGFyZSBlcXVhbC4g
CitQQVNTIFR3byBDU1NWYWx1ZXMgInN0ZXBzKDMsIGVuZCkiIGZvciBwcm9wZXJ0eSAiLXdlYmtp
dC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1Zh
bHVlcyAiY3ViaWMtYmV6aWVyKDAuMjUsIDAuMSwgMC4yNSwgMSkiIGFuZCAibGluZWFyIiBmb3Ig
cHJvcGVydHkgIi13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24iIGFyZSBub3QgZXF1
YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJyb3RhdGUoMzBkZWcpIiBmb3IgcHJvcGVydHkgIi13
ZWJraXQtdHJhbnNmb3JtIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJ0cmFuc2xh
dGUoNTBweCw1MHB4KSIgZm9yIHByb3BlcnR5ICItd2Via2l0LXRyYW5zZm9ybSIgYXJlIGVxdWFs
LiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAic2NhbGUoMiw0KSIgZm9yIHByb3BlcnR5ICItd2Via2l0
LXRyYW5zZm9ybSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAic2tldygzMGRlZywy
MGRlZykiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10cmFuc2Zvcm0iIGFyZSBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgIm1hdHJpeCgwLjQsMC41LC0wLjUsMC40LDAsMCkiIGZvciBwcm9wZXJ0
eSAiLXdlYmtpdC10cmFuc2Zvcm0iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJv
dGF0ZSgzMGRlZykiIGFuZCAidHJhbnNsYXRlKDUwcHgsNTBweCkiIGZvciBwcm9wZXJ0eSAiLXdl
YmtpdC10cmFuc2Zvcm0iIGFyZSBub3QgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJpbmxp
bmUtYm94IiBmb3IgcHJvcGVydHkgIi13ZWJraXQtbGluZS1ib3gtY29udGFpbiIgYXJlIGVxdWFs
LiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiZm9udCIgZm9yIHByb3BlcnR5ICItd2Via2l0LWxpbmUt
Ym94LWNvbnRhaW4iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgImdseXBocyIgZm9y
IHByb3BlcnR5ICItd2Via2l0LWxpbmUtYm94LWNvbnRhaW4iIGFyZSBlcXVhbC4gCitQQVNTIFR3
byBDU1NWYWx1ZXMgInJlcGxhY2VkIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtbGluZS1ib3gtY29u
dGFpbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiaW5saW5lLWJveCIgYW5kICJm
b250IiBmb3IgcHJvcGVydHkgIi13ZWJraXQtbGluZS1ib3gtY29udGFpbiIgYXJlIG5vdCBlcXVh
bC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIi13ZWJraXQtaW1hZ2Utc2V0KHVybChkdW1teTovL3Rl
c3QucG5nKSAxeCwgdXJsKGR1bW15Oi8vdGVzdC5wbmcpIDJ4KSIgZm9yIHByb3BlcnR5ICJiYWNr
Z3JvdW5kLWltYWdlIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICItd2Via2l0LWlt
YWdlLXNldCh1cmwoZHVtbXk6Ly9zbWFsbC5wbmcpIDJ4LCB1cmwoZHVtbXk6Ly9iaWcucG5nKSAz
eCkiIGZvciBwcm9wZXJ0eSAiYmFja2dyb3VuZC1pbWFnZSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdv
IENTU1ZhbHVlcyAiLXdlYmtpdC1pbWFnZS1zZXQodXJsKGR1bW15Oi8vdGVzdC5wbmcpIDF4LCB1
cmwoZHVtbXk6Ly90ZXN0LnBuZykgMngpIiBhbmQgIi13ZWJraXQtaW1hZ2Utc2V0KHVybChkdW1t
eTovL3NtYWxsLnBuZykgMngsIHVybChkdW1teTovL2JpZy5wbmcpIDN4KSIgZm9yIHByb3BlcnR5
ICJiYWNrZ3JvdW5kLWltYWdlIiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAi
Z3JheXNjYWxlKDEwMCUpIHNlcGlhKDEwMCUpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtZmlsdGVy
IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJzZXBpYSgxMCUpIGdyYXlzY2FsZSg1
MCUpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtZmlsdGVyIiBhcmUgZXF1YWwuIAorUEFTUyBUd28g
Q1NTVmFsdWVzICJncmF5c2NhbGUoMTAwJSkgc2VwaWEoMTAwJSkiIGFuZCAic2VwaWEoMTAlKSBn
cmF5c2NhbGUoNTAlKSIgZm9yIHByb3BlcnR5ICItd2Via2l0LWZpbHRlciIgYXJlIG5vdCBlcXVh
bC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgImRhc2hib2FyZC1yZWdpb24obGFiZWwgY2lyY2xlKSIg
Zm9yIHByb3BlcnR5ICItd2Via2l0LWRhc2hib2FyZC1yZWdpb24iIGFyZSBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgImRhc2hib2FyZC1yZWdpb24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4
IDRweCkgZGFzaGJvYXJkLXJlZ2lvbihsYWJlbCByZWN0YW5nbGUgNXB4IDZweCA3cHggOHB4KSIg
Zm9yIHByb3BlcnR5ICItd2Via2l0LWRhc2hib2FyZC1yZWdpb24iIGFyZSBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgImRhc2hib2FyZC1yZWdpb24obGFiZWwgY2lyY2xlKSIgYW5kICJkYXNo
Ym9hcmQtcmVnaW9uKGxhYmVsIGNpcmNsZSAxcHggMnB4IDNweCA0cHgpIGRhc2hib2FyZC1yZWdp
b24obGFiZWwgcmVjdGFuZ2xlIDVweCA2cHggN3B4IDhweCkiIGZvciBwcm9wZXJ0eSAiLXdlYmtp
dC1kYXNoYm9hcmQtcmVnaW9uIiBhcmUgbm90IGVxdWFsLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi5odG1sIGIvTGF5b3V0VGVzdHMvY3Nzb20v
Y3NzdmFsdWUtY29tcGFyaXNvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjFhNzMxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3NvbS9jc3N2YWx1
ZS1jb21wYXJpc29uLmh0bWwKQEAgLTAsMCArMSw4NCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRt
bD4KKzxoZWFkPgorICA8dGl0bGU+Q1NTVmFsdWUgY29tcGFyaXNvbiB0ZXN0PC90aXRsZT4KKyAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuKCkiPgorPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgQ1NTVmFsdWUg
b2JqZWN0cyBjb21wYXJpc29uIHdvcmtzIGNvcnJlY3RseS48L3A+Cis8ZGl2IGlkPSJ0ZXN0IiBj
b250ZW50ZWRpdGFibGU+PC9kaXY+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
K3NldHVwKHsgImV4cGxpY2l0X2RvbmUiOiB0cnVlIH0pOworCitmdW5jdGlvbiBydW4oKSB7Cisg
ICAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Cisg
ICAgc3R5bGVFbGVtZW50LnR5cGUgPSAidGV4dC9jc3MiOworICAgIHZhciBzdHlsZVRleHROb2Rl
ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpOworICAgIHN0eWxlRWxlbWVudC5hcHBlbmRD
aGlsZChzdHlsZVRleHROb2RlKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
aGVhZCIpWzBdLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7CisKKyAgICB2YXIgZGl2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICBkaXYuZm9jdXMoKTsKKworICAgIGZ1
bmN0aW9uIHJ1blRlc3QocHJvcGVydHlOYW1lLCBzdHlsZVNoZWV0UHJvcGVydHlWYWx1ZSwgaW5s
aW5lU3R5bGVQcm9wZXJ0eVZhbHVlLCBleHBlY3RlZFJlc3VsdCkgeworICAgICAgc3R5bGVUZXh0
Tm9kZS5kYXRhID0gImRpdiB7ICIgKyBwcm9wZXJ0eU5hbWUgKyAiIDogIiArIHN0eWxlU2hlZXRQ
cm9wZXJ0eVZhbHVlICsgIjsgfSI7CisgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0
SFRNTCcsIGZhbHNlLCAiPGRpdiBpZD1cImluc2VydGVkRGl2XCIgc3R5bGU9XCIiICsgcHJvcGVy
dHlOYW1lICsgIiA6ICIgKyBpbmxpbmVTdHlsZVByb3BlcnR5VmFsdWUgKyAiOyBcIj48L2Rpdj4i
KTsKKyAgICAgIHZhciBpbnNlcnRlZERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnNl
cnRlZERpdicpOworICAgICAgdmFyIHJlc3VsdCA9IGV4cGVjdGVkUmVzdWx0OworICAgICAgaWYg
KHByb3BlcnR5TmFtZSBpbiBpbnNlcnRlZERpdi5zdHlsZSkKKyAgICAgICAgICByZXN1bHQgPSBp
bnNlcnRlZERpdi5zdHlsZVtwcm9wZXJ0eU5hbWVdID09PSAiIjsKKyAgICAgIGluc2VydGVkRGl2
LnJlbW92ZSgpOworICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgIHZhciB0ZXN0cyA9
IFsgeyJ3aWR0aCIgOiBbIjIwJSIsICIyZW0iLCAiMnJlbSIsICIyMHB4IiwgIjJjbSIsICIyMG1t
IiwgIjRpbiIsICIyMHB0IiwgIjEwcGMiLCAiNnZ3IiwgIjZ2aCIsICI0dm1pbiIsICItd2Via2l0
LWNhbGMoLTEwMHB4ICsgMTAwJSkiXX0sIC8vIGxlbmd0aHMsIGNhbGMKKyAgICAgICAgICAgICAg
ICAgIHsiLXdlYmtpdC10cmFuc2Zvcm0iIDogWyJyb3RhdGUoMTVkZWcpIiwgInJvdGF0ZSgxLjU1
cmFkKSIsICJyb3RhdGUoMjAwZ3JhZCkiLCAicm90YXRlKDAuNXR1cm4pIl19LCAvLyBhbmdsZQor
ICAgICAgICAgICAgICAgICAgeyJiYWNrZ3JvdW5kIiA6IFsidXJsKGR1bW15Oi8vdGVzdC5wbmcp
IiwgInVybChkdW1teTovL2dyZWVuLnBuZykiXX0sIC8vIHVyaQorICAgICAgICAgICAgICAgICAg
eyJmb250LXdlaWdodCIgOiBbImJvbGQiLCAiaW5oZXJpdCJdfSwgLy8gaWRlbnQKKyAgICAgICAg
ICAgICAgICAgIHsiY29udGVudCIgOiBbImNvdW50ZXIoYSkiLCAiY291bnRlcnMoYSwgJy4nKSJd
fSwgLy8gY291bnRlcgorICAgICAgICAgICAgICAgICAgeyJjb250ZW50IiA6IFsiYXR0cihhKSIs
ICJhdHRyKHApIl19LCAvLyBhdHRyCisgICAgICAgICAgICAgICAgICB7ImNsaXAiIDogWyJyZWN0
KDQwcHgsIDAsIDQ1cHgsIC01cHgpIiwgInJlY3QoMTBweCwgNXB4LCAxNXB4LCAtMTBweCkiXX0s
IC8vIHJlY3QKKyAgICAgICAgICAgICAgICAgIHsiYm9yZGVyLXJhZGl1cyIgOiBbIjMwcHggNzVw
eCAxNXB4IDE1cHgiLCAiMTY0cHggLyA4MnB4IiwgIjQwcHgiXX0sIC8vIHF1YWRzCisgICAgICAg
ICAgICAgICAgICB7InN0b3AtY29sb3IiIDogWyJyZ2IoMjU1LDAsMCkiLCAiI0ZGNTU2NiJdfSwg
Ly8gaGV4LCByZ2IgY29sb3IKKyAgICAgICAgICAgICAgICAgIHsiLXdlYmtpdC1jbGlwLXBhdGgi
IDogWyJwb2x5Z29uKGV2ZW5vZGQsIDEwcHggNzVweCwgMTgwcHggMTgwcHgsIDEwMHB4IDEwcHgs
IDEwcHggMTgwcHgsIDE4MHB4IDc1cHgsIDEwcHggNzVweCkiLCAicG9seWdvbihub256ZXJvLCAy
MCUgMjAlLCA4MCUgMjAlLCA4MCUgODAlLCAyMCUgODAlKSJdfSwgLy8gc2hhcGUgdmFsdWUKKyAg
ICAgICAgICAgICAgICAgIHsiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24iIDogWyIxMHMiLCAi
MTAwbXMiXX0sIC8vIHNlY29uZHMsIG1pbGxpc2Vjb25kcworICAgICAgICAgICAgICAgICAgeyJj
b2xvciIgOiBbInJlZCIsICJibHVlIl19LCAvLyBpZGVudAorICAgICAgICAgICAgICAgICAgeyJi
b3JkZXItaW1hZ2Utc291cmNlIiA6IFsidXJsKHJlc291cmNlcy9ncmVlbmJveC5wbmcpIiwgInVy
bChyZXNvdXJjZXMvcmVkYm94LnBuZykiXX0sIC8vIGltYWdlCisgICAgICAgICAgICAgICAgICB7
ImJvcmRlci1pbWFnZS1zbGljZSIgOiBbIjEgMiAzIDQiLCAiMiAzIDQgNSJdfSwgLy8gYm9yZGVy
IGltYWdlIHNsaWNlCisgICAgICAgICAgICAgICAgICB7ImN1cnNvciIgOiBbInVybChyZXNvdXJj
ZXMvZ3JlZW5ib3gucG5nKSAwIDAsIHBvaW50ZXIiLCAidXJsKHJlc291cmNlcy9jdXJzb3IucG5n
KSAxIDEsIHdhaXQiXX0sIC8vIGN1cnNvcgorICAgICAgICAgICAgICAgICAgeyJmb250IiA6IFsi
aXRhbGljIGJvbGQgMTJweC8zMHB4IGFyaWFsIiwgIml0YWxpYyBib2xkIDhweC8xNnB4IGhlbHZl
dGljYSJdfSwgLy8gZm9udAorICAgICAgICAgICAgICAgICAgeyJiYWNrZ3JvdW5kIiA6IFsiLXdl
YmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgjY2NjKSwg
dG8oIzAwMCkpIiwgIi13ZWJraXQtZ3JhZGllbnQocmFkaWFsLCA0NSA0NSwgMCwgNTIgNTAsIDAs
IGZyb20oI0E3RDMwQyksIHRvKHJnYmEoMSwxNTksOTgsMCkpLCBjb2xvci1zdG9wKDkwJSwgIzAx
OUY2MikpIl19LCAvLyBncmFkaWVudHMKKyAgICAgICAgICAgICAgICAgIHsiYmFja2dyb3VuZC1p
bWFnZSIgOiBbIi13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoZHVtbXk6Ly9leGFtcGxlLnBuZyksIHVy
bChkdW1teTovL2V4YW1wbGUucG5nKSwgNTAlKSIsICItd2Via2l0LWNyb3NzLWZhZGUodXJsKGR1
bW15Oi8vYmFja2dyb3VuZC5wbmcpLCB1cmwoZHVtbXk6Ly9mb3JlZ3JvdW5kLnBuZyksIDgwJSki
XX0sIC8vIGNyb3NzZmFkZQorICAgICAgICAgICAgICAgICAgeyItd2Via2l0LWJveC1yZWZsZWN0
IiA6IFsiYmVsb3cgMTBweCIsICJiZWxvdyAwcHggLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxl
ZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSh0cmFuc3BhcmVudCksIHRvKHJnYmEoMTAsIDU1LCAy
MzQsIDEpKSkiXX0sIC8vIHJlZmxlY3QKKyAgICAgICAgICAgICAgICAgIHsiLXdlYmtpdC1ib3gt
c2hhZG93IiA6IFsiMCAtMjBweCAxMHB4IHJlZCwgMCAyMHB4IDEwcHggYmx1ZSIsICIwIDIwcHgg
MTBweCBibHVlIiwgIjVweCA1cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4zKSJdfSwgLy8gc2hhZG93
CisgICAgICAgICAgICAgICAgICB7Ii13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24i
IDogWyJjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKSIsICJsaW5lYXIiLCAic3RlcHMo
MywgZW5kKSJdfSwgLy8gdGltaW5nIGZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgeyItd2Vi
a2l0LXRyYW5zZm9ybSIgOiBbInJvdGF0ZSgzMGRlZykiLCAidHJhbnNsYXRlKDUwcHgsNTBweCki
LCAic2NhbGUoMiw0KSIsICJza2V3KDMwZGVnLDIwZGVnKSIsICJtYXRyaXgoMC40LDAuNSwtMC41
LDAuNCwwLDApIl19LCAvLyB0cmFuc2Zvcm1zCisgICAgICAgICAgICAgICAgICB7Ii13ZWJraXQt
bGluZS1ib3gtY29udGFpbiIgOiBbImlubGluZS1ib3giLCAiZm9udCIsICJnbHlwaHMiLCAicmVw
bGFjZWQiXX0sIC8vIGxpbmUtYm94LWNvbnRhaW4KKyAgICAgICAgICAgICAgICAgIHsiYmFja2dy
b3VuZC1pbWFnZSIgOiBbIi13ZWJraXQtaW1hZ2Utc2V0KHVybChkdW1teTovL3Rlc3QucG5nKSAx
eCwgdXJsKGR1bW15Oi8vdGVzdC5wbmcpIDJ4KSIsICItd2Via2l0LWltYWdlLXNldCh1cmwoZHVt
bXk6Ly9zbWFsbC5wbmcpIDJ4LCB1cmwoZHVtbXk6Ly9iaWcucG5nKSAzeCkiXX0sIC8vIGltYWdl
IHNldAorICAgICAgICAgICAgICAgICAgeyItd2Via2l0LWZpbHRlciIgOiBbImdyYXlzY2FsZSgx
MDAlKSBzZXBpYSgxMDAlKSIsICJzZXBpYSgxMCUpIGdyYXlzY2FsZSg1MCUpIl19LCAvLyBmaWx0
ZXIKKyAgICAgICAgICAgICAgICAgIHsiLXdlYmtpdC1kYXNoYm9hcmQtcmVnaW9uIiA6IFsiZGFz
aGJvYXJkLXJlZ2lvbihsYWJlbCBjaXJjbGUpIiwgImRhc2hib2FyZC1yZWdpb24obGFiZWwgY2ly
Y2xlIDFweCAycHggM3B4IDRweCkgZGFzaGJvYXJkLXJlZ2lvbihsYWJlbCByZWN0YW5nbGUgNXB4
IDZweCA3cHggOHB4KSJdfSAvLyBkYXNoYm9hcmQgcmVnaW9uCisgICAgICAgICAgICAgICAgXTsK
KworICAgZm9yICh2YXIgaW5kZXggaW4gdGVzdHMpIHsKKyAgICAgICAgdmFyIHRlc3RNYXAgPSB0
ZXN0c1tpbmRleF07CisgICAgICAgIGZvciAodmFyIGtleSBpbiB0ZXN0TWFwKSB7CisgICAgICAg
ICAgICB2YXIgdGVzdFZhbHVlcyA9IHRlc3RNYXBba2V5XTsKKworICAgICAgICAgICAgLy8gVGVz
dHMgZm9yIGVxdWFsaXR5LgorICAgICAgICAgICAgZm9yKHZhciB0ZXN0SW5kZXggaW4gdGVzdFZh
bHVlcykKKyAgICAgICAgICAgICAgICB0ZXN0KGZ1bmN0aW9uKCkge2Fzc2VydF90cnVlKHJ1blRl
c3Qoa2V5LCB0ZXN0VmFsdWVzW3Rlc3RJbmRleF0sIHRlc3RWYWx1ZXNbdGVzdEluZGV4XSwgdHJ1
ZSkpfSwgIlR3byBDU1NWYWx1ZXMgXCIiICsgdGVzdFZhbHVlc1t0ZXN0SW5kZXhdICsgIlwiIGZv
ciBwcm9wZXJ0eSBcIiIgKyBrZXkgKyAiXCIgYXJlIGVxdWFsLiIpOworCisgICAgICAgICAgICAv
LyBUZXN0IHRoYXQgY29tcGFyaXNvbiBvZiBub24tZXF1YWwgY3NzdmFsdWVzIHJldHVybiBmYWxz
ZS4KKyAgICAgICAgICAgIGlmICh0ZXN0VmFsdWVzLmxlbmd0aCA+IDEpCisgICAgICAgICAgICAg
ICAgdGVzdChmdW5jdGlvbigpIHthc3NlcnRfZmFsc2UocnVuVGVzdChrZXksIHRlc3RWYWx1ZXNb
MF0sIHRlc3RWYWx1ZXNbMV0sIGZhbHNlKSl9LCAiVHdvIENTU1ZhbHVlcyBcIiIgKyB0ZXN0VmFs
dWVzWzBdICsgIlwiIGFuZCBcIiIgKyB0ZXN0VmFsdWVzWzFdICsgIlwiIGZvciBwcm9wZXJ0eSBc
IiIgKyBrZXkgKyAiXCIgYXJlIG5vdCBlcXVhbC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGRvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWQwMjc4OC4uMGI5NTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyMSBAQAorMjAxMy0wMS0x
MCAgQWxleGFuZGVyIFNoYWxhbW92ICA8YWxleGFuZGVyLnNoYWxhbW92QGludGVsLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgQ1NTVmFsdWU6Om9wZXJhdG9yPT0oKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgQWRkZWQgY29tcGFyaXNvbiBtZXRob2Qg
dG8gQ1NTVmFsdWUgYW5kIGl0cyBjaGlsZHJlbiwgc28gdGhhdCB0aGUKKyAgICAgICAgY3NzIHZh
bHVlcyBjb3VsZCBiZSBjb21wYXJlZCBlZmZpY2llbnRseS4gQmVmb3JlIHRoaXMgcGF0Y2gsIENT
U1ZhbHVlCisgICAgICAgIG9iamVjdHMgd2VyZSBjb21wYXJlZCB1c2luZyBzdHJpbmdzIHRoYXQg
d2VyZSBnZW5lcmF0ZWQgYnkgdGhlIGNzc1RleHQoKSBtZXRob2QuCisKKyAgICAgICAgVGVzdDog
Y3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi5odG1sCisKKyAgICAgICAgSW1wbGVtZW50IENTU1Zh
bHVlOjpvcGVyYXRvcj09KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMjkwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IGNzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24uaHRtbAorCisgICAgICAg
ICogY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQXNw
ZWN0UmF0aW9WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNz
cy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmg6CisgICAgICAgIChDU1NBc3BlY3RSYXRpb1ZhbHVlKToK
KyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
QmFzaWNTaGFwZVJlY3RhbmdsZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUNpcmNsZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
QmFzaWNTaGFwZVBvbHlnb246OmVxdWFscyk6CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVz
Lmg6CisgICAgICAgIChDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlKToKKyAgICAgICAgKENTU0Jhc2lj
U2hhcGVDaXJjbGUpOgorICAgICAgICAoQ1NTQmFzaWNTaGFwZUVsbGlwc2UpOgorICAgICAgICAo
Q1NTQmFzaWNTaGFwZVBvbHlnb24pOgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpl
cXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdl
U2xpY2VWYWx1ZS5oOgorICAgICAgICAoQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKToKKyAgICAg
ICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
YWxjVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbGNQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKENTU0NhbGNQcmltaXRp
dmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjUHJpbWl0aXZlVmFsdWU6OnR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbjo6ZXF1YWxzKToKKyAg
ICAgICAgKENTU0NhbGNCaW5hcnlPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2Fs
Y0JpbmFyeU9wZXJhdGlvbjo6dHlwZSk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNFeHByZXNzaW9uTm9kZTo6ZXF1YWxzKToK
KyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChDU1NDYWxjVmFsdWUp
OgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NDYW52YXNWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNz
cy9DU1NDYW52YXNWYWx1ZS5oOgorICAgICAgICAoQ1NTQ2FudmFzVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3NzUHJvcGVydHlNYXRj
aGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRlc1Nob3J0aGFuZCk6CisgICAgICAgICogY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpl
cXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmg6CisgICAgICAgIChDU1NDcm9zc2ZhZGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1
ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NDdXJzb3JJ
bWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNyY1ZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuaDoKKyAgICAgICAgKENTU0ZvbnRGYWNlU3JjVmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NGdW5jdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Z1
bmN0aW9uVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3Mv
Q1NTRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoQ1NTRnVuY3Rpb25WYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFy
R3JhZGllbnRWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvQ1NT
R3JhZGllbnRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRDb2xvclN0b3A6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSk6CisgICAgICAg
IChDU1NSYWRpYWxHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0lt
YWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW5oZXJpdGVkVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChDU1NJbmhlcml0
ZWRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0luaXRpYWxWYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTSW5pdGlhbFZhbHVlOjplcXVhbHMpOgorICAgICAgICAoQ1NTSW5pdGlhbFZhbHVl
KToKKyAgICAgICAgKiBjc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTGluZUJveENvbnRhaW5WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6
OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaDoKKyAgICAgICAgKENTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
UmVmbGVjdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JlZmxlY3RWYWx1ZTo6ZXF1
YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NSZWZsZWN0VmFsdWUu
aDoKKyAgICAgICAgKENTU1JlZmxlY3RWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1RpbWluZ0Z1
bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvblZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyk6CisgICAgICAgICogY3Nz
L0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhclRp
bWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChDU1NMaW5lYXJUaW1pbmdGdW5j
dGlvblZhbHVlKToKKyAgICAgICAgKENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSk6
CisgICAgICAgIChDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9D
U1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NVbmljb2RlUmFu
Z2VWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NV
bmljb2RlUmFuZ2VWYWx1ZS5oOgorICAgICAgICAoQ1NTVW5pY29kZVJhbmdlVmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXBhcmVDU1NWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmVx
dWFscyk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIChDU1NWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVDU1NWYWx1ZVZlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlQ1NTVmFsdWVQdHIpOgorICAgICAgICAqIGNz
cy9DU1NWYWx1ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0OjpyZW1v
dmVBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0OjpoYXNWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0Lmg6CisgICAgICAgIChDU1NWYWx1ZUxpc3QpOgor
ICAgICAgICAqIGNzcy9DU1NWYXJpYWJsZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoQ1NTVmFyaWFibGVWYWx1ZSk6CisgICAg
ICAgICogY3NzL0NvdW50ZXIuaDoKKyAgICAgICAgKENvdW50ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q291bnRlcjo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvRGFzaGJvYXJkUmVnaW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXNoYm9hcmRSZWdpb246OmVxdWFscyk6CisgICAgICAgICogY3Nz
L0ZvbnRGZWF0dXJlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmVWYWx1
ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9Gb250RmVhdHVy
ZVZhbHVlLmg6CisgICAgICAgIChGb250RmVhdHVyZVZhbHVlKToKKyAgICAgICAgKiBjc3MvRm9u
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRWYWx1ZTo6ZXF1YWxzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9Gb250VmFsdWUuaDoKKyAgICAgICAgKEZvbnRW
YWx1ZSk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFeHAuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUXVlcnlFeHA6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGNzcy9QYWlyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQYWlyOjplcXVhbHMpOgorICAgICAgICAoUGFpcik6CisgICAgICAgICog
Y3NzL1JlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RCYXNlOjplcXVhbHMpOgorICAgICAg
ICAoUmVjdEJhc2UpOgorICAgICAgICAqIGNzcy9TaGFkb3dWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGNzcy9TaGFkb3dWYWx1ZS5oOgorICAgICAgICAoU2hhZG93VmFsdWUpOgorICAgICAgICAq
IGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVy
dHlTZXQ6OmdldDRWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6
cHJvcGVydHlNYXRjaGVzKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6
ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NBcnJh
eUZ1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZSk6
CisgICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdENTU0ZpbHRlclZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NG
aWx0ZXJWYWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZh
bHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKiBj
c3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENT
U1NWR0RvY3VtZW50VmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6ZXF1YWxzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oOgor
ICAgICAgICAoV2ViS2l0Q1NTU2hhZGVyVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU6OmVxdWFscyk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHls
ZSk6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Nv
bG9yOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3ZnL1NWR0NvbG9y
Lmg6CisgICAgICAgIChTVkdDb2xvcik6CisgICAgICAgICogc3ZnL1NWR1BhaW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhaW50OjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogc3ZnL1NWR1BhaW50Lmg6CisgICAgICAgIChTVkdQYWludCk6CisKIDIwMTMtMDEt
MjQgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0
UmF0aW9WYWx1ZS5jcHAKaW5kZXggODMwZjhjZi4uY2RlMGYzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcApAQCAtMzksNiArMzksMTEgQEAgU3RyaW5nIENT
U0FzcGVjdFJhdGlvVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBTdHJp
bmc6Om51bWJlcihtX251bWVyYXRvclZhbHVlKSArICcvJyArIFN0cmluZzo6bnVtYmVyKG1fZGVu
b21pbmF0b3JWYWx1ZSk7CiB9CiAKK2Jvb2wgQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6ZXF1YWxzKGNv
bnN0IENTU0FzcGVjdFJhdGlvVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX251
bWVyYXRvclZhbHVlID09IG90aGVyLm1fbnVtZXJhdG9yVmFsdWUgJiYgbV9kZW5vbWluYXRvclZh
bHVlID09IG90aGVyLm1fZGVub21pbmF0b3JWYWx1ZTsKK30KKwogdm9pZCBDU1NBc3BlY3RSYXRp
b1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaAppbmRleCA1Y2MzMzkyLi5kOWM1ZGVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVi
bGljOgogICAgIGZsb2F0IG51bWVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9udW1lcmF0
b3JWYWx1ZTsgfQogICAgIGZsb2F0IGRlbm9taW5hdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2Rlbm9taW5hdG9yVmFsdWU7IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0FzcGVjdFJh
dGlvVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuY3BwCmluZGV4IDNmZGE2YjEuLjE5NzRlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAK
QEAgLTc0LDYgKzc1LDIwIEBAIFN0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0
KCkgY29uc3QKICAgICAgICAgbV9yYWRpdXNZLmdldCgpID8gbV9yYWRpdXNZLT5jc3NUZXh0KCkg
OiBTdHJpbmcoKSk7CiB9CiAKK2Jvb2wgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6ZXF1YWxzKGNv
bnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25zdAoreworICAgIGlmIChzaGFwZS50eXBlKCkg
IT0gQ1NTX0JBU0lDX1NIQVBFX1JFQ1RBTkdMRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgY29uc3QgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSYgb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlJj4oc2hhcGUpOworICAgIHJldHVybiBjb21wYXJlQ1NT
VmFsdWVQdHIobV94LCBvdGhlci5tX3gpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0ciht
X3ksIG90aGVyLm1feSkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fd2lkdGgsIG90
aGVyLm1fd2lkdGgpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2hlaWdodCwgb3Ro
ZXIubV9oZWlnaHQpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX3JhZGl1c1gsIG90
aGVyLm1fcmFkaXVzWCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fcmFkaXVzWSwg
b3RoZXIubV9yYWRpdXNZKTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5n
IENTU0Jhc2ljU2hhcGVSZWN0YW5nbGU6OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25z
dCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogewpAQCAt
MTA2LDYgKzEyMSwxNyBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNv
bnN0CiAgICAgcmV0dXJuIGJ1aWxkQ2lyY2xlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBt
X2NlbnRlclktPmNzc1RleHQoKSwgbV9yYWRpdXMtPmNzc1RleHQoKSk7CiB9CiAKK2Jvb2wgQ1NT
QmFzaWNTaGFwZUNpcmNsZTo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25z
dAoreworICAgIGlmIChzaGFwZS50eXBlKCkgIT0gQ1NTX0JBU0lDX1NIQVBFX0NJUkNMRSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgQ1NTQmFzaWNTaGFwZUNpcmNsZSYgb3Ro
ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlQ2lyY2xlJj4oc2hhcGUpOworICAg
IHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIobV9jZW50ZXJYLCBvdGhlci5tX2NlbnRlclgpCisg
ICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2NlbnRlclksIG90aGVyLm1fY2VudGVyWSkK
KyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fcmFkaXVzLCBvdGhlci5tX3JhZGl1cyk7
Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NCYXNpY1NoYXBlQ2ly
Y2xlOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTEzMiw2ICsxNTgsMTggQEAgU3Ry
aW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gYnVp
bGRFbGxpcHNlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBtX2NlbnRlclktPmNzc1RleHQo
KSwgbV9yYWRpdXNYLT5jc3NUZXh0KCksIG1fcmFkaXVzWS0+Y3NzVGV4dCgpKTsKIH0KIAorYm9v
bCBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBl
KSBjb25zdAoreworICAgIGlmIChzaGFwZS50eXBlKCkgIT0gQ1NTX0JBU0lDX1NIQVBFX0VMTElQ
U0UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVFbGxp
cHNlJiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IENTU0Jhc2ljU2hhcGVFbGxpcHNlJj4oc2hh
cGUpOworICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIobV9jZW50ZXJYLCBvdGhlci5tX2Nl
bnRlclgpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2NlbnRlclksIG90aGVyLm1f
Y2VudGVyWSkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fcmFkaXVzWCwgb3RoZXIu
bV9yYWRpdXNYKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9yYWRpdXNZLCBvdGhl
ci5tX3JhZGl1c1kpOworfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NT
QmFzaWNTaGFwZUVsbGlwc2U6OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNo
TWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogewpAQCAtMTk5LDYg
KzIzNywxNSBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZVBvbHlnb246OmNzc1RleHQoKSBjb25zdAog
ICAgIHJldHVybiBidWlsZFBvbHlnb25TdHJpbmcobV93aW5kUnVsZSwgcG9pbnRzKTsKIH0KIAor
Ym9vbCBDU1NCYXNpY1NoYXBlUG9seWdvbjo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNo
YXBlKSBjb25zdAoreworICAgIGlmIChzaGFwZS50eXBlKCkgIT0gQ1NTX0JBU0lDX1NIQVBFX1BP
TFlHT04pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVQ
b2x5Z29uJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlUG9seWdvbiY+KHNo
YXBlKTsKKyAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlVmVjdG9yPENTU1ByaW1pdGl2ZVZhbHVl
PihtX3ZhbHVlcywgcmhzLm1fdmFsdWVzKTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVT
KQogU3RyaW5nIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJs
ZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggZWYzMjA5OC4uOGRiMGQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJp
bmcgY3NzVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0Jhc2ljU2hhcGUmKSBjb25zdCA9IDA7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAg
ICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdCA9IDA7CkBAIC04Miw2ICs4Myw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lD
X1NIQVBFX1JFQ1RBTkdMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKIAog
I2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNv
bnN0OwpAQCAtMTEzLDYgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX0NJUkNMRTsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0Jhc2ljU2hhcGUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZp
cnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0
b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwpAQCAtMTQzLDYgKzE0Niw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBF
X0VMTElQU0U7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAKICNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdW
YXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKQEAg
LTE3Nyw3ICsxODEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9QT0xZR09OOyB9CiAgICAgdmlydHVhbCBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0OwotCisgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNp
Y1NoYXBlJikgY29uc3Q7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgdmlydHVhbCBT
dHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTdHJpbmc+JikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJl
bmNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNl
VmFsdWUuY3BwCmluZGV4IDdkMWIzZGEuLmRjNzRiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCkBAIC01MCw2ICs1MCwxMSBAQCBTdHJp
bmcgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gdGV4dDsKIH0KIAorYm9vbCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OmVxdWFscyhj
b25zdCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVy
biBtX2ZpbGwgPT0gb3RoZXIubV9maWxsICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX3NsaWNlcywg
b3RoZXIubV9zbGljZXMpOworfQorCiB2b2lkIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCmluZGV4IDQ4OGI0YTQuLmMyODZlOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKQEAgLTQ1LDYgKzQ1
LDggQEAgcHVibGljOgogCiAgICAgUXVhZCogc2xpY2VzKCkgeyByZXR1cm4gbV9zbGljZXMgPyBt
X3NsaWNlcy0+Z2V0UXVhZFZhbHVlKCkgOiAwOyB9CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBD
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIC8vIFRoZXNl
IGZvdXIgdmFsdWVzIGFyZSB1c2VkIHRvIG1ha2UgImN1dHMiIGluIHRoZSBib3JkZXIgaW1hZ2Uu
IFRoZXkgY2FuIGJlIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcAppbmRleCBlOTBhN2QwLi45ZTU0MTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC05NSw2ICs5NSwxMSBAQCBTdHJpbmcgQ1NTQ2FsY1Zh
bHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gYnVpbGRDc3NUZXh0KG1fZXhw
cmVzc2lvbi0+Y3VzdG9tQ3NzVGV4dCgpKTsKIH0KIAorYm9vbCBDU1NDYWxjVmFsdWU6OmVxdWFs
cyhjb25zdCBDU1NDYWxjVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJl
Q1NTVmFsdWVQdHIobV9leHByZXNzaW9uLCBvdGhlci5tX2V4cHJlc3Npb24pOworfQorCiAjaWYg
RU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NTQ2FsY1ZhbHVlOjpjdXN0b21TZXJpYWxp
emVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4m
IHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTIyMywxMSArMjI4LDIxIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIDA7ICAgICAgICAKICAgICB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNv
bnN0IENTU0NhbGNFeHByZXNzaW9uTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRyKG1fdmFsdWUsIHN0YXRpY19jYXN0PGNv
bnN0IENTU0NhbGNQcmltaXRpdmVWYWx1ZSY+KG90aGVyKS5tX3ZhbHVlKTsKKyAgICB9CisKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIE1lbW9yeUNsYXNzSW5m
byBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsK
ICAgICAgICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZSk7CiAgICAgfQorCisgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDc3NDYWxjUHJpbWl0aXZlVmFsdWU7IH0KICAgICAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlKiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCkBAIC0zNTksNiArMzc0LDE5IEBAIHB1Ymxp
YzoKICAgICB9CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlJiBleHApIGNvbnN0CisgICAgeworICAgICAgICBpZiAodHlwZSgpICE9
IGV4cC50eXBlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY29uc3Qg
Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbiYgb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NDYWxj
QmluYXJ5T3BlcmF0aW9uJj4oZXhwKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZVB0
cihtX2xlZnRTaWRlLCBvdGhlci5tX2xlZnRTaWRlKQorICAgICAgICAgICAgJiYgY29tcGFyZUNT
U1ZhbHVlUHRyKG1fcmlnaHRTaWRlLCBvdGhlci5tX3JpZ2h0U2lkZSkKKyAgICAgICAgICAgICYm
IG1fb3BlcmF0b3IgPT0gb3RoZXIubV9vcGVyYXRvcjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENzc0NhbGNCaW5hcnlPcGVyYXRpb247IH0KKwogcHJp
dmF0ZToKICAgICBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKFBhc3NSZWZQdHI8Q1NTQ2FsY0V4cHJl
c3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHJp
Z2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wLCBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5KQog
ICAgICAgICA6IENTU0NhbGNFeHByZXNzaW9uTm9kZShjYXRlZ29yeSwgbGVmdFNpZGUtPmlzSW50
ZWdlcigpICYmIHJpZ2h0U2lkZS0+aXNJbnRlZ2VyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuaAppbmRleCAwNDRjZjMyLi41NjlkYmRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKQEAgLTYwLDcgKzYwLDExIEBAIGVudW0gQ2FsY3Vs
YXRpb25DYXRlZ29yeSB7CiAgICAgCiBjbGFzcyBDU1NDYWxjRXhwcmVzc2lvbk5vZGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHsKIHB1YmxpYzoKLSAgICAKKyAg
ICBlbnVtIFR5cGUgeworICAgICAgICBDc3NDYWxjUHJpbWl0aXZlVmFsdWUgPSAxLAorICAgICAg
ICBDc3NDYWxjQmluYXJ5T3BlcmF0aW9uCisgICAgfTsKKwogICAgIHZpcnR1YWwgfkNTU0NhbGNF
eHByZXNzaW9uTm9kZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNaZXJvKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRvQ2FsY1ZhbHVl
KFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpvb20gPSAxLjAp
IGNvbnN0ID0gMDsgICAgCkBAIC03MSw5ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTdHJpbmc+JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNWYXJpYWJsZVJl
ZmVyZW5jZSgpIGNvbnN0ID0gMDsKICNlbmRpZgotCisgICAgdmlydHVhbCBib29sIGVxdWFscyhj
b25zdCBDU1NDYWxjRXhwcmVzc2lvbk5vZGUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2NhdGVn
b3J5ID09IG90aGVyLm1fY2F0ZWdvcnkgJiYgbV9pc0ludGVnZXIgPT0gb3RoZXIubV9pc0ludGVn
ZXI7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0ID0gMDsKLSAgICAKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsK
KwogICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkoKSBjb25zdCB7IHJldHVybiBtX2Nh
dGVnb3J5OyB9ICAgIAogICAgIGJvb2wgaXNJbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
dGVnZXI7IH0KICAgICAKQEAgLTEwNCw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGNv
bXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogcm9v
dFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9
IGZhbHNlKSBjb25zdDsKICAgICAgICAgCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25z
dDsKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NDYWxjVmFsdWUmKSBjb25zdDsKICNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKICAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFy
aWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CiAgICAg
Ym9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52
YXNWYWx1ZS5jcHAKaW5kZXggM2FlYTE3Yy4uODhhZjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2FudmFzVmFsdWUuY3BwCkBAIC05Niw2ICs5NiwxMSBAQCBQYXNzUmVmUHRyPEltYWdlPiBDU1ND
YW52YXNWYWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYg
LwogICAgIHJldHVybiBlbHQtPmNvcGllZEltYWdlKCk7CiB9CiAKK2Jvb2wgQ1NTQ2FudmFzVmFs
dWU6OmVxdWFscyhjb25zdCBDU1NDYW52YXNWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fbmFtZSA9PSBvdGhlci5tX25hbWU7Cit9CisKIHZvaWQgQ1NTQ2FudmFzVmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1Zh
bHVlLmgKaW5kZXggMTNmYjU4Ny4uNzcyMjhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1Zh
bHVlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqKSB7IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbnZhc1ZhbHVlJikg
Y29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDEwNDMzNjQuLmUyNjI2NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCkBAIC0yNjE4LDcgKzI2MTgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAg
ICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsKICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0aWVzKTsgKytp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5jc3NUZXh0KCkgIT0gIGdldFByb3BlcnR5
Q1NTVmFsdWUocHJvcGVydGllc1tpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpLT5jc3NUZXh0KCkpCisg
ICAgICAgICAgICAgICAgaWYgKCFjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+KHZhbHVlLCBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNbaV0sIERvTm90VXBkYXRlTGF5b3V0KSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsKQEAgLTI4NDIsNyArMjg0Miw3IEBAIGJvb2wgQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQcm9wZXJ0eU1hdGNoZXMoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNldDo6UHJvCiAgICAgICAgIH0KICAgICB9CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkuaWQoKSk7Ci0gICAgcmV0dXJuIHZhbHVl
ICYmIHZhbHVlLT5jc3NUZXh0KCkgPT0gcHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4dCgpOworICAg
IHJldHVybiB2YWx1ZSAmJiBwcm9wZXJ0eS52YWx1ZSgpICYmIHZhbHVlLT5lcXVhbHMoKnByb3Bl
cnR5LnZhbHVlKCkpOwogfQogCiBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weSgpIGNvbnN0CkBAIC0yODc4LDkgKzI4NzgsOSBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNpZAogICAgIGlmICghdG9wVmFsdWUgfHwgIXJpZ2h0VmFsdWUg
fHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
Ym9vbCBzaG93TGVmdCA9IHJpZ2h0VmFsdWUtPmNzc1RleHQoKSAhPSBsZWZ0VmFsdWUtPmNzc1Rl
eHQoKTsKLSAgICBib29sIHNob3dCb3R0b20gPSAodG9wVmFsdWUtPmNzc1RleHQoKSAhPSBib3R0
b21WYWx1ZS0+Y3NzVGV4dCgpKSB8fCBzaG93TGVmdDsKLSAgICBib29sIHNob3dSaWdodCA9ICh0
b3BWYWx1ZS0+Y3NzVGV4dCgpICE9IHJpZ2h0VmFsdWUtPmNzc1RleHQoKSkgfHwgc2hvd0JvdHRv
bTsKKyAgICBib29sIHNob3dMZWZ0ID0gIWNvbXBhcmVDU1NWYWx1ZVB0cihyaWdodFZhbHVlLCBs
ZWZ0VmFsdWUpOworICAgIGJvb2wgc2hvd0JvdHRvbSA9ICFjb21wYXJlQ1NTVmFsdWVQdHIodG9w
VmFsdWUsIGJvdHRvbVZhbHVlKSB8fCBzaG93TGVmdDsKKyAgICBib29sIHNob3dSaWdodCA9ICFj
b21wYXJlQ1NTVmFsdWVQdHIodG9wVmFsdWUsIHJpZ2h0VmFsdWUpIHx8IHNob3dCb3R0b207CiAK
ICAgICBsaXN0LT5hcHBlbmQodG9wVmFsdWUpOwogICAgIGlmIChzaG93UmlnaHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRleCAyYjc4ODJjLi4zMTgxOGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKQEAgLTIyOSw0ICsyMjks
MTEgQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291
cmNlcygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIENTU0Nyb3NzZmFkZVZh
bHVlOjplcXVhbHMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAg
IHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIobV9mcm9tVmFsdWUsIG90aGVyLm1fZnJvbVZhbHVl
KQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV90b1ZhbHVlLCBvdGhlci5tX3RvVmFs
dWUpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX3BlcmNlbnRhZ2VWYWx1ZSwgb3Ro
ZXIubV9wZXJjZW50YWdlVmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IDgwZDI2ZDEuLmNmMGQzODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC02Niw2ICs2Niw4IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0
OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmKSBjb25zdDsKKwog
ICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVl
LmNwcAppbmRleCAzMjY3MGVkLi42Y2Y5MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuY3BwCkBAIC0yMTcsNiArMjE3LDEyIEBAIHZvaWQgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZTo6cmVtb3ZlUmVmZXJlbmNlZEVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIH0K
ICNlbmRpZgogCitib29sIENTU0N1cnNvckltYWdlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdXJz
b3JJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYXNIb3RTcG90ID8g
b3RoZXIubV9oYXNIb3RTcG90ICYmIG1faG90U3BvdCA9PSBvdGhlci5tX2hvdFNwb3QgOiAhb3Ro
ZXIubV9oYXNIb3RTcG90CisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2ltYWdlVmFs
dWUsIG90aGVyLm1faW1hZ2VWYWx1ZSk7Cit9CisKIHZvaWQgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmgKaW5kZXggY2ZjNzhlYy4uZDA3NDg3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCkBAIC01OSw2ICs1OSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqKTsKICNlbmRpZgogCisg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpIGNvbnN0OworCiAgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3Bw
CmluZGV4IDBkMWZhMTAuLjIwZDhmOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU3JjVmFsdWUuY3BwCkBAIC0xMDQsNiArMTA0LDExIEBAIENhY2hlZEZvbnQqIENTU0ZvbnRG
YWNlU3JjVmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBt
X2NhY2hlZEZvbnQuZ2V0KCk7CiB9CiAKK2Jvb2wgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6ZXF1YWxz
KGNvbnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBt
X2lzTG9jYWwgPT0gb3RoZXIubV9pc0xvY2FsICYmIG1fZm9ybWF0ID09IG90aGVyLm1fZm9ybWF0
ICYmIG1fcmVzb3VyY2UgPT0gb3RoZXIubV9yZXNvdXJjZTsKK30KKwogdm9pZCBDU1NGb250RmFj
ZVNyY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCBhMmM1NDY2Li40OGM4Mzk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTcxLDYgKzcxLDggQEAg
cHVibGljOgogCiAgICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udChEb2N1bWVudCopOwogCisgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9p
ZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IGJj
Mjk1ODQuLjBkN2E5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlv
blZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAK
QEAgLTU5LDYgKzU5LDExIEBAIFN0cmluZyBDU1NGdW5jdGlvblZhbHVlOjpjdXN0b21Dc3NUZXh0
KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgQ1NTRnVu
Y3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0Z1bmN0aW9uVmFsdWUmIG90aGVyKSBjb25zdAor
eworICAgIHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lICYmIGNvbXBhcmVDU1NWYWx1ZVB0
cihtX2FyZ3MsIG90aGVyLm1fYXJncyk7Cit9CisKIHZvaWQgQ1NTRnVuY3Rpb25WYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlv
blZhbHVlLmgKaW5kZXggNGNjYjQ3Ny4uMTc5YzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVu
Y3Rpb25WYWx1ZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0
b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NGdW5jdGlvblZh
bHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5jcHAKaW5kZXggZjE1MThkOC4uZDc3MGM5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtNzIzLDYgKzcyMywzOCBAQCBQYXNzUmVmUHRyPEdy
YWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmpl
Y3QqIHJlbmRlcgogICAgIHJldHVybiBncmFkaWVudC5yZWxlYXNlKCk7CiB9CiAKK2Jvb2wgQ1NT
TGluZWFyR3JhZGllbnRWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUm
IG90aGVyKSBjb25zdAoreworICAgIGlmIChtX2dyYWRpZW50VHlwZSA9PSBDU1NEZXByZWNhdGVk
TGluZWFyR3JhZGllbnQpCisgICAgICAgIHJldHVybiBvdGhlci5tX2dyYWRpZW50VHlwZSA9PSBt
X2dyYWRpZW50VHlwZQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3RY
LCBvdGhlci5tX2ZpcnN0WCkKKyAgICAgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2Zp
cnN0WSwgb3RoZXIubV9maXJzdFkpCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIo
bV9zZWNvbmRYLCBvdGhlci5tX3NlY29uZFgpCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFs
dWVQdHIobV9zZWNvbmRZLCBvdGhlci5tX3NlY29uZFkpCisgICAgICAgICAgICAmJiBtX3N0b3Bz
ID09IG90aGVyLm1fc3RvcHM7CisKKyAgICBpZiAobV9yZXBlYXRpbmcgIT0gb3RoZXIubV9yZXBl
YXRpbmcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2FuZ2xlKQorICAgICAg
ICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRyKG1fYW5nbGUsIG90aGVyLm1fYW5nbGUpICYmIG1f
c3RvcHMgPT0gb3RoZXIubV9zdG9wczsKKworICAgIGlmIChvdGhlci5tX2FuZ2xlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGVxdWFsWG9yWSA9IGZhbHNlOworICAgIGlmICht
X2ZpcnN0WCAmJiBtX2ZpcnN0WSkKKyAgICAgICAgZXF1YWxYb3JZID0gY29tcGFyZUNTU1ZhbHVl
UHRyKG1fZmlyc3RYLCBvdGhlci5tX2ZpcnN0WCkgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fZmly
c3RZLCBvdGhlci5tX2ZpcnN0WSk7CisgICAgZWxzZSBpZiAobV9maXJzdFgpCisgICAgICAgIGVx
dWFsWG9yWSA9Y29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3RYLCBvdGhlci5tX2ZpcnN0WCkgJiYg
IW90aGVyLm1fZmlyc3RZOworICAgIGVsc2UgaWYgKG1fZmlyc3RZKQorICAgICAgICBlcXVhbFhv
clkgPSBjb21wYXJlQ1NTVmFsdWVQdHIobV9maXJzdFksIG90aGVyLm1fZmlyc3RZKSAmJiAhb3Ro
ZXIubV9maXJzdFg7CisgICAgZWxzZQorICAgICAgICBlcXVhbFhvclkgPSAhb3RoZXIubV9maXJz
dFggfHwgIW90aGVyLm1fZmlyc3RZOworCisgICAgcmV0dXJuIGVxdWFsWG9yWSAmJiBtX3N0b3Bz
ID09IG90aGVyLm1fc3RvcHM7Cit9CisKIHZvaWQgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpAQCAtMTExMiw2ICsxMTQ0LDUyIEBAIFBh
c3NSZWZQdHI8R3JhZGllbnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50
KFJlbmRlck9iamVjdCogcmVuZGVyCiAgICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2UoKTsKIH0K
IAorYm9vbCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fZ3JhZGllbnRUeXBlID09IENT
U0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fZ3JhZGll
bnRUeXBlID09IG1fZ3JhZGllbnRUeXBlCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQ
dHIobV9maXJzdFgsIG90aGVyLm1fZmlyc3RYKQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1Zh
bHVlUHRyKG1fZmlyc3RZLCBvdGhlci5tX2ZpcnN0WSkKKyAgICAgICAgICAgICYmIGNvbXBhcmVD
U1NWYWx1ZVB0cihtX3NlY29uZFgsIG90aGVyLm1fc2Vjb25kWCkKKyAgICAgICAgICAgICYmIGNv
bXBhcmVDU1NWYWx1ZVB0cihtX3NlY29uZFksIG90aGVyLm1fc2Vjb25kWSkKKyAgICAgICAgICAg
ICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0UmFkaXVzLCBvdGhlci5tX2ZpcnN0UmFkaXVz
KQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fc2Vjb25kUmFkaXVzLCBvdGhl
ci5tX3NlY29uZFJhZGl1cykKKyAgICAgICAgICAgICYmIG1fc3RvcHMgPT0gb3RoZXIubV9zdG9w
czsKKworICAgIGlmIChtX3JlcGVhdGluZyAhPSBvdGhlci5tX3JlcGVhdGluZykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBlcXVhbFhvclkgPSBmYWxzZTsKKyAgICBpZiAobV9m
aXJzdFggJiYgbV9maXJzdFkpCisgICAgICAgIGVxdWFsWG9yWSA9IGNvbXBhcmVDU1NWYWx1ZVB0
cihtX2ZpcnN0WCwgb3RoZXIubV9maXJzdFgpICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0
WSwgb3RoZXIubV9maXJzdFkpOworICAgIGVsc2UgaWYgKG1fZmlyc3RYKQorICAgICAgICBlcXVh
bFhvclkgPSBjb21wYXJlQ1NTVmFsdWVQdHIobV9maXJzdFgsIG90aGVyLm1fZmlyc3RYKSAmJiAh
b3RoZXIubV9maXJzdFk7CisgICAgZWxzZSBpZiAobV9maXJzdFkpCisgICAgICAgIGVxdWFsWG9y
WSA9IGNvbXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0WSwgb3RoZXIubV9maXJzdFkpICYmICFvdGhl
ci5tX2ZpcnN0WDsKKyAgICBlbHNlCisgICAgICAgIGVxdWFsWG9yWSA9PSAhb3RoZXIubV9maXJz
dFggfHwgIW90aGVyLm1fZmlyc3RZOworCisgICAgaWYgKCFlcXVhbFhvclkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGJvb2wgZXF1YWxTaGFwZSA9IHRydWU7CisgICAgYm9vbCBlcXVh
bFNpemluZ0JlaGF2aW9yID0gdHJ1ZTsKKyAgICBib29sIGVxdWFsSG9yaXpvbnRhbEFuZFZlcnRp
Y2FsU2l6ZSA9IHRydWU7CisKKyAgICBpZiAobV9zaGFwZSkKKyAgICAgICAgZXF1YWxTaGFwZSA9
IGNvbXBhcmVDU1NWYWx1ZVB0cihtX3NoYXBlLCBvdGhlci5tX3NoYXBlKTsKKyAgICBlbHNlIGlm
IChtX3NpemluZ0JlaGF2aW9yKQorICAgICAgICBlcXVhbFNpemluZ0JlaGF2aW9yID0gY29tcGFy
ZUNTU1ZhbHVlUHRyKG1fc2l6aW5nQmVoYXZpb3IsIG90aGVyLm1fc2l6aW5nQmVoYXZpb3IpOwor
ICAgIGVsc2UgaWYgKG1fZW5kSG9yaXpvbnRhbFNpemUgJiYgbV9lbmRWZXJ0aWNhbFNpemUpCisg
ICAgICAgIGVxdWFsSG9yaXpvbnRhbEFuZFZlcnRpY2FsU2l6ZSA9IGNvbXBhcmVDU1NWYWx1ZVB0
cihtX2VuZEhvcml6b250YWxTaXplLCBvdGhlci5tX2VuZEhvcml6b250YWxTaXplKSAmJiBjb21w
YXJlQ1NTVmFsdWVQdHIobV9lbmRWZXJ0aWNhbFNpemUsIG90aGVyLm1fZW5kVmVydGljYWxTaXpl
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZXF1YWxTaGFwZSA9ICFvdGhlci5tX3NoYXBlOworICAg
ICAgICBlcXVhbFNpemluZ0JlaGF2aW9yID0gIW90aGVyLm1fc2l6aW5nQmVoYXZpb3I7CisgICAg
ICAgIGVxdWFsSG9yaXpvbnRhbEFuZFZlcnRpY2FsU2l6ZSA9ICFvdGhlci5tX2VuZEhvcml6b250
YWxTaXplICYmICFvdGhlci5tX2VuZFZlcnRpY2FsU2l6ZTsKKyAgICB9CisgICAgcmV0dXJuIGVx
dWFsU2hhcGUgJiYgZXF1YWxTaXppbmdCZWhhdmlvciAmJiBlcXVhbEhvcml6b250YWxBbmRWZXJ0
aWNhbFNpemUgJiYgbV9zdG9wcyA9PSBvdGhlci5tX3N0b3BzOworfQorCiB2b2lkIENTU1JhZGlh
bEdyYWRpZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IDZmMDA1MzUuLjc0Mjk4MDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaApAQCAtNTMsNiArNTMsMTEgQEAgc3RydWN0
IENTU0dyYWRpZW50Q29sb3JTdG9wIHsKICAgICBDb2xvciBtX3Jlc29sdmVkQ29sb3I7CiAgICAg
Ym9vbCBtX2NvbG9ySXNEZXJpdmVkRnJvbUVsZW1lbnQ7CiAgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU0dyYWRpZW50Q29sb3JTdG9wJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBjb21wYXJlQ1NTVmFsdWVQdHIobV9jb2xvciwgb3RoZXIubV9jb2xvcikKKyAgICAgICAgICAg
ICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX3Bvc2l0aW9uLCBvdGhlci5tX3Bvc2l0aW9uKTsKKyAg
ICB9CiB9OwogCiBjbGFzcyBDU1NHcmFkaWVudFZhbHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJh
dG9yVmFsdWUgewpAQCAtMTUyLDYgKzE1Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKCp0aGlzKSk7CiAgICAgfQogCisgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSYpIGNvbnN0OworCiAgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCiBwcml2YXRlOgpAQCAtMTk1LDYgKzIwMiw4IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUg
dGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCiAgICAgUGFzc1JlZlB0cjxHcmFkaWVudD4g
Y3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpOwogCisgICAgYm9v
bCBlcXVhbHMoY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9p
ZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IDdiMTJlNmYu
LjEzOGJhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTkzLDYgKzkz
LDExIEBAIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNl
cygpIGNvbnN0CiAgICAgcmV0dXJuIGNhY2hlZFJlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxl
ZCgpOwogfQogCitib29sIENTU0ltYWdlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NJbWFnZVZhbHVl
JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cmwgPT0gb3RoZXIubV91cmw7Cit9CisK
IFN0cmluZyBDU1NJbWFnZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3VybCkgKyAiKSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuaAppbmRleCBlMjE5NjQyLi4wMmE0MGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNG
YWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhj
b25zdCBDU1NJbWFnZVZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKICAgICBib29sIGhhc0FscGhh
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0luaGVyaXRlZFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVk
VmFsdWUuaAppbmRleCA2OGMwMDFmLi4zY2ExZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5o
ZXJpdGVkVmFsdWUuaApAQCAtMzUsNiArMzUsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3Vz
dG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTSW5oZXJpdGVk
VmFsdWUmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKaW5kZXggZDUyMzM0My4uMDgxMzIyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaApAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzSW1wbGljaXQoKSBjb25zdCB7IHJldHVybiBtX2lzSW1wbGljaXQ7IH0KIAor
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0luaXRpYWxWYWx1ZSYpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJv
eENvbnRhaW5WYWx1ZS5oCmluZGV4IGVlYjY0NzAuLmExOTI1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKLQorICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0xpbmVCb3hDb250YWluVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7IH0KICAgICBMaW5lQm94Q29udGFpbiB2YWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IDQ4MDRlMTkuLmNmNGY5ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMTI2MCw2ICsxMjYwLDgzIEBAIFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09N
KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitib29sIENTU1ByaW1pdGl2ZVZhbHVl
OjplcXVhbHMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIGlm
IChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IG90aGVyLm1fcHJpbWl0aXZlVW5pdFR5cGUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgewor
ICAgIGNhc2UgQ1NTX1VOS05PV046CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENT
U19OVU1CRVI6CisgICAgY2FzZSBDU1NfUEFSU0VSX0lOVEVHRVI6CisgICAgY2FzZSBDU1NfUEVS
Q0VOVEFHRToKKyAgICBjYXNlIENTU19FTVM6CisgICAgY2FzZSBDU1NfRVhTOgorICAgIGNhc2Ug
Q1NTX1JFTVM6CisgICAgY2FzZSBDU1NfUFg6CisgICAgY2FzZSBDU1NfQ006CisjaWYgRU5BQkxF
KENTU19JTUFHRV9SRVNPTFVUSU9OKSB8fCBFTkFCTEUoUkVTT0xVVElPTl9NRURJQV9RVUVSWSkK
KyAgICBjYXNlIENTU19EUFBYOgorICAgIGNhc2UgQ1NTX0RQSToKKyAgICBjYXNlIENTU19EUENN
OgorI2VuZGlmCisgICAgY2FzZSBDU1NfTU06CisgICAgY2FzZSBDU1NfSU46CisgICAgY2FzZSBD
U1NfUFQ6CisgICAgY2FzZSBDU1NfUEM6CisgICAgY2FzZSBDU1NfREVHOgorICAgIGNhc2UgQ1NT
X1JBRDoKKyAgICBjYXNlIENTU19HUkFEOgorICAgIGNhc2UgQ1NTX01TOgorICAgIGNhc2UgQ1NT
X1M6CisgICAgY2FzZSBDU1NfSFo6CisgICAgY2FzZSBDU1NfS0haOgorICAgIGNhc2UgQ1NTX1RV
Uk46CisgICAgY2FzZSBDU1NfVlc6CisgICAgY2FzZSBDU1NfVkg6CisgICAgY2FzZSBDU1NfVk1J
TjoKKyAgICBjYXNlIENTU19ESU1FTlNJT046CisgICAgICAgIHJldHVybiBtX3ZhbHVlLm51bSA9
PSBvdGhlci5tX3ZhbHVlLm51bTsKKyAgICBjYXNlIENTU19JREVOVDoKKyAgICAgICAgcmV0dXJu
IHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVudCkgPT0gdmFsdWVPclByb3BlcnR5TmFt
ZShvdGhlci5tX3ZhbHVlLmlkZW50KTsKKyAgICBjYXNlIENTU19TVFJJTkc6CisgICAgY2FzZSBD
U1NfVVJJOgorICAgIGNhc2UgQ1NTX0FUVFI6CisgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgor
ICAgIGNhc2UgQ1NTX1BBUlNFUl9JREVOVElGSUVSOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhD
T0xPUjoKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBjYXNlIENTU19WQVJJQUJMRV9O
QU1FOgorI2VuZGlmCisgICAgICAgIHJldHVybiBlcXVhbChtX3ZhbHVlLnN0cmluZywgb3RoZXIu
bV92YWx1ZS5zdHJpbmcpOworICAgIGNhc2UgQ1NTX0NPVU5URVI6CisgICAgICAgIHJldHVybiBt
X3ZhbHVlLmNvdW50ZXIgJiYgb3RoZXIubV92YWx1ZS5jb3VudGVyICYmIG1fdmFsdWUuY291bnRl
ci0+ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLmNvdW50ZXIpOworICAgIGNhc2UgQ1NTX1JFQ1Q6Cisg
ICAgICAgIHJldHVybiBtX3ZhbHVlLnJlY3QgJiYgb3RoZXIubV92YWx1ZS5yZWN0ICYmIG1fdmFs
dWUucmVjdC0+ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLnJlY3QpOworICAgIGNhc2UgQ1NTX1FVQUQ6
CisgICAgICAgIHJldHVybiBtX3ZhbHVlLnF1YWQgJiYgb3RoZXIubV92YWx1ZS5xdWFkICYmIG1f
dmFsdWUucXVhZC0+ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLnF1YWQpOworICAgIGNhc2UgQ1NTX1JH
QkNPTE9SOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5yZ2Jjb2xvciA9PSBvdGhlci5tX3ZhbHVl
LnJnYmNvbG9yOworICAgIGNhc2UgQ1NTX1BBSVI6CisgICAgICAgIHJldHVybiBtX3ZhbHVlLnBh
aXIgJiYgb3RoZXIubV92YWx1ZS5wYWlyICYmIG1fdmFsdWUucGFpci0+ZXF1YWxzKCpvdGhlci5t
X3ZhbHVlLnBhaXIpOworI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKKyAgICBjYXNlIENT
U19EQVNIQk9BUkRfUkVHSU9OOiB7CisgICAgICAgIERhc2hib2FyZFJlZ2lvbiogcmVnaW9uID0g
Z2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsKKyAgICAgICAgRGFzaGJvYXJkUmVnaW9uKiBvdGhl
clJlZ2lvbiA9IG90aGVyLmdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7CisgICAgICAgIHJldHVy
biByZWdpb24gPyBvdGhlclJlZ2lvbiAmJiByZWdpb24tPmVxdWFscygqb3RoZXJSZWdpb24pIDog
IW90aGVyUmVnaW9uOworICAgIH0KKyNlbmRpZgorICAgIGNhc2UgQ1NTX1BBUlNFUl9PUEVSQVRP
UjoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUuaWRlbnQgPT0gb3RoZXIubV92YWx1ZS5pZGVudDsK
KyAgICBjYXNlIENTU19DQUxDOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5jYWxjICYmIG90aGVy
Lm1fdmFsdWUuY2FsYyAmJiBtX3ZhbHVlLmNhbGMtPmVxdWFscygqb3RoZXIubV92YWx1ZS5jYWxj
KTsKKyAgICBjYXNlIENTU19TSEFQRToKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUuc2hhcGUgJiYg
b3RoZXIubV92YWx1ZS5zaGFwZSAmJiBtX3ZhbHVlLnNoYXBlLT5lcXVhbHMoKm90aGVyLm1fdmFs
dWUuc2hhcGUpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgQ1NTUHJpbWl0
aXZlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggZmNjNWI4My4uN2YyNjZlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTMxNSw2ICszMTUsOCBAQCBwdWJsaWM6
CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0
OwogICAgIHZvaWQgc2V0Q1NTT01TYWZlKCkgeyBtX2lzQ1NTT01TYWZlID0gdHJ1ZTsgfQogCisg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKSBjb25zdDsKKwogICAgIHZv
aWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAKaW5kZXggMDA2
MzA5OS4uNTIyMjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAKQEAg
LTU2LDYgKzU2LDEzIEBAIHZvaWQgQ1NTUmVmbGVjdFZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5CiAgICAgICAgIG1fbWFzay0+
YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgc3R5bGVTaGVldCk7CiB9CiAKK2Jvb2wgQ1NT
UmVmbGVjdFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTUmVmbGVjdFZhbHVlJiBvdGhlcikgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9kaXJlY3Rpb24gPT0gb3RoZXIubV9kaXJlY3Rpb24KKyAgICAgICAg
JiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fb2Zmc2V0LCBvdGhlci5tX29mZnNldCkKKyAgICAgICAg
JiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fbWFzaywgb3RoZXIubV9tYXNrKTsKK30KKwogdm9pZCBD
U1NSZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCBiYTkyZGZlLi4wMDJjMzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC01NCw2ICs1NCw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25z
dCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENT
U1JlZmxlY3RWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IGUxYmIxZDEuLjIzOTli
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAK
QEAgLTUwLDYgKzUwLDEyIEBAIFN0cmluZyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFs
dWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAgICArIFN0cmluZzo6bnVtYmVyKG1feTIp
ICsgIikiOwogfQogCitib29sIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1
YWxzKGNvbnN0IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1feDEgPT0gb3RoZXIubV94MSAmJiBtX3gyID09IG90aGVyLm1feDIg
JiYgbV95MSA9PSBvdGhlci5tX3kxICYmIG1feTIgPT0gb3RoZXIubV95MjsKK30KKworCiB2b2lk
IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpDU1MpOwpAQCAtNjAsNiArNjYsMTIgQEAgU3RyaW5nIENTU1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICJzdGVwcygiICsg
U3RyaW5nOjpudW1iZXIobV9zdGVwcykgKyAiLCAiICsgKG1fc3RlcEF0U3RhcnQgPyAic3RhcnQi
IDogImVuZCIpICsgJyknOwogfQogCitib29sIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6
ZXF1YWxzKGNvbnN0IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc3RlcHMgPT0gb3RoZXIubV9zdGVwcyAmJiBtX3N0ZXBBdFN0YXJ0ID09
IG90aGVyLm1fc3RlcEF0U3RhcnQ7Cit9CisKKwogdm9pZCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9u
VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCmluZGV4IDNlYjRiMjIuLjRjM2ZlMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaApAQCAtNDAsNiAr
NDAsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSYpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTYzLDYgKzY1LDggQEAg
cHVibGljOgogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7IH0KICAgICBkb3Vi
bGUgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBD
U1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJp
dmF0ZToKQEAgLTkzLDYgKzk3LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1N0ZXBzVGltaW5nRnVuY3Rp
b25WYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKaW5kZXggMzRkNjNiNi4uZjFkNTlhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwCkBAIC0zOCw2ICszOCwx
MSBAQCBTdHJpbmcgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmVxdWFs
cyhjb25zdCBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZnJvbSA9PSBvdGhlci5tX2Zyb20gJiYgbV90byA9PSBvdGhlci5tX3RvOworfQorCiB2b2lk
IENTU1VuaWNvZGVSYW5nZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0lu
Zm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCmluZGV4IGQ1MGY1YjYu
LmExN2YxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oCkBA
IC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29u
c3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYpIGNvbnN0
OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKaW5kZXggYzE1ZTc0
NC4uZGEyMWNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0
cnVjdCBTYW1lU2l6ZUFzQ1NTVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxTYW1lU2l6ZUFzQ1NT
VmFsdWU+IHsKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihDU1NWYWx1ZSkgPT0gc2l6ZW9m
KFNhbWVTaXplQXNDU1NWYWx1ZSksIENTU192YWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7Ci0gICAg
CisKIGNsYXNzIFRleHRDbG9uZUNTU1ZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0Q2xvbmVDU1NWYWx1ZT4gY3JlYXRlKENsYXNzVHlw
ZSBjbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHRDbG9uZUNTU1ZhbHVlKGNsYXNzVHlwZSwgdGV4dCkpOyB9CkBAIC0yNzYsNiArMjc2LDEwOCBA
QCB2b2lkIENTU1ZhbHVlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit0ZW1w
bGF0ZTxjbGFzcyBDaGlsZENsYXNzVHlwZT4KK2lubGluZSBzdGF0aWMgYm9vbCBjb21wYXJlQ1NT
VmFsdWVzKGNvbnN0IENTU1ZhbHVlJiBmaXJzdCwgY29uc3QgQ1NTVmFsdWUmIHNlY29uZCkKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ2hpbGRDbGFzc1R5cGUmPihmaXJzdCkuZXF1
YWxzKHN0YXRpY19jYXN0PGNvbnN0IENoaWxkQ2xhc3NUeXBlJj4oc2Vjb25kKSk7Cit9CisKK2Jv
b2wgQ1NTVmFsdWU6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAg
aWYgKG1faXNUZXh0Q2xvbmUpIHsKKyAgICAgICAgQVNTRVJUKGlzQ1NTT01TYWZlKCkpOworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dENsb25lQ1NTVmFsdWUqPih0aGlzKS0+
Y3NzVGV4dCgpID09IG90aGVyLmNzc1RleHQoKTsKKyAgICB9CisKKyAgICBpZiAobV9jbGFzc1R5
cGUgPT0gb3RoZXIubV9jbGFzc1R5cGUpIHsKKyAgICAgICAgc3dpdGNoIChtX2NsYXNzVHlwZSkg
eworICAgICAgICBjYXNlIEFzcGVjdFJhdGlvQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29t
cGFyZUNTU1ZhbHVlczxDU1NBc3BlY3RSYXRpb1ZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAg
ICBjYXNlIEJvcmRlckltYWdlU2xpY2VDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJl
Q1NTVmFsdWVzPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAg
ICAgY2FzZSBDYW52YXNDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVz
PENTU0NhbnZhc1ZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIEN1cnNvckltYWdl
Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NDdXJzb3JJbWFn
ZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIEZvbnRDbGFzczoKKyAgICAgICAg
ICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPEZvbnRWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAg
ICAgICAgY2FzZSBGb250RmFjZVNyY0NsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVD
U1NWYWx1ZXM8Q1NTRm9udEZhY2VTcmNWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2Fz
ZSBGb250RmVhdHVyZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8
Rm9udEZlYXR1cmVWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBGdW5jdGlvbkNs
YXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTRnVuY3Rpb25WYWx1
ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBMaW5lYXJHcmFkaWVudENsYXNzOgorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4o
KnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNzOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4oKnRo
aXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0Nyb3NzZmFkZVZhbHVlPigqdGhpcywgb3RoZXIpOwor
ICAgICAgICBjYXNlIEltYWdlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1Zh
bHVlczxDU1NJbWFnZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIEluaGVyaXRl
ZENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTSW5oZXJpdGVk
VmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgSW5pdGlhbENsYXNzOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTSW5pdGlhbFZhbHVlPigqdGhpcywgb3Ro
ZXIpOworICAgICAgICBjYXNlIFByaW1pdGl2ZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNv
bXBhcmVDU1NWYWx1ZXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAg
IGNhc2UgUmVmbGVjdENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8
Q1NTUmVmbGVjdFZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFNoYWRvd0NsYXNz
OgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8U2hhZG93VmFsdWU+KCp0aGlz
LCBvdGhlcik7CisgICAgICAgIGNhc2UgTGluZWFyVGltaW5nRnVuY3Rpb25DbGFzczoKKyAgICAg
ICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFs
dWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bkNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvblZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFN0ZXBz
VGltaW5nRnVuY3Rpb25DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVz
PENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2Fz
ZSBVbmljb2RlUmFuZ2VDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVz
PENTU1VuaWNvZGVSYW5nZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFZhbHVl
TGlzdENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTVmFsdWVM
aXN0PigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybUNsYXNz
OgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8V2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgTGluZUJveENvbnRhaW5DbGFzczoK
KyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0xpbmVCb3hDb250YWluVmFs
dWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgQ2FsY3VsYXRpb25DbGFzczoKKyAgICAg
ICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0NhbGNWYWx1ZT4oKnRoaXMsIG90aGVy
KTsKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKKyAgICAgICAgY2FzZSBJbWFnZVNldENsYXNz
OgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTSW1hZ2VTZXRWYWx1ZT4o
KnRoaXMsIG90aGVyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICAgICAg
Y2FzZSBXZWJLaXRDU1NGaWx0ZXJDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NT
VmFsdWVzPFdlYktpdENTU0ZpbHRlclZhbHVlPigqdGhpcywgb3RoZXIpOworI2lmIEVOQUJMRShD
U1NfU0hBREVSUykKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWVDbGFz
czoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPFdlYktpdENTU0FycmF5RnVu
Y3Rpb25WYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NNaXhGdW5j
dGlvblZhbHVlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxXZWJL
aXRDU1NNaXhGdW5jdGlvblZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFdlYktp
dENTU1NoYWRlckNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8V2Vi
S2l0Q1NTU2hhZGVyVmFsdWU+KCp0aGlzLCBvdGhlcik7CisjZW5kaWYKKyNlbmRpZgorI2lmIEVO
QUJMRShDU1NfVkFSSUFCTEVTKQorICAgICAgICBjYXNlIFZhcmlhYmxlQ2xhc3M6CisgICAgICAg
ICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NWYXJpYWJsZVZhbHVlPigqdGhpcywgb3Ro
ZXIpOworI2VuZGlmCisjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgY2FzZSBTVkdDb2xvckNsYXNz
OgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8U1ZHQ29sb3I+KCp0aGlzLCBv
dGhlcik7CisgICAgICAgIGNhc2UgU1ZHUGFpbnRDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBj
b21wYXJlQ1NTVmFsdWVzPFNWR1BhaW50PigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFdl
YktpdENTU1NWR0RvY3VtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1Zh
bHVlczxXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICB9
CisjZW5kaWYKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSBlbHNlIGlmICht
X2NsYXNzVHlwZSA9PSBWYWx1ZUxpc3RDbGFzcyAmJiBvdGhlci5tX2NsYXNzVHlwZSAhPSBWYWx1
ZUxpc3RDbGFzcykKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1ZhbHVlTGlz
dCo+KHRoaXMpLT5lcXVhbHMob3RoZXIpOworICAgIGVsc2UgaWYgKG1fY2xhc3NUeXBlICE9IFZh
bHVlTGlzdENsYXNzICYmIG90aGVyLm1fY2xhc3NUeXBlID09IFZhbHVlTGlzdENsYXNzKQorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Jj4ob3RoZXIpLmVxdWFs
cygqdGhpcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBTdHJpbmcgQ1NTVmFsdWU6OmNzc1Rl
eHQoKSBjb25zdAogewogICAgIGlmIChtX2lzVGV4dENsb25lKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5o
CmluZGV4IDIyMGYwYTEuLjhkNTQyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0xMjYsNiAr
MTI2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYWx1ZSYpIGNvbnN0
OworCiBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IENsYXNzVHlwZUJpdHMg
PSA2OwpAQCAtMjM2LDYgKzIzOCwyOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fY2xhc3NU
eXBlIDogQ2xhc3NUeXBlQml0czsgLy8gQ2xhc3NUeXBlCiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDU1NWYWx1ZVR5cGU+CitpbmxpbmUgYm9vbCBjb21wYXJlQ1NTVmFsdWVWZWN0b3IoY29uc3Qg
VmVjdG9yPFJlZlB0cjxDU1NWYWx1ZVR5cGU+ID4mIGZpcnN0VmVjdG9yLCBjb25zdCBWZWN0b3I8
UmVmUHRyPENTU1ZhbHVlVHlwZT4gPiYgc2Vjb25kVmVjdG9yKQoreworICAgIHNpemVfdCBzaXpl
ID0gZmlyc3RWZWN0b3Iuc2l6ZSgpOworICAgIGlmIChzaXplICE9IHNlY29uZFZlY3Rvci5zaXpl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgaSsrKSB7CisgICAgICAgIGNvbnN0IFJlZlB0cjxDU1NWYWx1ZVR5cGU+JiBmaXJzdFB0
ciA9IGZpcnN0VmVjdG9yW2ldOworICAgICAgICBjb25zdCBSZWZQdHI8Q1NTVmFsdWVUeXBlPiYg
c2Vjb25kUHRyID0gc2Vjb25kVmVjdG9yW2ldOworICAgICAgICBpZiAoZmlyc3RQdHIgPT0gc2Vj
b25kUHRyIHx8IChmaXJzdFB0ciAmJiBzZWNvbmRQdHIgJiYgZmlyc3RQdHItPmVxdWFscygqc2Vj
b25kUHRyKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ1NTVmFsdWVU
eXBlPgoraW5saW5lIGJvb2wgY29tcGFyZUNTU1ZhbHVlUHRyKGNvbnN0IFJlZlB0cjxDU1NWYWx1
ZVR5cGU+JiBmaXJzdCwgY29uc3QgUmVmUHRyPENTU1ZhbHVlVHlwZT4mIHNlY29uZCkKK3sKKyAg
ICByZXR1cm4gZmlyc3QgPyBzZWNvbmQgJiYgZmlyc3QtPmVxdWFscygqc2Vjb25kKSA6ICFzZWNv
bmQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU1ZhbHVlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggOWVjMmQ1MC4uZDdkMDRiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTU1LDEwICs1NSw5IEBAIENTU1ZhbHVl
TGlzdDo6Q1NTVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlzdCogcGFyc2VyVmFsdWVzKQogYm9v
bCBDU1NWYWx1ZUxpc3Q6OnJlbW92ZUFsbChDU1NWYWx1ZSogdmFsKQogewogICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGJlIGltcGxlbWVudGluZyBvcGVy
YXRvcj09IHRvIENTU1ZhbHVlIGFuZCBpdHMgZGVyaXZlZCBjbGFzc2VzCi0gICAgLy8gdG8gbWFr
ZSBjb21wYXJpc29uIG1vcmUgZmxleGlibGUgYW5kIGZhc3QuCiAgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG1fdmFsdWVzLnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBpZiAo
bV92YWx1ZXMuYXQoaW5kZXgpLT5jc3NUZXh0KCkgPT0gdmFsLT5jc3NUZXh0KCkpIHsKKyAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUgPSBtX3ZhbHVlcy5hdChpbmRleCk7CisgICAgICAg
IGlmICh2YWx1ZSAmJiB2YWwgJiYgdmFsdWUtPmVxdWFscygqdmFsKSkgewogICAgICAgICAgICAg
bV92YWx1ZXMucmVtb3ZlKGluZGV4KTsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAg
ICAgfQpAQCAtNjksMTAgKzY4LDkgQEAgYm9vbCBDU1NWYWx1ZUxpc3Q6OnJlbW92ZUFsbChDU1NW
YWx1ZSogdmFsKQogCiBib29sIENTU1ZhbHVlTGlzdDo6aGFzVmFsdWUoQ1NTVmFsdWUqIHZhbCkg
Y29uc3QKIHsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGJlIGltcGxlbWVudGluZyBvcGVyYXRv
cj09IHRvIENTU1ZhbHVlIGFuZCBpdHMgZGVyaXZlZCBjbGFzc2VzCi0gICAgLy8gdG8gbWFrZSBj
b21wYXJpc29uIG1vcmUgZmxleGlibGUgYW5kIGZhc3QuCiAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IG1fdmFsdWVzLnNpemUoKTsgaW5kZXgrKykgewotICAgICAgICBpZiAobV92
YWx1ZXMuYXQoaW5kZXgpLT5jc3NUZXh0KCkgPT0gdmFsLT5jc3NUZXh0KCkpCisgICAgICAgIGNv
bnN0IFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlID0gbV92YWx1ZXMuYXQoaW5kZXgpOworICAgICAg
ICBpZiAodmFsdWUgJiYgdmFsICYmIHZhbHVlLT5lcXVhbHMoKnZhbCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI3LDYgKzEyNSwyMCBA
QCBTdHJpbmcgQ1NTVmFsdWVMaXN0OjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4g
cmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgQ1NTVmFsdWVMaXN0OjplcXVhbHMoY29uc3Qg
Q1NTVmFsdWVMaXN0JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV92YWx1ZUxpc3RTZXBh
cmF0b3IgPT0gb3RoZXIubV92YWx1ZUxpc3RTZXBhcmF0b3IgJiYgY29tcGFyZUNTU1ZhbHVlVmVj
dG9yPENTU1ZhbHVlPihtX3ZhbHVlcywgb3RoZXIubV92YWx1ZXMpOworfQorCitib29sIENTU1Zh
bHVlTGlzdDo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAo
bV92YWx1ZXMuc2l6ZSgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0
IFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlID0gbV92YWx1ZXNbMF07CisgICAgcmV0dXJuIHZhbHVl
ICYmIHZhbHVlLT5lcXVhbHMob3RoZXIpOworfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
CiBTdHJpbmcgQ1NTVmFsdWVMaXN0OjpjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMo
Y29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCAzZDg5N2JjLi5jNjZiODEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlTGlzdD4gY29weSgpOwogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQo
KSBjb25zdDsKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYWx1ZUxpc3QmKSBjb25zdDsKKyAg
ICBib29sIGVxdWFscyhjb25zdCBDU1NWYWx1ZSYpIGNvbnN0OwogI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQogICAgIFN0cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29u
c3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmgKaW5kZXggNGZjNGY3NS4uNTQ4MDFiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
ICAgICBjb25zdCBTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCisg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVmFyaWFibGVWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9
CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKICAgICAgICAgTWVtb3J5Q2xhc3NJbmZv
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Db3VudGVyLmgKaW5kZXggNTFmYTcxMC4uZmMyMjc5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NvdW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5o
CkBAIC00Miw2ICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJZGVudGlmaWVyKFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gaWRl
bnRpZmllcjsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGxpc3RTdHlsZSkgeyBtX2xpc3RTdHlsZSA9IGxpc3RTdHlsZTsgfQogICAgIHZvaWQg
c2V0U2VwYXJhdG9yKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNlcGFyYXRvcikgeyBt
X3NlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQorCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ291bnRl
ciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaWRlbnRpZmllcigpID09IG90
aGVyLmlkZW50aWZpZXIoKQorICAgICAgICAgICAgJiYgbGlzdFN0eWxlKCkgPT0gb3RoZXIubGlz
dFN0eWxlKCkKKyAgICAgICAgICAgICYmIHNlcGFyYXRvcigpID09IG90aGVyLnNlcGFyYXRvcigp
OworICAgIH0KICAgICAKICAgICBQYXNzUmVmUHRyPENvdW50ZXI+IGNsb25lRm9yQ1NTT00oKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdpb24uaAppbmRleCA5MWU1ZDdh
Li41YjVmMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGFzaGJvYXJkUmVnaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Rhc2hib2FyZFJlZ2lvbi5oCkBAIC0zMCw2ICsz
MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXNoYm9hcmRSZWdpb24gOiBwdWJs
aWMgUmVjdEJhc2UsIHB1YmxpYyBSZWZDb3VudGVkPERhc2hib2FyZFJlZ2lvbj4gewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IERhc2hib2FyZFJlZ2lvbik7IH0KKyAgICBib29sIGVxdWFscyhjb25z
dCBEYXNoYm9hcmRSZWdpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
bGFiZWwgPT0gb3RoZXIubV9sYWJlbCAmJiBtX2dlb21ldHJ5VHlwZSA9PSBvdGhlci5tX2dlb21l
dHJ5VHlwZQorICAgICAgICAgICAgJiYgbV9pc0NpcmNsZSA9PSBvdGhlci5tX2lzQ2lyY2xlICYm
IG1faXNSZWN0YW5nbGUgPT0gb3RoZXIubV9pc1JlY3RhbmdsZQorICAgICAgICAgICAgJiYgbV9u
ZXh0ID8gb3RoZXIubV9uZXh0ICYmIG1fbmV4dC0+ZXF1YWxzKCpvdGhlci5tX25leHQpIDogIW90
aGVyLm1fbmV4dDsKKyAgICB9CiAKICAgICBSZWZQdHI8RGFzaGJvYXJkUmVnaW9uPiBtX25leHQ7
CiAgICAgU3RyaW5nIG1fbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZlYXR1cmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5j
cHAKaW5kZXggMTAzNGZjYS4uNzgxNTgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGZWF0dXJlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVy
ZVZhbHVlLmNwcApAQCAtNTAsNiArNTAsMTEgQEAgU3RyaW5nIEZvbnRGZWF0dXJlVmFsdWU6OmN1
c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAK
K2Jvb2wgRm9udEZlYXR1cmVWYWx1ZTo6ZXF1YWxzKGNvbnN0IEZvbnRGZWF0dXJlVmFsdWUmIG90
aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX3RhZyA9PSBvdGhlci5tX3RhZyAmJiBtX3ZhbHVl
ID09IG90aGVyLm1fdmFsdWU7Cit9CisKIHZvaWQgRm9udEZlYXR1cmVWYWx1ZTo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywg
V2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGZWF0dXJlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVl
LmgKaW5kZXggZmNhYjgxNS4uMjE0ZjQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGZWF0dXJlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVW
YWx1ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBpbnQgdmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAor
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IEZvbnRGZWF0dXJlVmFsdWUmKSBjb25zdDsKKwogICAgIHZv
aWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKaW5kZXggMGJhMWU2ZS4uMjUzZDNi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKQEAgLTY1LDYgKzY1LDE2IEBAIFN0cmluZyBG
b250VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJp
bmcoKTsKIH0KIAorYm9vbCBGb250VmFsdWU6OmVxdWFscyhjb25zdCBGb250VmFsdWUmIG90aGVy
KSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIoc3R5bGUsIG90aGVyLnN0
eWxlKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIodmFyaWFudCwgb3RoZXIudmFyaWFu
dCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKHdlaWdodCwgb3RoZXIud2VpZ2h0KQor
ICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIoc2l6ZSwgb3RoZXIuc2l6ZSkKKyAgICAgICAg
JiYgY29tcGFyZUNTU1ZhbHVlUHRyKGxpbmVIZWlnaHQsIG90aGVyLmxpbmVIZWlnaHQpCisgICAg
ICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihmYW1pbHksIG90aGVyLmZhbWlseSk7Cit9CisKIHZv
aWQgRm9udFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udFZhbHVlLmgKaW5kZXggMDNhNjEyNi4uNDU3ODYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUu
aApAQCAtMzksNiArMzksOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgp
IGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgRm9udFZhbHVlJikgY29uc3Q7CisKICAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXhwLmgKaW5kZXggODEzZTBmOC4uYzQxYjM4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV4cC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiAob3RoZXIubV9tZWRpYUZlYXR1cmUgPT0gbV9tZWRpYUZlYXR1cmUpCiAgICAgICAgICAg
ICAmJiAoKCFvdGhlci5tX3ZhbHVlICYmICFtX3ZhbHVlKQotICAgICAgICAgICAgICAgIHx8IChv
dGhlci5tX3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+Y3NzVGV4dCgpID09IG1f
dmFsdWUtPmNzc1RleHQoKSkpOworICAgICAgICAgICAgICAgIHx8IChvdGhlci5tX3ZhbHVlICYm
IG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+ZXF1YWxzKCptX3ZhbHVlKSkpOwogICAgIH0KIAog
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgK
aW5kZXggMDQxZWUyMy4uZmFhZGIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Bh
aXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCkBAIC01Niw2ICs1Niw4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGdlbmVyYXRlQ1NTU3RyaW5nKGZpcnN0KCktPmNzc1RleHQo
KSwgc2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgfQogCisgICAgYm9vbCBlcXVhbHMoY29uc3Qg
UGFpciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0LCBv
dGhlci5tX2ZpcnN0KSAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9zZWNvbmQsIG90aGVyLm1fc2Vj
b25kKTsgfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgU3RyaW5nIHNlcmlhbGl6
ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYg
dmFyaWFibGVzKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9S
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCmluZGV4IGZlZWY4NzUuLjQwYTJjZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1JlY3QuaApAQCAtMzksNiArMzksMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Qm90
dG9tKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvdHRvbSkgeyBtX2JvdHRvbSA9IGJv
dHRvbTsgfQogICAgIHZvaWQgc2V0TGVmdChQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBs
ZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IFJlY3RCYXNl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIo
bV90b3AsIG90aGVyLm1fdG9wKQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1f
cmlnaHQsIG90aGVyLm1fcmlnaHQpCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIo
bV9sZWZ0LCBvdGhlci5tX2xlZnQpCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIo
bV9ib3R0b20sIG90aGVyLm1fYm90dG9tKTsKKyAgICB9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKICAgICBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NoYWRvd1ZhbHVlLmNwcAppbmRleCBhNDA2NGNjLi44Njg4N2U4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TaGFkb3dWYWx1ZS5jcHAKQEAgLTc5LDYgKzc5LDE2IEBAIFN0cmluZyBTaGFkb3dWYWx1
ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRleHQudG9TdHJpbmcoKTsKIH0K
IAorYm9vbCBTaGFkb3dWYWx1ZTo6ZXF1YWxzKGNvbnN0IFNoYWRvd1ZhbHVlJiBvdGhlcikgY29u
c3QKK3sKKyAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRyKGNvbG9yLCBvdGhlci5jb2xvcikK
KyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKHgsIG90aGVyLngpCisgICAgICAgICYmIGNv
bXBhcmVDU1NWYWx1ZVB0cih5LCBvdGhlci55KQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQ
dHIoYmx1ciwgb3RoZXIuYmx1cikKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKHNwcmVh
ZCwgb3RoZXIuc3ByZWFkKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIoc3R5bGUsIG90
aGVyLnN0eWxlKTsKK30KKwogdm9pZCBTaGFkb3dWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAppbmRleCBmMmQ4ZTZmLi5hMzUz
ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMo
Y29uc3QgU2hhZG93VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4geDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRl
eCA3ZjUwMjRhLi5iNTZkYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
Y3BwCkBAIC0zMjIsOSArMzIyLDkgQEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldDRWYWx1
ZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKSBjb24KICAgICBpZiAo
dG9wLmlzSW1wb3J0YW50KCkgIT0gcmlnaHQuaXNJbXBvcnRhbnQoKSB8fCByaWdodC5pc0ltcG9y
dGFudCgpICE9IGJvdHRvbS5pc0ltcG9ydGFudCgpIHx8IGJvdHRvbS5pc0ltcG9ydGFudCgpICE9
IGxlZnQuaXNJbXBvcnRhbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYm9v
bCBzaG93TGVmdCA9IHJpZ2h0LnZhbHVlKCktPmNzc1RleHQoKSAhPSBsZWZ0LnZhbHVlKCktPmNz
c1RleHQoKTsKLSAgICBib29sIHNob3dCb3R0b20gPSAodG9wLnZhbHVlKCktPmNzc1RleHQoKSAh
PSBib3R0b20udmFsdWUoKS0+Y3NzVGV4dCgpKSB8fCBzaG93TGVmdDsKLSAgICBib29sIHNob3dS
aWdodCA9ICh0b3AudmFsdWUoKS0+Y3NzVGV4dCgpICE9IHJpZ2h0LnZhbHVlKCktPmNzc1RleHQo
KSkgfHwgc2hvd0JvdHRvbTsKKyAgICBib29sIHNob3dMZWZ0ID0gIXJpZ2h0LnZhbHVlKCktPmVx
dWFscygqbGVmdC52YWx1ZSgpKTsKKyAgICBib29sIHNob3dCb3R0b20gPSAhdG9wLnZhbHVlKCkt
PmVxdWFscygqYm90dG9tLnZhbHVlKCkpIHx8IHNob3dMZWZ0OworICAgIGJvb2wgc2hvd1JpZ2h0
ID0gIXRvcC52YWx1ZSgpLT5lcXVhbHMoKnJpZ2h0LnZhbHVlKCkpIHx8IHNob3dCb3R0b207CiAK
ICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1bHQuYXBwZW5kKHRvcC52YWx1ZSgp
LT5jc3NUZXh0KCkpOwpAQCAtMTExNCw3ICsxMTE0LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0
Ojpwcm9wZXJ0eU1hdGNoZXMoY29uc3QgUHJvcGVydHlSZWZlcmVuY2UmIHByb3BlcnR5KSBjb25z
dAogICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kUHJvcGVydHlJbmRleChwcm9wZXJ0
eS5pZCgpKTsKICAgICBpZiAoZm91bmRQcm9wZXJ0eUluZGV4ID09IC0xKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHByb3BlcnR5QXQoZm91bmRQcm9wZXJ0eUluZGV4KS52YWx1
ZSgpLT5jc3NUZXh0KCkgPT0gcHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4dCgpOworICAgIHJldHVy
biBwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUoKS0+ZXF1YWxzKCpwcm9wZXJ0
eS52YWx1ZSgpKTsKIH0KICAgICAKIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlRXF1aXZh
bGVudFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuY3BwCmluZGV4IDJh
MTdhNDQuLmY1NjQwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NB
cnJheUZ1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NB
cnJheUZ1bmN0aW9uVmFsdWUuY3BwCkBAIC01Niw2ICs1NiwxMSBAQCBQYXNzUmVmUHRyPFdlYktp
dENTU0FycmF5RnVuY3Rpb25WYWx1ZT4gV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlOjpjbG9u
ZUZvckNTUwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZh
bHVlKCp0aGlzKSk7CiB9CiAKK2Jvb2wgV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlOjplcXVh
bHMoY29uc3QgV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAg
ICByZXR1cm4gQ1NTVmFsdWVMaXN0OjplcXVhbHMob3RoZXIpOworfQorCiB2b2lkIFdlYktpdENT
U0FycmF5RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZv
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oCmlu
ZGV4IGJhZjI3ODIuLmZjM2FiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAg
UGFzc1JlZlB0cjxXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBj
b25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1
ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5jcHAKaW5kZXggZjFhMWUwZS4uMDcwZWZjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCkBAIC0xMTEsNiArMTExLDExIEBA
IFBhc3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IFdlYktpdENTU0ZpbHRlclZhbHVlOjpj
bG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU0Zp
bHRlclZhbHVlKCp0aGlzKSk7CiB9CiAKK2Jvb2wgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmVxdWFs
cyhjb25zdCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgQ1NTVmFsdWVMaXN0OjplcXVhbHMob3RoZXIpOwor
fQorCiB2b2lkIFdlYktpdENTU0ZpbHRlclZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlw
ZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVy
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCmluZGV4
IDA4YjNlOWYuLmIyNDAwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJW
YWx1ZS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8V2ViS2l0
Q1NTRmlsdGVyVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxz
KGNvbnN0IFdlYktpdENTU0ZpbHRlclZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAK
aW5kZXggM2FmNjg3ZS4uYzA4Yjg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NNaXhGdW5jdGlvblZhbHVlLmNwcApAQCAtNTYsNiArNTYsMTEgQEAgUGFzc1JlZlB0cjxX
ZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlPiBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlOjpjbG9u
ZUZvckNTU09NKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU01peEZ1bmN0aW9u
VmFsdWUoKnRoaXMpKTsKIH0KIAorYm9vbCBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlOjplcXVh
bHMoY29uc3QgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuIENTU1ZhbHVlTGlzdDo6ZXF1YWxzKG90aGVyKTsKK30KKwogdm9pZCBXZWJLaXRDU1NN
aXhGdW5jdGlvblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaAppbmRleCA3YmMw
N2I0Li5jYjk5MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4
RnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5j
dGlvblZhbHVlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxX
ZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICBi
b29sIGVxdWFscyhjb25zdCBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlJikgY29uc3Q7CisKICAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
U1ZHRG9jdW1lbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9j
dW1lbnRWYWx1ZS5jcHAKaW5kZXggYjQzNGVlYy4uZmVmNzcxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcApAQCAtNjcsNiArNjcsMTEg
QEAgU3RyaW5nIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25z
dAogICAgIHJldHVybiBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdXJsKTsKIH0KIAorYm9vbCBX
ZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlOjplcXVhbHMoY29uc3QgV2ViS2l0Q1NTU1ZHRG9jdW1l
bnRWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJsID09IG90aGVyLm1fdXJs
OworfQorCiB2b2lkIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewog
ICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVN
ZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NTVkdEb2N1bWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9j
dW1lbnRWYWx1ZS5oCmluZGV4IDk2YmNjOGMuLjlhM2FjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgYm9vbCBsb2FkUmVxdWVzdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2FkUmVxdWVzdGVkOyB9CisgICAgYm9vbCBlcXVhbHMoY29uc3Qg
V2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSYpIGNvbnN0OwogCiAgICAgdm9pZCByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAppbmRleCA5MWJkZGUyLi4zNmUzN2Zh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKQEAgLTgz
LDYgKzgzLDExIEBAIFN0cmluZyBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV91cmwpICsg
IikiOwogfQogCitib29sIFdlYktpdENTU1NoYWRlclZhbHVlOjplcXVhbHMoY29uc3QgV2ViS2l0
Q1NTU2hhZGVyVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX3VybCA9PSBvdGhl
ci5tX3VybDsKK30KKwogdm9pZCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7
CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29y
ZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1NoYWRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFs
dWUuaAppbmRleCBjNDMyMDFjLi43YjA1ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTU2hhZGVyVmFsdWUuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcg
Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgV2ViS2l0Q1NT
U2hhZGVyVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKaW5kZXggZmQxMTdmMi4uZTBjMTQ2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKQEAgLTY2
LDYgKzY2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkg
Y29uc3Q7CisgICAgYm9vbCBlcXVhbHMoY29uc3QgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUmIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlICYmIENTU1ZhbHVlTGlz
dDo6ZXF1YWxzKG90aGVyKTsgfQogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0cmlu
ZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNT
dHJpbmcsIFN0cmluZz4mKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCmluZGV4IDI5NmE2M2MuLmQ2MjE1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTI0NSw5ICsyNDUsNyBAQCBib29sIEhUTUxBdHRyaWJ1
dGVFcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVudCwgU3R5
bGVQcm9wZQogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZUFzQ1NT
VmFsdWUoZWxlbWVudCk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdHlsZVZhbHVlID0gc3R5bGUt
PmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsKICAgICAKLSAgICAvLyBGSVhNRTog
VGhpcyBpcyB2ZXJ5IGluZWZmaWNpZW50IHdheSBvZiBjb21wYXJpbmcgdmFsdWVzCi0gICAgLy8g
YnV0IHdlIGNhbid0IHN0cmluZyBjb21wYXJlIGF0dHJpYnV0ZSB2YWx1ZSBhbmQgQ1NTIHByb3Bl
cnR5IHZhbHVlLgotICAgIHJldHVybiB2YWx1ZSAmJiBzdHlsZVZhbHVlICYmIHZhbHVlLT5jc3NU
ZXh0KCkgPT0gc3R5bGVWYWx1ZS0+Y3NzVGV4dCgpOworICAgIHJldHVybiBjb21wYXJlQ1NTVmFs
dWVQdHIodmFsdWUsIHN0eWxlVmFsdWUpOwogfQogCiB2b2lkIEhUTUxBdHRyaWJ1dGVFcXVpdmFs
ZW50OjphZGRUb1N0eWxlKEVsZW1lbnQqIGVsZW1lbnQsIEVkaXRpbmdTdHlsZSogc3R5bGUpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAppbmRleCBhMzRhZDE4Li4wOWFlZWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb2xvci5jcHAKQEAgLTEwNSw2ICsxMDUsMTEgQEAgUGFzc1JlZlB0cjxTVkdDb2xv
cj4gU1ZHQ29sb3I6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU1ZHQ29sb3IoU1ZHQ29sb3JDbGFzcywgKnRoaXMpKTsKIH0KIAorYm9vbCBTVkdDb2xvcjo6
ZXF1YWxzKGNvbnN0IFNWR0NvbG9yJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb2xv
clR5cGUgPT0gb3RoZXIubV9jb2xvclR5cGUgJiYgbV9jb2xvciA9PSBvdGhlci5tX2NvbG9yOwor
fQorCiB2b2lkIFNWR0NvbG9yOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb2xvci5oCmluZGV4IDdkZGRjZDcuLjViMzYwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xv
ci5oCkBAIC03NSw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRyPFNWR0Nv
bG9yPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBTVkdD
b2xvciYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNw
cAppbmRleCBjY2UxZjRlLi4zYzlmMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFpbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAKQEAgLTEx
Miw2ICsxMTIsMTEgQEAgUGFzc1JlZlB0cjxTVkdQYWludD4gU1ZHUGFpbnQ6OmNsb25lRm9yQ1NT
T00oKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGFpbnQoKnRoaXMpKTsKIH0K
IAorYm9vbCBTVkdQYWludDo6ZXF1YWxzKGNvbnN0IFNWR1BhaW50JiBvdGhlcikgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wYWludFR5cGUgPT0gb3RoZXIubV9wYWludFR5cGUgJiYgbV91cmkgPT0g
b3RoZXIubV91cmkgJiYgU1ZHQ29sb3I6OmVxdWFscyhvdGhlcik7Cit9CisKIHZvaWQgU1ZHUGFp
bnQ6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVj
dEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgK
aW5kZXggYWM1Njc1Yi4uYTZmZDBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKQEAgLTk1LDYgKzk1
LDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxTVkdQYWludD4gY2xvbmVGb3JDU1NPTSgp
IGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgU1ZHUGFpbnQmKSBjb25zdDsKKwogICAg
IHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dDsKIAogcHJpdmF0ZToK
</data>
<flag name="commit-queue"
          id="203850"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187521</attachid>
            <date>2013-02-11 00:28:53 -0800</date>
            <delta_ts>2013-10-17 10:53:44 -0700</delta_ts>
            <desc>Patch 8</desc>
            <filename>webcore_cssvalue_operator_eq_8.patch</filename>
            <type>text/plain</type>
            <size>87240</size>
            <attacher name="Alexander Shalamov">alexander.shalamov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NTBlOTc5Li5kMTdhMTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDIt
MTEgIEFsZXhhbmRlciBTaGFsYW1vdiAgPGFsZXhhbmRlci5zaGFsYW1vdkBpbnRlbC5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IENTU1ZhbHVlOjplcXVhbHMoY29uc3QgQ1NTVmFsdWUmKSB0byBv
cHRpbWlzZSBDU1NWYWx1ZSBjb21wYXJpc29uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBL
b2l2aXN0by4KKworICAgICAgICBOZXcgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgQ1NTVmFs
dWUgb2JqZWN0cyBjb21wYXJpc29uIHdvcmtzIHByb3Blcmx5LgorCisgICAgICAgICogY3Nzb20v
Y3NzdmFsdWUtY29tcGFyaXNvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzc29t
L2Nzc3ZhbHVlLWNvbXBhcmlzb24uaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMTAgIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJTcGVlY2g6IEltcGxl
bWVudCBiYXNpYyBzcGVha2luZy9maW5pc2hlZCBzcGVha2luZyBiZWhhdmlvcgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9jc3NvbS9jc3N2YWx1ZS1jb21wYXJpc29uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODc4MzlkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY3Nzb20vY3NzdmFsdWUtY29tcGFyaXNvbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMDMgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IENTU1ZhbHVlIG9iamVjdHMgY29t
cGFyaXNvbiB3b3JrcyBjb3JyZWN0bHkuCisKKworUEFTUyBUd28gQ1NTVmFsdWVzICIyMCUiIGZv
ciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjJlbSIg
Zm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMnJl
bSIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAi
MjBweCIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVl
cyAiMmNtIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFs
dWVzICIyMG1tIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NT
VmFsdWVzICI0aW4iIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBD
U1NWYWx1ZXMgIjIwcHQiIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNTIFR3
byBDU1NWYWx1ZXMgIjEwcGMiIGZvciBwcm9wZXJ0eSAid2lkdGgiIGFyZSBlcXVhbC4gCitQQVNT
IFR3byBDU1NWYWx1ZXMgIjZ2dyIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFsLiAKK1BB
U1MgVHdvIENTU1ZhbHVlcyAiNnZoIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAor
UEFTUyBUd28gQ1NTVmFsdWVzICI0dm1pbiIgZm9yIHByb3BlcnR5ICJ3aWR0aCIgYXJlIGVxdWFs
LiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiLXdlYmtpdC1jYWxjKC0xMDBweCArIDEwMCUpIiBmb3Ig
cHJvcGVydHkgIndpZHRoIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICIyMCUiIGFu
ZCAiMmVtIiBmb3IgcHJvcGVydHkgIndpZHRoIiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENT
U1ZhbHVlcyAicm90YXRlKDE1ZGVnKSIgZm9yIHByb3BlcnR5ICItd2Via2l0LXRyYW5zZm9ybSIg
YXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAicm90YXRlKDEuNTVyYWQpIiBmb3IgcHJv
cGVydHkgIi13ZWJraXQtdHJhbnNmb3JtIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVz
ICJyb3RhdGUoMjAwZ3JhZCkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10cmFuc2Zvcm0iIGFyZSBl
cXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJvdGF0ZSgwLjV0dXJuKSIgZm9yIHByb3BlcnR5
ICItd2Via2l0LXRyYW5zZm9ybSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAicm90
YXRlKDE1ZGVnKSIgYW5kICJyb3RhdGUoMS41NXJhZCkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC10
cmFuc2Zvcm0iIGFyZSBub3QgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJ1cmwoZHVtbXk6
Ly90ZXN0LnBuZykiIGZvciBwcm9wZXJ0eSAiYmFja2dyb3VuZCIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAidXJsKGR1bW15Oi8vZ3JlZW4ucG5nKSIgZm9yIHByb3BlcnR5ICJiYWNr
Z3JvdW5kIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJ1cmwoZHVtbXk6Ly90ZXN0
LnBuZykiIGFuZCAidXJsKGR1bW15Oi8vZ3JlZW4ucG5nKSIgZm9yIHByb3BlcnR5ICJiYWNrZ3Jv
dW5kIiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiYm9sZCIgZm9yIHByb3Bl
cnR5ICJmb250LXdlaWdodCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiaW5oZXJp
dCIgZm9yIHByb3BlcnR5ICJmb250LXdlaWdodCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1Zh
bHVlcyAiYm9sZCIgYW5kICJpbmhlcml0IiBmb3IgcHJvcGVydHkgImZvbnQtd2VpZ2h0IiBhcmUg
bm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiY291bnRlcihhKSIgZm9yIHByb3BlcnR5
ICJjb250ZW50IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJjb3VudGVycyhhLCAn
LicpIiBmb3IgcHJvcGVydHkgImNvbnRlbnQiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1
ZXMgImNvdW50ZXIoYSkiIGFuZCAiY291bnRlcnMoYSwgJy4nKSIgZm9yIHByb3BlcnR5ICJjb250
ZW50IiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiYXR0cihhKSIgZm9yIHBy
b3BlcnR5ICJjb250ZW50IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJhdHRyKHAp
IiBmb3IgcHJvcGVydHkgImNvbnRlbnQiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMg
ImF0dHIoYSkiIGFuZCAiYXR0cihwKSIgZm9yIHByb3BlcnR5ICJjb250ZW50IiBhcmUgbm90IGVx
dWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAicmVjdCg0MHB4LCAwLCA0NXB4LCAtNXB4KSIgZm9y
IHByb3BlcnR5ICJjbGlwIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJyZWN0KDEw
cHgsIDVweCwgMTVweCwgLTEwcHgpIiBmb3IgcHJvcGVydHkgImNsaXAiIGFyZSBlcXVhbC4gCitQ
QVNTIFR3byBDU1NWYWx1ZXMgInJlY3QoNDBweCwgMCwgNDVweCwgLTVweCkiIGFuZCAicmVjdCgx
MHB4LCA1cHgsIDE1cHgsIC0xMHB4KSIgZm9yIHByb3BlcnR5ICJjbGlwIiBhcmUgbm90IGVxdWFs
LiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiMzBweCA3NXB4IDE1cHggMTVweCIgZm9yIHByb3BlcnR5
ICJib3JkZXItcmFkaXVzIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICIxNjRweCAv
IDgycHgiIGZvciBwcm9wZXJ0eSAiYm9yZGVyLXJhZGl1cyIgYXJlIGVxdWFsLiAKK1BBU1MgVHdv
IENTU1ZhbHVlcyAiNDBweCIgZm9yIHByb3BlcnR5ICJib3JkZXItcmFkaXVzIiBhcmUgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICIzMHB4IDc1cHggMTVweCAxNXB4IiBhbmQgIjE2NHB4IC8g
ODJweCIgZm9yIHByb3BlcnR5ICJib3JkZXItcmFkaXVzIiBhcmUgbm90IGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAicmdiKDI1NSwwLDApIiBmb3IgcHJvcGVydHkgInN0b3AtY29sb3IiIGFy
ZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIiNGRjU1NjYiIGZvciBwcm9wZXJ0eSAic3Rv
cC1jb2xvciIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAicmdiKDI1NSwwLDApIiBh
bmQgIiNGRjU1NjYiIGZvciBwcm9wZXJ0eSAic3RvcC1jb2xvciIgYXJlIG5vdCBlcXVhbC4gCitQ
QVNTIFR3byBDU1NWYWx1ZXMgInBvbHlnb24oZXZlbm9kZCwgMTBweCA3NXB4LCAxODBweCAxODBw
eCwgMTAwcHggMTBweCwgMTBweCAxODBweCwgMTgwcHggNzVweCwgMTBweCA3NXB4KSIgZm9yIHBy
b3BlcnR5ICItd2Via2l0LWNsaXAtcGF0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVl
cyAicG9seWdvbihub256ZXJvLCAyMCUgMjAlLCA4MCUgMjAlLCA4MCUgODAlLCAyMCUgODAlKSIg
Zm9yIHByb3BlcnR5ICItd2Via2l0LWNsaXAtcGF0aCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENT
U1ZhbHVlcyAicG9seWdvbihldmVub2RkLCAxMHB4IDc1cHgsIDE4MHB4IDE4MHB4LCAxMDBweCAx
MHB4LCAxMHB4IDE4MHB4LCAxODBweCA3NXB4LCAxMHB4IDc1cHgpIiBhbmQgInBvbHlnb24obm9u
emVybywgMjAlIDIwJSwgODAlIDIwJSwgODAlIDgwJSwgMjAlIDgwJSkiIGZvciBwcm9wZXJ0eSAi
LXdlYmtpdC1jbGlwLXBhdGgiIGFyZSBub3QgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICIx
MHMiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24iIGFyZSBlcXVhbC4g
CitQQVNTIFR3byBDU1NWYWx1ZXMgIjEwMG1zIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtYW5pbWF0
aW9uLWR1cmF0aW9uIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICIxMHMiIGFuZCAi
MTAwbXMiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb24iIGFyZSBub3Qg
ZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJyZWQiIGZvciBwcm9wZXJ0eSAiY29sb3IiIGFy
ZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgImJsdWUiIGZvciBwcm9wZXJ0eSAiY29sb3Ii
IGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJlZCIgYW5kICJibHVlIiBmb3IgcHJv
cGVydHkgImNvbG9yIiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAidXJsKHJl
c291cmNlcy9ncmVlbmJveC5wbmcpIiBmb3IgcHJvcGVydHkgImJvcmRlci1pbWFnZS1zb3VyY2Ui
IGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInVybChyZXNvdXJjZXMvcmVkYm94LnBu
ZykiIGZvciBwcm9wZXJ0eSAiYm9yZGVyLWltYWdlLXNvdXJjZSIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAidXJsKHJlc291cmNlcy9ncmVlbmJveC5wbmcpIiBhbmQgInVybChyZXNv
dXJjZXMvcmVkYm94LnBuZykiIGZvciBwcm9wZXJ0eSAiYm9yZGVyLWltYWdlLXNvdXJjZSIgYXJl
IG5vdCBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjEgMiAzIDQiIGZvciBwcm9wZXJ0eSAi
Ym9yZGVyLWltYWdlLXNsaWNlIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICIyIDMg
NCA1IiBmb3IgcHJvcGVydHkgImJvcmRlci1pbWFnZS1zbGljZSIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAiMSAyIDMgNCIgYW5kICIyIDMgNCA1IiBmb3IgcHJvcGVydHkgImJvcmRl
ci1pbWFnZS1zbGljZSIgYXJlIG5vdCBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInVybChy
ZXNvdXJjZXMvZ3JlZW5ib3gucG5nKSAwIDAsIHBvaW50ZXIiIGZvciBwcm9wZXJ0eSAiY3Vyc29y
IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJ1cmwocmVzb3VyY2VzL2N1cnNvci5w
bmcpIDEgMSwgd2FpdCIgZm9yIHByb3BlcnR5ICJjdXJzb3IiIGFyZSBlcXVhbC4gCitQQVNTIFR3
byBDU1NWYWx1ZXMgInVybChyZXNvdXJjZXMvZ3JlZW5ib3gucG5nKSAwIDAsIHBvaW50ZXIiIGFu
ZCAidXJsKHJlc291cmNlcy9jdXJzb3IucG5nKSAxIDEsIHdhaXQiIGZvciBwcm9wZXJ0eSAiY3Vy
c29yIiBhcmUgbm90IGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiaXRhbGljIGJvbGQgMTJw
eC8zMHB4IGFyaWFsIiBmb3IgcHJvcGVydHkgImZvbnQiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBD
U1NWYWx1ZXMgIml0YWxpYyBib2xkIDhweC8xNnB4IGhlbHZldGljYSIgZm9yIHByb3BlcnR5ICJm
b250IiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJpdGFsaWMgYm9sZCAxMnB4LzMw
cHggYXJpYWwiIGFuZCAiaXRhbGljIGJvbGQgOHB4LzE2cHggaGVsdmV0aWNhIiBmb3IgcHJvcGVy
dHkgImZvbnQiIGFyZSBub3QgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICItd2Via2l0LWdy
YWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCNjY2MpLCB0bygjMDAw
KSkiIGZvciBwcm9wZXJ0eSAiYmFja2dyb3VuZCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1Zh
bHVlcyAiLXdlYmtpdC1ncmFkaWVudChyYWRpYWwsIDQ1IDQ1LCAwLCA1MiA1MCwgMCwgZnJvbSgj
QTdEMzBDKSwgdG8ocmdiYSgxLDE1OSw5OCwwKSksIGNvbG9yLXN0b3AoOTAlLCAjMDE5RjYyKSki
IGZvciBwcm9wZXJ0eSAiYmFja2dyb3VuZCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVl
cyAiLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbSgj
Y2NjKSwgdG8oIzAwMCkpIiBhbmQgIi13ZWJraXQtZ3JhZGllbnQocmFkaWFsLCA0NSA0NSwgMCwg
NTIgNTAsIDAsIGZyb20oI0E3RDMwQyksIHRvKHJnYmEoMSwxNTksOTgsMCkpLCBjb2xvci1zdG9w
KDkwJSwgIzAxOUY2MikpIiBmb3IgcHJvcGVydHkgImJhY2tncm91bmQiIGFyZSBub3QgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICItd2Via2l0LWNyb3NzLWZhZGUodXJsKGR1bW15Oi8vZXhh
bXBsZS5wbmcpLCB1cmwoZHVtbXk6Ly9leGFtcGxlLnBuZyksIDUwJSkiIGZvciBwcm9wZXJ0eSAi
YmFja2dyb3VuZC1pbWFnZSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiLXdlYmtp
dC1jcm9zcy1mYWRlKHVybChkdW1teTovL2JhY2tncm91bmQucG5nKSwgdXJsKGR1bW15Oi8vZm9y
ZWdyb3VuZC5wbmcpLCA4MCUpIiBmb3IgcHJvcGVydHkgImJhY2tncm91bmQtaW1hZ2UiIGFyZSBl
cXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIi13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoZHVtbXk6
Ly9leGFtcGxlLnBuZyksIHVybChkdW1teTovL2V4YW1wbGUucG5nKSwgNTAlKSIgYW5kICItd2Vi
a2l0LWNyb3NzLWZhZGUodXJsKGR1bW15Oi8vYmFja2dyb3VuZC5wbmcpLCB1cmwoZHVtbXk6Ly9m
b3JlZ3JvdW5kLnBuZyksIDgwJSkiIGZvciBwcm9wZXJ0eSAiYmFja2dyb3VuZC1pbWFnZSIgYXJl
IG5vdCBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgImJlbG93IDEwcHgiIGZvciBwcm9wZXJ0
eSAiLXdlYmtpdC1ib3gtcmVmbGVjdCIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAi
YmVsb3cgMHB4IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20s
IGZyb20odHJhbnNwYXJlbnQpLCB0byhyZ2JhKDEwLCA1NSwgMjM0LCAxKSkpIiBmb3IgcHJvcGVy
dHkgIi13ZWJraXQtYm94LXJlZmxlY3QiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMg
ImJlbG93IDEwcHgiIGFuZCAiYmVsb3cgMHB4IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0
IHRvcCwgbGVmdCBib3R0b20sIGZyb20odHJhbnNwYXJlbnQpLCB0byhyZ2JhKDEwLCA1NSwgMjM0
LCAxKSkpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtYm94LXJlZmxlY3QiIGFyZSBub3QgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICIwIC0yMHB4IDEwcHggcmVkLCAwIDIwcHggMTBweCBibHVl
IiBmb3IgcHJvcGVydHkgIi13ZWJraXQtYm94LXNoYWRvdyIgYXJlIGVxdWFsLiAKK1BBU1MgVHdv
IENTU1ZhbHVlcyAiMCAyMHB4IDEwcHggYmx1ZSIgZm9yIHByb3BlcnR5ICItd2Via2l0LWJveC1z
aGFkb3ciIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjVweCA1cHggNXB4IHJnYmEo
MCwgMCwgMCwgMC4zKSIgZm9yIHByb3BlcnR5ICItd2Via2l0LWJveC1zaGFkb3ciIGFyZSBlcXVh
bC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIjAgLTIwcHggMTBweCByZWQsIDAgMjBweCAxMHB4IGJs
dWUiIGFuZCAiMCAyMHB4IDEwcHggYmx1ZSIgZm9yIHByb3BlcnR5ICItd2Via2l0LWJveC1zaGFk
b3ciIGFyZSBub3QgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJjdWJpYy1iZXppZXIoMC4y
NSwgMC4xLCAwLjI1LCAxKSIgZm9yIHByb3BlcnR5ICItd2Via2l0LXRyYW5zaXRpb24tdGltaW5n
LWZ1bmN0aW9uIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJsaW5lYXIiIGZvciBw
cm9wZXJ0eSAiLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIgYXJlIGVxdWFsLiAK
K1BBU1MgVHdvIENTU1ZhbHVlcyAic3RlcHMoMywgZW5kKSIgZm9yIHByb3BlcnR5ICItd2Via2l0
LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFs
dWVzICJjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKSIgYW5kICJsaW5lYXIiIGZvciBw
cm9wZXJ0eSAiLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIgYXJlIG5vdCBlcXVh
bC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInJvdGF0ZSgzMGRlZykiIGZvciBwcm9wZXJ0eSAiLXdl
YmtpdC10cmFuc2Zvcm0iIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInRyYW5zbGF0
ZSg1MHB4LDUwcHgpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtdHJhbnNmb3JtIiBhcmUgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICJzY2FsZSgyLDQpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQt
dHJhbnNmb3JtIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJza2V3KDMwZGVnLDIw
ZGVnKSIgZm9yIHByb3BlcnR5ICItd2Via2l0LXRyYW5zZm9ybSIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAibWF0cml4KDAuNCwwLjUsLTAuNSwwLjQsMCwwKSIgZm9yIHByb3BlcnR5
ICItd2Via2l0LXRyYW5zZm9ybSIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAicm90
YXRlKDMwZGVnKSIgYW5kICJ0cmFuc2xhdGUoNTBweCw1MHB4KSIgZm9yIHByb3BlcnR5ICItd2Vi
a2l0LXRyYW5zZm9ybSIgYXJlIG5vdCBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgImlubGlu
ZS1ib3giIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1saW5lLWJveC1jb250YWluIiBhcmUgZXF1YWwu
IAorUEFTUyBUd28gQ1NTVmFsdWVzICJmb250IiBmb3IgcHJvcGVydHkgIi13ZWJraXQtbGluZS1i
b3gtY29udGFpbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiZ2x5cGhzIiBmb3Ig
cHJvcGVydHkgIi13ZWJraXQtbGluZS1ib3gtY29udGFpbiIgYXJlIGVxdWFsLiAKK1BBU1MgVHdv
IENTU1ZhbHVlcyAicmVwbGFjZWQiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1saW5lLWJveC1jb250
YWluIiBhcmUgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJpbmxpbmUtYm94IiBhbmQgImZv
bnQiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1saW5lLWJveC1jb250YWluIiBhcmUgbm90IGVxdWFs
LiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiLXdlYmtpdC1pbWFnZS1zZXQodXJsKGR1bW15Oi8vdGVz
dC5wbmcpIDF4LCB1cmwoZHVtbXk6Ly90ZXN0LnBuZykgMngpIiBmb3IgcHJvcGVydHkgImJhY2tn
cm91bmQtaW1hZ2UiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgIi13ZWJraXQtaW1h
Z2Utc2V0KHVybChkdW1teTovL3NtYWxsLnBuZykgMngsIHVybChkdW1teTovL2JpZy5wbmcpIDN4
KSIgZm9yIHByb3BlcnR5ICJiYWNrZ3JvdW5kLWltYWdlIiBhcmUgZXF1YWwuIAorUEFTUyBUd28g
Q1NTVmFsdWVzICItd2Via2l0LWltYWdlLXNldCh1cmwoZHVtbXk6Ly90ZXN0LnBuZykgMXgsIHVy
bChkdW1teTovL3Rlc3QucG5nKSAyeCkiIGFuZCAiLXdlYmtpdC1pbWFnZS1zZXQodXJsKGR1bW15
Oi8vc21hbGwucG5nKSAyeCwgdXJsKGR1bW15Oi8vYmlnLnBuZykgM3gpIiBmb3IgcHJvcGVydHkg
ImJhY2tncm91bmQtaW1hZ2UiIGFyZSBub3QgZXF1YWwuIAorUEFTUyBUd28gQ1NTVmFsdWVzICJn
cmF5c2NhbGUoMTAwJSkgc2VwaWEoMTAwJSkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1maWx0ZXIi
IGFyZSBlcXVhbC4gCitQQVNTIFR3byBDU1NWYWx1ZXMgInNlcGlhKDEwJSkgZ3JheXNjYWxlKDUw
JSkiIGZvciBwcm9wZXJ0eSAiLXdlYmtpdC1maWx0ZXIiIGFyZSBlcXVhbC4gCitQQVNTIFR3byBD
U1NWYWx1ZXMgImdyYXlzY2FsZSgxMDAlKSBzZXBpYSgxMDAlKSIgYW5kICJzZXBpYSgxMCUpIGdy
YXlzY2FsZSg1MCUpIiBmb3IgcHJvcGVydHkgIi13ZWJraXQtZmlsdGVyIiBhcmUgbm90IGVxdWFs
LiAKK1BBU1MgVHdvIENTU1ZhbHVlcyAiZGFzaGJvYXJkLXJlZ2lvbihsYWJlbCBjaXJjbGUpIiBm
b3IgcHJvcGVydHkgIi13ZWJraXQtZGFzaGJvYXJkLXJlZ2lvbiIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAiZGFzaGJvYXJkLXJlZ2lvbihsYWJlbCBjaXJjbGUgMXB4IDJweCAzcHgg
NHB4KSBkYXNoYm9hcmQtcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSA1cHggNnB4IDdweCA4cHgpIiBm
b3IgcHJvcGVydHkgIi13ZWJraXQtZGFzaGJvYXJkLXJlZ2lvbiIgYXJlIGVxdWFsLiAKK1BBU1Mg
VHdvIENTU1ZhbHVlcyAiZGFzaGJvYXJkLXJlZ2lvbihsYWJlbCBjaXJjbGUpIiBhbmQgImRhc2hi
b2FyZC1yZWdpb24obGFiZWwgY2lyY2xlIDFweCAycHggM3B4IDRweCkgZGFzaGJvYXJkLXJlZ2lv
bihsYWJlbCByZWN0YW5nbGUgNXB4IDZweCA3cHggOHB4KSIgZm9yIHByb3BlcnR5ICItd2Via2l0
LWRhc2hib2FyZC1yZWdpb24iIGFyZSBub3QgZXF1YWwuIAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3NvbS9jc3N2YWx1ZS1jb21wYXJpc29uLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3NvbS9j
c3N2YWx1ZS1jb21wYXJpc29uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMWE3MzEyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzc29tL2Nzc3ZhbHVl
LWNvbXBhcmlzb24uaHRtbApAQCAtMCwwICsxLDg0IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1s
PgorPGhlYWQ+CisgIDx0aXRsZT5DU1NWYWx1ZSBjb21wYXJpc29uIHRlc3Q8L3RpdGxlPgorICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW4oKSI+Cis8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBDU1NWYWx1ZSBv
YmplY3RzIGNvbXBhcmlzb24gd29ya3MgY29ycmVjdGx5LjwvcD4KKzxkaXYgaWQ9InRlc3QiIGNv
bnRlbnRlZGl0YWJsZT48L2Rpdj4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
c2V0dXAoeyAiZXhwbGljaXRfZG9uZSI6IHRydWUgfSk7CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAg
ICB2YXIgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAg
ICBzdHlsZUVsZW1lbnQudHlwZSA9ICJ0ZXh0L2NzcyI7CisgICAgdmFyIHN0eWxlVGV4dE5vZGUg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIik7CisgICAgc3R5bGVFbGVtZW50LmFwcGVuZENo
aWxkKHN0eWxlVGV4dE5vZGUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJo
ZWFkIilbMF0uYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKworICAgIHZhciBkaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgIGRpdi5mb2N1cygpOworCisgICAgZnVu
Y3Rpb24gcnVuVGVzdChwcm9wZXJ0eU5hbWUsIHN0eWxlU2hlZXRQcm9wZXJ0eVZhbHVlLCBpbmxp
bmVTdHlsZVByb3BlcnR5VmFsdWUsIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICBzdHlsZVRleHRO
b2RlLmRhdGEgPSAiZGl2IHsgIiArIHByb3BlcnR5TmFtZSArICIgOiAiICsgc3R5bGVTaGVldFBy
b3BlcnR5VmFsdWUgKyAiOyB9IjsKKyAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRI
VE1MJywgZmFsc2UsICI8ZGl2IGlkPVwiaW5zZXJ0ZWREaXZcIiBzdHlsZT1cIiIgKyBwcm9wZXJ0
eU5hbWUgKyAiIDogIiArIGlubGluZVN0eWxlUHJvcGVydHlWYWx1ZSArICI7IFwiPjwvZGl2PiIp
OworICAgICAgdmFyIGluc2VydGVkRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc2Vy
dGVkRGl2Jyk7CisgICAgICB2YXIgcmVzdWx0ID0gZXhwZWN0ZWRSZXN1bHQ7CisgICAgICBpZiAo
cHJvcGVydHlOYW1lIGluIGluc2VydGVkRGl2LnN0eWxlKQorICAgICAgICAgIHJlc3VsdCA9IGlu
c2VydGVkRGl2LnN0eWxlW3Byb3BlcnR5TmFtZV0gPT09ICIiOworICAgICAgaW5zZXJ0ZWREaXYu
cmVtb3ZlKCk7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgdmFyIHRlc3RzID0g
WyB7IndpZHRoIiA6IFsiMjAlIiwgIjJlbSIsICIycmVtIiwgIjIwcHgiLCAiMmNtIiwgIjIwbW0i
LCAiNGluIiwgIjIwcHQiLCAiMTBwYyIsICI2dnciLCAiNnZoIiwgIjR2bWluIiwgIi13ZWJraXQt
Y2FsYygtMTAwcHggKyAxMDAlKSJdfSwgLy8gbGVuZ3RocywgY2FsYworICAgICAgICAgICAgICAg
ICAgeyItd2Via2l0LXRyYW5zZm9ybSIgOiBbInJvdGF0ZSgxNWRlZykiLCAicm90YXRlKDEuNTVy
YWQpIiwgInJvdGF0ZSgyMDBncmFkKSIsICJyb3RhdGUoMC41dHVybikiXX0sIC8vIGFuZ2xlCisg
ICAgICAgICAgICAgICAgICB7ImJhY2tncm91bmQiIDogWyJ1cmwoZHVtbXk6Ly90ZXN0LnBuZyki
LCAidXJsKGR1bW15Oi8vZ3JlZW4ucG5nKSJdfSwgLy8gdXJpCisgICAgICAgICAgICAgICAgICB7
ImZvbnQtd2VpZ2h0IiA6IFsiYm9sZCIsICJpbmhlcml0Il19LCAvLyBpZGVudAorICAgICAgICAg
ICAgICAgICAgeyJjb250ZW50IiA6IFsiY291bnRlcihhKSIsICJjb3VudGVycyhhLCAnLicpIl19
LCAvLyBjb3VudGVyCisgICAgICAgICAgICAgICAgICB7ImNvbnRlbnQiIDogWyJhdHRyKGEpIiwg
ImF0dHIocCkiXX0sIC8vIGF0dHIKKyAgICAgICAgICAgICAgICAgIHsiY2xpcCIgOiBbInJlY3Qo
NDBweCwgMCwgNDVweCwgLTVweCkiLCAicmVjdCgxMHB4LCA1cHgsIDE1cHgsIC0xMHB4KSJdfSwg
Ly8gcmVjdAorICAgICAgICAgICAgICAgICAgeyJib3JkZXItcmFkaXVzIiA6IFsiMzBweCA3NXB4
IDE1cHggMTVweCIsICIxNjRweCAvIDgycHgiLCAiNDBweCJdfSwgLy8gcXVhZHMKKyAgICAgICAg
ICAgICAgICAgIHsic3RvcC1jb2xvciIgOiBbInJnYigyNTUsMCwwKSIsICIjRkY1NTY2Il19LCAv
LyBoZXgsIHJnYiBjb2xvcgorICAgICAgICAgICAgICAgICAgeyItd2Via2l0LWNsaXAtcGF0aCIg
OiBbInBvbHlnb24oZXZlbm9kZCwgMTBweCA3NXB4LCAxODBweCAxODBweCwgMTAwcHggMTBweCwg
MTBweCAxODBweCwgMTgwcHggNzVweCwgMTBweCA3NXB4KSIsICJwb2x5Z29uKG5vbnplcm8sIDIw
JSAyMCUsIDgwJSAyMCUsIDgwJSA4MCUsIDIwJSA4MCUpIl19LCAvLyBzaGFwZSB2YWx1ZQorICAg
ICAgICAgICAgICAgICAgeyItd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbiIgOiBbIjEwcyIsICIx
MDBtcyJdfSwgLy8gc2Vjb25kcywgbWlsbGlzZWNvbmRzCisgICAgICAgICAgICAgICAgICB7ImNv
bG9yIiA6IFsicmVkIiwgImJsdWUiXX0sIC8vIGlkZW50CisgICAgICAgICAgICAgICAgICB7ImJv
cmRlci1pbWFnZS1zb3VyY2UiIDogWyJ1cmwocmVzb3VyY2VzL2dyZWVuYm94LnBuZykiLCAidXJs
KHJlc291cmNlcy9yZWRib3gucG5nKSJdfSwgLy8gaW1hZ2UKKyAgICAgICAgICAgICAgICAgIHsi
Ym9yZGVyLWltYWdlLXNsaWNlIiA6IFsiMSAyIDMgNCIsICIyIDMgNCA1Il19LCAvLyBib3JkZXIg
aW1hZ2Ugc2xpY2UKKyAgICAgICAgICAgICAgICAgIHsiY3Vyc29yIiA6IFsidXJsKHJlc291cmNl
cy9ncmVlbmJveC5wbmcpIDAgMCwgcG9pbnRlciIsICJ1cmwocmVzb3VyY2VzL2N1cnNvci5wbmcp
IDEgMSwgd2FpdCJdfSwgLy8gY3Vyc29yCisgICAgICAgICAgICAgICAgICB7ImZvbnQiIDogWyJp
dGFsaWMgYm9sZCAxMnB4LzMwcHggYXJpYWwiLCAiaXRhbGljIGJvbGQgOHB4LzE2cHggaGVsdmV0
aWNhIl19LCAvLyBmb250CisgICAgICAgICAgICAgICAgICB7ImJhY2tncm91bmQiIDogWyItd2Vi
a2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKCNjY2MpLCB0
bygjMDAwKSkiLCAiLXdlYmtpdC1ncmFkaWVudChyYWRpYWwsIDQ1IDQ1LCAwLCA1MiA1MCwgMCwg
ZnJvbSgjQTdEMzBDKSwgdG8ocmdiYSgxLDE1OSw5OCwwKSksIGNvbG9yLXN0b3AoOTAlLCAjMDE5
RjYyKSkiXX0sIC8vIGdyYWRpZW50cworICAgICAgICAgICAgICAgICAgeyJiYWNrZ3JvdW5kLWlt
YWdlIiA6IFsiLXdlYmtpdC1jcm9zcy1mYWRlKHVybChkdW1teTovL2V4YW1wbGUucG5nKSwgdXJs
KGR1bW15Oi8vZXhhbXBsZS5wbmcpLCA1MCUpIiwgIi13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoZHVt
bXk6Ly9iYWNrZ3JvdW5kLnBuZyksIHVybChkdW1teTovL2ZvcmVncm91bmQucG5nKSwgODAlKSJd
fSwgLy8gY3Jvc3NmYWRlCisgICAgICAgICAgICAgICAgICB7Ii13ZWJraXQtYm94LXJlZmxlY3Qi
IDogWyJiZWxvdyAxMHB4IiwgImJlbG93IDBweCAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVm
dCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHRyYW5zcGFyZW50KSwgdG8ocmdiYSgxMCwgNTUsIDIz
NCwgMSkpKSJdfSwgLy8gcmVmbGVjdAorICAgICAgICAgICAgICAgICAgeyItd2Via2l0LWJveC1z
aGFkb3ciIDogWyIwIC0yMHB4IDEwcHggcmVkLCAwIDIwcHggMTBweCBibHVlIiwgIjAgMjBweCAx
MHB4IGJsdWUiLCAiNXB4IDVweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpIl19LCAvLyBzaGFkb3cK
KyAgICAgICAgICAgICAgICAgIHsiLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIg
OiBbImN1YmljLWJlemllcigwLjI1LCAwLjEsIDAuMjUsIDEpIiwgImxpbmVhciIsICJzdGVwcygz
LCBlbmQpIl19LCAvLyB0aW1pbmcgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICB7Ii13ZWJr
aXQtdHJhbnNmb3JtIiA6IFsicm90YXRlKDMwZGVnKSIsICJ0cmFuc2xhdGUoNTBweCw1MHB4KSIs
ICJzY2FsZSgyLDQpIiwgInNrZXcoMzBkZWcsMjBkZWcpIiwgIm1hdHJpeCgwLjQsMC41LC0wLjUs
MC40LDAsMCkiXX0sIC8vIHRyYW5zZm9ybXMKKyAgICAgICAgICAgICAgICAgIHsiLXdlYmtpdC1s
aW5lLWJveC1jb250YWluIiA6IFsiaW5saW5lLWJveCIsICJmb250IiwgImdseXBocyIsICJyZXBs
YWNlZCJdfSwgLy8gbGluZS1ib3gtY29udGFpbgorICAgICAgICAgICAgICAgICAgeyJiYWNrZ3Jv
dW5kLWltYWdlIiA6IFsiLXdlYmtpdC1pbWFnZS1zZXQodXJsKGR1bW15Oi8vdGVzdC5wbmcpIDF4
LCB1cmwoZHVtbXk6Ly90ZXN0LnBuZykgMngpIiwgIi13ZWJraXQtaW1hZ2Utc2V0KHVybChkdW1t
eTovL3NtYWxsLnBuZykgMngsIHVybChkdW1teTovL2JpZy5wbmcpIDN4KSJdfSwgLy8gaW1hZ2Ug
c2V0CisgICAgICAgICAgICAgICAgICB7Ii13ZWJraXQtZmlsdGVyIiA6IFsiZ3JheXNjYWxlKDEw
MCUpIHNlcGlhKDEwMCUpIiwgInNlcGlhKDEwJSkgZ3JheXNjYWxlKDUwJSkiXX0sIC8vIGZpbHRl
cgorICAgICAgICAgICAgICAgICAgeyItd2Via2l0LWRhc2hib2FyZC1yZWdpb24iIDogWyJkYXNo
Ym9hcmQtcmVnaW9uKGxhYmVsIGNpcmNsZSkiLCAiZGFzaGJvYXJkLXJlZ2lvbihsYWJlbCBjaXJj
bGUgMXB4IDJweCAzcHggNHB4KSBkYXNoYm9hcmQtcmVnaW9uKGxhYmVsIHJlY3RhbmdsZSA1cHgg
NnB4IDdweCA4cHgpIl19IC8vIGRhc2hib2FyZCByZWdpb24KKyAgICAgICAgICAgICAgICBdOwor
CisgICBmb3IgKHZhciBpbmRleCBpbiB0ZXN0cykgeworICAgICAgICB2YXIgdGVzdE1hcCA9IHRl
c3RzW2luZGV4XTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHRlc3RNYXApIHsKKyAgICAgICAg
ICAgIHZhciB0ZXN0VmFsdWVzID0gdGVzdE1hcFtrZXldOworCisgICAgICAgICAgICAvLyBUZXN0
cyBmb3IgZXF1YWxpdHkuCisgICAgICAgICAgICBmb3IodmFyIHRlc3RJbmRleCBpbiB0ZXN0VmFs
dWVzKQorICAgICAgICAgICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7YXNzZXJ0X3RydWUocnVuVGVz
dChrZXksIHRlc3RWYWx1ZXNbdGVzdEluZGV4XSwgdGVzdFZhbHVlc1t0ZXN0SW5kZXhdLCB0cnVl
KSl9LCAiVHdvIENTU1ZhbHVlcyBcIiIgKyB0ZXN0VmFsdWVzW3Rlc3RJbmRleF0gKyAiXCIgZm9y
IHByb3BlcnR5IFwiIiArIGtleSArICJcIiBhcmUgZXF1YWwuIik7CisKKyAgICAgICAgICAgIC8v
IFRlc3QgdGhhdCBjb21wYXJpc29uIG9mIG5vbi1lcXVhbCBjc3N2YWx1ZXMgcmV0dXJuIGZhbHNl
LgorICAgICAgICAgICAgaWYgKHRlc3RWYWx1ZXMubGVuZ3RoID4gMSkKKyAgICAgICAgICAgICAg
ICB0ZXN0KGZ1bmN0aW9uKCkge2Fzc2VydF9mYWxzZShydW5UZXN0KGtleSwgdGVzdFZhbHVlc1sw
XSwgdGVzdFZhbHVlc1sxXSwgZmFsc2UpKX0sICJUd28gQ1NTVmFsdWVzIFwiIiArIHRlc3RWYWx1
ZXNbMF0gKyAiXCIgYW5kIFwiIiArIHRlc3RWYWx1ZXNbMV0gKyAiXCIgZm9yIHByb3BlcnR5IFwi
IiArIGtleSArICJcIiBhcmUgbm90IGVxdWFsLiIpOworICAgICAgICB9CisgICAgfQorCisgICAg
ZG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAx
YWZkOTM4Li40NTU0ZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE0IEBACisyMDEzLTAyLTEx
ICBBbGV4YW5kZXIgU2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBDU1NWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJikgdG8gb3B0
aW1pc2UgQ1NTVmFsdWUgY29tcGFyaXNvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAyOTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgQWRkZWQgY29tcGFyaXNvbiBtZXRob2QgdG8gQ1NTVmFsdWUgYW5k
IGl0cyBjaGlsZHJlbiwgc28gdGhhdCB0aGUKKyAgICAgICAgY3NzIHZhbHVlcyBjb3VsZCBiZSBj
b21wYXJlZCBlZmZpY2llbnRseS4gQmVmb3JlIHRoaXMgcGF0Y2gsIENTU1ZhbHVlCisgICAgICAg
IG9iamVjdHMgd2VyZSBjb21wYXJlZCB1c2luZyBzdHJpbmdzIHRoYXQgd2VyZSBnZW5lcmF0ZWQg
YnkgdGhlIGNzc1RleHQoKSBtZXRob2QuCisKKyAgICAgICAgVGVzdDogY3Nzb20vY3NzdmFsdWUt
Y29tcGFyaXNvbi5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NBc3BlY3RSYXRpb1ZhbHVlOjplcXVhbHMpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaDoKKyAgICAg
ICAgKENTU0FzcGVjdFJhdGlvVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjplcXVhbHMpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xl
OjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQmFzaWNTaGFwZUVsbGlwc2U6OmVxdWFs
cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlUG9seWdvbjo6ZXF1YWxzKToKKyAg
ICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFwZXMuaDoKKyAgICAgICAgKENTU0Jhc2ljU2hhcGVSZWN0
YW5nbGUpOgorICAgICAgICAoQ1NTQmFzaWNTaGFwZUNpcmNsZSk6CisgICAgICAgIChDU1NCYXNp
Y1NoYXBlRWxsaXBzZSk6CisgICAgICAgIChDU1NCYXNpY1NoYXBlUG9seWdvbik6CisgICAgICAg
ICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmg6CisgICAgICAgIChDU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlOjplcXVhbHMp
OgorICAgICAgICAoQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0NhbGNQcmltaXRpdmVWYWx1ZTo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjQmlu
YXJ5T3BlcmF0aW9uOjplcXVhbHMpOgorICAgICAgICAoQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDYWxjQmluYXJ5T3BlcmF0aW9uOjp0eXBlKToKKyAgICAg
ICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlOjplcXVhbHMpOgorICAgICAgICAoQ1NTQ2FsY0V4cHJlc3Npb25Ob2Rl
KToKKyAgICAgICAgKENTU0NhbGNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjplcXVhbHMpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6CisgICAgICAgIChD
U1NDYW52YXNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjpjc3NQcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRo
YW5kKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaDoKKyAgICAgICAgKENTU0Nyb3NzZmFkZVZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0N1cnNv
ckltYWdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3JjVmFsdWU6OmVxdWFscyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oOgorICAgICAgICAo
Q1NTRm9udEZhY2VTcmNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NGdW5jdGlvblZhbHVlLmg6CisgICAgICAgIChD
U1NGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjplcXVhbHMpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpl
cXVhbHMpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpDU1NHcmFkaWVudENvbG9yU3RvcDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDU1NMaW5l
YXJHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKENTU1JhZGlhbEdyYWRpZW50VmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdl
VmFsdWU6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1h
Z2VWYWx1ZS5oOgorICAgICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0lu
aGVyaXRlZFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbmhlcml0ZWRWYWx1ZTo6ZXF1
YWxzKToKKyAgICAgICAgKENTU0luaGVyaXRlZFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW5p
dGlhbFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbml0aWFsVmFsdWU6OmVxdWFscyk6
CisgICAgICAgIChDU1NJbml0aWFsVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29u
dGFpblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lQm94Q29udGFpblZhbHVlOjpl
cXVhbHMpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5oOgorICAgICAgICAoQ1NTUHJpbWl0aXZl
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NSZWZsZWN0VmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUmVmbGVjdFZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogY3NzL0NTU1JlZmxlY3RWYWx1ZS5oOgorICAgICAgICAoQ1NTUmVmbGVjdFZhbHVlKToK
KyAgICAgICAgKiBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmVxdWFscyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1
ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKToKKyAg
ICAgICAgKENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAoQ1NTQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKENTU1N0ZXBzVGltaW5nRnVuY3Rp
b25WYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1VuaWNvZGVSYW5nZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmg6CisgICAgICAgIChD
U1NVbmljb2RlUmFuZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNTU1ZhbHVlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUu
aDoKKyAgICAgICAgKENTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcGFyZUNTU1ZhbHVlVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVD
U1NWYWx1ZVB0cik6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6OnJlbW92ZUFsbCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YWx1ZUxpc3Q6Omhhc1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6ZXF1
YWxzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoK
KyAgICAgICAgKENTU1ZhbHVlTGlzdCk6CisgICAgICAgICogY3NzL0NTU1ZhcmlhYmxlVmFsdWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlVmFsdWU6OmVxdWFscyk6CisgICAgICAg
IChDU1NWYXJpYWJsZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ291bnRlci5oOgorICAgICAgICAo
Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyOjplcXVhbHMpOgorICAgICAgICAq
IGNzcy9EYXNoYm9hcmRSZWdpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhc2hib2FyZFJlZ2lv
bjo6ZXF1YWxzKToKKyAgICAgICAgKiBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250RmVhdHVyZVZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaDoKKyAgICAgICAgKEZvbnRGZWF0dXJl
VmFsdWUpOgorICAgICAgICAqIGNzcy9Gb250VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0Zv
bnRWYWx1ZS5oOgorICAgICAgICAoRm9udFZhbHVlKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVy
eUV4cC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV4cDo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgICogY3NzL1BhaXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6OmVxdWFscyk6Cisg
ICAgICAgIChQYWlyKToKKyAgICAgICAgKiBjc3MvUmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVjdEJhc2U6OmVxdWFscyk6CisgICAgICAgIChSZWN0QmFzZSk6CisgICAgICAgICogY3NzL1No
YWRvd1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1ZhbHVlOjplcXVhbHMpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1NoYWRvd1ZhbHVlLmg6CisgICAgICAg
IChTaGFkb3dWYWx1ZSk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0NFZhbHVlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0eU1hdGNoZXMpOgorICAgICAgICAqIGNz
cy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
S2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoV2Vi
S2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVy
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmVxdWFs
cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFs
dWUuaDoKKyAgICAgICAgKFdlYktpdENTU0ZpbHRlclZhbHVlKToKKyAgICAgICAgKiBjc3MvV2Vi
S2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NN
aXhGdW5jdGlvblZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
Y3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU01peEZ1
bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OmVxdWFscyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRW
YWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSk6CisgICAgICAgICog
Y3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENT
U1NoYWRlclZhbHVlOjplcXVhbHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L1dlYktpdENTU1NoYWRlclZhbHVlLmg6CisgICAgICAgIChXZWJLaXRDU1NTaGFkZXJWYWx1ZSk6
CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6ZXF1YWxzKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0cmlidXRlRXF1aXZh
bGVudDo6dmFsdWVJc1ByZXNlbnRJblN0eWxlKToKKyAgICAgICAgKiBzdmcvU1ZHQ29sb3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29sb3I6OmVxdWFscyk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBzdmcvU1ZHQ29sb3IuaDoKKyAgICAgICAgKFNWR0NvbG9yKToKKyAgICAg
ICAgKiBzdmcvU1ZHUGFpbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnQ6OmVxdWFs
cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdmcvU1ZHUGFpbnQuaDoKKyAgICAg
ICAgKFNWR1BhaW50KToKKwogMjAxMy0wMi0xMCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYlNwZWVjaDogSW1wbGVtZW50IGJhc2ljIHNwZWFraW5n
L2ZpbmlzaGVkIHNwZWFraW5nIGJlaGF2aW9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0
UmF0aW9WYWx1ZS5jcHAKaW5kZXggODMwZjhjZi4uY2RlMGYzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcApAQCAtMzksNiArMzksMTEgQEAgU3RyaW5nIENT
U0FzcGVjdFJhdGlvVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBTdHJp
bmc6Om51bWJlcihtX251bWVyYXRvclZhbHVlKSArICcvJyArIFN0cmluZzo6bnVtYmVyKG1fZGVu
b21pbmF0b3JWYWx1ZSk7CiB9CiAKK2Jvb2wgQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6ZXF1YWxzKGNv
bnN0IENTU0FzcGVjdFJhdGlvVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX251
bWVyYXRvclZhbHVlID09IG90aGVyLm1fbnVtZXJhdG9yVmFsdWUgJiYgbV9kZW5vbWluYXRvclZh
bHVlID09IG90aGVyLm1fZGVub21pbmF0b3JWYWx1ZTsKK30KKwogdm9pZCBDU1NBc3BlY3RSYXRp
b1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaAppbmRleCA1Y2MzMzkyLi5kOWM1ZGVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVi
bGljOgogICAgIGZsb2F0IG51bWVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9udW1lcmF0
b3JWYWx1ZTsgfQogICAgIGZsb2F0IGRlbm9taW5hdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X2Rlbm9taW5hdG9yVmFsdWU7IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0FzcGVjdFJh
dGlvVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
QmFzaWNTaGFwZXMuY3BwCmluZGV4IDNmZGE2YjEuLjE5NzRlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAiQ1NTQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAK
QEAgLTc0LDYgKzc1LDIwIEBAIFN0cmluZyBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlOjpjc3NUZXh0
KCkgY29uc3QKICAgICAgICAgbV9yYWRpdXNZLmdldCgpID8gbV9yYWRpdXNZLT5jc3NUZXh0KCkg
OiBTdHJpbmcoKSk7CiB9CiAKK2Jvb2wgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZTo6ZXF1YWxzKGNv
bnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25zdAoreworICAgIGlmIChzaGFwZS50eXBlKCkg
IT0gQ1NTX0JBU0lDX1NIQVBFX1JFQ1RBTkdMRSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgY29uc3QgQ1NTQmFzaWNTaGFwZVJlY3RhbmdsZSYgb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBDU1NCYXNpY1NoYXBlUmVjdGFuZ2xlJj4oc2hhcGUpOworICAgIHJldHVybiBjb21wYXJlQ1NT
VmFsdWVQdHIobV94LCBvdGhlci5tX3gpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0ciht
X3ksIG90aGVyLm1feSkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fd2lkdGgsIG90
aGVyLm1fd2lkdGgpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2hlaWdodCwgb3Ro
ZXIubV9oZWlnaHQpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX3JhZGl1c1gsIG90
aGVyLm1fcmFkaXVzWCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fcmFkaXVzWSwg
b3RoZXIubV9yYWRpdXNZKTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogU3RyaW5n
IENTU0Jhc2ljU2hhcGVSZWN0YW5nbGU6OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25z
dCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogewpAQCAt
MTA2LDYgKzEyMSwxNyBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNv
bnN0CiAgICAgcmV0dXJuIGJ1aWxkQ2lyY2xlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBt
X2NlbnRlclktPmNzc1RleHQoKSwgbV9yYWRpdXMtPmNzc1RleHQoKSk7CiB9CiAKK2Jvb2wgQ1NT
QmFzaWNTaGFwZUNpcmNsZTo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25z
dAoreworICAgIGlmIChzaGFwZS50eXBlKCkgIT0gQ1NTX0JBU0lDX1NIQVBFX0NJUkNMRSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3QgQ1NTQmFzaWNTaGFwZUNpcmNsZSYgb3Ro
ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlQ2lyY2xlJj4oc2hhcGUpOworICAg
IHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIobV9jZW50ZXJYLCBvdGhlci5tX2NlbnRlclgpCisg
ICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2NlbnRlclksIG90aGVyLm1fY2VudGVyWSkK
KyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fcmFkaXVzLCBvdGhlci5tX3JhZGl1cyk7
Cit9CisKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKIFN0cmluZyBDU1NCYXNpY1NoYXBlQ2ly
Y2xlOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJp
bmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTEzMiw2ICsxNTgsMTggQEAgU3Ry
aW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gYnVp
bGRFbGxpcHNlU3RyaW5nKG1fY2VudGVyWC0+Y3NzVGV4dCgpLCBtX2NlbnRlclktPmNzc1RleHQo
KSwgbV9yYWRpdXNYLT5jc3NUZXh0KCksIG1fcmFkaXVzWS0+Y3NzVGV4dCgpKTsKIH0KIAorYm9v
bCBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBl
KSBjb25zdAoreworICAgIGlmIChzaGFwZS50eXBlKCkgIT0gQ1NTX0JBU0lDX1NIQVBFX0VMTElQ
U0UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVFbGxp
cHNlJiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0IENTU0Jhc2ljU2hhcGVFbGxpcHNlJj4oc2hh
cGUpOworICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIobV9jZW50ZXJYLCBvdGhlci5tX2Nl
bnRlclgpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2NlbnRlclksIG90aGVyLm1f
Y2VudGVyWSkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fcmFkaXVzWCwgb3RoZXIu
bV9yYWRpdXNYKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9yYWRpdXNZLCBvdGhl
ci5tX3JhZGl1c1kpOworfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NT
QmFzaWNTaGFwZUVsbGlwc2U6OnNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNo
TWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogewpAQCAtMTk5LDYg
KzIzNywxNSBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZVBvbHlnb246OmNzc1RleHQoKSBjb25zdAog
ICAgIHJldHVybiBidWlsZFBvbHlnb25TdHJpbmcobV93aW5kUnVsZSwgcG9pbnRzKTsKIH0KIAor
Ym9vbCBDU1NCYXNpY1NoYXBlUG9seWdvbjo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNo
YXBlKSBjb25zdAoreworICAgIGlmIChzaGFwZS50eXBlKCkgIT0gQ1NTX0JBU0lDX1NIQVBFX1BP
TFlHT04pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IENTU0Jhc2ljU2hhcGVQ
b2x5Z29uJiByaHMgPSBzdGF0aWNfY2FzdDxjb25zdCBDU1NCYXNpY1NoYXBlUG9seWdvbiY+KHNo
YXBlKTsKKyAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlVmVjdG9yPENTU1ByaW1pdGl2ZVZhbHVl
PihtX3ZhbHVlcywgcmhzLm1fdmFsdWVzKTsKK30KKwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVT
KQogU3RyaW5nIENTU0Jhc2ljU2hhcGVQb2x5Z29uOjpzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJs
ZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlhYmxlcykgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXggZWYzMjA5OC4uOGRiMGQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJp
bmcgY3NzVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0Jhc2ljU2hhcGUmKSBjb25zdCA9IDA7CiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAg
ICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1h
cDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdCA9IDA7CkBAIC04Miw2ICs4Myw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lD
X1NIQVBFX1JFQ1RBTkdMRTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdDsKIAog
I2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNv
bnN0OwpAQCAtMTEzLDYgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBFX0NJUkNMRTsgfQogICAgIHZpcnR1YWwg
U3RyaW5nIGNzc1RleHQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENT
U0Jhc2ljU2hhcGUmKSBjb25zdDsKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIHZp
cnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0
b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0OwpAQCAtMTQzLDYgKzE0Niw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ1NTX0JBU0lDX1NIQVBF
X0VMTElQU0U7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Q7CiAKICNpZiBFTkFC
TEUoQ1NTX1ZBUklBQkxFUykKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVSZXNvbHZpbmdW
YXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKQEAg
LTE3Nyw3ICsxODEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIENTU19CQVNJQ19TSEFQRV9QT0xZR09OOyB9CiAgICAgdmlydHVhbCBTdHJpbmcg
Y3NzVGV4dCgpIGNvbnN0OwotCisgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNp
Y1NoYXBlJikgY29uc3Q7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgdmlydHVhbCBT
dHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBTdHJpbmc+JikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhcmlhYmxlUmVmZXJl
bmNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNl
VmFsdWUuY3BwCmluZGV4IDVjNGJmMDQuLjkzNTEzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCkBAIC01MCw2ICs1MCwxMSBAQCBTdHJp
bmcgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gdGV4dDsKIH0KIAorYm9vbCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OmVxdWFscyhj
b25zdCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVy
biBtX2ZpbGwgPT0gb3RoZXIubV9maWxsICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX3NsaWNlcywg
b3RoZXIubV9zbGljZXMpOworfQorCiB2b2lkIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCmluZGV4IDQ4OGI0YTQuLmMyODZlOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKQEAgLTQ1LDYgKzQ1
LDggQEAgcHVibGljOgogCiAgICAgUXVhZCogc2xpY2VzKCkgeyByZXR1cm4gbV9zbGljZXMgPyBt
X3NsaWNlcy0+Z2V0UXVhZFZhbHVlKCkgOiAwOyB9CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBD
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIC8vIFRoZXNl
IGZvdXIgdmFsdWVzIGFyZSB1c2VkIHRvIG1ha2UgImN1dHMiIGluIHRoZSBib3JkZXIgaW1hZ2Uu
IFRoZXkgY2FuIGJlIG51bWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcAppbmRleCBlODc0MDFhLi5kZDhhYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC05NSw2ICs5NSwxMSBAQCBTdHJpbmcgQ1NTQ2FsY1Zh
bHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gYnVpbGRDc3NUZXh0KG1fZXhw
cmVzc2lvbi0+Y3VzdG9tQ3NzVGV4dCgpKTsKIH0KIAorYm9vbCBDU1NDYWxjVmFsdWU6OmVxdWFs
cyhjb25zdCBDU1NDYWxjVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJl
Q1NTVmFsdWVQdHIobV9leHByZXNzaW9uLCBvdGhlci5tX2V4cHJlc3Npb24pOworfQorCiAjaWYg
RU5BQkxFKENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NTQ2FsY1ZhbHVlOjpjdXN0b21TZXJpYWxp
emVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4m
IHZhcmlhYmxlcykgY29uc3QKIHsKQEAgLTIyMywxMSArMjI4LDIxIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIDA7ICAgICAgICAKICAgICB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNv
bnN0IENTU0NhbGNFeHByZXNzaW9uTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAodHlwZSgpICE9IG90aGVyLnR5cGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRyKG1fdmFsdWUsIHN0YXRpY19jYXN0PGNv
bnN0IENTU0NhbGNQcmltaXRpdmVWYWx1ZSY+KG90aGVyKS5tX3ZhbHVlKTsKKyAgICB9CisKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIE1lbW9yeUNsYXNzSW5m
byBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsK
ICAgICAgICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZSwgInZhbHVlIik7CiAgICAgfQorCisgICAg
dmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDc3NDYWxjUHJpbWl0aXZlVmFsdWU7
IH0KICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCkBAIC0zNTksNiArMzc0LDE5
IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29u
c3QgQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlJiBleHApIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
dHlwZSgpICE9IGV4cC50eXBlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgY29uc3QgQ1NTQ2FsY0JpbmFyeU9wZXJhdGlvbiYgb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uJj4oZXhwKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVD
U1NWYWx1ZVB0cihtX2xlZnRTaWRlLCBvdGhlci5tX2xlZnRTaWRlKQorICAgICAgICAgICAgJiYg
Y29tcGFyZUNTU1ZhbHVlUHRyKG1fcmlnaHRTaWRlLCBvdGhlci5tX3JpZ2h0U2lkZSkKKyAgICAg
ICAgICAgICYmIG1fb3BlcmF0b3IgPT0gb3RoZXIubV9vcGVyYXRvcjsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENzc0NhbGNCaW5hcnlPcGVyYXRpb247
IH0KKwogcHJpdmF0ZToKICAgICBDU1NDYWxjQmluYXJ5T3BlcmF0aW9uKFBhc3NSZWZQdHI8Q1NT
Q2FsY0V4cHJlc3Npb25Ob2RlPiBsZWZ0U2lkZSwgUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lv
bk5vZGU+IHJpZ2h0U2lkZSwgQ2FsY09wZXJhdG9yIG9wLCBDYWxjdWxhdGlvbkNhdGVnb3J5IGNh
dGVnb3J5KQogICAgICAgICA6IENTU0NhbGNFeHByZXNzaW9uTm9kZShjYXRlZ29yeSwgbGVmdFNp
ZGUtPmlzSW50ZWdlcigpICYmIHJpZ2h0U2lkZS0+aXNJbnRlZ2VyKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCAwNDRjZjMyLi41NjlkYmRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKQEAgLTYwLDcgKzYwLDExIEBAIGVu
dW0gQ2FsY3VsYXRpb25DYXRlZ29yeSB7CiAgICAgCiBjbGFzcyBDU1NDYWxjRXhwcmVzc2lvbk5v
ZGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IHsKIHB1YmxpYzoK
LSAgICAKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBDc3NDYWxjUHJpbWl0aXZlVmFsdWUgPSAx
LAorICAgICAgICBDc3NDYWxjQmluYXJ5T3BlcmF0aW9uCisgICAgfTsKKwogICAgIHZpcnR1YWwg
fkNTU0NhbGNFeHByZXNzaW9uTm9kZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNaZXJvKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc093blB0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHRv
Q2FsY1ZhbHVlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIHpv
b20gPSAxLjApIGNvbnN0ID0gMDsgICAgCkBAIC03MSw5ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgc2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNW
YXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0ID0gMDsKICNlbmRpZgotCisgICAgdmlydHVhbCBib29s
IGVxdWFscyhjb25zdCBDU1NDYWxjRXhwcmVzc2lvbk5vZGUmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2NhdGVnb3J5ID09IG90aGVyLm1fY2F0ZWdvcnkgJiYgbV9pc0ludGVnZXIgPT0gb3RoZXIu
bV9pc0ludGVnZXI7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0ID0gMDsKLSAgICAKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNv
bnN0ID0gMDsKKwogICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2NhdGVnb3J5OyB9ICAgIAogICAgIGJvb2wgaXNJbnRlZ2VyKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ludGVnZXI7IH0KICAgICAKQEAgLTEwNCw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAg
ZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdG
b250U2l6ZSA9IGZhbHNlKSBjb25zdDsKICAgICAgICAgCiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NDYWxjVmFsdWUmKSBjb25zdDsK
ICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXplUmVz
b2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29u
c3Q7CiAgICAgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYW52YXNWYWx1ZS5jcHAKaW5kZXggOTBhODZiMS4uYTk4NzFhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCkBAIC05Niw2ICs5NiwxMSBAQCBQYXNzUmVmUHRyPElt
YWdlPiBDU1NDYW52YXNWYWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
SW50U2l6ZSYgLwogICAgIHJldHVybiBlbHQtPmNvcGllZEltYWdlKCk7CiB9CiAKK2Jvb2wgQ1NT
Q2FudmFzVmFsdWU6OmVxdWFscyhjb25zdCBDU1NDYW52YXNWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbmFtZSA9PSBvdGhlci5tX25hbWU7Cit9CisKIHZvaWQgQ1NTQ2FudmFz
VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbnZhc1ZhbHVlLmgKaW5kZXggMTNmYjU4Ny4uNzcyMjhlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbnZhc1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNQZW5k
aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbnZh
c1ZhbHVlJikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDMyMjgyNzguLmM0
M2E0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC0yNjQ4LDcgKzI2NDgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dAogICAgICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnQgfTsKICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChwcm9wZXJ0
aWVzKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5jc3NUZXh0KCkgIT0gIGdl
dFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSwgRG9Ob3RVcGRhdGVMYXlvdXQpLT5jc3NU
ZXh0KCkpCisgICAgICAgICAgICAgICAgaWYgKCFjb21wYXJlQ1NTVmFsdWVQdHI8Q1NTVmFsdWU+
KHZhbHVlLCBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnRpZXNbaV0sIERvTm90VXBkYXRlTGF5
b3V0KSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2UoKTsKQEAgLTI4NzIsNyArMjg3Miw3IEBAIGJv
b2wgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQcm9wZXJ0eU1hdGNoZXMoY29uc3Qg
U3R5bGVQcm9wZXJ0eVNldDo6UHJvCiAgICAgICAgIH0KICAgICB9CiAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSA9IGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkuaWQoKSk7Ci0gICAgcmV0
dXJuIHZhbHVlICYmIHZhbHVlLT5jc3NUZXh0KCkgPT0gcHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4
dCgpOworICAgIHJldHVybiB2YWx1ZSAmJiBwcm9wZXJ0eS52YWx1ZSgpICYmIHZhbHVlLT5lcXVh
bHMoKnByb3BlcnR5LnZhbHVlKCkpOwogfQogCiBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weSgpIGNvbnN0CkBAIC0yOTA4LDkgKzI5
MDgsOSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZAogICAgIGlmICghdG9wVmFsdWUgfHwgIXJp
Z2h0VmFsdWUgfHwgIWJvdHRvbVZhbHVlIHx8ICFsZWZ0VmFsdWUpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgYm9vbCBzaG93TGVmdCA9IHJpZ2h0VmFsdWUtPmNzc1RleHQoKSAhPSBsZWZ0VmFs
dWUtPmNzc1RleHQoKTsKLSAgICBib29sIHNob3dCb3R0b20gPSAodG9wVmFsdWUtPmNzc1RleHQo
KSAhPSBib3R0b21WYWx1ZS0+Y3NzVGV4dCgpKSB8fCBzaG93TGVmdDsKLSAgICBib29sIHNob3dS
aWdodCA9ICh0b3BWYWx1ZS0+Y3NzVGV4dCgpICE9IHJpZ2h0VmFsdWUtPmNzc1RleHQoKSkgfHwg
c2hvd0JvdHRvbTsKKyAgICBib29sIHNob3dMZWZ0ID0gIWNvbXBhcmVDU1NWYWx1ZVB0cihyaWdo
dFZhbHVlLCBsZWZ0VmFsdWUpOworICAgIGJvb2wgc2hvd0JvdHRvbSA9ICFjb21wYXJlQ1NTVmFs
dWVQdHIodG9wVmFsdWUsIGJvdHRvbVZhbHVlKSB8fCBzaG93TGVmdDsKKyAgICBib29sIHNob3dS
aWdodCA9ICFjb21wYXJlQ1NTVmFsdWVQdHIodG9wVmFsdWUsIHJpZ2h0VmFsdWUpIHx8IHNob3dC
b3R0b207CiAKICAgICBsaXN0LT5hcHBlbmQodG9wVmFsdWUpOwogICAgIGlmIChzaG93UmlnaHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRleCAxMGM5NmE3Li42
MmFmMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKQEAgLTIy
OSw0ICsyMjksMTEgQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzRmFpbGVkT3JDYW5jZWxl
ZFN1YnJlc291cmNlcygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIENTU0Ny
b3NzZmFkZVZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmIG90aGVyKSBjb25z
dAoreworICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIobV9mcm9tVmFsdWUsIG90aGVyLm1f
ZnJvbVZhbHVlKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV90b1ZhbHVlLCBvdGhl
ci5tX3RvVmFsdWUpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX3BlcmNlbnRhZ2VW
YWx1ZSwgb3RoZXIubV9wZXJjZW50YWdlVmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IGMwNzQ3ODAuLmZj
MmU4YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC02Niw2ICs2
Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNl
cygpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmKSBj
b25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJ
bWFnZVZhbHVlLmNwcAppbmRleCBiMmNmYjA5Li5mNjc2ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCkBAIC0yMTcsNiArMjE3LDEyIEBAIHZvaWQgQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZTo6cmVtb3ZlUmVmZXJlbmNlZEVsZW1lbnQoU1ZHRWxlbWVudCogZWxl
bWVudCkKIH0KICNlbmRpZgogCitib29sIENTU0N1cnNvckltYWdlVmFsdWU6OmVxdWFscyhjb25z
dCBDU1NDdXJzb3JJbWFnZVZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYXNI
b3RTcG90ID8gb3RoZXIubV9oYXNIb3RTcG90ICYmIG1faG90U3BvdCA9PSBvdGhlci5tX2hvdFNw
b3QgOiAhb3RoZXIubV9oYXNIb3RTcG90CisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0ciht
X2ltYWdlVmFsdWUsIG90aGVyLm1faW1hZ2VWYWx1ZSk7Cit9CisKIHZvaWQgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKaW5kZXggY2ZjNzhlYy4uZDA3NDg3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCkBAIC01OSw2ICs1OSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqKTsKICNl
bmRpZgogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpIGNvbnN0
OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuY3BwCmluZGV4IDVjMzllMzcuLmUxYTMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTEwNCw2ICsxMDQsMTEgQEAgQ2FjaGVkRm9udCog
Q1NTRm9udEZhY2VTcmNWYWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
cmV0dXJuIG1fY2FjaGVkRm9udC5nZXQoKTsKIH0KIAorYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVl
OjplcXVhbHMoY29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faXNMb2NhbCA9PSBvdGhlci5tX2lzTG9jYWwgJiYgbV9mb3JtYXQgPT0gb3RoZXIu
bV9mb3JtYXQgJiYgbV9yZXNvdXJjZSA9PSBvdGhlci5tX3Jlc291cmNlOworfQorCiB2b2lkIENT
U0ZvbnRGYWNlU3JjVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IGEyYzU0NjYuLjQ4Yzgz
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApAQCAtNzEsNiAr
NzEsOCBAQCBwdWJsaWM6CiAKICAgICBDYWNoZWRGb250KiBjYWNoZWRGb250KERvY3VtZW50Kik7
CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlJikgY29uc3Q7CisK
ICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVu
Y3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAK
aW5kZXggM2I4MDhiNy4uODMyYzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Z1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZh
bHVlLmNwcApAQCAtNTksNiArNTksMTEgQEAgU3RyaW5nIENTU0Z1bmN0aW9uVmFsdWU6OmN1c3Rv
bUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9v
bCBDU1NGdW5jdGlvblZhbHVlOjplcXVhbHMoY29uc3QgQ1NTRnVuY3Rpb25WYWx1ZSYgb3RoZXIp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbmFtZSA9PSBvdGhlci5tX25hbWUgJiYgY29tcGFyZUNT
U1ZhbHVlUHRyKG1fYXJncywgb3RoZXIubV9hcmdzKTsKK30KKwogdm9pZCBDU1NGdW5jdGlvblZh
bHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Z1bmN0aW9uVmFsdWUuaAppbmRleCA0Y2NiNDc3Li4xNzljN2U1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGdW5jdGlvblZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Z1
bmN0aW9uVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCBkY2RlMTc4Li44ZjE2OGFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC03MjMsNiArNzIzLDM4IEBAIFBhc3NS
ZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJl
bmRlck9iamVjdCogcmVuZGVyCiAgICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2UoKTsKIH0KIAor
Ym9vbCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTTGluZWFyR3JhZGll
bnRWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fZ3JhZGllbnRUeXBlID09IENTU0Rl
cHJlY2F0ZWRMaW5lYXJHcmFkaWVudCkKKyAgICAgICAgcmV0dXJuIG90aGVyLm1fZ3JhZGllbnRU
eXBlID09IG1fZ3JhZGllbnRUeXBlCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIo
bV9maXJzdFgsIG90aGVyLm1fZmlyc3RYKQorICAgICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVl
UHRyKG1fZmlyc3RZLCBvdGhlci5tX2ZpcnN0WSkKKyAgICAgICAgICAgICYmIGNvbXBhcmVDU1NW
YWx1ZVB0cihtX3NlY29uZFgsIG90aGVyLm1fc2Vjb25kWCkKKyAgICAgICAgICAgICYmIGNvbXBh
cmVDU1NWYWx1ZVB0cihtX3NlY29uZFksIG90aGVyLm1fc2Vjb25kWSkKKyAgICAgICAgICAgICYm
IG1fc3RvcHMgPT0gb3RoZXIubV9zdG9wczsKKworICAgIGlmIChtX3JlcGVhdGluZyAhPSBvdGhl
ci5tX3JlcGVhdGluZykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fYW5nbGUp
CisgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIobV9hbmdsZSwgb3RoZXIubV9hbmds
ZSkgJiYgbV9zdG9wcyA9PSBvdGhlci5tX3N0b3BzOworCisgICAgaWYgKG90aGVyLm1fYW5nbGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgZXF1YWxYb3JZID0gZmFsc2U7Cisg
ICAgaWYgKG1fZmlyc3RYICYmIG1fZmlyc3RZKQorICAgICAgICBlcXVhbFhvclkgPSBjb21wYXJl
Q1NTVmFsdWVQdHIobV9maXJzdFgsIG90aGVyLm1fZmlyc3RYKSAmJiBjb21wYXJlQ1NTVmFsdWVQ
dHIobV9maXJzdFksIG90aGVyLm1fZmlyc3RZKTsKKyAgICBlbHNlIGlmIChtX2ZpcnN0WCkKKyAg
ICAgICAgZXF1YWxYb3JZID1jb21wYXJlQ1NTVmFsdWVQdHIobV9maXJzdFgsIG90aGVyLm1fZmly
c3RYKSAmJiAhb3RoZXIubV9maXJzdFk7CisgICAgZWxzZSBpZiAobV9maXJzdFkpCisgICAgICAg
IGVxdWFsWG9yWSA9IGNvbXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0WSwgb3RoZXIubV9maXJzdFkp
ICYmICFvdGhlci5tX2ZpcnN0WDsKKyAgICBlbHNlCisgICAgICAgIGVxdWFsWG9yWSA9ICFvdGhl
ci5tX2ZpcnN0WCB8fCAhb3RoZXIubV9maXJzdFk7CisKKyAgICByZXR1cm4gZXF1YWxYb3JZICYm
IG1fc3RvcHMgPT0gb3RoZXIubV9zdG9wczsKK30KKwogdm9pZCBDU1NMaW5lYXJHcmFkaWVudFZh
bHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CkBAIC0xMTEyLDYgKzExNDQs
NTIgQEAgUGFzc1JlZlB0cjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
R3JhZGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXIKICAgICByZXR1cm4gZ3JhZGllbnQucmVsZWFz
ZSgpOwogfQogCitib29sIENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmVxdWFscyhjb25zdCBDU1NS
YWRpYWxHcmFkaWVudFZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9ncmFkaWVudFR5
cGUgPT0gQ1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KQorICAgICAgICByZXR1cm4gb3RoZXIu
bV9ncmFkaWVudFR5cGUgPT0gbV9ncmFkaWVudFR5cGUKKyAgICAgICAgICAgICYmIGNvbXBhcmVD
U1NWYWx1ZVB0cihtX2ZpcnN0WCwgb3RoZXIubV9maXJzdFgpCisgICAgICAgICAgICAmJiBjb21w
YXJlQ1NTVmFsdWVQdHIobV9maXJzdFksIG90aGVyLm1fZmlyc3RZKQorICAgICAgICAgICAgJiYg
Y29tcGFyZUNTU1ZhbHVlUHRyKG1fc2Vjb25kWCwgb3RoZXIubV9zZWNvbmRYKQorICAgICAgICAg
ICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fc2Vjb25kWSwgb3RoZXIubV9zZWNvbmRZKQorICAg
ICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3RSYWRpdXMsIG90aGVyLm1fZmly
c3RSYWRpdXMpCisgICAgICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9zZWNvbmRSYWRp
dXMsIG90aGVyLm1fc2Vjb25kUmFkaXVzKQorICAgICAgICAgICAgJiYgbV9zdG9wcyA9PSBvdGhl
ci5tX3N0b3BzOworCisgICAgaWYgKG1fcmVwZWF0aW5nICE9IG90aGVyLm1fcmVwZWF0aW5nKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGVxdWFsWG9yWSA9IGZhbHNlOworICAg
IGlmIChtX2ZpcnN0WCAmJiBtX2ZpcnN0WSkKKyAgICAgICAgZXF1YWxYb3JZID0gY29tcGFyZUNT
U1ZhbHVlUHRyKG1fZmlyc3RYLCBvdGhlci5tX2ZpcnN0WCkgJiYgY29tcGFyZUNTU1ZhbHVlUHRy
KG1fZmlyc3RZLCBvdGhlci5tX2ZpcnN0WSk7CisgICAgZWxzZSBpZiAobV9maXJzdFgpCisgICAg
ICAgIGVxdWFsWG9yWSA9IGNvbXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0WCwgb3RoZXIubV9maXJz
dFgpICYmICFvdGhlci5tX2ZpcnN0WTsKKyAgICBlbHNlIGlmIChtX2ZpcnN0WSkKKyAgICAgICAg
ZXF1YWxYb3JZID0gY29tcGFyZUNTU1ZhbHVlUHRyKG1fZmlyc3RZLCBvdGhlci5tX2ZpcnN0WSkg
JiYgIW90aGVyLm1fZmlyc3RYOworICAgIGVsc2UKKyAgICAgICAgZXF1YWxYb3JZID09ICFvdGhl
ci5tX2ZpcnN0WCB8fCAhb3RoZXIubV9maXJzdFk7CisKKyAgICBpZiAoIWVxdWFsWG9yWSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBlcXVhbFNoYXBlID0gdHJ1ZTsKKyAgICBi
b29sIGVxdWFsU2l6aW5nQmVoYXZpb3IgPSB0cnVlOworICAgIGJvb2wgZXF1YWxIb3Jpem9udGFs
QW5kVmVydGljYWxTaXplID0gdHJ1ZTsKKworICAgIGlmIChtX3NoYXBlKQorICAgICAgICBlcXVh
bFNoYXBlID0gY29tcGFyZUNTU1ZhbHVlUHRyKG1fc2hhcGUsIG90aGVyLm1fc2hhcGUpOworICAg
IGVsc2UgaWYgKG1fc2l6aW5nQmVoYXZpb3IpCisgICAgICAgIGVxdWFsU2l6aW5nQmVoYXZpb3Ig
PSBjb21wYXJlQ1NTVmFsdWVQdHIobV9zaXppbmdCZWhhdmlvciwgb3RoZXIubV9zaXppbmdCZWhh
dmlvcik7CisgICAgZWxzZSBpZiAobV9lbmRIb3Jpem9udGFsU2l6ZSAmJiBtX2VuZFZlcnRpY2Fs
U2l6ZSkKKyAgICAgICAgZXF1YWxIb3Jpem9udGFsQW5kVmVydGljYWxTaXplID0gY29tcGFyZUNT
U1ZhbHVlUHRyKG1fZW5kSG9yaXpvbnRhbFNpemUsIG90aGVyLm1fZW5kSG9yaXpvbnRhbFNpemUp
ICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2VuZFZlcnRpY2FsU2l6ZSwgb3RoZXIubV9lbmRWZXJ0
aWNhbFNpemUpOworICAgIGVsc2UgeworICAgICAgICBlcXVhbFNoYXBlID0gIW90aGVyLm1fc2hh
cGU7CisgICAgICAgIGVxdWFsU2l6aW5nQmVoYXZpb3IgPSAhb3RoZXIubV9zaXppbmdCZWhhdmlv
cjsKKyAgICAgICAgZXF1YWxIb3Jpem9udGFsQW5kVmVydGljYWxTaXplID0gIW90aGVyLm1fZW5k
SG9yaXpvbnRhbFNpemUgJiYgIW90aGVyLm1fZW5kVmVydGljYWxTaXplOworICAgIH0KKyAgICBy
ZXR1cm4gZXF1YWxTaGFwZSAmJiBlcXVhbFNpemluZ0JlaGF2aW9yICYmIGVxdWFsSG9yaXpvbnRh
bEFuZFZlcnRpY2FsU2l6ZSAmJiBtX3N0b3BzID09IG90aGVyLm1fc3RvcHM7Cit9CisKIHZvaWQg
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXggN2ExOTA3NS4uOGUxYzc3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBAIC01Myw2ICs1MywxMSBA
QCBzdHJ1Y3QgQ1NTR3JhZGllbnRDb2xvclN0b3AgewogICAgIENvbG9yIG1fcmVzb2x2ZWRDb2xv
cjsKICAgICBib29sIG1fY29sb3JJc0Rlcml2ZWRGcm9tRWxlbWVudDsKICAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZVB0cihtX2NvbG9yLCBvdGhlci5tX2NvbG9yKQorICAg
ICAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fcG9zaXRpb24sIG90aGVyLm1fcG9zaXRp
b24pOworICAgIH0KIH07CiAKIGNsYXNzIENTU0dyYWRpZW50VmFsdWUgOiBwdWJsaWMgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZSB7CkBAIC0xNTIsNiArMTU3LDggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENTU0xpbmVhckdyYWRpZW50VmFsdWUoKnRoaXMpKTsKICAgICB9
CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlJikgY29uc3Q7
CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0xOTUsNiArMjAyLDggQEAgcHVibGljOgogICAgIC8v
IENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2ZW4gc2l6ZS4KICAgICBQYXNzUmVmUHRyPEdy
YWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJik7CiAK
KyAgICBib29sIGVxdWFscyhjb25zdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlJikgY29uc3Q7CisK
ICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKaW5kZXgg
ODkwMmVmYi4uYTIxMzgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAt
OTMsNiArOTMsMTEgQEAgYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCkgY29uc3QKICAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPmxvYWRGYWlsZWRP
ckNhbmNlbGVkKCk7CiB9CiAKK2Jvb2wgQ1NTSW1hZ2VWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0lt
YWdlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX3VybCA9PSBvdGhlci5tX3Vy
bDsKK30KKwogU3RyaW5nIENTU0ltYWdlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogewog
ICAgIHJldHVybiAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdXJsKSArICIpIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IDhlNGExNjkuLjBlY2ZhOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKIAorICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0ltYWdlVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIGJvb2wg
a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAppbmRleCA2OGMwMDFmLi4zY2ExZDdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaApAQCAtMzUsNiArMzUsOCBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29u
c3QgQ1NTSW5oZXJpdGVkVmFsdWUmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKICAgICB2b2lk
IHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKaW5kZXggZDUyMzM0My4u
MDgxMzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaApAQCAtNDEsNiArNDEs
OCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSW1wbGljaXQoKSBjb25zdCB7IHJldHVybiBtX2lz
SW1wbGljaXQ7IH0KIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0luaXRpYWxWYWx1ZSYpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCmluZGV4IGVlYjY0NzAuLmExOTI1ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaApAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25z
dDsKLQorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0xpbmVCb3hDb250YWluVmFsdWUmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7IH0KICAgICBMaW5lQm94
Q29udGFpbiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHZvaWQgcmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGU0ODg1YzcuLmIzY2VlMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtMTI3NCw2ICsx
Mjc0LDgzIEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVl
OjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitib29sIENT
U1ByaW1pdGl2ZVZhbHVlOjplcXVhbHMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIG90aGVyKSBj
b25zdAoreworICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IG90aGVyLm1fcHJpbWl0aXZl
VW5pdFR5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAobV9wcmltaXRp
dmVVbml0VHlwZSkgeworICAgIGNhc2UgQ1NTX1VOS05PV046CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBjYXNlIENTU19OVU1CRVI6CisgICAgY2FzZSBDU1NfUEFSU0VSX0lOVEVHRVI6Cisg
ICAgY2FzZSBDU1NfUEVSQ0VOVEFHRToKKyAgICBjYXNlIENTU19FTVM6CisgICAgY2FzZSBDU1Nf
RVhTOgorICAgIGNhc2UgQ1NTX1JFTVM6CisgICAgY2FzZSBDU1NfUFg6CisgICAgY2FzZSBDU1Nf
Q006CisjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKSB8fCBFTkFCTEUoUkVTT0xVVElP
Tl9NRURJQV9RVUVSWSkKKyAgICBjYXNlIENTU19EUFBYOgorICAgIGNhc2UgQ1NTX0RQSToKKyAg
ICBjYXNlIENTU19EUENNOgorI2VuZGlmCisgICAgY2FzZSBDU1NfTU06CisgICAgY2FzZSBDU1Nf
SU46CisgICAgY2FzZSBDU1NfUFQ6CisgICAgY2FzZSBDU1NfUEM6CisgICAgY2FzZSBDU1NfREVH
OgorICAgIGNhc2UgQ1NTX1JBRDoKKyAgICBjYXNlIENTU19HUkFEOgorICAgIGNhc2UgQ1NTX01T
OgorICAgIGNhc2UgQ1NTX1M6CisgICAgY2FzZSBDU1NfSFo6CisgICAgY2FzZSBDU1NfS0haOgor
ICAgIGNhc2UgQ1NTX1RVUk46CisgICAgY2FzZSBDU1NfVlc6CisgICAgY2FzZSBDU1NfVkg6Cisg
ICAgY2FzZSBDU1NfVk1JTjoKKyAgICBjYXNlIENTU19ESU1FTlNJT046CisgICAgICAgIHJldHVy
biBtX3ZhbHVlLm51bSA9PSBvdGhlci5tX3ZhbHVlLm51bTsKKyAgICBjYXNlIENTU19JREVOVDoK
KyAgICAgICAgcmV0dXJuIHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVudCkgPT0gdmFs
dWVPclByb3BlcnR5TmFtZShvdGhlci5tX3ZhbHVlLmlkZW50KTsKKyAgICBjYXNlIENTU19TVFJJ
Tkc6CisgICAgY2FzZSBDU1NfVVJJOgorICAgIGNhc2UgQ1NTX0FUVFI6CisgICAgY2FzZSBDU1Nf
Q09VTlRFUl9OQU1FOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9JREVOVElGSUVSOgorICAgIGNhc2Ug
Q1NTX1BBUlNFUl9IRVhDT0xPUjoKKyNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBjYXNl
IENTU19WQVJJQUJMRV9OQU1FOgorI2VuZGlmCisgICAgICAgIHJldHVybiBlcXVhbChtX3ZhbHVl
LnN0cmluZywgb3RoZXIubV92YWx1ZS5zdHJpbmcpOworICAgIGNhc2UgQ1NTX0NPVU5URVI6Cisg
ICAgICAgIHJldHVybiBtX3ZhbHVlLmNvdW50ZXIgJiYgb3RoZXIubV92YWx1ZS5jb3VudGVyICYm
IG1fdmFsdWUuY291bnRlci0+ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLmNvdW50ZXIpOworICAgIGNh
c2UgQ1NTX1JFQ1Q6CisgICAgICAgIHJldHVybiBtX3ZhbHVlLnJlY3QgJiYgb3RoZXIubV92YWx1
ZS5yZWN0ICYmIG1fdmFsdWUucmVjdC0+ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLnJlY3QpOworICAg
IGNhc2UgQ1NTX1FVQUQ6CisgICAgICAgIHJldHVybiBtX3ZhbHVlLnF1YWQgJiYgb3RoZXIubV92
YWx1ZS5xdWFkICYmIG1fdmFsdWUucXVhZC0+ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLnF1YWQpOwor
ICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5yZ2Jjb2xvciA9
PSBvdGhlci5tX3ZhbHVlLnJnYmNvbG9yOworICAgIGNhc2UgQ1NTX1BBSVI6CisgICAgICAgIHJl
dHVybiBtX3ZhbHVlLnBhaXIgJiYgb3RoZXIubV92YWx1ZS5wYWlyICYmIG1fdmFsdWUucGFpci0+
ZXF1YWxzKCpvdGhlci5tX3ZhbHVlLnBhaXIpOworI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9S
VCkKKyAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOiB7CisgICAgICAgIERhc2hib2FyZFJl
Z2lvbiogcmVnaW9uID0gZ2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsKKyAgICAgICAgRGFzaGJv
YXJkUmVnaW9uKiBvdGhlclJlZ2lvbiA9IG90aGVyLmdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7
CisgICAgICAgIHJldHVybiByZWdpb24gPyBvdGhlclJlZ2lvbiAmJiByZWdpb24tPmVxdWFscygq
b3RoZXJSZWdpb24pIDogIW90aGVyUmVnaW9uOworICAgIH0KKyNlbmRpZgorICAgIGNhc2UgQ1NT
X1BBUlNFUl9PUEVSQVRPUjoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUuaWRlbnQgPT0gb3RoZXIu
bV92YWx1ZS5pZGVudDsKKyAgICBjYXNlIENTU19DQUxDOgorICAgICAgICByZXR1cm4gbV92YWx1
ZS5jYWxjICYmIG90aGVyLm1fdmFsdWUuY2FsYyAmJiBtX3ZhbHVlLmNhbGMtPmVxdWFscygqb3Ro
ZXIubV92YWx1ZS5jYWxjKTsKKyAgICBjYXNlIENTU19TSEFQRToKKyAgICAgICAgcmV0dXJuIG1f
dmFsdWUuc2hhcGUgJiYgb3RoZXIubV92YWx1ZS5zaGFwZSAmJiBtX3ZhbHVlLnNoYXBlLT5lcXVh
bHMoKm90aGVyLm1fdmFsdWUuc2hhcGUpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NT
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggNGFiYjA1NS4uNWZi
NDA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTMxNiw2ICsz
MTYsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY2xvbmVG
b3JDU1NPTSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q1NTT01TYWZlKCkgeyBtX2lzQ1NTT01TYWZl
ID0gdHJ1ZTsgfQogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKSBj
b25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSZWZsZWN0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1
ZS5jcHAKaW5kZXggYzNhMjUwZi4uNWY4MTE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxl
Y3RWYWx1ZS5jcHAKQEAgLTU2LDYgKzU2LDEzIEBAIHZvaWQgQ1NTUmVmbGVjdFZhbHVlOjphZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5CiAg
ICAgICAgIG1fbWFzay0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgc3R5bGVTaGVldCk7
CiB9CiAKK2Jvb2wgQ1NTUmVmbGVjdFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTUmVmbGVjdFZhbHVl
JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kaXJlY3Rpb24gPT0gb3RoZXIubV9kaXJl
Y3Rpb24KKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fb2Zmc2V0LCBvdGhlci5tX29m
ZnNldCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKG1fbWFzaywgb3RoZXIubV9tYXNr
KTsKK30KKwogdm9pZCBDU1NSZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9y
eUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBl
czo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCBiYTkyZGZlLi4w
MDJjMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC01NCw2ICs1NCw4
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAorICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU1JlZmxlY3RWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4
IGUxYmIxZDEuLjIzOTliNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1p
bmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVu
Y3Rpb25WYWx1ZS5jcHAKQEAgLTUwLDYgKzUwLDEyIEBAIFN0cmluZyBDU1NDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAgICArIFN0cmlu
Zzo6bnVtYmVyKG1feTIpICsgIikiOwogfQogCitib29sIENTU0N1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1
ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1feDEgPT0gb3RoZXIubV94MSAmJiBtX3gy
ID09IG90aGVyLm1feDIgJiYgbV95MSA9PSBvdGhlci5tX3kxICYmIG1feTIgPT0gb3RoZXIubV95
MjsKK30KKworCiB2b2lkIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpAQCAtNjAsNiArNjYsMTIgQEAgU3RyaW5nIENT
U1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuICJzdGVwcygiICsgU3RyaW5nOjpudW1iZXIobV9zdGVwcykgKyAiLCAiICsgKG1fc3RlcEF0
U3RhcnQgPyAic3RhcnQiIDogImVuZCIpICsgJyknOwogfQogCitib29sIENTU1N0ZXBzVGltaW5n
RnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSYg
b3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RlcHMgPT0gb3RoZXIubV9zdGVwcyAmJiBt
X3N0ZXBBdFN0YXJ0ID09IG90aGVyLm1fc3RlcEF0U3RhcnQ7Cit9CisKKwogdm9pZCBDU1NTdGVw
c1RpbWluZ0Z1bmN0aW9uVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5m
byBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCmluZGV4IDNlYjRi
MjIuLjRjM2ZlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5j
dGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaApAQCAtNDAsNiArNDAsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4
dCgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTTGluZWFyVGltaW5nRnVuY3Rp
b25WYWx1ZSYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZvaWQgcmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKQEAg
LTYzLDYgKzY1LDggQEAgcHVibGljOgogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1f
eDI7IH0KICAgICBkb3VibGUgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKKyAgICBib29s
IGVxdWFscyhjb25zdCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUmKSBjb25zdDsK
KwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTkzLDYgKzk3LDggQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1N0
ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKaW5kZXggMzRkNjNiNi4u
ZjFkNTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3Bw
CkBAIC0zOCw2ICszOCwxMSBAQCBTdHJpbmcgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmN1c3RvbUNz
c1RleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wgQ1NTVW5pY29kZVJh
bmdlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NVbmljb2RlUmFuZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZnJvbSA9PSBvdGhlci5tX2Zyb20gJiYgbV90byA9PSBvdGhlci5t
X3RvOworfQorCiB2b2lkIENTU1VuaWNvZGVSYW5nZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAg
ICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVt
b3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29k
ZVJhbmdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5o
CmluZGV4IGQ1MGY1YjYuLmExN2YxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NVbmljb2RlUmFuZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2Rl
UmFuZ2VWYWx1ZS5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0
b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NVbmljb2RlUmFu
Z2VWYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5j
cHAKaW5kZXggMDA4ZDNmYi4uOWJlMDM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzQ1NTVmFsdWUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTYW1lU2l6ZUFzQ1NTVmFsdWU+IHsKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihDU1NW
YWx1ZSkgPT0gc2l6ZW9mKFNhbWVTaXplQXNDU1NWYWx1ZSksIENTU192YWx1ZV9zaG91bGRfc3Rh
eV9zbWFsbCk7Ci0gICAgCisKIGNsYXNzIFRleHRDbG9uZUNTU1ZhbHVlIDogcHVibGljIENTU1Zh
bHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0Q2xvbmVDU1NWYWx1ZT4g
Y3JlYXRlKENsYXNzVHlwZSBjbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IFRleHRDbG9uZUNTU1ZhbHVlKGNsYXNzVHlwZSwgdGV4dCkpOyB9CkBAIC0y
NzYsNiArMjc2LDEwOCBAQCB2b2lkIENTU1ZhbHVlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCit0ZW1wbGF0ZTxjbGFzcyBDaGlsZENsYXNzVHlwZT4KK2lubGluZSBzdGF0aWMg
Ym9vbCBjb21wYXJlQ1NTVmFsdWVzKGNvbnN0IENTU1ZhbHVlJiBmaXJzdCwgY29uc3QgQ1NTVmFs
dWUmIHNlY29uZCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ2hpbGRDbGFzc1R5
cGUmPihmaXJzdCkuZXF1YWxzKHN0YXRpY19jYXN0PGNvbnN0IENoaWxkQ2xhc3NUeXBlJj4oc2Vj
b25kKSk7Cit9CisKK2Jvb2wgQ1NTVmFsdWU6OmVxdWFscyhjb25zdCBDU1NWYWx1ZSYgb3RoZXIp
IGNvbnN0Cit7CisgICAgaWYgKG1faXNUZXh0Q2xvbmUpIHsKKyAgICAgICAgQVNTRVJUKGlzQ1NT
T01TYWZlKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dENsb25lQ1NT
VmFsdWUqPih0aGlzKS0+Y3NzVGV4dCgpID09IG90aGVyLmNzc1RleHQoKTsKKyAgICB9CisKKyAg
ICBpZiAobV9jbGFzc1R5cGUgPT0gb3RoZXIubV9jbGFzc1R5cGUpIHsKKyAgICAgICAgc3dpdGNo
IChtX2NsYXNzVHlwZSkgeworICAgICAgICBjYXNlIEFzcGVjdFJhdGlvQ2xhc3M6CisgICAgICAg
ICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NBc3BlY3RSYXRpb1ZhbHVlPigqdGhpcywg
b3RoZXIpOworICAgICAgICBjYXNlIEJvcmRlckltYWdlU2xpY2VDbGFzczoKKyAgICAgICAgICAg
IHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4oKnRoaXMs
IG90aGVyKTsKKyAgICAgICAgY2FzZSBDYW52YXNDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBj
b21wYXJlQ1NTVmFsdWVzPENTU0NhbnZhc1ZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBj
YXNlIEN1cnNvckltYWdlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVl
czxDU1NDdXJzb3JJbWFnZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIEZvbnRD
bGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPEZvbnRWYWx1ZT4oKnRo
aXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBGb250RmFjZVNyY0NsYXNzOgorICAgICAgICAgICAg
cmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTRm9udEZhY2VTcmNWYWx1ZT4oKnRoaXMsIG90aGVy
KTsKKyAgICAgICAgY2FzZSBGb250RmVhdHVyZUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNv
bXBhcmVDU1NWYWx1ZXM8Rm9udEZlYXR1cmVWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAg
Y2FzZSBGdW5jdGlvbkNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8
Q1NTRnVuY3Rpb25WYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBMaW5lYXJHcmFk
aWVudENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTTGluZWFy
R3JhZGllbnRWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBSYWRpYWxHcmFkaWVu
dENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoK
KyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0Nyb3NzZmFkZVZhbHVlPigq
dGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIEltYWdlQ2xhc3M6CisgICAgICAgICAgICByZXR1
cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NJbWFnZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAg
ICBjYXNlIEluaGVyaXRlZENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8Q1NTSW5oZXJpdGVkVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgSW5pdGlh
bENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTSW5pdGlhbFZh
bHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFByaW1pdGl2ZUNsYXNzOgorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0aGlzLCBv
dGhlcik7CisgICAgICAgIGNhc2UgUmVmbGVjdENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNv
bXBhcmVDU1NWYWx1ZXM8Q1NTUmVmbGVjdFZhbHVlPigqdGhpcywgb3RoZXIpOworICAgICAgICBj
YXNlIFNoYWRvd0NsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8U2hh
ZG93VmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgTGluZWFyVGltaW5nRnVuY3Rp
b25DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0xpbmVhclRp
bWluZ0Z1bmN0aW9uVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZXM8Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlPigqdGhpcywgb3RoZXIpOworICAg
ICAgICBjYXNlIFN0ZXBzVGltaW5nRnVuY3Rpb25DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBj
b21wYXJlQ1NTVmFsdWVzPENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZT4oKnRoaXMsIG90aGVy
KTsKKyAgICAgICAgY2FzZSBVbmljb2RlUmFuZ2VDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBj
b21wYXJlQ1NTVmFsdWVzPENTU1VuaWNvZGVSYW5nZVZhbHVlPigqdGhpcywgb3RoZXIpOworICAg
ICAgICBjYXNlIFZhbHVlTGlzdENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NW
YWx1ZXM8Q1NTVmFsdWVMaXN0PigqdGhpcywgb3RoZXIpOworICAgICAgICBjYXNlIFdlYktpdENT
U1RyYW5zZm9ybUNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8V2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgTGluZUJv
eENvbnRhaW5DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0xp
bmVCb3hDb250YWluVmFsdWU+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgQ2FsY3VsYXRp
b25DbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPENTU0NhbGNWYWx1
ZT4oKnRoaXMsIG90aGVyKTsKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKKyAgICAgICAgY2Fz
ZSBJbWFnZVNldENsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8Q1NT
SW1hZ2VTZXRWYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyNlbmRpZgorI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NGaWx0ZXJDbGFzczoKKyAgICAgICAgICAgIHJl
dHVybiBjb21wYXJlQ1NTVmFsdWVzPFdlYktpdENTU0ZpbHRlclZhbHVlPigqdGhpcywgb3RoZXIp
OworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NBcnJheUZ1
bmN0aW9uVmFsdWVDbGFzczoKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPFdl
YktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZT4oKnRoaXMsIG90aGVyKTsKKyAgICAgICAgY2FzZSBX
ZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlQ2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFy
ZUNTU1ZhbHVlczxXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlPigqdGhpcywgb3RoZXIpOworICAg
ICAgICBjYXNlIFdlYktpdENTU1NoYWRlckNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBh
cmVDU1NWYWx1ZXM8V2ViS2l0Q1NTU2hhZGVyVmFsdWU+KCp0aGlzLCBvdGhlcik7CisjZW5kaWYK
KyNlbmRpZgorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgICAgICBjYXNlIFZhcmlhYmxl
Q2xhc3M6CisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlczxDU1NWYXJpYWJsZVZh
bHVlPigqdGhpcywgb3RoZXIpOworI2VuZGlmCisjaWYgRU5BQkxFKFNWRykKKyAgICAgICAgY2Fz
ZSBTVkdDb2xvckNsYXNzOgorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZXM8U1ZH
Q29sb3I+KCp0aGlzLCBvdGhlcik7CisgICAgICAgIGNhc2UgU1ZHUGFpbnRDbGFzczoKKyAgICAg
ICAgICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVzPFNWR1BhaW50PigqdGhpcywgb3RoZXIpOwor
ICAgICAgICBjYXNlIFdlYktpdENTU1NWR0RvY3VtZW50Q2xhc3M6CisgICAgICAgICAgICByZXR1
cm4gY29tcGFyZUNTU1ZhbHVlczxXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlPigqdGhpcywgb3Ro
ZXIpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfSBlbHNlIGlmIChtX2NsYXNzVHlwZSA9PSBWYWx1ZUxpc3RDbGFzcyAmJiBvdGhlci5tX2Ns
YXNzVHlwZSAhPSBWYWx1ZUxpc3RDbGFzcykKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IENTU1ZhbHVlTGlzdCo+KHRoaXMpLT5lcXVhbHMob3RoZXIpOworICAgIGVsc2UgaWYgKG1f
Y2xhc3NUeXBlICE9IFZhbHVlTGlzdENsYXNzICYmIG90aGVyLm1fY2xhc3NUeXBlID09IFZhbHVl
TGlzdENsYXNzKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0
Jj4ob3RoZXIpLmVxdWFscygqdGhpcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBTdHJpbmcg
Q1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogewogICAgIGlmIChtX2lzVGV4dENsb25lKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDIyMGYwYTEuLjhkNTQyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5oCkBAIC0xMjYsNiArMTI2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBD
U1NWYWx1ZSYpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IENsYXNzVHlwZUJpdHMgPSA2OwpAQCAtMjM2LDYgKzIzOCwyOSBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fY2xhc3NUeXBlIDogQ2xhc3NUeXBlQml0czsgLy8gQ2xhc3NUeXBlCiB9OwogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDU1NWYWx1ZVR5cGU+CitpbmxpbmUgYm9vbCBjb21wYXJlQ1NTVmFs
dWVWZWN0b3IoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NWYWx1ZVR5cGU+ID4mIGZpcnN0VmVjdG9y
LCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1ZhbHVlVHlwZT4gPiYgc2Vjb25kVmVjdG9yKQorewor
ICAgIHNpemVfdCBzaXplID0gZmlyc3RWZWN0b3Iuc2l6ZSgpOworICAgIGlmIChzaXplICE9IHNl
Y29uZFZlY3Rvci5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGNvbnN0IFJlZlB0cjxDU1NWYWx1
ZVR5cGU+JiBmaXJzdFB0ciA9IGZpcnN0VmVjdG9yW2ldOworICAgICAgICBjb25zdCBSZWZQdHI8
Q1NTVmFsdWVUeXBlPiYgc2Vjb25kUHRyID0gc2Vjb25kVmVjdG9yW2ldOworICAgICAgICBpZiAo
Zmlyc3RQdHIgPT0gc2Vjb25kUHRyIHx8IChmaXJzdFB0ciAmJiBzZWNvbmRQdHIgJiYgZmlyc3RQ
dHItPmVxdWFscygqc2Vjb25kUHRyKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ1NTVmFsdWVUeXBlPgoraW5saW5lIGJvb2wgY29tcGFyZUNTU1ZhbHVlUHRyKGNvbnN0
IFJlZlB0cjxDU1NWYWx1ZVR5cGU+JiBmaXJzdCwgY29uc3QgUmVmUHRyPENTU1ZhbHVlVHlwZT4m
IHNlY29uZCkKK3sKKyAgICByZXR1cm4gZmlyc3QgPyBzZWNvbmQgJiYgZmlyc3QtPmVxdWFscygq
c2Vjb25kKSA6ICFzZWNvbmQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIENTU1ZhbHVlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggMTdjNGI4
MC4uZjViMTc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTU1LDEwICs1
NSw5IEBAIENTU1ZhbHVlTGlzdDo6Q1NTVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlzdCogcGFy
c2VyVmFsdWVzKQogYm9vbCBDU1NWYWx1ZUxpc3Q6OnJlbW92ZUFsbChDU1NWYWx1ZSogdmFsKQog
ewogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGJlIGlt
cGxlbWVudGluZyBvcGVyYXRvcj09IHRvIENTU1ZhbHVlIGFuZCBpdHMgZGVyaXZlZCBjbGFzc2Vz
Ci0gICAgLy8gdG8gbWFrZSBjb21wYXJpc29uIG1vcmUgZmxleGlibGUgYW5kIGZhc3QuCiAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fdmFsdWVzLnNpemUoKTsgaW5kZXgrKykg
ewotICAgICAgICBpZiAobV92YWx1ZXMuYXQoaW5kZXgpLT5jc3NUZXh0KCkgPT0gdmFsLT5jc3NU
ZXh0KCkpIHsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUgPSBtX3ZhbHVlcy5hdChp
bmRleCk7CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWwgJiYgdmFsdWUtPmVxdWFscygqdmFsKSkg
ewogICAgICAgICAgICAgbV92YWx1ZXMucmVtb3ZlKGluZGV4KTsKICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtNjksMTAgKzY4LDkgQEAgYm9vbCBDU1NWYWx1ZUxpc3Q6
OnJlbW92ZUFsbChDU1NWYWx1ZSogdmFsKQogCiBib29sIENTU1ZhbHVlTGlzdDo6aGFzVmFsdWUo
Q1NTVmFsdWUqIHZhbCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGJlIGltcGxl
bWVudGluZyBvcGVyYXRvcj09IHRvIENTU1ZhbHVlIGFuZCBpdHMgZGVyaXZlZCBjbGFzc2VzCi0g
ICAgLy8gdG8gbWFrZSBjb21wYXJpc29uIG1vcmUgZmxleGlibGUgYW5kIGZhc3QuCiAgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fdmFsdWVzLnNpemUoKTsgaW5kZXgrKykgewot
ICAgICAgICBpZiAobV92YWx1ZXMuYXQoaW5kZXgpLT5jc3NUZXh0KCkgPT0gdmFsLT5jc3NUZXh0
KCkpCisgICAgICAgIGNvbnN0IFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlID0gbV92YWx1ZXMuYXQo
aW5kZXgpOworICAgICAgICBpZiAodmFsdWUgJiYgdmFsICYmIHZhbHVlLT5lcXVhbHMoKnZhbCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTI3LDYgKzEyNSwyMCBAQCBTdHJpbmcgQ1NTVmFsdWVMaXN0OjpjdXN0b21Dc3NUZXh0KCkgY29u
c3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK2Jvb2wgQ1NTVmFsdWVMaXN0
OjplcXVhbHMoY29uc3QgQ1NTVmFsdWVMaXN0JiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
bV92YWx1ZUxpc3RTZXBhcmF0b3IgPT0gb3RoZXIubV92YWx1ZUxpc3RTZXBhcmF0b3IgJiYgY29t
cGFyZUNTU1ZhbHVlVmVjdG9yPENTU1ZhbHVlPihtX3ZhbHVlcywgb3RoZXIubV92YWx1ZXMpOwor
fQorCitib29sIENTU1ZhbHVlTGlzdDo6ZXF1YWxzKGNvbnN0IENTU1ZhbHVlJiBvdGhlcikgY29u
c3QKK3sKKyAgICBpZiAobV92YWx1ZXMuc2l6ZSgpICE9IDEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGNvbnN0IFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlID0gbV92YWx1ZXNbMF07Cisg
ICAgcmV0dXJuIHZhbHVlICYmIHZhbHVlLT5lcXVhbHMob3RoZXIpOworfQorCiAjaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCiBTdHJpbmcgQ1NTVmFsdWVMaXN0OjpjdXN0b21TZXJpYWxpemVSZXNv
bHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mIHZhcmlh
YmxlcykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCAyMmVmZWExLi4x
MzY5ZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC02MCw2ICs2MCw4IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29weSgpOwogCiAgICAgU3RyaW5n
IGN1c3RvbUNzc1RleHQoKSBjb25zdDsKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYWx1ZUxp
c3QmKSBjb25zdDsKKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYWx1ZSYpIGNvbnN0OwogI2lm
IEVOQUJMRShDU1NfVkFSSUFCTEVTKQogICAgIFN0cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmgKaW5kZXggMGQ5MWM3ZS4u
NDhjNTZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCkBAIC00OCw2ICs0
OCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX25hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV92YWx1ZTsgfQogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTVmFyaWFibGVWYWx1ZSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1ZSA9PSBv
dGhlci5tX3ZhbHVlOyB9CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKICAgICAgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgKaW5kZXggNTFmYTcxMC4uZmMyMjc5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ291bnRlci5oCkBAIC00Miw2ICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJ
ZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlkZW50aWZpZXIpIHsgbV9p
ZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlKFBhc3NSZWZQ
dHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpc3RTdHlsZSkgeyBtX2xpc3RTdHlsZSA9IGxpc3RTdHls
ZTsgfQogICAgIHZvaWQgc2V0U2VwYXJhdG9yKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IHNlcGFyYXRvcikgeyBtX3NlcGFyYXRvciA9IHNlcGFyYXRvcjsgfQorCisgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ291bnRlciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaWRl
bnRpZmllcigpID09IG90aGVyLmlkZW50aWZpZXIoKQorICAgICAgICAgICAgJiYgbGlzdFN0eWxl
KCkgPT0gb3RoZXIubGlzdFN0eWxlKCkKKyAgICAgICAgICAgICYmIHNlcGFyYXRvcigpID09IG90
aGVyLnNlcGFyYXRvcigpOworICAgIH0KICAgICAKICAgICBQYXNzUmVmUHRyPENvdW50ZXI+IGNs
b25lRm9yQ1NTT00oKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9EYXNoYm9hcmRSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EYXNoYm9hcmRSZWdpb24u
aAppbmRleCA5MWU1ZDdhLi41YjVmMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RGFzaGJvYXJkUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Rhc2hib2FyZFJlZ2lv
bi5oCkBAIC0zMCw2ICszMCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXNoYm9h
cmRSZWdpb24gOiBwdWJsaWMgUmVjdEJhc2UsIHB1YmxpYyBSZWZDb3VudGVkPERhc2hib2FyZFJl
Z2lvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IERhc2hib2FyZFJlZ2lvbik7IH0KKyAgICBi
b29sIGVxdWFscyhjb25zdCBEYXNoYm9hcmRSZWdpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fbGFiZWwgPT0gb3RoZXIubV9sYWJlbCAmJiBtX2dlb21ldHJ5VHlwZSA9
PSBvdGhlci5tX2dlb21ldHJ5VHlwZQorICAgICAgICAgICAgJiYgbV9pc0NpcmNsZSA9PSBvdGhl
ci5tX2lzQ2lyY2xlICYmIG1faXNSZWN0YW5nbGUgPT0gb3RoZXIubV9pc1JlY3RhbmdsZQorICAg
ICAgICAgICAgJiYgbV9uZXh0ID8gb3RoZXIubV9uZXh0ICYmIG1fbmV4dC0+ZXF1YWxzKCpvdGhl
ci5tX25leHQpIDogIW90aGVyLm1fbmV4dDsKKyAgICB9CiAKICAgICBSZWZQdHI8RGFzaGJvYXJk
UmVnaW9uPiBtX25leHQ7CiAgICAgU3RyaW5nIG1fbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZlYXR1cmVWYWx1ZS5jcHAKaW5kZXggM2M1NjRjNC4uOTU0ZjI0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcApAQCAtNTAsNiArNTAsMTEgQEAgU3RyaW5nIEZvbnRG
ZWF0dXJlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CiB9CiAKK2Jvb2wgRm9udEZlYXR1cmVWYWx1ZTo6ZXF1YWxzKGNvbnN0IEZvbnRG
ZWF0dXJlVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBtX3RhZyA9PSBvdGhlci5t
X3RhZyAmJiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7Cit9CisKIHZvaWQgRm9udEZlYXR1cmVW
YWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmVhdHVyZVZhbHVlLmgKaW5kZXggZmNhYjgxNS4uMjE0ZjQyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZlYXR1cmVWYWx1ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBpbnQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IEZvbnRGZWF0dXJlVmFsdWUmKSBj
b25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKaW5kZXgg
NjU1OGI1ZC4uMzUxYmU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKQEAgLTY1LDYgKzY1
LDE2IEBAIFN0cmluZyBGb250VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAorYm9vbCBGb250VmFsdWU6OmVxdWFscyhjb25zdCBG
b250VmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWVQdHIo
c3R5bGUsIG90aGVyLnN0eWxlKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIodmFyaWFu
dCwgb3RoZXIudmFyaWFudCkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKHdlaWdodCwg
b3RoZXIud2VpZ2h0KQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIoc2l6ZSwgb3RoZXIu
c2l6ZSkKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKGxpbmVIZWlnaHQsIG90aGVyLmxp
bmVIZWlnaHQpCisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cihmYW1pbHksIG90aGVyLmZh
bWlseSk7Cit9CisKIHZvaWQgRm9udFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlD
bGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6
OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmgKaW5kZXggMDNhNjEyNi4uNDU3ODYzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250VmFsdWUuaApAQCAtMzksNiArMzksOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcg
Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgRm9udFZhbHVl
JikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgKaW5kZXggODEzZTBmOC4uYzQxYjM4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiAob3RoZXIubV9tZWRpYUZlYXR1cmUgPT0gbV9tZWRpYUZlYXR1
cmUpCiAgICAgICAgICAgICAmJiAoKCFvdGhlci5tX3ZhbHVlICYmICFtX3ZhbHVlKQotICAgICAg
ICAgICAgICAgIHx8IChvdGhlci5tX3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+
Y3NzVGV4dCgpID09IG1fdmFsdWUtPmNzc1RleHQoKSkpOworICAgICAgICAgICAgICAgIHx8IChv
dGhlci5tX3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+ZXF1YWxzKCptX3ZhbHVl
KSkpOwogICAgIH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxp
ZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9QYWlyLmgKaW5kZXggMDQxZWUyMy4uZmFhZGIyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1BhaXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFpci5oCkBAIC01
Niw2ICs1Niw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGdlbmVyYXRlQ1NTU3RyaW5nKGZp
cnN0KCktPmNzc1RleHQoKSwgc2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgfQogCisgICAgYm9v
bCBlcXVhbHMoY29uc3QgUGFpciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmVDU1NWYWx1
ZVB0cihtX2ZpcnN0LCBvdGhlci5tX2ZpcnN0KSAmJiBjb21wYXJlQ1NTVmFsdWVQdHIobV9zZWNv
bmQsIG90aGVyLm1fc2Vjb25kKTsgfQorCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAg
U3RyaW5nIHNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0
cmluZywgU3RyaW5nPiYgdmFyaWFibGVzKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9SZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUmVjdC5oCmluZGV4IGZl
ZWY4NzUuLjQwYTJjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1JlY3QuaApAQCAtMzksNiArMzksMTQgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Qm90dG9tKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJvdHRvbSkg
eyBtX2JvdHRvbSA9IGJvdHRvbTsgfQogICAgIHZvaWQgc2V0TGVmdChQYXNzUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBsZWZ0KSB7IG1fbGVmdCA9IGxlZnQ7IH0KIAorICAgIGJvb2wgZXF1YWxz
KGNvbnN0IFJlY3RCYXNlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb21w
YXJlQ1NTVmFsdWVQdHIobV90b3AsIG90aGVyLm1fdG9wKQorICAgICAgICAgICAgJiYgY29tcGFy
ZUNTU1ZhbHVlUHRyKG1fcmlnaHQsIG90aGVyLm1fcmlnaHQpCisgICAgICAgICAgICAmJiBjb21w
YXJlQ1NTVmFsdWVQdHIobV9sZWZ0LCBvdGhlci5tX2xlZnQpCisgICAgICAgICAgICAmJiBjb21w
YXJlQ1NTVmFsdWVQdHIobV9ib3R0b20sIG90aGVyLm1fYm90dG9tKTsKKyAgICB9CisKICNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcAppbmRleCBiMjVmOGYyLi4wZTE1
ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5jcHAKQEAgLTc5LDYgKzc5LDE2IEBAIFN0
cmluZyBTaGFkb3dWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRleHQu
dG9TdHJpbmcoKTsKIH0KIAorYm9vbCBTaGFkb3dWYWx1ZTo6ZXF1YWxzKGNvbnN0IFNoYWRvd1Zh
bHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRyKGNvbG9y
LCBvdGhlci5jb2xvcikKKyAgICAgICAgJiYgY29tcGFyZUNTU1ZhbHVlUHRyKHgsIG90aGVyLngp
CisgICAgICAgICYmIGNvbXBhcmVDU1NWYWx1ZVB0cih5LCBvdGhlci55KQorICAgICAgICAmJiBj
b21wYXJlQ1NTVmFsdWVQdHIoYmx1ciwgb3RoZXIuYmx1cikKKyAgICAgICAgJiYgY29tcGFyZUNT
U1ZhbHVlUHRyKHNwcmVhZCwgb3RoZXIuc3ByZWFkKQorICAgICAgICAmJiBjb21wYXJlQ1NTVmFs
dWVQdHIoc3R5bGUsIG90aGVyLnN0eWxlKTsKK30KKwogdm9pZCBTaGFkb3dWYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1NoYWRvd1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAppbmRl
eCBmMmQ4ZTZmLi5hMzUzZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaApAQCAtNDQsNiAr
NDQsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisg
ICAgYm9vbCBlcXVhbHMoY29uc3QgU2hhZG93VmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2V0LmNwcAppbmRleCA2MDNmNTA4Li5iZGRhYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTZXQuY3BwCkBAIC0zMjIsOSArMzIyLDkgQEAgU3RyaW5nIFN0eWxlUHJvcGVy
dHlTZXQ6OmdldDRWYWx1ZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5k
KSBjb24KICAgICBpZiAodG9wLmlzSW1wb3J0YW50KCkgIT0gcmlnaHQuaXNJbXBvcnRhbnQoKSB8
fCByaWdodC5pc0ltcG9ydGFudCgpICE9IGJvdHRvbS5pc0ltcG9ydGFudCgpIHx8IGJvdHRvbS5p
c0ltcG9ydGFudCgpICE9IGxlZnQuaXNJbXBvcnRhbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCi0gICAgYm9vbCBzaG93TGVmdCA9IHJpZ2h0LnZhbHVlKCktPmNzc1RleHQoKSAhPSBs
ZWZ0LnZhbHVlKCktPmNzc1RleHQoKTsKLSAgICBib29sIHNob3dCb3R0b20gPSAodG9wLnZhbHVl
KCktPmNzc1RleHQoKSAhPSBib3R0b20udmFsdWUoKS0+Y3NzVGV4dCgpKSB8fCBzaG93TGVmdDsK
LSAgICBib29sIHNob3dSaWdodCA9ICh0b3AudmFsdWUoKS0+Y3NzVGV4dCgpICE9IHJpZ2h0LnZh
bHVlKCktPmNzc1RleHQoKSkgfHwgc2hvd0JvdHRvbTsKKyAgICBib29sIHNob3dMZWZ0ID0gIXJp
Z2h0LnZhbHVlKCktPmVxdWFscygqbGVmdC52YWx1ZSgpKTsKKyAgICBib29sIHNob3dCb3R0b20g
PSAhdG9wLnZhbHVlKCktPmVxdWFscygqYm90dG9tLnZhbHVlKCkpIHx8IHNob3dMZWZ0OworICAg
IGJvb2wgc2hvd1JpZ2h0ID0gIXRvcC52YWx1ZSgpLT5lcXVhbHMoKnJpZ2h0LnZhbHVlKCkpIHx8
IHNob3dCb3R0b207CiAKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1bHQuYXBw
ZW5kKHRvcC52YWx1ZSgpLT5jc3NUZXh0KCkpOwpAQCAtMTExNCw3ICsxMTE0LDcgQEAgYm9vbCBT
dHlsZVByb3BlcnR5U2V0Ojpwcm9wZXJ0eU1hdGNoZXMoY29uc3QgUHJvcGVydHlSZWZlcmVuY2Um
IHByb3BlcnR5KSBjb25zdAogICAgIGludCBmb3VuZFByb3BlcnR5SW5kZXggPSBmaW5kUHJvcGVy
dHlJbmRleChwcm9wZXJ0eS5pZCgpKTsKICAgICBpZiAoZm91bmRQcm9wZXJ0eUluZGV4ID09IC0x
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHByb3BlcnR5QXQoZm91bmRQcm9w
ZXJ0eUluZGV4KS52YWx1ZSgpLT5jc3NUZXh0KCkgPT0gcHJvcGVydHkudmFsdWUoKS0+Y3NzVGV4
dCgpOworICAgIHJldHVybiBwcm9wZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkudmFsdWUoKS0+
ZXF1YWxzKCpwcm9wZXJ0eS52YWx1ZSgpKTsKIH0KICAgICAKIHZvaWQgU3R5bGVQcm9wZXJ0eVNl
dDo6cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlv
blZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFs
dWUuY3BwCmluZGV4IDJhMTdhNDQuLmY1NjQwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuY3BwCkBAIC01Niw2ICs1NiwxMSBAQCBQ
YXNzUmVmUHRyPFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZT4gV2ViS2l0Q1NTQXJyYXlGdW5j
dGlvblZhbHVlOjpjbG9uZUZvckNTUwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NT
QXJyYXlGdW5jdGlvblZhbHVlKCp0aGlzKSk7CiB9CiAKK2Jvb2wgV2ViS2l0Q1NTQXJyYXlGdW5j
dGlvblZhbHVlOjplcXVhbHMoY29uc3QgV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlJiBvdGhl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gQ1NTVmFsdWVMaXN0OjplcXVhbHMob3RoZXIpOworfQor
CiB2b2lkIFdlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0Fy
cmF5RnVuY3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVu
Y3Rpb25WYWx1ZS5oCmluZGV4IGJhZjI3ODIuLmZjM2FiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmgKQEAgLTQ4LDYgKzQ4LDggQEAg
cHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NBcnJheUZ1bmN0aW9uVmFsdWU+IGNs
b25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIGJvb2wgZXF1YWxzKGNvbnN0IFdlYktpdENTU0Fy
cmF5RnVuY3Rpb25WYWx1ZSYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKaW5kZXggZjFhMWUwZS4uMDcwZWZj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCkBAIC0x
MTEsNiArMTExLDExIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IFdlYktpdENT
U0ZpbHRlclZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYktpdENTU0ZpbHRlclZhbHVlKCp0aGlzKSk7CiB9CiAKK2Jvb2wgV2ViS2l0Q1NTRmls
dGVyVmFsdWU6OmVxdWFscyhjb25zdCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSYgb3RoZXIpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgQ1NTVmFsdWVMaXN0Ojpl
cXVhbHMob3RoZXIpOworfQorCiB2b2lkIFdlYktpdENTU0ZpbHRlclZhbHVlOjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBX
ZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0
ZXJWYWx1ZS5oCmluZGV4IDA4YjNlOWYuLmIyNDAwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIFBh
c3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAor
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IFdlYktpdENTU0ZpbHRlclZhbHVlJikgY29uc3Q7CisKICAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWl4RnVuY3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVu
Y3Rpb25WYWx1ZS5jcHAKaW5kZXggM2FmNjg3ZS4uYzA4Yjg0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmNwcApAQCAtNTYsNiArNTYsMTEg
QEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlPiBXZWJLaXRDU1NNaXhGdW5j
dGlvblZhbHVlOjpjbG9uZUZvckNTU09NKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktp
dENTU01peEZ1bmN0aW9uVmFsdWUoKnRoaXMpKTsKIH0KIAorYm9vbCBXZWJLaXRDU1NNaXhGdW5j
dGlvblZhbHVlOjplcXVhbHMoY29uc3QgV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSYgb3RoZXIp
IGNvbnN0Cit7CisgICAgcmV0dXJuIENTU1ZhbHVlTGlzdDo6ZXF1YWxzKG90aGVyKTsKK30KKwog
dm9pZCBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlw
ZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWl4RnVu
Y3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01peEZ1bmN0aW9uVmFs
dWUuaAppbmRleCA3YmMwN2I0Li5jYjk5MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAg
ICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlPiBjbG9uZUZvckNTU09NKCkg
Y29uc3Q7CiAKKyAgICBib29sIGVxdWFscyhjb25zdCBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVl
JikgY29uc3Q7CisKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAKaW5kZXggMGIwZjFiYS4uNTY4ZDBmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcApA
QCAtNjcsNiArNjcsMTEgQEAgU3RyaW5nIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OmN1c3Rv
bUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdXJs
KTsKIH0KIAorYm9vbCBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlOjplcXVhbHMoY29uc3QgV2Vi
S2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXJs
ID09IG90aGVyLm1fdXJsOworfQorCiB2b2lkIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oCmluZGV4IDk2YmNjOGMuLjlhM2FjNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaApAQCAtNDQs
NiArNDQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKICAg
ICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgYm9vbCBs
b2FkUmVxdWVzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkUmVxdWVzdGVkOyB9CisgICAgYm9v
bCBlcXVhbHMoY29uc3QgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSYpIGNvbnN0OwogCiAgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAppbmRleCBl
M2FmYzg5Li5hYWUyNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
U2hhZGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJW
YWx1ZS5jcHAKQEAgLTgzLDYgKzgzLDExIEBAIFN0cmluZyBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6
Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZO
ZWVkZWQobV91cmwpICsgIikiOwogfQogCitib29sIFdlYktpdENTU1NoYWRlclZhbHVlOjplcXVh
bHMoY29uc3QgV2ViS2l0Q1NTU2hhZGVyVmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIHJldHVy
biBtX3VybCA9PSBvdGhlci5tX3VybDsKK30KKwogdm9pZCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTU2hhZGVyVmFsdWUuaAppbmRleCBjNDMyMDFjLi43YjA1ZTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMo
Y29uc3QgV2ViS2l0Q1NTU2hhZGVyVmFsdWUmKSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKaW5kZXggZmQx
MTdmMi4uZTBjMTQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFN0cmluZyBj
dXN0b21Dc3NUZXh0KCkgY29uc3Q7CisgICAgYm9vbCBlcXVhbHMoY29uc3QgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBl
ICYmIENTU1ZhbHVlTGlzdDo6ZXF1YWxzKG90aGVyKTsgfQogI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQogICAgIFN0cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3Qg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDYxNTYxYjcuLjNiYTE2YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTI0NSw5ICsyNDUsNyBAQCBi
b29sIEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVu
dCogZWxlbWVudCwgU3R5bGVQcm9wZQogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBhdHRy
aWJ1dGVWYWx1ZUFzQ1NTVmFsdWUoZWxlbWVudCk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzdHls
ZVZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsKICAgICAK
LSAgICAvLyBGSVhNRTogVGhpcyBpcyB2ZXJ5IGluZWZmaWNpZW50IHdheSBvZiBjb21wYXJpbmcg
dmFsdWVzCi0gICAgLy8gYnV0IHdlIGNhbid0IHN0cmluZyBjb21wYXJlIGF0dHJpYnV0ZSB2YWx1
ZSBhbmQgQ1NTIHByb3BlcnR5IHZhbHVlLgotICAgIHJldHVybiB2YWx1ZSAmJiBzdHlsZVZhbHVl
ICYmIHZhbHVlLT5jc3NUZXh0KCkgPT0gc3R5bGVWYWx1ZS0+Y3NzVGV4dCgpOworICAgIHJldHVy
biBjb21wYXJlQ1NTVmFsdWVQdHIodmFsdWUsIHN0eWxlVmFsdWUpOwogfQogCiB2b2lkIEhUTUxB
dHRyaWJ1dGVFcXVpdmFsZW50OjphZGRUb1N0eWxlKEVsZW1lbnQqIGVsZW1lbnQsIEVkaXRpbmdT
dHlsZSogc3R5bGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29s
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAppbmRleCBhMzRhZDE4Li4w
OWFlZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAKQEAgLTEwNSw2ICsxMDUsMTEgQEAgUGFz
c1JlZlB0cjxTVkdDb2xvcj4gU1ZHQ29sb3I6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU1ZHQ29sb3IoU1ZHQ29sb3JDbGFzcywgKnRoaXMpKTsKIH0KIAor
Ym9vbCBTVkdDb2xvcjo6ZXF1YWxzKGNvbnN0IFNWR0NvbG9yJiBvdGhlcikgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jb2xvclR5cGUgPT0gb3RoZXIubV9jb2xvclR5cGUgJiYgbV9jb2xvciA9PSBv
dGhlci5tX2NvbG9yOworfQorCiB2b2lkIFNWR0NvbG9yOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBN
ZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5
VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCmluZGV4IDdkZGRjZDcuLjViMzYwYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDb2xvci5oCkBAIC03NSw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQ
YXNzUmVmUHRyPFNWR0NvbG9yPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICBib29sIGVx
dWFscyhjb25zdCBTVkdDb2xvciYpIGNvbnN0OworCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhaW50LmNwcAppbmRleCBjNzE5MzU1Li5mNjljNDVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YWludC5jcHAKQEAgLTExMiw2ICsxMTIsMTEgQEAgUGFzc1JlZlB0cjxTVkdQYWludD4gU1ZHUGFp
bnQ6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGFp
bnQoKnRoaXMpKTsKIH0KIAorYm9vbCBTVkdQYWludDo6ZXF1YWxzKGNvbnN0IFNWR1BhaW50JiBv
dGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWludFR5cGUgPT0gb3RoZXIubV9wYWludFR5
cGUgJiYgbV91cmkgPT0gb3RoZXIubV91cmkgJiYgU1ZHQ29sb3I6OmVxdWFscyhvdGhlcik7Cit9
CisKIHZvaWQgU1ZHUGFpbnQ6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhaW50LmgKaW5kZXggYWM1Njc1Yi4uYTZmZDBkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50
LmgKQEAgLTk1LDYgKzk1LDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxTVkdQYWludD4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgYm9vbCBlcXVhbHMoY29uc3QgU1ZHUGFpbnQm
KSBjb25zdDsKKwogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToK
</data>

          </attachment>
      

    </bug>

</bugzilla>