<?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>84088</bug_id>
          
          <creation_ts>2012-04-16 15:29:20 -0700</creation_ts>
          <short_desc>[chromium] Simplify occlusion tracker API by passing layer iterator data</short_desc>
          <delta_ts>2012-04-18 19:01:49 -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>New Bugs</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="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603509</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 15:29:20 -0700</bug_when>
    <thetext>[chromium] Simplify occlusion tracker API by passing layer iterator data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603511</commentid>
    <comment_count>1</comment_count>
      <attachid>137418</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 15:37:01 -0700</bug_when>
    <thetext>Created attachment 137418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603751</commentid>
    <comment_count>2</comment_count>
      <attachid>137418</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-16 20:44:37 -0700</bug_when>
    <thetext>Comment on attachment 137418
Patch

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

I like this a lot.  I think it makes the calling code so much cleaner.

&gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:276
&gt; +    void enterLayerAsItself(LayerChromium* layer, CCOcclusionTracker&amp; occlusion)

Is it possible to add OcclusionTracker to Types as well and not duplicate all these functions?

&gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:372
&gt; +    void enterLayer(LayerChromium* layer, CCOcclusionTracker&amp; occlusion)
&gt; +    {
&gt; +        if (m_lastLayerVisited)
&gt; +            leaveLayer(m_lastLayerVisited, occlusion);

It wasn&apos;t obvious until I found this function why you were only entering layers and not leaving them in tests.  Is it possible to rename the enterLayerAsFoo functions something more like &quot;processLayerAsFoo&quot; or &quot;updateOcclusionForFooLayer&quot;, and then do enterLayer/leaveLayer in the same function? I think that&apos;d be a lot more clear than just adding another enterLayer(parent) to flush the occlusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603753</commentid>
    <comment_count>3</comment_count>
      <attachid>137418</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 20:48:21 -0700</bug_when>
    <thetext>Comment on attachment 137418
Patch

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

&gt;&gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:276
&gt;&gt; +    void enterLayerAsItself(LayerChromium* layer, CCOcclusionTracker&amp; occlusion)
&gt; 
&gt; Is it possible to add OcclusionTracker to Types as well and not duplicate all these functions?

Ooh, yeh that should work.

&gt;&gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:372
&gt;&gt; +            leaveLayer(m_lastLayerVisited, occlusion);
&gt; 
&gt; It wasn&apos;t obvious until I found this function why you were only entering layers and not leaving them in tests.  Is it possible to rename the enterLayerAsFoo functions something more like &quot;processLayerAsFoo&quot; or &quot;updateOcclusionForFooLayer&quot;, and then do enterLayer/leaveLayer in the same function? I think that&apos;d be a lot more clear than just adding another enterLayer(parent) to flush the occlusion.

Some tests want to test things before the layer is left (for example while the layer is visited as a contributed surface, we test occlusion of the contributed surface).

Maybe there is a better name that signifies we are leaving the previous step as well..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603757</commentid>
    <comment_count>4</comment_count>
      <attachid>137418</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-16 20:53:09 -0700</bug_when>
    <thetext>Comment on attachment 137418
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:372
&gt;&gt;&gt; +            leaveLayer(m_lastLayerVisited, occlusion);
&gt;&gt; 
&gt;&gt; It wasn&apos;t obvious until I found this function why you were only entering layers and not leaving them in tests.  Is it possible to rename the enterLayerAsFoo functions something more like &quot;processLayerAsFoo&quot; or &quot;updateOcclusionForFooLayer&quot;, and then do enterLayer/leaveLayer in the same function? I think that&apos;d be a lot more clear than just adding another enterLayer(parent) to flush the occlusion.
&gt; 
&gt; Some tests want to test things before the layer is left (for example while the layer is visited as a contributed surface, we test occlusion of the contributed surface).
&gt; 
&gt; Maybe there is a better name that signifies we are leaving the previous step as well..

I&apos;m not sure I follow.  For the case of a contributing surface, it seems like you could test things before entering/leaving that layer as a contributed surface and that you don&apos;t need to test after entering but before leaving? Is there something I&apos;m missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603764</commentid>
    <comment_count>5</comment_count>
      <attachid>137418</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-16 21:06:24 -0700</bug_when>
    <thetext>Comment on attachment 137418
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:372
&gt;&gt;&gt;&gt; +            leaveLayer(m_lastLayerVisited, occlusion);
&gt;&gt;&gt; 
&gt;&gt;&gt; It wasn&apos;t obvious until I found this function why you were only entering layers and not leaving them in tests.  Is it possible to rename the enterLayerAsFoo functions something more like &quot;processLayerAsFoo&quot; or &quot;updateOcclusionForFooLayer&quot;, and then do enterLayer/leaveLayer in the same function? I think that&apos;d be a lot more clear than just adding another enterLayer(parent) to flush the occlusion.
&gt;&gt; 
&gt;&gt; Some tests want to test things before the layer is left (for example while the layer is visited as a contributed surface, we test occlusion of the contributed surface).
&gt;&gt; 
&gt;&gt; Maybe there is a better name that signifies we are leaving the previous step as well..
&gt; 
&gt; I&apos;m not sure I follow.  For the case of a contributing surface, it seems like you could test things before entering/leaving that layer as a contributed surface and that you don&apos;t need to test after entering but before leaving? Is there something I&apos;m missing?

Yes, I suppose you could, since CCOT::enterLayer() for a contributing surface is a no-op. I guess I&apos;m trying vaguely to avoid exposing implementation details? But these tests are a mess of implementation details so at this point I&apos;m probably being hypocritical, if it even makes sense here. :)

I&apos;ll do as you suggest, it should clean this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605114</commentid>
    <comment_count>6</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-18 14:49:25 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;m not sure I follow.  For the case of a contributing surface, it seems like you could test things before entering/leaving that layer as a contributed surface and that you don&apos;t need to test after entering but before leaving? Is there something I&apos;m missing?

Ok here&apos;s an example of my problem with this:


// The blur layer needs to throw away any occlusion from outside its subtree.
this-&gt;visitLayerAsItself(blurLayer, occlusion);
EXPECT_TRUE(occlusion.occlusionInScreenSpace().isEmpty());
EXPECT_TRUE(occlusion.occlusionInTargetSurface().isEmpty());

Here we want to test the occlusion that the tracker has when we enter the blurLayer&apos;s target surface, but without including the occlusion from the blurLayer itself.

The visit step since it leaves the blurLayer also adds occlusion for the layer itself. In this case it&apos;s okay.. but they are really two different tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605130</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-18 14:57:12 -0700</bug_when>
    <thetext>I propose s/enterLayer/moveToLayer/ and s/leaveLayer/finishWithLayer/ as a possible workaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605134</commentid>
    <comment_count>8</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-18 15:02:21 -0700</bug_when>
    <thetext>(In reply to comment #6)

&gt; The visit step since it leaves the blurLayer also adds occlusion for the layer itself. In this case it&apos;s okay.. but they are really two different tests.

If it&apos;s just true for the AsItself case, then how about a visitLayerAsItself() which does both and you can use more commonly and an enterLayerAsItself/leaveLayerAsItself that you can use in the edge case where you need to check between?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605140</commentid>
    <comment_count>9</comment_count>
      <attachid>137779</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-18 15:04:53 -0700</bug_when>
    <thetext>Created attachment 137779
Patch

Another example:

        this-&gt;moveToLayerAsItself(parent, occlusion);
        EXPECT_TRUE(occlusion.occluded(parent, IntRect(30, 30, 70, 70)));

We want to check the occlsion of |parent|, but before |parent| is added to that occlusion. We must &apos;enter&apos; parent if it is in a different render surface than the previous layer, or we violate the usage of the occlusion tracker as it needs to know the current target. So we need to be able to visit the layer without marking occlusion here.


Here&apos;s a CL with renaming enter/leave, and with Types::OcclusionTrackerType, for your consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605195</commentid>
    <comment_count>10</comment_count>
      <attachid>137779</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 16:08:30 -0700</bug_when>
    <thetext>Comment on attachment 137779
Patch

Attachment 137779 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12437036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605242</commentid>
    <comment_count>11</comment_count>
      <attachid>137807</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-18 17:06:26 -0700</bug_when>
    <thetext>Created attachment 137807
Patch

Something to make the world into rainbows of joy. No hidden leaveLayer(), using visit() enter() and leave() explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605259</commentid>
    <comment_count>12</comment_count>
      <attachid>137807</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-18 17:30:45 -0700</bug_when>
    <thetext>Comment on attachment 137807
Patch

That&apos;s so much clearer, thanks!  R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605288</commentid>
    <comment_count>13</comment_count>
      <attachid>137807</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 19:01:44 -0700</bug_when>
    <thetext>Comment on attachment 137807
Patch

Clearing flags on attachment: 137807

Committed r114601: &lt;http://trac.webkit.org/changeset/114601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605289</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 19:01:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137418</attachid>
            <date>2012-04-16 15:37:01 -0700</date>
            <delta_ts>2012-04-18 15:04:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84088-20120416183700.patch</filename>
            <type>text/plain</type>
            <size>123552</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Q5N2I5ODFiZmIxNDU5
MWViYjcyOWIyZDk0MzcxZjg5OTZhZjZkMC4uNDI0ZDAzZTViYmFlZjFkZWQyNzI1NjRjODRhZDlj
Zjg2ZWJiMzYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA0LTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2lt
cGxpZnkgb2NjbHVzaW9uIHRyYWNrZXIgQVBJIGJ5IHBhc3NpbmcgbGF5ZXIgaXRlcmF0b3IgZGF0
YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwODgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91
c2x5IHRocmVlIG1ldGhvZHMgbGl2ZWQgaW4gdGhlIEFQSSBhbmQgeW91IG5lZWRlZCB0byBjYWxs
IHRoZQorICAgICAgICBhcHByb3ByaWF0ZSBtZXRob2QgKHdpdGggZGlmZmVyZW50IGFtb3VudHMg
b2YgZGF0YSkgZGVwZW5kaW5nIG9uIHdoYXQKKyAgICAgICAgdGhlIGN1cnJlbnQgbGF5ZXIgaXRl
cmF0b3Igd2FzIHJlcHJlc2VudGluZy4KKworICAgICAgICBUaGlzIG1ha2VzIHVzYWdlIG9mIHRo
ZSBvY2NsdXNpb24gdHJhY2tlciBzaW1wbGVyIHRvIHJlYWQgYW5kIGhhcmRlcgorICAgICAgICB0
byBtZXNzIHVwLCBieSBqdXN0IHBhc3NpbmcgaW4gdGhlIGxheWVyIGl0ZXJhdG9yIGF0IGVhY2gg
c3RlcCBvZiB0aGUKKyAgICAgICAgaXRlcmF0aW9uIHByb2Nlc3MuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
Q0xheWVySXRlcmF0b3JQb3NpdGlvbik6CisgICAgICAgIChDQ0xheWVySXRlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpvcGVyYXRvciBjb25zdCBDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGU+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVGlsaW5nRGF0YTo6b3BhcXVlUmVnaW9uSW5MYXllclJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNz
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmVudGVyTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjo6OmxlYXZlTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oOgorICAgICAg
ICAoQ0NPY2NsdXNpb25UcmFja2VyQmFzZSk6CisKIDIwMTItMDQtMTYgIFlhZWwgQWhhcm9uICA8
eWFlbC5haGFyb25Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF1bV0syXSBGaXhlZCBlbGVtZW50
cyBwb3NpdGlvbiBpcyB3cm9uZyBhZnRlciB6b29taW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCAwNGFjNWI5YzYzYjZkMjYzMDRlZTVlMzRlZGY4MmQxMTBjZDJjZGRjLi43NTI0ZjJh
NjJjOGNkZWMwOGU3ZmI4ZTkzN2NjN2M4YzJiN2EzYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTA0LTE2ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2ltcGxpZnkgb2NjbHVzaW9uIHRy
YWNrZXIgQVBJIGJ5IHBhc3NpbmcgbGF5ZXIgaXRlcmF0b3IgZGF0YQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwODgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tl
clRlc3QuY3BwOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE1haW5UaHJlYWRUeXBl
cyk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0SW1wbFRocmVhZFR5cGVzKToKKyAg
ICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpDQ09jY2x1c2lvblRy
YWNrZXJUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
OjpjYWxjRHJhd0V0Yyk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0KToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjplbnRlckxheWVyQXNJdHNl
bGYpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OmVudGVy
TGF5ZXJBc1RhcmdldCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2Vy
VGVzdDo6ZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpD
Q09jY2x1c2lvblRyYWNrZXJUZXN0OjpsZWF2ZUxheWVyKToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpyZXNldExheWVySXRlcmF0b3IpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OmVudGVyTGF5ZXIpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXM6
OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVz
dFJvdGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1
c2lvblRyYWNrZXJUZXN0VHJhbnNsYXRlZENoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkOjpydW5N
eVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RWaXNp
dFRhcmdldFR3b1RpbWVzOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXM6OnJ1bk15VGVzdCk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VXaXRoVHdvT3Bh
cXVlQ2hpbGRyZW46OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNp
b25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdzOjpydW5NeVRlc3QpOgorICAg
ICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZh
Y2VTaWJsaW5nc1dpdGhUd29UcmFuc2Zvcm1zOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzOjpydW5NeVRlc3QpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RSZXBsaWNhRG9lc09jY2x1ZGU6
OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVz
dFJlcGxpY2FXaXRoQ2xpcHBpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQ6OnJ1bk15
VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVl
blNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3ZlckNoaWxkOjpydW5N
eVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3Jl
ZW5TY2lzc29yUmVjdE92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZDo6
cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
U2NyZWVuU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyTm90
aGluZzo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyTm90aGluZzo6cnVuTXlUZXN0KToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdEZvckxh
eWVyT2ZmT3JpZ2luOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5OjpydW5NeVRlc3QpOgorICAg
ICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1Jl
Z2lvbk5vbkVtcHR5OjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3QzZFRyYW5zZm9ybTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0UGVyc3BlY3RpdmVUcmFuc2Zvcm06OnJ1bk15VGVz
dCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFBlcnNwZWN0
aXZlVHJhbnNmb3JtQmVoaW5kQ2FtZXJhOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllckJlaGluZENhbWVyYURvZXNOb3RPY2NsdWRl
OjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRl
c3RMYXJnZVBpeGVsc09jY2x1ZGVJbnNpZGVDbGlwUmVjdDo6cnVuTXlUZXN0KToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1h
aW5UaHJlYWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25U
cmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgorICAg
ICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25UcmFuc2xh
dGVPbk1haW5UaHJlYWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2Ns
dXNpb25UcmFja2VyVGVzdFN1cmZhY2VPY2NsdXNpb25UcmFuc2xhdGVzVG9QYXJlbnQ6OnJ1bk15
VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZh
Y2VPY2NsdXNpb25UcmFuc2xhdGVzV2l0aENsaXBwaW5nOjpydW5NeVRlc3QpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RSZXBsaWNhT2NjbHVkZWQ6OnJ1bk15
VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZh
Y2VXaXRoUmVwbGljYVVub2NjbHVkZWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VBbmRSZXBsaWNhT2NjbHVkZWREaWZmZXJl
bnRseTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0U3VyZmFjZUNoaWxkT2ZTdXJmYWNlOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlQ2hpbGRPZkNsaXBwaW5nU3VyZmFj
ZTo6cnVuTXlUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUxheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEy
LTA0LTE1ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIElu
dHJvZHVjZSBNZW51SXRlbUlEIHRvIGF1dG9maWxsIHBvcHVwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVy
YXRvci5oCmluZGV4IGQ4OWJkNjkxMjc3MTdhNTk3MTU1ZTU3NDA5MDRmN2VhNDZiZjdjZGEuLjEy
YzYyN2Y2YTJlNGI5YjE1OWY4MTQwZmJkZjU3ZGFjZTc4ODA2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJdGVyYXRvci5oCkBAIC05MSw2ICs5MSwxNiBAQCBzdHJ1Y3QgQ0NMYXllckl0ZXJhdG9yVmFs
dWUgewogICAgIHN0YXRpYyBjb25zdCBpbnQgTGF5ZXJJbmRleFJlcHJlc2VudGluZ1RhcmdldFJl
bmRlclN1cmZhY2UgPSAtMTsKIH07CiAKKy8vIFRoZSBwb3NpdGlvbiBvZiBhIGxheWVyIGl0ZXJh
dG9yIHRoYXQgaXMgaW5kZXBlbmRlbnQgb2YgaXRzIG1hbnkgdGVtcGxhdGUgdHlwZXMuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlPgorc3RydWN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9u
IHsKKyAgICBib29sIHJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNlOworICAgIGJvb2wgcmVw
cmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2U7CisgICAgYm9vbCByZXByZXNlbnRzSXRz
ZWxmOworICAgIExheWVyVHlwZSogdGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyOworICAgIExheWVy
VHlwZSogY3VycmVudExheWVyOworfTsKKwogLy8gQW4gaXRlcmF0b3IgY2xhc3MgZm9yIHdhbGtp
bmcgb3ZlciBsYXllcnMgaW4gdGhlIFJlbmRlclN1cmZhY2UtTGF5ZXIgdHJlZS4KIHRlbXBsYXRl
IDx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIExheWVyTGlzdCwgdHlwZW5hbWUgUmVuZGVy
U3VyZmFjZVR5cGUsIHR5cGVuYW1lIEl0ZXJhdG9yQWN0aW9uVHlwZT4KIGNsYXNzIENDTGF5ZXJJ
dGVyYXRvciB7CkBAIC0xMTksNiArMTI5LDE3IEBAIHB1YmxpYzoKIAogICAgIExheWVyVHlwZSog
dGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCkgY29uc3QgeyByZXR1cm4gZ2V0UmF3UHRyKCgqbV9y
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KVttX3RhcmdldFJlbmRlclN1cmZhY2VMYXllckluZGV4XSk7
IH0KIAorICAgIG9wZXJhdG9yIGNvbnN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlw
ZT4oKSBjb25zdAorICAgIHsKKyAgICAgICAgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJU
eXBlPiBwb3NpdGlvbjsKKyAgICAgICAgcG9zaXRpb24ucmVwcmVzZW50c1RhcmdldFJlbmRlclN1
cmZhY2UgPSByZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSgpOworICAgICAgICBwb3NpdGlv
bi5yZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSA9IHJlcHJlc2VudHNDb250cmli
dXRpbmdSZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIHBvc2l0aW9uLnJlcHJlc2VudHNJdHNlbGYg
PSByZXByZXNlbnRzSXRzZWxmKCk7CisgICAgICAgIHBvc2l0aW9uLnRhcmdldFJlbmRlclN1cmZh
Y2VMYXllciA9IHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpOworICAgICAgICBwb3NpdGlvbi5j
dXJyZW50TGF5ZXIgPSBjdXJyZW50TGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgIH0KKwogcHJpdmF0ZToKICAgICBDQ0xheWVySXRlcmF0b3IoY29uc3QgTGF5ZXJMaXN0KiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBib29sIHN0YXJ0KQogICAgICAgICA6IG1fcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdChyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRpbGluZ0RhdGEuY3BwCmluZGV4IDQyZjFlOGQxYWI1OThjODM3NWQ1YjVjMTdkZDI1ZTYwZTgz
YmI2MzUuLmFiMTMyYWUxNGZiYWRlYzM5YzMzY2IwZWFlYzBlZGY5NjlmYzQ5NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
aWxpbmdEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5jcHAKQEAgLTExMyw2ICsxMTMsOSBAQCBJbnRSZWN0
IENDTGF5ZXJUaWxpbmdEYXRhOjp0aWxlUmVjdChjb25zdCBUaWxlKiB0aWxlKSBjb25zdAogCiBS
ZWdpb24gQ0NMYXllclRpbGluZ0RhdGE6Om9wYXF1ZVJlZ2lvbkluTGF5ZXJSZWN0KGNvbnN0IElu
dFJlY3QmIGxheWVyUmVjdCkgY29uc3QKIHsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIFJlZ2lvbigpOworCiAgICAgUmVnaW9uIG9wYXF1ZVJlZ2lvbjsKICAg
ICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwogICAgIGxheWVyUmVjdFRvVGlsZUluZGlj
ZXMobGF5ZXJSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKaW5kZXggNmUzM2UzOTEzNTYyOTY0MmIzNjJmODgwN2E5YzRkMTI0OTlm
OGE0Ni4uMGJkMjdiY2MwMjZlMGNlNmM0M2NkNjA0OWNiZjUzZGMxN2NhNmMxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC01NTUsMTkgKzU1NSwxNyBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdAogCiAgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRl
cmF0b3JUeXBlOjplbmQoJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIGZvciAoQ0NMYXll
ckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIG9jY2x1c2lvblRyYWNr
ZXIuZW50ZXJMYXllcihpdCk7CisKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNUYXJnZXRSZW5k
ZXJTdXJmYWNlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpdC0+cmVuZGVyU3VyZmFjZSgpLT5k
cmF3T3BhY2l0eSgpIHx8IGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5SXNBbmltYXRp
bmcoKSk7Ci0KLSAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIuZmluaXNoZWRUYXJnZXRSZW5k
ZXJTdXJmYWNlKCppdCwgaXQtPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgICAgICBwYWludE1h
c2tzRm9yUmVuZGVyU3VyZmFjZSgqaXQsIHBhaW50VHlwZSwgdXBkYXRlcik7CiAgICAgICAgIH0g
ZWxzZSBpZiAoaXQucmVwcmVzZW50c0l0c2VsZigpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWl0
LT5ib3VuZHMoKS5pc0VtcHR5KCkpOwotCi0gICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShpdC0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKICAgICAg
ICAgICAgIHVwZGF0ZSgqaXQsIHBhaW50VHlwZSwgdXBkYXRlciwgJm9jY2x1c2lvblRyYWNrZXIp
OwotICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcigq
aXQpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubGVhdmVU
b1RhcmdldFJlbmRlclN1cmZhY2UoaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgICAgIH0KKworICAgICAgICBvY2NsdXNpb25UcmFja2VyLmxlYXZl
TGF5ZXIoaXQpOwogICAgIH0KIAogICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNz
KCkucmVjb3JkTWV0cmljcyh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAKaW5kZXggNWVmNWEzMjAyNzA4MTc4Y2MzODM3NzQ5YjcwNTljZGRiYjcxZGRjOS4uZmI3
YWJlNWIzM2FlOGVlMjgxOWM4NzEzOTY2MjUyZGQ1MjExY2U4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTI5OCwzMiArMjk4LDI0IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBh
c3NlcywgQ0NMYXllCiAgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0
ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKICAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gaXQudGFyZ2V0
UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgQ0NSZW5kZXJQ
YXNzKiBwYXNzID0gc3VyZmFjZVBhc3NNYXAuZ2V0KHJlbmRlclN1cmZhY2UpOworICAgICAgICBi
b29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOworCisgICAgICAgIG9jY2x1c2lvblRyYWNrZXIu
ZW50ZXJMYXllcihpdCk7CiAKLSAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkKLSAg
ICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHJlbmRl
clN1cmZhY2UpOwotICAgICAgICBlbHNlIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgpKSB7Ci0gICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZSgqaXQsIHJlbmRlclN1cmZhY2UpOwotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChpdC5yZXByZXNlbnRzQ29udHJpYnV0aW5nUmVu
ZGVyU3VyZmFjZSgpKQogICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJm
YWNlTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgICAgICAgICBvY2NsdXNpb25U
cmFja2VyLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpOwotICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAm
JiAhaXQtPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGl0LT53
aWxsRHJhdyhtX2xheWVyUmVuZGVyZXIuZ2V0KCkpOworICAgICAgICAgICAgcGFzcy0+YXBwZW5k
UXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKGl0LT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgp
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaXQtPndpbGxEcmF3KG1fbGF5ZXJS
ZW5kZXJlci5nZXQoKSk7Ci0KLSAgICAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsK
LSAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXllcigqaXQsICZvY2NsdXNpb25UcmFja2Vy
LCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBpZiAoaGFkTWlzc2luZ1RpbGVzKSB7CiAgICAg
ICAgICAgICBib29sIGxheWVySGFzQW5pbWF0aW5nVHJhbnNmb3JtID0gaXQtPnNjcmVlblNwYWNl
VHJhbnNmb3JtSXNBbmltYXRpbmcoKSB8fCBpdC0+ZHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5nKCk7
CiAgICAgICAgICAgICBpZiAobGF5ZXJIYXNBbmltYXRpbmdUcmFuc2Zvcm0pCiAgICAgICAgICAg
ICAgICAgZHJhd0ZyYW1lID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBvY2NsdXNpb25U
cmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKCppdCk7CisgICAgICAgIG9jY2x1c2lvblRy
YWNrZXIubGVhdmVMYXllcihpdCk7CiAgICAgfQogCiAgICAgcGFzc2VzLmxhc3QoKS0+YXBwZW5k
UXVhZHNUb0ZpbGxTY3JlZW4obV9yb290TGF5ZXJJbXBsLmdldCgpLCBtX2JhY2tncm91bmRDb2xv
ciwgb2NjbHVzaW9uVHJhY2tlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cAppbmRleCBiZDE3NWE2MDJlZGU5NmI5NTFhODE2YWY4MmNjNWQzMTg3MjliNDQ0Li41N2U3OGEx
MjA4Yjg0YjVkY2Y0MWZiMWRiNDg0OWM1NGYzNGQxZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5jcHAKQEAgLTQ4LDYgKzQ4LDI4IEBAIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OkNDT2NjbHVzaW9uVHJhY2tlckJhc2Uo
SW50CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGU+Cit2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZT46OmVudGVyTGF5ZXIoY29uc3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRpb248TGF5
ZXJUeXBlPiYgbGF5ZXJJdGVyYXRvcikKK3sKKyAgICBSZW5kZXJTdXJmYWNlVHlwZSogcmVuZGVy
U3VyZmFjZSA9IGxheWVySXRlcmF0b3IudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJT
dXJmYWNlKCk7CisKKyAgICBpZiAobGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzSXRzZWxmKQorICAg
ICAgICBlbnRlclRhcmdldFJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZSk7CisgICAgZWxzZSBp
ZiAobGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZSkKKyAgICAgICAg
ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVySXRlcmF0b3IuY3VycmVudExheWVyLCBy
ZW5kZXJTdXJmYWNlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFt
ZSBSZW5kZXJTdXJmYWNlVHlwZT4KK3ZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5
cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGVhdmVMYXllcihjb25zdCBDQ0xheWVySXRlcmF0b3JQ
b3NpdGlvbjxMYXllclR5cGU+JiBsYXllckl0ZXJhdG9yKQoreworICAgIFJlbmRlclN1cmZhY2VU
eXBlKiByZW5kZXJTdXJmYWNlID0gbGF5ZXJJdGVyYXRvci50YXJnZXRSZW5kZXJTdXJmYWNlTGF5
ZXItPnJlbmRlclN1cmZhY2UoKTsKKworICAgIGlmIChsYXllckl0ZXJhdG9yLnJlcHJlc2VudHNJ
dHNlbGYpCisgICAgICAgIG1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVySXRlcmF0b3IuY3Vy
cmVudExheWVyKTsKKyAgICBlbHNlIGlmIChsYXllckl0ZXJhdG9yLnJlcHJlc2VudHNDb250cmli
dXRpbmdSZW5kZXJTdXJmYWNlKQorICAgICAgICBsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShy
ZW5kZXJTdXJmYWNlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFt
ZSBSZW5kZXJTdXJmYWNlVHlwZT4KIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5
cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJl
bmRlclN1cmZhY2VUeXBlKiBuZXdUYXJnZXQpCiB7CiAgICAgaWYgKCFtX3N0YWNrLmlzRW1wdHko
KSAmJiBtX3N0YWNrLmxhc3QoKS5zdXJmYWNlID09IG5ld1RhcmdldCkKQEAgLTM5NSw2ICs0MTcs
OCBAQCBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT46OmxheWVyU2Npc3NvclJlY3RJbgogCiAvLyBEZWNsYXJlIHRoZSBwb3NzaWJsZSBm
dW5jdGlvbnMgaGVyZSBmb3IgdGhlIGxpbmtlci4KIHRlbXBsYXRlIENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6Q0NPY2NsdXNpb25U
cmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRN
ZXRyaWNzRm9yRnJhbWUpOwordGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmVudGVyTGF5ZXIoY29uc3QgQ0NM
YXllckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJDaHJvbWl1bT4mKTsKK3RlbXBsYXRlIHZvaWQgQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+
OjpsZWF2ZUxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21pdW0+
Jik7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwg
UmVuZGVyU3VyZmFjZUNocm9taXVtPjo6ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJl
bmRlclN1cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpmaW5p
c2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgTGF5ZXJDaHJvbWl1bSogb3duaW5nTGF5ZXIs
IGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogZmluaXNoZWRUYXJnZXQpOwogdGVtcGxhdGUg
dm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VD
aHJvbWl1bT46OmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1cmZhY2VD
aHJvbWl1bSogbmV3VGFyZ2V0KTsKQEAgLTQwNSw2ICs0MjksOCBAQCB0ZW1wbGF0ZSBJbnRSZWN0
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtPjo6dQogdGVtcGxhdGUgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hy
b21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1
cmZhY2UoY29uc3QgTGF5ZXJDaHJvbWl1bSopIGNvbnN0OwogCiB0ZW1wbGF0ZSBDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpDQ09jY2x1c2lvblRy
YWNrZXJCYXNlKEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBib29sIHJlY29yZE1l
dHJpY3NGb3JGcmFtZSk7Cit0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NM
YXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmVudGVyTGF5ZXIoY29uc3QgQ0NMYXllckl0ZXJh
dG9yUG9zaXRpb248Q0NMYXllckltcGw+Jik7Cit0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmxlYXZlTGF5ZXIoY29uc3Qg
Q0NMYXllckl0ZXJhdG9yUG9zaXRpb248Q0NMYXllckltcGw+Jik7CiB0ZW1wbGF0ZSB2b2lkIEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBDQ1JlbmRlclN1cmZhY2UqIG5ld1RhcmdldCk7CiB0
ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVy
U3VyZmFjZT46OmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBDQ0xheWVySW1wbCog
b3duaW5nTGF5ZXIsIGNvbnN0IENDUmVuZGVyU3VyZmFjZSogZmluaXNoZWRUYXJnZXQpOwogdGVt
cGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1
cmZhY2U+OjpsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBDQ1JlbmRlclN1cmZhY2Uq
IG5ld1RhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCmluZGV4IGY0YTZh
YzkzMjk3YjAzY2QyMTBjOTExZmRlNWI2YWQyOTU4ZjkyMDcuLjIyNWE1YmRkZjU0YTk0YWJmZGNm
ZjZmZThlZDkwMzQxMWI3NWNhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiUmVn
aW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlICJjYy9D
Q0xheWVySXRlcmF0b3IuaCIKICNpbmNsdWRlICJjYy9DQ092ZXJkcmF3TWV0cmljcy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwyNiArNDksMTcgQEAgY2xhc3MgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZSB7CiBwdWJsaWM6CiAgICAgQ0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0
IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwog
Ci0gICAgLy8gQ2FsbGVkIHdoZW4gdmlzaXRpbmcgYSBsYXllciByZXByZXNlbnRpbmcgaXRzZWxm
LiBJZiB0aGUgdGFyZ2V0IHdhcyBub3QgYWxyZWFkeSBjdXJyZW50LCB0aGVuIHRoaXMgaW5kaWNh
dGVzIHdlIGhhdmUgZW50ZXJlZCBhIG5ldyBzdXJmYWNlIHN1YnRyZWUuCi0gICAgdm9pZCBlbnRl
clRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG5ld1RhcmdldCk7
Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiB2aXNpdGluZyBhIGxheWVyIHJlcHJlc2VudGluZyBhIHRh
cmdldCBzdXJmYWNlLiBUaGlzIGluZGljYXRlcyB3ZSBoYXZlIHZpc2l0ZWQgYWxsIHRoZSBsYXll
cnMgd2l0aGluIHRoZSBzdXJmYWNlLCBhbmQgd2UgbWF5Ci0gICAgLy8gcGVyZm9ybSBhbnkgc3Vy
ZmFjZS13aWRlIG9wZXJhdGlvbnMuCi0gICAgdm9pZCBmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZh
Y2UoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIGZpbmlzaGVkVGFy
Z2V0KTsKLQotICAgIC8vIENhbGxlZCB3aGVuIHZpc2l0aW5nIGEgbGF5ZXIgcmVwcmVzZW50aW5n
IGEgY29udHJpYnV0aW5nIHN1cmZhY2UuIFRoaXMgIGluZGljYXRlcyB0aGF0IHdlIGFyZSBsZWF2
aW5nIG91ciBjdXJyZW50IHN1cmZhY2UsIGFuZAotICAgIC8vIGVudGVyaW5nIHRoZSBuZXcgb25l
LiBXZSB0aGVuIHBlcmZvcm0gYW55IG9wZXJhdGlvbnMgcmVxdWlyZWQgZm9yIG1lcmdpbmcgcmVz
dWx0cyBmcm9tIHRoZSBjaGlsZCBzdWJ0cmVlIGludG8gaXRzIHBhcmVudC4KLSAgICB2b2lkIGxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBuZXdUYXJn
ZXQpOwotCi0gICAgLy8gQWRkIHRoZSBsYXllcidzIG9jY2x1c2lvbiB0byB0aGUgdHJhY2tlZCBz
dGF0ZS4KLSAgICB2b2lkIG1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNvbnN0IExheWVyVHlwZSop
OworICAgIC8vIFRvIGJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggc3RlcCBpbiB0
aGUgQ0NMYXllckl0ZXJhdG9yJ3MgZnJvbnQtdG8tYmFjayB0cmF2ZXJzYWwuCisgICAgdm9pZCBl
bnRlckxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZT4mKTsKKyAg
ICAvLyBUbyBiZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHN0ZXAgaW4gdGhlIENDTGF5ZXJJ
dGVyYXRvcidzIGZyb250LXRvLWJhY2sgdHJhdmVyc2FsLgorICAgIHZvaWQgbGVhdmVMYXllcihj
b25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGU+Jik7CiAKICAgICAvLyBSZXR1
cm5zIHRydWUgaWYgdGhlIGdpdmVuIHJlY3QgaW4gY29udGVudCBzcGFjZSBmb3IgdGhlIGxheWVy
IGlzIGZ1bGx5IG9jY2x1ZGVkIGluIGVpdGhlciBzY3JlZW4gc3BhY2Ugb3IgdGhlIGxheWVyJ3Mg
dGFyZ2V0IHN1cmZhY2UuCiAgICAgYm9vbCBvY2NsdWRlZChjb25zdCBMYXllclR5cGUqLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CiAgICAgLy8gR2l2ZXMgYW4gdW5vY2NsdWRl
ZCBzdWItcmVjdCBvZiB8Y29udGVudFJlY3R8IGluIHRoZSBjb250ZW50IHNwYWNlIG9mIHRoZSBs
YXllci4gVXNlZCB3aGVuIGNvbnNpZGVyaW5nIG9jY2x1c2lvbiBmb3IgYSBsYXllciB0aGF0IHBh
aW50cy9kcmF3cyBzb21ldGhpbmcuCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkQ29udGVudFJlY3Qo
Y29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0OwogCi0g
ICAgLy8gR2l2ZXMgYW4gdW5vY2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVudFJlY3R8IGluIHRo
ZSBjb250ZW50IHNwYWNlIG9mIHRoZSBzdXJmYWNlIG93bmVkIGJ5IHxsYXllcnwuIFVzZWQgd2hl
biBjb25zaWRlcmluZyBvY2NsdXNpb24gZm9yIGEgc3VyZmFjZQorICAgIC8vIEdpdmVzIGFuIHVu
b2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRSZWN0fCBpbiB0aGUgY29udGVudCBzcGFjZSBv
ZiB0aGUgc3VyZmFjZSBvd25lZCBieSB8bGF5ZXJ8LiBVc2VkIHdoZW4gY29uc2lkZXJpbmcgb2Nj
bHVzaW9uIGZvciBhIGNvbnRyaWJ1dGluZyBzdXJmYWNlCiAgICAgLy8gdGhhdCBpcyByZW5kZXJp
bmcgaW50byBhbm90aGVyIHRhcmdldCBzdXJmYWNlLgogICAgIEludFJlY3QgdW5vY2NsdWRlZENv
bnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjb25zdCBMYXllclR5cGUqLCBib29sIGZvclJl
cGxpY2EsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKIApAQCAtMTAyLDYgKzk0
LDIwIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lzc29yUmVjdElu
VGFyZ2V0U3VyZmFjZShjb25zdCBMYXllclR5cGUqKSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICAv
LyBDYWxsZWQgd2hlbiB2aXNpdGluZyBhIGxheWVyIHJlcHJlc2VudGluZyBpdHNlbGYuIElmIHRo
ZSB0YXJnZXQgd2FzIG5vdCBhbHJlYWR5IGN1cnJlbnQsIHRoZW4gdGhpcyBpbmRpY2F0ZXMgd2Ug
aGF2ZSBlbnRlcmVkIGEgbmV3IHN1cmZhY2Ugc3VidHJlZS4KKyAgICB2b2lkIGVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogbmV3VGFyZ2V0KTsKKworICAg
IC8vIENhbGxlZCB3aGVuIHZpc2l0aW5nIGEgbGF5ZXIgcmVwcmVzZW50aW5nIGEgdGFyZ2V0IHN1
cmZhY2UuIFRoaXMgaW5kaWNhdGVzIHdlIGhhdmUgdmlzaXRlZCBhbGwgdGhlIGxheWVycyB3aXRo
aW4gdGhlIHN1cmZhY2UsIGFuZCB3ZSBtYXkKKyAgICAvLyBwZXJmb3JtIGFueSBzdXJmYWNlLXdp
ZGUgb3BlcmF0aW9ucy4KKyAgICB2b2lkIGZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25z
dCBMYXllclR5cGUqLCBjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogZmluaXNoZWRUYXJnZXQpOwor
CisgICAgLy8gQ2FsbGVkIHdoZW4gdmlzaXRpbmcgYSBsYXllciByZXByZXNlbnRpbmcgYSBjb250
cmlidXRpbmcgc3VyZmFjZS4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgbGVhdmluZyBvdXIg
Y3VycmVudCBzdXJmYWNlLCBhbmQKKyAgICAvLyBlbnRlcmluZyB0aGUgbmV3IG9uZS4gV2UgdGhl
biBwZXJmb3JtIGFueSBvcGVyYXRpb25zIHJlcXVpcmVkIGZvciBtZXJnaW5nIHJlc3VsdHMgZnJv
bSB0aGUgY2hpbGQgc3VidHJlZSBpbnRvIGl0cyBwYXJlbnQuCisgICAgdm9pZCBsZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogbmV3VGFyZ2V0KTsKKwor
ICAgIC8vIEFkZCB0aGUgbGF5ZXIncyBvY2NsdXNpb24gdG8gdGhlIHRyYWNrZWQgc3RhdGUuCisg
ICAgdm9pZCBtYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjb25zdCBMYXllclR5cGUqKTsKKwogICAg
IEludFJlY3QgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2U7CiAgICAgT3duUHRyPENDT3ZlcmRy
YXdNZXRyaWNzPiBtX292ZXJkcmF3TWV0cmljczsKICAgICBib29sIG1fdXNlUGFpbnRUcmFja2lu
ZzsgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24gZm9yIHBh
aW50IGN1bGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
T2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBiM2UzYzM2MWVjZTlmZmJiZjAxNjlkNzMy
OGUzYjJjZDcwZDk1MWVkLi5mZWM0ZTBiNWMwNTllZmE3MDBjZjFlNjQ0YmVlNDRkMTk2ZTAzMzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJh
Y2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNp
b25UcmFja2VyVGVzdC5jcHAKQEAgLTEzMiw2ICsxMzIsNyBAQCBzdHJ1Y3QgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdE1haW5UaHJlYWRUeXBlcyB7CiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPExheWVy
Q2hyb21pdW0+IFBhc3NMYXllclB0clR5cGU7CiAgICAgdHlwZWRlZiBSZWZQdHI8Q29udGVudExh
eWVyVHlwZT4gQ29udGVudExheWVyUHRyVHlwZTsKICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8Q29u
dGVudExheWVyVHlwZT4gUGFzc0NvbnRlbnRMYXllclB0clR5cGU7CisgICAgdHlwZWRlZiBDQ0xh
eWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9C
YWNrPiBMYXllckl0ZXJhdG9yOwogCiAgICAgc3RhdGljIFBhc3NMYXllclB0clR5cGUgY3JlYXRl
TGF5ZXIoKSB7IHJldHVybiBMYXllckNocm9taXVtOjpjcmVhdGUoKTsgfQogICAgIHN0YXRpYyBQ
YXNzQ29udGVudExheWVyUHRyVHlwZSBjcmVhdGVDb250ZW50TGF5ZXIoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgQ29udGVudExheWVyVHlwZSgpKTsgfQpAQCAtMTQ1LDYgKzE0Niw3IEBAIHN0cnVj
dCBDQ09jY2x1c2lvblRyYWNrZXJUZXN0SW1wbFRocmVhZFR5cGVzIHsKICAgICB0eXBlZGVmIFBh
c3NPd25QdHI8Q0NMYXllckltcGw+IFBhc3NMYXllclB0clR5cGU7CiAgICAgdHlwZWRlZiBPd25Q
dHI8Q29udGVudExheWVyVHlwZT4gQ29udGVudExheWVyUHRyVHlwZTsKICAgICB0eXBlZGVmIFBh
c3NPd25QdHI8Q29udGVudExheWVyVHlwZT4gUGFzc0NvbnRlbnRMYXllclB0clR5cGU7CisgICAg
dHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+
LCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBM
YXllckl0ZXJhdG9yOwogCiAgICAgc3RhdGljIFBhc3NMYXllclB0clR5cGUgY3JlYXRlTGF5ZXIo
KSB7IHJldHVybiBDQ0xheWVySW1wbDo6Y3JlYXRlKG5leHRDQ0xheWVySW1wbElkKyspOyB9CiAg
ICAgc3RhdGljIFBhc3NDb250ZW50TGF5ZXJQdHJUeXBlIGNyZWF0ZUNvbnRlbnRMYXllcigpIHsg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJUeXBlKG5leHRDQ0xheWVySW1wbElkKysp
KTsgfQpAQCAtMTU2LDcgKzE1OCwxMCBAQCBpbnQgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEltcGxU
aHJlYWRUeXBlczo6bmV4dENDTGF5ZXJJbXBsSWQgPSAwOwogdGVtcGxhdGU8dHlwZW5hbWUgVHlw
ZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgogY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHByb3RlY3RlZDoKLSAgICBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0KCkgOiB0ZXN0aW5nOjpUZXN0KCkgeyB9CisgICAgQ0NPY2NsdXNpb25UcmFja2VyVGVzdCgp
CisgICAgICAgIDogdGVzdGluZzo6VGVzdCgpCisgICAgICAgICwgbV9sYXN0TGF5ZXJWaXNpdGVk
KDApCisgICAgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcnVuTXlUZXN0KCkgPSAwOwogCkBAIC0y
MzYsOCArMjQxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbGF5ZXI7CiAgICAgfQog
Ci0KLSAgICBUZXN0Q29udGVudExheWVySW1wbCogY2FsY0RyYXdFdGMoVGVzdENvbnRlbnRMYXll
ckltcGwqIHJvb3QpCisgICAgdm9pZCBjYWxjRHJhd0V0YyhUZXN0Q29udGVudExheWVySW1wbCog
cm9vdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyb290ID09IG1fcm9vdC5nZXQoKSk7CiAgICAg
ICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMjUwLDEwICsyNTQs
MTAgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RJbXBsLmFw
cGVuZChtX3Jvb3QuZ2V0KCkpOwogCiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QsIHJvb3QsIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0SW1wbCwgZHVtbXlM
YXllckxpc3QsIDAsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotICAgICAgICByZXR1cm4gcm9vdDsK
KyAgICAgICAgbV9sYXllckl0ZXJhdG9yID0gbV9sYXllckl0ZXJhdG9yQmVnaW4gPSBUeXBlczo6
TGF5ZXJJdGVyYXRvcjo6YmVnaW4oJm1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdEltcGwpOwogICAg
IH0KIAotICAgIFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSogY2FsY0RyYXdFdGMoVGVzdENvbnRl
bnRMYXllckNocm9taXVtKiByb290KQorICAgIHZvaWQgY2FsY0RyYXdFdGMoVGVzdENvbnRlbnRM
YXllckNocm9taXVtKiByb290KQogICAgIHsKICAgICAgICAgQVNTRVJUKHJvb3QgPT0gbV9yb290
LmdldCgpKTsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5
ZXJMaXN0OwpAQCAtMjY2LDcgKzI3MCw2NSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fcmVuZGVy
U3VyZmFjZUxheWVyTGlzdENocm9taXVtLmFwcGVuZChtX3Jvb3QpOwogCiAgICAgICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJv
b3QsIHJvb3QsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0Q2hyb21pdW0sIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsK
LSAgICAgICAgcmV0dXJuIHJvb3Q7CisgICAgICAgIG1fbGF5ZXJJdGVyYXRvciA9IG1fbGF5ZXJJ
dGVyYXRvckJlZ2luID0gVHlwZXM6OkxheWVySXRlcmF0b3I6OmJlZ2luKCZtX3JlbmRlclN1cmZh
Y2VMYXllckxpc3RDaHJvbWl1bSk7CisgICAgfQorCisgICAgdm9pZCBlbnRlckxheWVyQXNJdHNl
bGYoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlciYgb2NjbHVzaW9uKQor
ICAgIHsKKyAgICAgICAgZW50ZXJMYXllcihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUobV9sYXllckl0ZXJhdG9yLnJlcHJlc2VudHNJdHNlbGYoKSk7CisgICAgfQorCisg
ICAgdm9pZCBlbnRlckxheWVyQXNJdHNlbGYodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogbGF5
ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvbikKKyAgICB7CisgICAgICAgIGVu
dGVyTGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIEFTU0VSVF9UUlVFKG1fbGF5ZXJJ
dGVyYXRvci5yZXByZXNlbnRzSXRzZWxmKCkpOworICAgIH0KKworICAgIHZvaWQgZW50ZXJMYXll
ckFzVGFyZ2V0KExheWVyQ2hyb21pdW0qIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXImIG9jY2x1
c2lvbikKKyAgICB7CisgICAgICAgIGVudGVyTGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CisgICAg
ICAgIEFTU0VSVF9UUlVFKG1fbGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGVudGVyTGF5ZXJBc1RhcmdldCh0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9u
KQorICAgIHsKKyAgICAgICAgZW50ZXJMYXllcihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUobV9sYXllckl0ZXJhdG9yLnJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNl
KCkpOworICAgIH0KKworICAgIHZvaWQgZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKExheWVyQ2hy
b21pdW0qIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXImIG9jY2x1c2lvbikKKyAgICB7CisgICAg
ICAgIGVudGVyTGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIEFTU0VSVF9UUlVFKG1f
bGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGVudGVyTGF5ZXJBc0NvbnRyaWJ1dGluZyh0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uKQorICAg
IHsKKyAgICAgICAgZW50ZXJMYXllcihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUobV9sYXllckl0ZXJhdG9yLnJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNl
KCkpOworICAgIH0KKworICAgIHZvaWQgbGVhdmVMYXllcih0eXBlbmFtZSBUeXBlczo6TGF5ZXJU
eXBlKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2VyJiBvY2NsdXNpb24pCisgICAgeworICAgICAg
ICBBU1NFUlRfRVEobGF5ZXIsICptX2xheWVySXRlcmF0b3IpOworICAgICAgICBvY2NsdXNpb24u
bGVhdmVMYXllcihtX2xheWVySXRlcmF0b3IpOworICAgICAgICBtX2xhc3RMYXllclZpc2l0ZWQg
PSAwOworICAgICAgICArK21fbGF5ZXJJdGVyYXRvcjsKKyAgICB9CisKKyAgICB2b2lkIGxlYXZl
TGF5ZXIodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tl
ckltcGwmIG9jY2x1c2lvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9FUShsYXllciwgKm1fbGF5
ZXJJdGVyYXRvcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZUxheWVyKG1fbGF5ZXJJdGVyYXRv
cik7CisgICAgICAgIG1fbGFzdExheWVyVmlzaXRlZCA9IDA7CisgICAgICAgICsrbV9sYXllckl0
ZXJhdG9yOworICAgIH0KKworICAgIHZvaWQgcmVzZXRMYXllckl0ZXJhdG9yKCkKKyAgICB7Cisg
ICAgICAgIG1fbGF5ZXJJdGVyYXRvciA9IG1fbGF5ZXJJdGVyYXRvckJlZ2luOworICAgICAgICBt
X2xhc3RMYXllclZpc2l0ZWQgPSAwOwogICAgIH0KIAogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OwpAQCAtMzA0LDEwICszNjYsMzEgQEAgcHJpdmF0ZToKICAg
ICAgICAgb3duaW5nTGF5ZXItPnNldFJlcGxpY2FMYXllcihsYXllcik7CiAgICAgfQogCisgICAg
dm9pZCBlbnRlckxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXIm
IG9jY2x1c2lvbikKKyAgICB7CisgICAgICAgIGlmIChtX2xhc3RMYXllclZpc2l0ZWQpCisgICAg
ICAgICAgICBsZWF2ZUxheWVyKG1fbGFzdExheWVyVmlzaXRlZCwgb2NjbHVzaW9uKTsKKyAgICAg
ICAgQVNTRVJUX0VRKGxheWVyLCAqbV9sYXllckl0ZXJhdG9yKTsKKyAgICAgICAgb2NjbHVzaW9u
LmVudGVyTGF5ZXIobV9sYXllckl0ZXJhdG9yKTsKKyAgICAgICAgbV9sYXN0TGF5ZXJWaXNpdGVk
ID0gbGF5ZXI7CisgICAgfQorCisgICAgdm9pZCBlbnRlckxheWVyKHR5cGVuYW1lIFR5cGVzOjpM
YXllclR5cGUqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJiBvY2NsdXNpb24pCisgICAg
eworICAgICAgICBpZiAobV9sYXN0TGF5ZXJWaXNpdGVkKQorICAgICAgICAgICAgbGVhdmVMYXll
cihtX2xhc3RMYXllclZpc2l0ZWQsIG9jY2x1c2lvbik7CisgICAgICAgIEFTU0VSVF9FUShsYXll
ciwgKm1fbGF5ZXJJdGVyYXRvcik7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlckxheWVyKG1fbGF5
ZXJJdGVyYXRvcik7CisgICAgICAgIG1fbGFzdExheWVyVmlzaXRlZCA9IGxheWVyOworICAgIH0K
KwogICAgIC8vIFRoZXNlIGhvbGQgb3duZXJzaGlwIG9mIHRoZSBsYXllcnMgZm9yIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGVzdC4KICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJQdHJUeXBlIG1fcm9v
dDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbV9yZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0Q2hyb21pdW07CiAgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gbV9yZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0SW1wbDsKKyAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJJdGVyYXRvciBtX2xheWVy
SXRlcmF0b3JCZWdpbjsKKyAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJJdGVyYXRvciBtX2xheWVy
SXRlcmF0b3I7CisgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogbV9sYXN0TGF5ZXJWaXNp
dGVkOwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBtX3JlcGxpY2FMYXllcnM7
CiB9OwogCkBAIC0zNjQsOCArNDQ3LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5h
bWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJ
dHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2Vs
ZihwYXJlbnQsIG9jY2x1c2lvbik7CisKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKQEAgLTQxNiw4ICs1MDAsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFt
ZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0
c2VsZihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxm
KHBhcmVudCwgb2NjbHVzaW9uKTsKKwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOwpAQCAtNDY2LDggKzU1MSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1l
IFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRz
ZWxmKGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYo
cGFyZW50LCBvY2NsdXNpb24pOworCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAs
IDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygp
KTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwg
NTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7CkBAIC01MzIsOCArNjE4LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUg
VHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2Vs
ZihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzVGFyZ2V0KGNo
aWxkLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQw
LCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
ICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTU1NCw5ICs2NDAsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2
MCwgNzEpKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihjaGlsZCk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1
cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAg
ICAgICB0aGlzLT5lbnRlckxheWVyQXNDb250cmlidXRpbmcoY2hpbGQsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAt
NjI5LDIyICs3MTQsMjQgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6
OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTEwLCAtMTAs
IDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGNoaWxkMik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2Vs
ZihjaGlsZDIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIoY2hpbGQyLCBv
Y2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA2MCwg
MjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAy
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYo
bGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIobGF5ZXIsIG9jY2x1
c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBF
WFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5z
aXplKCkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKIAorICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQoY2hpbGQsIG9j
Y2x1c2lvbik7CisKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKICAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2
MCwgNzApKSk7CkBAIC02ODUsMTAgKzc3Miw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwg
NDMxLCA2MCwgNzApKS5pc0VtcHR5KCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQpOwotICAgICAgICAvLyB8Y2hpbGQyfCBzaG91
bGQgZ2V0IG1lcmdlZCB3aXRoIHRoZSBzdXJmYWNlIHdlIGFyZSBsZWF2aW5nIG5vdwotICAgICAg
ICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBjaGlsZC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgLy8gT2NjbHVzaW9uIGluIHxj
aGlsZDJ8IHNob3VsZCBnZXQgbWVyZ2VkIHdpdGggdGhlIHxjaGlsZHwgc3VyZmFjZSB3ZSBhcmUg
bGVhdmluZyBub3cuCisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0NvbnRyaWJ1dGluZyhjaGls
ZCwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKHBhcmVudCwg
b2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAs
IDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CkBAIC03NzgsOCArODY0LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIElu
dFJlY3QgY2xpcHBlZExheWVySW5DaGlsZCA9IGxheWVyVHJhbnNmb3JtLm1hcFJlY3QobGF5ZXIt
PnZpc2libGVMYXllclJlY3QoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFz
SXRzZWxmKGxheWVyLCBvY2NsdXNpb24pOworCisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc1Rh
cmdldChjaGlsZCwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwpAQCAtODA1LDkgKzg5Miw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIGNsaXBwZWRMYXll
ckluQ2hpbGQpLmlzRW1wdHkoKSk7CiAgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgw
LCAtMSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
KTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZCwg
Y2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVu
dGVyTGF5ZXJBc0NvbnRyaWJ1dGluZyhjaGlsZCwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+
ZW50ZXJMYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtODQxLDkgKzkyNyw5IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVz
OjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
ICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyKTsKLSAgICAgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMSk7CisgICAgICAgIHRoaXMt
PmVudGVyTGF5ZXJBc0l0c2VsZihsYXllcjIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVu
dGVyTGF5ZXJBc0l0c2VsZihsYXllcjEsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVy
TGF5ZXJBc1RhcmdldChjaGlsZCwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC04NjIsOSArOTQ4LDggQEAgcHJv
dGVjdGVkOgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDcwLCA0MzAsIDEsIDcwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMSwgNDMwLCA2
MCwgNzApKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDUwMCwgNjAsIDEp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzEs
IDYwLCA3MCkpKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
Y2hpbGQpOwotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhp
cy0+ZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKGNoaWxkLCBvY2NsdXNpb24pOworICAgICAgICB0
aGlzLT5lbnRlckxheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTkzMCw4ICsx
MDE1LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNj
aXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1
cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEw
MDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxk
Mi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyMik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihsYXllcjIs
IG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc1RhcmdldChjaGlsZDIsIG9j
Y2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwpAQCAtOTUyLDE1ICsxMDM3LDEzIEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzAs
IDgxKSkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0y
MCwgLTIwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGNoaWxkMik7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRl
clN1cmZhY2UoY2hpbGQyLCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
PmVudGVyTGF5ZXJBc0NvbnRyaWJ1dGluZyhjaGlsZDIsIG9jY2x1c2lvbik7CiAKICAgICAgICAg
Ly8gVGhlcmUgaXMgbm90aGluZyBhYm92ZSBjaGlsZDIncyBzdXJmYWNlIGluIHRoZSB6LW9yZGVy
LgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjaGlsZDIsIGZh
bHNlLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZh
Y2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEp
OworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYobGF5ZXIxLCBvY2NsdXNpb24pOwor
ICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQoY2hpbGQxLCBvY2NsdXNpb24pOwogCiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDJ1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAg
LTk3MywxMyArMTA1NiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDMwLCA4MSwgNzApKSk7CiAgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwg
NDMwLCA4MCwgNzEpKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGNoaWxkMSk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZh
Y2UoY2hpbGQxLCBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVy
TGF5ZXJBc0NvbnRyaWJ1dGluZyhjaGlsZDEsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8gY2hp
bGQyJ3MgY29udGVudHMgd2lsbCBvY2NsdWRlIGNoaWxkMSBiZWxvdyBpdC4KICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgMTAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQxLCBmYWxzZSwgSW50UmVjdCgt
MTAsIDQzMCwgODAsIDcwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVy
TGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtMTA0OSw4ICsxMTMxLDggQEAg
cHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTMwLCAtMzAsIDEwMDAsIDEwMDApKTsKIAot
ICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyMik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihsYXllcjIsIG9jY2x1c2lv
bik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihjaGlsZDIsIG9jY2x1c2lvbik7
CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwpAQCAtMTA2MywxNiArMTE0NSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7
CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0
KC0xMCwgNDIwLCA3MCwgODEpKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGNoaWxkMik7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRl
clN1cmZhY2UoY2hpbGQyLCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
PmVudGVyTGF5ZXJBc1RhcmdldChjaGlsZDIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVu
dGVyTGF5ZXJBc0NvbnRyaWJ1dGluZyhjaGlsZDIsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8g
VGhlcmUgaXMgbm90aGluZyBhYm92ZSBjaGlsZDIncyBzdXJmYWNlIGluIHRoZSB6LW9yZGVyLgog
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjaGlsZDIsIGZhbHNl
LCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMSk7
CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihsYXllcjEsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc1RhcmdldChjaGlsZDEsIG9jY2x1c2lvbik7CiAKICAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAt
MTA4NSwxNSArMTE2NSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMCwgLTE5LCA4MCwgOTApKSk7CiAgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMSwg
LTIwLCA4MCwgOTApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGNoaWxkMSk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZh
Y2UoY2hpbGQxLCBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVy
TGF5ZXJBc0NvbnRyaWJ1dGluZyhjaGlsZDEsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8gY2hp
bGQyJ3MgY29udGVudHMgd2lsbCBvY2NsdWRlIGNoaWxkMSBiZWxvdyBpdC4KICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQxLCBmYWxzZSwgSW50UmVjdCg0
MjAsIC0yMCwgODAsIDkwKSkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5MCwg
LTEwLCAxMCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250
ZW50UmVjdChjaGlsZDEsIGZhbHNlLCBJbnRSZWN0KDQyMCwgLTEwLCA4MCwgOTApKSk7CiAgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDIwLCAtMjAsIDcwLCAxMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNoaWxkMSwgZmFsc2UsIElu
dFJlY3QoNDIwLCAtMjAsIDcwLCA5MCkpKTsKIAotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlz
LT5lbnRlckxheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTExNDYsOCArMTIy
NSw4IEBAIHByb3RlY3RlZDoKIAogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwogICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogYmx1ckxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVy
KHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAs
IDUwMCksIHRydWUpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
b3BhY2l0eUxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFu
c2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwogICAg
ICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogb3BhcXVlTGF5ZXIgPSB0aGlz
LT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgz
MCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVz
OjpDb250ZW50TGF5ZXJUeXBlKiBvcGFjaXR5TGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5
ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUw
MCwgNTAwKSwgdHJ1ZSk7CiAKICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwogICAg
ICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKExlbmd0aCgxMCwgV2ViQ29yZTo6UGVyY2VudCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikp
OwpAQCAtMTE2NywyMiArMTI0NiwyMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAg
IC8vIE9wYWNpdHkgbGF5ZXIgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAgICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uob3BhY2l0eUxheWVyLT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3Bh
Y2l0eUxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFj
ZShvcGFjaXR5TGF5ZXIsIG9wYWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAg
dGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKG9wYWNpdHlMYXllciwgb2NjbHVzaW9uKTsKKyAgICAg
ICAgdGhpcy0+ZW50ZXJMYXllckFzVGFyZ2V0KG9wYWNpdHlMYXllciwgb2NjbHVzaW9uKTsKKyAg
ICAgICAgdGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKG9wYWNpdHlMYXllciwgb2NjbHVz
aW9uKTsKIAogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwogCiAgICAgICAgIC8vIEFuZCBoYXMgbm90
aGluZyB0byBjb250cmlidXRlIHRvIGl0cyBwYXJlbnQgc3VyZmFjZS4KLSAgICAgICAgb2NjbHVz
aW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgdGhpcy0+bGVhdmVMYXllcihvcGFjaXR5TGF5ZXIsIG9jY2x1c2lvbik7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0
eSgpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLmlzRW1wdHkoKSk7CiAKICAgICAgICAgLy8gT3BhcXVlIGxheWVyIHdpbGwgY29udHJp
YnV0ZSB0byBvY2NsdXNpb24uCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2Uob3BhcXVlTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihvcGFxdWVMYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXIsIG9wYXF1ZUxheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYob3BhcXVlTGF5
ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc1RhcmdldChvcGFxdWVM
YXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0aW5n
KG9wYXF1ZUxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTExOTAsMjUgKzEyNjksMjUgQEAgcHJvdGVj
dGVkOgogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKICAgICAgICAgLy8gQW5kIGl0IGdldHMgdHJhbnNs
YXRlZCB0byB0aGUgcGFyZW50IHN1cmZhY2UuCi0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
PmxlYXZlTGF5ZXIob3BhcXVlTGF5ZXIsIG9jY2x1c2lvbik7CiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAogICAgICAgICAvLyBUaGUg
Ymx1ciBsYXllciBuZWVkcyB0byB0aHJvdyBhd2F5IGFueSBvY2NsdXNpb24gZnJvbSBvdXRzaWRl
IGl0cyBzdWJ0cmVlLgotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KGJsdXJMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFz
SXRzZWxmKGJsdXJMYXllciwgb2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOwogICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKIAog
ICAgICAgICAvLyBBbmQgaXQgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihibHVyTGF5ZXIpOwotICAgICAgICBv
Y2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllciwgYmx1ckxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQoYmx1
ckxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNDb250cmlidXRp
bmcoYmx1ckxheWVyLCBvY2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwogCiAgICAg
ICAgIC8vIEJ1dCB0aGUgb3BhcXVlIGxheWVyJ3Mgb2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0
aGUgcGFyZW50LgotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNl
bGYocGFyZW50LCBvY2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOwpAQCAtMTIzMSwxNiArMTMxMCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBl
bmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5
ZXJBc0l0c2VsZihzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVy
QXNUYXJnZXQoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDAsIDEwMCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgMCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5maW5p
c2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgp
KTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0aW5n
KHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihw
YXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8gVGhlIHN1cmZhY2UgYW5kIHJlcGxpY2Eg
c2hvdWxkIGJvdGggYmUgb2NjbHVkaW5nIHRoZSBwYXJlbnQuCiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7CkBAIC0xMjYzLDE2ICsxMzQyLDE2IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVz
OjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7Ci0g
ICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKKyAgICAg
ICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAg
IHRoaXMtPmVudGVyTGF5ZXJBc1RhcmdldChzdXJmYWNlLCBvY2NsdXNpb24pOwogCiAgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMTAwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKLSAgICAg
ICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNl
LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxh
eWVyQXNDb250cmlidXRpbmcoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50
ZXJMYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBUaGUgc3Vy
ZmFjZSBhbmQgcmVwbGljYSBzaG91bGQgYm90aCBiZSBvY2NsdWRpbmcgdGhlIHBhcmVudC4KICAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAxMDAsIDEwMCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwpAQCAtMTI5NCw3ICsxMzczLDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8
dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1
c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CiAK
LSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVy
U3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKGxheWVyLCBvY2Ns
dXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CkBAIC0xMzA2LDgg
KzEzODUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIG9jY2x1
c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CiAK
LSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAg
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzVGFyZ2V0KGxheWVyLCBvY2NsdXNp
b24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNDb250cmlidXRpbmcobGF5ZXIsIG9jY2x1
c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lv
bik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwpAQCAtMTMzNyw3ICsx
NDE3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNj
aXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1
cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKICAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKGxheWVy
LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CkBAIC0x
MzQ5LDggKzE0MjksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0g
ICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc1RhcmdldChsYXllciwgb2Nj
bHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKGxheWVyLCBv
Y2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYocGFyZW50LCBvY2Ns
dXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKQEAgLTEzODAs
MTUgKzE0NjEsMTYgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
V2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAg
ICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShs
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxm
KGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgx
MDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAg
ICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAg
IHRoaXMtPmVudGVyTGF5ZXJBc0NvbnRyaWJ1dGluZyhsYXllciwgb2NjbHVzaW9uKTsKKyAgICAg
ICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKIAogICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CkBAIC0xNDE4LDE1ICsxNTAwLDE2IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7CiAgICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAg
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihsYXllciwgb2NjbHVzaW9u
KTsKIAogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkp
KTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJM
YXllckFzVGFyZ2V0KGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVy
QXNDb250cmlidXRpbmcobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5
ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOwpAQCAtMTQ1NiwxNSArMTUzOSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJU
eXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJl
Y3QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhp
cy0+ZW50ZXJMYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
KSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJl
Y3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQobGF5
ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0NvbnRyaWJ1dGluZyhs
YXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKHBhcmVu
dCwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CkBA
IC0xNDk4LDE1ICsxNTgyLDE2IEBAIHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5
cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoNTAsIDUwLCAyMDAsIDIw
MCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJ
dHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJ
bnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogCi0gICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9j
Y2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc1RhcmdldChsYXllciwgb2NjbHVzaW9uKTsK
KyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKGxheWVyLCBvY2NsdXNpb24p
OworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwog
CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKQEAgLTE1NDAsMTUgKzE2MjUs
MTYgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNz
b3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZh
Y2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7
CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKGxheWVyLCBv
Y2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEw
MCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIs
IEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
PmVudGVyTGF5ZXJBc1RhcmdldChsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50
ZXJMYXllckFzQ29udHJpYnV0aW5nKGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5l
bnRlckxheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKQEAgLTE1ODIsMTUgKzE2NjgsMTYgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24o
SW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc1Rhcmdl
dChsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0
aW5nKGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYo
cGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkp
KTsKQEAgLTE2MjIsNyArMTcwOSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGhpcy0+Y2FsY0Ry
YXdFdGMocGFyZW50KTsKIAogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNz
b3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZh
Y2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihsYXllciwgb2NjbHVzaW9uKTsKIAog
ICAgICAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBpbnRvIGl0cyB0
YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFyZ2V0IHN1cmZh
Y2UKICAgICAgICAgLy8gaXMgbm90IGluIHRoYXQgdGFyZ2V0IHNwYWNlLCB0aGVuIGFmdGVyIHRy
YW5zbGF0aW5nIHRoZXNlIHF1ZXJ5IHJlY3RzIGludG8gdGhlIHRhcmdldCwgdGhleSB3aWxsIGZh
bGwgb3V0c2lkZQpAQCAtMTY0Niw3ICsxNzMzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB0aGlz
LT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJX
aXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVu
ZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAg
ICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNp
b24pOwogCiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKQEAgLTE2NjEsOCAr
MTc0OCw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIG9jY2x1
c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwogCi0gICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRo
aXMtPmVudGVyTGF5ZXJBc1RhcmdldChsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+
ZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlz
LT5lbnRlckxheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkuaXNFbXB0
eSgpKTsKICAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTE2ODQsOCArMTc3Miw5IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgICAgIGxheWVyLT5zZXRP
cGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCi0gICAgICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
cik7CisgICAgICAgICAgICB0aGlzLT5yZXNldExheWVySXRlcmF0b3IoKTsKKyAgICAgICAgICAg
IHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgICAg
IHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwpAQCAtMTY5OSw4ICsxNzg4LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVu
YW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwogICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRS
ZWN0KDIwLCAyMCwgMTgwLCAxODApKTsKIAotICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICAgICAgdGhp
cy0+cmVzZXRMYXllckl0ZXJhdG9yKCk7CisgICAgICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJ
dHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJ
dHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEyMCwgMTIwLCAxODAsIDE4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOwogICAgICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTE3MTQsOCArMTgwNCw5
IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Np
c3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3Vy
ZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAg
ICAgIGxheWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgxNTAsIDE1MCwgMTAwLCAx
MDApKTsKIAotICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICAgICAgdGhpcy0+cmVzZXRMYXllckl0ZXJh
dG9yKCk7CisgICAgICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1
c2lvbik7CisgICAgICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYocGFyZW50LCBvY2Ns
dXNpb24pOwogCiAgICAgICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI1MCwgMjUwLCA1
MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAg
ICAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5yZWN0cygpLnNpemUoKSk7CkBAIC0xNzQzLDggKzE4MzQsOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKICAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5
cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCkpOwotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKGxheWVy
LCBvY2NsdXNpb24pOwogCisgICAgICAgIC8vIFRoZSBsYXllciBpcyByb3RhdGVkIGluIDNkIGJ1
dCB3aXRob3V0IHByZXNlcnZpbmcgM2QsIHNvIGl0IG9ubHkgZ2V0cyByZXNpemVkLgogICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChsYXllciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpKTsKICAgICB9
CiB9OwpAQCAtMTc2NiwxMCArMTg1OCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGUqIGNvbnRhaW5lciA9IHRoaXMtPmNyZWF0ZUxheWVyKHBhcmVudCwg
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
KTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNvbnRhaW5lciwgdHJhbnNmb3JtLCBGbG9hdFBvaW50KDEw
MCwgMTAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOwogICAgICAgICBjb250YWluZXItPnNl
dFByZXNlcnZlczNEKHRydWUpOworICAgICAgICBsYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7
CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKICAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVu
YW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxm
KGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwg
MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVyLCBJbnRS
ZWN0KDAsIDAsIDIwMCwgMjAwKSkpOwogICAgIH0KQEAgLTE3OTUsMTAgKzE4ODgsMTEgQEAgcHJv
dGVjdGVkOgogICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjb250YWluZXIgPSB0
aGlzLT5jcmVhdGVMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSk7CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250
ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjb250YWluZXIs
IHRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwog
ICAgICAgICBjb250YWluZXItPnNldFByZXNlcnZlczNEKHRydWUpOworICAgICAgICBsYXllci0+
c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7
CiAKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhp
cy0+ZW50ZXJMYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIC8vIFRo
ZSBib3R0b20gMTEgcGl4ZWwgcm93cyBvZiB0aGlzIGxheWVyIHJlbWFpbiB2aXNpYmxlIGluc2lk
ZSB0aGUgY29udGFpbmVyLCBhZnRlciB0cmFuc2xhdGlvbiB0byB0aGUgdGFyZ2V0IHN1cmZhY2Uu
IFdoZW4gdHJhbnNsYXRlZCBiYWNrLAogICAgICAgICAvLyB0aGlzIHdpbGwgaW5jbHVkZSBtYW55
IG1vcmUgcGl4ZWxzIGJ1dCBtdXN0IGluY2x1ZGUgYXQgbGVhc3QgdGhlIGJvdHRvbSAxMSByb3dz
LgpAQCAtMTgyMiwxMyArMTkxNiwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0
ZURyYXdpbmdMYXllcihwYXJlbnQsIHRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgxMDAsIDEwMCksIHRydWUpOwogICAgICAgICBwYXJlbnQtPnNldFByZXNlcnZlczNEKHRydWUp
OworICAgICAgICBsYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAgICAgICAgIHRoaXMtPmNh
bGNEcmF3RXRjKHBhcmVudCk7CiAKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhT
Y2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJT
dXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKIAotICAgICAgICAvLyBUaGlzIGxheWVyIGlzIGVudGlyZWx5IGJlaGluZCB0aGUgY2Ft
ZXJhIGFuZCBzaG91bGQgbm90IG9jY2x1ZGUuCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIC8vIFRoZSB8bGF5ZXJ8IGlzIGVudGlyZWx5
IGJlaGluZCB0aGUgY2FtZXJhIGFuZCBzaG91bGQgbm90IG9jY2x1ZGUuCisgICAgICAgIHRoaXMt
PmVudGVyTGF5ZXJBc0l0c2VsZihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50
ZXJMYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX0VRKDB1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
cmVjdHMoKS5zaXplKCkpOwogICAgIH0KQEAgLTE4NTAsMTQgKzE5NDUsMTUgQEAgcHJvdGVjdGVk
OgogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhp
cy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpOwogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0cmFuc2Zvcm0sIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsKICAgICAgICAgcGFyZW50
LT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKKyAgICAgICAgbGF5ZXItPnNldFByZXNlcnZlczNEKHRy
dWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCiAgICAgICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0
eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKICAgICAgICAgLy8gVGhpcyBpcyB2ZXJ5IGNs
b3NlIHRvIHRoZSBjYW1lcmEsIHNvIHBpeGVscyBpbiBpdHMgdmlzaWJsZUxheWVyUmVjdCB3aWxs
IGFjdHVhbGx5IGdvIG91dHNpZGUgb2YgdGhlIGxheWVyJ3MgY2xpcFJlY3QuCiAgICAgICAgIC8v
IEVuc3VyZSB0aGF0IHRob3NlIHBpeGVscyBkb24ndCBvY2NsdWRlIHRoaW5ncyBvdXRzaWRlIHRo
ZSBjbGlwUmVjdC4KLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNpb24p
OworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwog
ICAgICAgICBFWFBFQ1RfRVEoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAg
ICAgICAgRVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE4NzcsNiArMTk3Myw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2Ug
PSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CiAgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hpbGQgPSB0aGlzLT5jcmVh
dGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMjAwLCAzMDApLCB0cnVlKTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5
ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIHBhcmVudDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNl
KTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHRvcG1vc3QgPSB0
aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgyNTAsIDApLCBJbnRTaXplKDUwLCAzMDApLCB0cnVlKTsKIAogICAgICAgICBhZGRP
cGFjaXR5VHJhbnNpdGlvblRvQ29udHJvbGxlcigqbGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJv
bGxlcigpLCAxMCwgMCwgMSwgZmFsc2UpOwpAQCAtMTg4OSwyNiArMTk4NiwyNiBAQCBwcm90ZWN0
ZWQ6CiAKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIodG9wbW9zdCk7CisgICAgICAgIHRo
aXMtPmVudGVyTGF5ZXJBc0l0c2VsZih0b3Btb3N0LCBvY2NsdXNpb24pOworICAgICAgICB0aGlz
LT5lbnRlckxheWVyQXNJdHNlbGYocGFyZW50Miwgb2NjbHVzaW9uKTsKICAgICAgICAgLy8gVGhp
cyBvY2NsdXNpb24gd2lsbCBhZmZlY3QgYWxsIHN1cmZhY2VzLgotICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDAsIDAsIDI1MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudDIsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiAKLSAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxk
Mik7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAwLCAxNTAsIDMwMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZh
Y2VDaGlsZCk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihzdXJmYWNlQ2hpbGQy
LCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYoc3VyZmFjZUNo
aWxkLCBvY2NsdXNpb24pOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwg
MTUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2VDaGlsZCwg
SW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRz
ZWxmKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MjAwLCAwLCA1MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNl
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgMCwgMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0
UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAg
dGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAg
ICAgICAgLy8gT2NjbHVzaW9uIHdpdGhpbiB0aGUgc3VyZmFjZSBpcyBsb3N0IHdoZW4gbGVhdmlu
ZyB0aGUgYW5pbWF0aW5nIHN1cmZhY2UuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VD
b250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKIAot
ICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIpOwotICAgICAgICAvLyBPY2NsdXNpb24gaXMgbm90IGFkZGVkIGZvciB0aGUgYW5pbWF0
aW5nIGxheWVyLgorICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1
c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lv
bik7CisKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIG5vdCBhZGRlZCBmb3IgdGhlIGFuaW1hdGlu
ZyB8bGF5ZXJ8LgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDI1MCwgMzAw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwg
MzAwLCAzMDApKSk7CiAgICAgfQogfTsKQEAgLTE5MjUsNiArMjAyMiw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2UgPSB0aGlz
LT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CiAgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hpbGQgPSB0aGlzLT5jcmVhdGVEcmF3
aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMjAwLCAzMDApLCB0cnVlKTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoc3Vy
ZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAw
LCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUq
IHBhcmVudDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKICAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHRvcG1vc3QgPSB0aGlzLT5j
cmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgyNTAsIDApLCBJbnRTaXplKDUwLCAzMDApLCB0cnVlKTsKIAogICAgICAgICBhZGRPcGFjaXR5
VHJhbnNpdGlvblRvQ29udHJvbGxlcigqbGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigp
LCAxMCwgMSwgMCwgZmFsc2UpOwpAQCAtMTkzNywyNiArMjAzNSwyNiBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVz
OjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIodG9wbW9zdCk7CisgICAgICAgIHRoaXMtPmVu
dGVyTGF5ZXJBc0l0c2VsZih0b3Btb3N0LCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRl
ckxheWVyQXNJdHNlbGYocGFyZW50Miwgb2NjbHVzaW9uKTsKICAgICAgICAgLy8gVGhpcyBvY2Ns
dXNpb24gd2lsbCBhZmZlY3QgYWxsIHN1cmZhY2VzLgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDAsIDAsIDI1MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkMik7Ci0gICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAwLCAxNTAsIDMwMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsK
LSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZCk7
CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihzdXJmYWNlQ2hpbGQyLCBvY2NsdXNp
b24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYoc3VyZmFjZUNoaWxkLCBvY2Ns
dXNpb24pOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwgMTUwLCAzMDAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2VDaGlsZCwgSW50UmVjdCgw
LCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKHN1cmZh
Y2UsIG9jY2x1c2lvbik7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAwLCA1
MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoc3VyZmFjZSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwg
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAw
LCAzMDAsIDMwMCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5l
bnRlckxheWVyQXNUYXJnZXQoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50
ZXJMYXllckFzQ29udHJpYnV0aW5nKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8g
T2NjbHVzaW9uIHdpdGhpbiB0aGUgc3VyZmFjZSBpcyBsb3N0IHdoZW4gbGVhdmluZyB0aGUgYW5p
bWF0aW5nIHN1cmZhY2UuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjUw
LCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVj
dChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKIAotICAgICAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwot
ICAgICAgICAvLyBPY2NsdXNpb24gaXMgbm90IGFkZGVkIGZvciB0aGUgYW5pbWF0aW5nIGxheWVy
LgorICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CisKKyAg
ICAgICAgLy8gT2NjbHVzaW9uIGlzIG5vdCBhZGRlZCBmb3IgdGhlIGFuaW1hdGluZyB8bGF5ZXJ8
LgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDI1MCwgMzAwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDAp
KSk7CiAgICAgfQogfTsKQEAgLTE5OTIsMjIgKzIwOTAsMjEgQEAgcHJvdGVjdGVkOgogCiAgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHN1cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZTIpOwotICAgICAgICBvY2NsdXNpb24u
ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UyLCBzdXJmYWNlMi0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxm
KHN1cmZhY2UyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQo
c3VyZmFjZTIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0NvbnRyaWJ1
dGluZyhzdXJmYWNlMiwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDAsIDAsIDUwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
PmVudGVyTGF5ZXJBc0l0c2VsZihzdXJmYWNlQ2hpbGQyLCBvY2NsdXNpb24pOwogCi0gICAgICAg
IC8vIFRoZSBsYXllciBpcyBtb3ZpbmcgaW4gc2NyZWVuIHNwYWNlIGJ1dCBub3QgcmVsYXRpdmUg
dG8gaXRzIHRhcmdldCwgc28gb2NjbHVzaW9uIHNob3VsZCBoYXBwZW4gaW4gaXRzIHRhcmdldCBz
cGFjZSBvbmx5LgorICAgICAgICAvLyBzdXJmYWNlQ2hpbGQyIGlzIG1vdmluZyBpbiBzY3JlZW4g
c3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFyZ2V0LCBzbyBvY2NsdXNpb24gc2hvdWxk
IGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHkuCiAgICAgICAgIC8vIEl0IGFsc28gbWVh
bnMgdGhhdCB0aGluZ3Mgb2NjbHVkaW5nIGluIHNjcmVlbiBzcGFjZSAoZS5nLiBzdXJmYWNlMikg
Y2Fubm90IG9jY2x1ZGUgdGhpcyBsYXllci4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFj
ZUNoaWxkMiwgSW50UmVjdCgwLCAwLCAxMDAsIDMwMCkpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChzdXJmYWNlQ2hpbGQsIEludFJlY3QoMCwgMCwgNTAsIDMwMCkp
KTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNo
aWxkMik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihzdXJmYWNlQ2hpbGQsIG9j
Y2x1c2lvbik7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoc3VyZmFj
ZUNoaWxkLCBJbnRSZWN0KDAsIDAsIDEwMCwgMzAwKSkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDAsIDUwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTIwMTUsMzggKzIxMTIsMzkgQEAg
cHJvdGVjdGVkOgogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMTAwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
c3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKIAotICAgICAgICAvLyBUaGUgc3Vy
ZmFjZSBjaGlsZCBpcyBvY2NsdWRlZCBieSB0aGUgc3VyZmFjZUNoaWxkMiwgYnV0IGlzIG1vdmlu
ZyByZWxhdGl2ZSBpdHMgdGFyZ2V0IGFuZCB0aGUgc2NyZWVuLCBzbyBpdAorICAgICAgICAvLyBU
aGUgc3VyZmFjZUNoaWxkIGlzIG9jY2x1ZGVkIGJ5IHRoZSBzdXJmYWNlQ2hpbGQyLCBidXQgaXMg
bW92aW5nIHJlbGF0aXZlIGl0cyB0YXJnZXQgYW5kIHRoZSBzY3JlZW4sIHNvIGl0CiAgICAgICAg
IC8vIGNhbid0IGJlIG9jY2x1ZGVkLgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAs
IDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlQ2hp
bGQsIEludFJlY3QoMCwgMCwgMjAwLCAzMDApKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoc3VyZmFjZUNoaWxkLCBJbnRSZWN0KDAsIDAsIDUwLCAzMDApKSk7CiAK
LSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZCk7
Ci0gICAgICAgIC8vIFRoZSBsYXllciBpcyBtb3ZpbmcgaW4gc2NyZWVuIHNwYWNlIGJ1dCBub3Qg
cmVsYXRpdmUgdG8gaXRzIHRhcmdldCwgc28gb2NjbHVzaW9uIHNob3VsZCBoYXBwZW4gaW4gaXRz
IHRhcmdldCBzcGFjZSBvbmx5LgorICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYoc3Vy
ZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgLy8gVGhlIHN1cmZhY2VDaGlsZCBpcyBtb3Zpbmcg
aW4gc2NyZWVuIHNwYWNlIGJ1dCBub3QgcmVsYXRpdmUgdG8gaXRzIHRhcmdldCwgc28gb2NjbHVz
aW9uIHNob3VsZCBoYXBwZW4gaW4gaXRzIHRhcmdldCBzcGFjZSBvbmx5LgogICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDUwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwogCi0gICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKLSAgICAgICAg
Ly8gVGhlIGxheWVyIGlzIG1vdmluZyBpbiBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0
byBpdHMgdGFyZ2V0LCBzbyBvY2NsdXNpb24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNw
YWNlIG9ubHkuCisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsK
KyAgICAgICAgLy8gVGhlIHN1cmZhY2UncyBvd25pbmcgbGF5ZXIgaXMgbW92aW5nIGluIHNjcmVl
biBzcGFjZSBidXQgbm90IHJlbGF0aXZlIHRvIGl0cyB0YXJnZXQsIHNvIG9jY2x1c2lvbiBzaG91
bGQgaGFwcGVuIGluIGl0cyB0YXJnZXQgc3BhY2Ugb25seS4KICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCA1MCwgMzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
c3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKIAotICAgICAgICBvY2NsdXNpb24u
ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc1RhcmdldChzdXJmYWNlLCBvY2NsdXNp
b24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNDb250cmlidXRpbmcoc3VyZmFjZSwgb2Nj
bHVzaW9uKTsKIAogICAgICAgICAvLyBUaGUgY29udHJpYnV0aW5nIHxzdXJmYWNlfCBpcyBhbmlt
YXRpbmcgc28gaXQgY2FuJ3QgYmUgb2NjbHVkZWQuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1
cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkp
KTsKIAotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAvLyBUaGUgc3VyZmFjZSBpcyBtb3ZpbmcgaW4g
dGhlIHNjcmVlbiBhbmQgaW4gaXRzIHRhcmdldCwgc28gYWxsIG9jY2x1c2lvbiB3aXRoaW4gdGhl
IHN1cmZhY2UgaXMgbG9zdCB3aGVuIGxlYXZpbmcgaXQuCisgICAgICAgIHRoaXMtPmVudGVyTGF5
ZXJBc0l0c2VsZihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgLy8gVGhlIHxzdXJmYWNlfCBp
cyBtb3ZpbmcgaW4gdGhlIHNjcmVlbiBhbmQgaW4gaXRzIHRhcmdldCwgc28gYWxsIG9jY2x1c2lv
biB3aXRoaW4gdGhlIHN1cmZhY2UgaXMgbG9zdCB3aGVuIGxlYXZpbmcgaXQuCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDAsIDI1MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiAKLSAgICAg
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAgLy8g
VGhlIGxheWVyIGlzIGFuaW1hdGluZyBpbiB0aGUgc2NyZWVuIGFuZCBpbiBpdHMgdGFyZ2V0LCBz
byBubyBvY2NsdXNpb24gaXMgYWRkZWQuCisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2Vs
ZihwYXJlbnQsIG9jY2x1c2lvbik7CisgICAgICAgIC8vIFRoZSB8bGF5ZXJ8IGlzIGFuaW1hdGlu
ZyBpbiB0aGUgc2NyZWVuIGFuZCBpbiBpdHMgdGFyZ2V0LCBzbyBubyBvY2NsdXNpb24gaXMgYWRk
ZWQuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDAsIDI1MCwgMzAwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAz
MDApKSk7CiAgICAgfQogfTsKQEAgLTIwNzIsMTAgKzIxNzAsMTAgQEAgcHJvdGVjdGVkOgogCiAg
ICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZTIpOwotICAgICAgICBvY2NsdXNp
b24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UyLCBzdXJmYWNlMi0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNl
KHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRz
ZWxmKHN1cmZhY2UyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJn
ZXQoc3VyZmFjZTIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0NvbnRy
aWJ1dGluZyhzdXJmYWNlMiwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bGVhdmVMYXllcihz
dXJmYWNlMiwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUw
LCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTIwODYsMTAgKzIxODQsMTAgQEAgcHJvdGVjdGVk
OgogICAgICAgICBvY2NsdXNpb24uc2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZShSZWdpb24oKSk7
CiAgICAgICAgIG9jY2x1c2lvbi5zZXRPY2NsdXNpb25JblRhcmdldFN1cmZhY2UoUmVnaW9uKCkp
OwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKHN1cmZhY2UpOwotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJm
YWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihzdXJmYWNlLCBvY2NsdXNpb24pOworICAg
ICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAg
ICAgdGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKHN1cmZhY2UsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDQwMCwgNDAwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0yMTEyLDEw
ICsyMjEwLDEwIEBAIHByb3RlY3RlZDoKIAogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
V2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAK
LSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
c3VyZmFjZSk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uo
c3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAg
ICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAg
IHRoaXMtPmVudGVyTGF5ZXJBc1RhcmdldChzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0
aGlzLT5lbnRlckxheWVyQXNDb250cmlidXRpbmcoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAg
ICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKIAogICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDMwMCwgMjAwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0yMTQw
LDI0ICsyMjM4LDI1IEBAIHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tl
cldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpS
ZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwog
ICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKIAotICAgICAgICAvLyBUaGlzIG9jY2x1ZGVzIHRoZSByZXBsaWNhLCBidXQgbm90
IHRoZSBzdXJmYWNlIGl0c2VsZi4KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcih0b3Btb3N0KTsKKyAgICAgICAgLy8gfHRvcG1vc3R8IG9jY2x1
ZGVzIHRoZSByZXBsaWNhLCBidXQgbm90IHRoZSBzdXJmYWNlIGl0c2VsZi4KKyAgICAgICAgdGhp
cy0+ZW50ZXJMYXllckFzSXRzZWxmKHRvcG1vc3QsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMt
PmxlYXZlTGF5ZXIodG9wbW9zdCwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsK
LSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UpOworICAg
ICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAg
ICAgdGhpcy0+bGVhdmVMYXllcihzdXJmYWNlLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBv
Y2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc1RhcmdldChzdXJmYWNl
LCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNDb250cmlidXRpbmcoc3Vy
ZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBTdXJmYWNlIGlzIG5vdCBvY2NsdWRlZCBz
byBpdCBzaG91bGRuJ3QgdGhpbmsgaXQgaXMuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZh
Y2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsK
QEAgLTIxODAsMjQgKzIyNzksMjUgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUg
VHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIC8vIFRoaXMgb2NjbHVkZXMgdGhlIHN1cmZhY2Us
IGJ1dCBub3QgdGhlIGVudGlyZSBzdXJmYWNlJ3MgcmVwbGljYS4KLSAgICAgICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcih0b3Btb3N0KTsKKyAgICAgICAg
Ly8gfHRvcG1vc3R8IG9jY2x1ZGVzIHRoZSBzdXJmYWNlLCBidXQgbm90IHRoZSBlbnRpcmUgc3Vy
ZmFjZSdzIHJlcGxpY2EuCisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZih0b3Btb3N0
LCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5sZWF2ZUxheWVyKHRvcG1vc3QsIG9jY2x1c2lv
bik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDExMCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMTEwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3Vy
ZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKHN1cmZhY2UpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYoc3Vy
ZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bGVhdmVMYXllcihzdXJmYWNlLCBvY2Ns
dXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAxMTAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJm
YWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVu
dGVyTGF5ZXJBc1RhcmdldChzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRl
ckxheWVyQXNDb250cmlidXRpbmcoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBT
dXJmYWNlIGlzIG9jY2x1ZGVkLCBidXQgb25seSB0aGUgdG9wIDEwcHggb2YgdGhlIHJlcGxpY2Eu
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UsIGZhbHNlLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwpAQCAtMjIyMywyNCArMjMyMywyNSBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOwogCiAgICAgICAgIC8vIFRoZXNlIG9jY2x1ZGUgdGhlIHN1cmZhY2UgYW5k
IHJlcGxpY2EgZGlmZmVyZW50bHksIHNvIHdlIGNhbiB0ZXN0IGVhY2ggb25lLgotICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG92ZXJSZXBsaWNh
KTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG92ZXJTdXJmYWNl
KTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKG92ZXJSZXBsaWNhLCBvY2NsdXNp
b24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYob3ZlclN1cmZhY2UsIG9jY2x1
c2lvbik7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIob3ZlclN1cmZhY2UsIG9jY2x1c2lvbik7
CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA1MCwgMjAwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDIwMCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2Ut
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihzdXJmYWNlKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzSXRzZWxmKHN1cmZhY2Us
IG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9u
KTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShz
dXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxh
eWVyQXNUYXJnZXQoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXll
ckFzQ29udHJpYnV0aW5nKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8gU3VyZmFj
ZSBhbmQgcmVwbGljYSBhcmUgb2NjbHVkZWQgZGlmZmVyZW50IGFtb3VudHMuCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNDAsIDAsIDYwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKQEAgLTIyNjUsMTggKzIzNjYsMTcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJ
bnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICAvLyBUaGlzIG9jY2x1
ZGVzIGV2ZXJ5dGhpbmcgcGFydGlhbGx5IHNvIHdlIGtub3cgb2NjbHVzaW9uIGlzIGhhcHBlbmlu
ZyBhdCBhbGwuCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIodG9wbW9zdCk7CisgICAgICAgIC8vIHx0b3Btb3N0fCBvY2NsdWRlcyBldmVyeXRo
aW5nIHBhcnRpYWxseSBzbyB3ZSBrbm93IG9jY2x1c2lvbiBpcyBoYXBwZW5pbmcgYXQgYWxsLgor
ICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNlbGYodG9wbW9zdCwgb2NjbHVzaW9uKTsKKyAg
ICAgICAgdGhpcy0+bGVhdmVMYXllcih0b3Btb3N0LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKLSAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlQ2hpbGQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1
cmZhY2VDaGlsZCk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2VsZihzdXJmYWNlQ2hp
bGQsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIoc3VyZmFjZUNoaWxkLCBv
Y2NsdXNpb24pOwogCiAgICAgICAgIC8vIHN1cmZhY2VDaGlsZCBpbmNyZWFzZXMgdGhlIG9jY2x1
c2lvbiBpbiB0aGUgc2NyZWVuIGJ5IGEgbmFycm93IHNsaXZlci4KICAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0yMjg5LDIxICsyMzg5LDIxIEBAIHByb3RlY3RlZDoKICAg
ICAgICAgLy8gbWFzayB0byBib3VuZHMsIHNvIGl0IGRvZXNuJ3QgaGF2ZSBhIGNsaXBSZWN0IG9m
IGl0cyBvd24uIFRodXMgdGhlIHBhcmVudCBvZiB8c3VyZmFjZUNoaWxkfCBleGVyY2lzZXMgZGlm
ZmVyZW50IGNvZGUgcGF0aHMKICAgICAgICAgLy8gYXMgaXRzIHBhcmVudCBkb2VzIG5vdCBoYXZl
IGEgY2xpcFJlY3QuCiAKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShzdXJmYWNlQ2hpbGQsIHN1cmZhY2VDaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAg
ICAgdGhpcy0+ZW50ZXJMYXllckFzVGFyZ2V0KHN1cmZhY2VDaGlsZCwgb2NjbHVzaW9uKTsKKyAg
ICAgICAgdGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0aW5nKHN1cmZhY2VDaGlsZCwgb2NjbHVz
aW9uKTsKICAgICAgICAgLy8gVGhlIHN1cmZhY2VDaGlsZCdzIHBhcmVudCBkb2VzIG5vdCBoYXZl
IGEgY2xpcFJlY3QgYXMgaXQgb3ducyBhIHJlbmRlciBzdXJmYWNlLiBNYWtlIHN1cmUgdGhlIHVu
b2NjbHVkZWQgcmVjdAogICAgICAgICAvLyBkb2VzIG5vdCBnZXQgY2xpcHBlZCBhd2F5IGluYXBw
cm9wcmlhdGVseS4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCA0MCwgMTAwLCAx
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1
cmZhY2VDaGlsZCwgZmFsc2UsIEludFJlY3QoMCwgMCwgMTAwLCA1MCkpKTsKIAogICAgICAgICAv
LyBXaGVuIHRoZSBzdXJmYWNlQ2hpbGQncyBvY2NsdXNpb24gaXMgdHJhbnNmb3JtZWQgdXAgdG8g
aXRzIHBhcmVudCwgbWFrZSBzdXJlIGl0IGlzIG5vdCBjbGlwcGVkIGF3YXkgaW5hcHByb3ByaWF0
ZWx5IGFsc28uCi0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShz
dXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNJdHNl
bGYoc3VyZmFjZSwgb2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAxMDAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwg
MTAsIDEwMCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKHN1cmZhY2UpOwotCi0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdl
dFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAg
ICAgdGhpcy0+ZW50ZXJMYXllckFzVGFyZ2V0KHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAg
IHRoaXMtPmVudGVyTGF5ZXJBc0NvbnRyaWJ1dGluZyhzdXJmYWNlLCBvY2NsdXNpb24pOwogICAg
ICAgICAvLyBUaGUgc3VyZmFjZSdzIHBhcmVudCBkb2VzIGhhdmUgYSBjbGlwUmVjdCBhcyBpdCBp
cyB0aGUgcm9vdCBsYXllci4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCA1MCwg
MTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRS
ZWN0KHN1cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgIH0KQEAg
LTIzMjcsMTggKzI0MjcsMTggQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlw
ZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOwogCi0gICAgICAgIC8vIFRoaXMgb2NjbHVkZXMgZXZlcnl0aGluZyBwYXJ0
aWFsbHkgc28gd2Uga25vdyBvY2NsdXNpb24gaXMgaGFwcGVuaW5nIGF0IGFsbC4KLSAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcih0b3Btb3N0KTsK
KyAgICAgICAgLy8gfHRvcG1vc3R8IG9jY2x1ZGVzIGV2ZXJ5dGhpbmcgcGFydGlhbGx5IHNvIHdl
IGtub3cgb2NjbHVzaW9uIGlzIGhhcHBlbmluZyBhdCBhbGwuCisgICAgICAgIHRoaXMtPmVudGVy
TGF5ZXJBc0l0c2VsZih0b3Btb3N0LCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5sZWF2ZUxh
eWVyKHRvcG1vc3QsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCA4MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCA4MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShzdXJmYWNlQ2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIC8v
IHN1cmZhY2VDaGlsZCBpcyBub3Qgb3BhcXVlIGFuZCBkb2VzIG5vdCBvY2NsdWRlLCBzbyB3ZSBo
YXZlIGEgbm9uLWVtcHR5IHVub2NjbHVkZWQgYXJlYSBvbiBzdXJmYWNlLgotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkKTsKKyAgICAgICAgdGhp
cy0+ZW50ZXJMYXllckFzSXRzZWxmKHN1cmZhY2VDaGlsZCwgb2NjbHVzaW9uKTsKKyAgICAgICAg
dGhpcy0+bGVhdmVMYXllcihzdXJmYWNlQ2hpbGQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA4MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTIzNDksMTQgKzI0
NDksMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICAvLyBtYXNrIHRvIGJvdW5kcywgc28gaXQgZG9l
c24ndCBoYXZlIGEgY2xpcFJlY3Qgb2YgaXRzIG93bi4gVGh1cyB0aGUgcGFyZW50IG9mIHxzdXJm
YWNlQ2hpbGR8IGV4ZXJjaXNlcyBkaWZmZXJlbnQgY29kZSBwYXRocwogICAgICAgICAvLyBhcyBp
dHMgcGFyZW50IGRvZXMgbm90IGhhdmUgYSBjbGlwUmVjdC4KIAotICAgICAgICBvY2NsdXNpb24u
ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2VDaGlsZCwgc3VyZmFjZUNoaWxkLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQoc3VyZmFj
ZUNoaWxkLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNDb250cmlidXRp
bmcoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBUaGUgc3VyZmFjZUNoaWxk
J3MgcGFyZW50IGRvZXMgbm90IGhhdmUgYSBjbGlwUmVjdCBhcyBpdCBvd25zIGEgcmVuZGVyIHN1
cmZhY2UuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNTAsIDgwLCA1MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2VD
aGlsZCwgZmFsc2UsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAKLSAgICAgICAgb2NjbHVz
aW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7
Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKLQot
ICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1
cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXJBc0l0c2Vs
ZihzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyQXNUYXJnZXQo
c3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllckFzQ29udHJpYnV0
aW5nKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAgICAgICAgIC8vIFRoZSBzdXJmYWNlJ3MgcGFyZW50
IGRvZXMgaGF2ZSBhIGNsaXBSZWN0IGFzIGl0IGlzIHRoZSByb290IGxheWVyLgogICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDUwLCA4MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCAzYmEwYTFkZDI0MzUxOTI3ODBlNDc4YzAz
ZmZlYjY1Y2M3ZWIyMjY5Li45OTFjZGRjNDY0YWIyNzE0NDBiYjc1Y2ZlODkxMTM0N2U2ZGMxZjcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVz
dC5jcHAKQEAgLTUzLDcgKzUzLDkgQEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IG1fc2Npc3NvclJl
Y3RJblNjcmVlbjsKIH07CiAKLXN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IG1h
a2VMYXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGZsb2F0IG9wYWNp
dHksIGJvb2wgb3BhcXVlLCBjb25zdCBJbnRSZWN0JiBsYXllck9wYXF1ZVJlY3QpCit0eXBlZGVm
IENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVu
ZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJ
dGVyYXRvclR5cGU7CisKK3N0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IG1ha2VM
YXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGZsb2F0IG9wYWNpdHks
IGJvb2wgb3BhcXVlLCBjb25zdCBJbnRSZWN0JiBsYXllck9wYXF1ZVJlY3QsIFZlY3RvcjxDQ0xh
eWVySW1wbCo+JiBzdXJmYWNlTGF5ZXJMaXN0KQogewogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllciA9IENDVGlsZWRMYXllckltcGw6OmNyZWF0ZSgwKTsKICAgICBPd25QdHI8Q0NM
YXllclRpbGluZ0RhdGE+IHRpbGVyID0gQ0NMYXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXpl
KDEwMCwgMTAwKSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKQEAgLTc2LDI1
ICs3OCwzMyBAQCBzdGF0aWMgUGFzc093blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBtYWtlTGF5ZXIo
Q0NUaWxlZExheWVySW1wbCogcGFyZW50LCBjb25zdCBUcgogICAgIGlmICghcGFyZW50KSB7CiAg
ICAgICAgIGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIGxheWVyLT5zZXRU
YXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIH0gZWxzZQor
ICAgICAgICBzdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChsYXllci5nZXQoKSk7CisgICAgICAgIGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpLmFwcGVuZChsYXllci5nZXQoKSk7Cisg
ICAgfSBlbHNlIHsKICAgICAgICAgbGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KS0+bGF5ZXJMaXN0KCkuYXBwZW5kKGxheWVyLmdldCgpKTsKKyAgICB9CiAKICAgICByZXR1cm4g
bGF5ZXIucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0
JiBxdWFkTGlzdCwgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiYgc2hhcmVkU3Rh
dGVMaXN0LCBDQ1RpbGVkTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYg
b2NjbHVzaW9uVHJhY2tlcikKK3N0YXRpYyB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1
YWRMaXN0LCBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+JiBzaGFyZWRTdGF0ZUxp
c3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ0xheWVySXRlcmF0b3JUeXBlJiBpdCwgQ0NP
Y2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKIHsKKyAgICBvY2NsdXNpb25U
cmFja2VyLmVudGVyTGF5ZXIoaXQpOwogICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRM
aXN0LCBsYXllciwgJm9jY2x1c2lvblRyYWNrZXIpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwog
ICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CiAgICAgbGF5ZXItPmFwcGVuZFF1YWRz
KHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAg
ICBzaGFyZWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOworICAg
IG9jY2x1c2lvblRyYWNrZXIubGVhdmVMYXllcihpdCk7CisgICAgKytpdDsKIH0KIAogI2RlZmlu
ZSBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAgICAgICBcCiAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7ICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICBDQ1F1YWRMaXN0IHF1YWRMaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4gc2hhcmVkU3RhdGVMaXN0OyBc
CisgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsgICAgICAg
IFwKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsgICAgICAgICAgICAg
ICAgXAogICAgIEludFNpemUgcm9vdFNpemUgPSBJbnRTaXplKDMwMCwgMzAwKTsgICAgICAgICAg
ICAgICBcCiAgICAgSW50UmVjdCByb290UmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgcm9vdFNp
emUpOyAgIFwKQEAgLTEwNSwxNiArMTE1LDE2IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVy
aWZ5Tm9DdWxsaW5nKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwog
Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwot
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RM
YXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUs
IEludFJlY3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1h
a2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJ
bnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBJbnRSZWN0KCksIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lv
blRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9u
VHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpi
ZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlz
dCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsK
LSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0
KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRT
dGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0
LCBvY2NsdXNpb25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3Up
OwotICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4
ZWxzRHJhd25PcGFxdWUoKSwgMTMwMDAwLCAxKTsKLSAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25U
cmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7
CisgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhl
bHNEcmF3bk9wYXF1ZSgpLCA5MDAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJh
Y2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDQwMDAwLCAx
KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc0N1bGxlZEZvckRyYXdpbmcoKSwgMCwgMSk7CiB9CiAKQEAgLTEyMiwxNCArMTMyLDEzIEBA
IFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcFRvcExlZnQpCiB7
CiAgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCiAKLSAgICBPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7Ci0gICAgT3duUHRyPENDVGls
ZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5
ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBj
aGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3Qo
LTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlz
dCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJh
Y2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1
c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3Qs
IGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFk
cyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNp
b25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CiAgICAgRVhQ
RUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9w
YXF1ZSgpLCA5MDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVy
ZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtMTQwLDE0
ICsxNDksMTMgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3Bh
Y2l0eU5vdE9uZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAot
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEsIHRydWUsIEludFJlY3QoKSk7Ci0gICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVy
LmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAwLjlmLCB0cnVlLCBJbnRSZWN0KCkp
OworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwg
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEsIHRydWUsIEludFJlY3QoKSwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxk
TGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRS
ZWN0LCAwLjlmLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAw
LCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVy
YXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBj
aGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2Vy
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1
YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9u
VHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hp
bGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1
YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRy
YWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CiAgICAgRVhQRUNU
X05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1
ZSgpLCA5MDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJh
d01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDQwMDAwLCAxKTsKQEAgLTE1OCwx
NCArMTY2LDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFdoZW5DaGlsZE9w
YXF1ZUZsYWdGYWxzZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMK
IAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwg
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsK
LSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290
TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgZmFsc2UsIEludFJl
Y3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXll
cigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0
KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0s
IGNoaWxkUmVjdCwgMS4wLCBmYWxzZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJl
Y3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xh
eWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRl
TGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9u
VHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9j
Y2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxp
c3QsIGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRR
dWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2Ns
dXNpb25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogICAg
IEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJh
d25PcGFxdWUoKSwgOTAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIu
b3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCA0MDAwMCwgMSk7CkBA
IC0xNzgsMTQgKzE4NSwxMyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50
ZXJUaWxlT25seSkKIAogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogCi0g
ICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXll
ci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkp
OworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwg
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hp
bGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGls
ZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEw
MCwgLTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRl
cmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VM
YXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwg
Y2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tl
ci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRR
dWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lv
blRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNo
aWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25U
cmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogCiAgICAgSW50
UmVjdCBxdWFkVmlzaWJsZVJlY3QxID0gcXVhZExpc3RbNV0uZ2V0KCktPnF1YWRWaXNpYmxlUmVj
dCgpOwpAQCAtMjIyLDE0ICsyMjgsMTMgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlD
dWxsQ2VudGVyVGlsZU5vbkludGVncmFsU2l6ZTEpCiAKICAgICByb290UmVjdCA9IGNoaWxkUmVj
dCA9IEludFJlY3QoMCwgMCwgMTAwLCAxMDApOwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllcklt
cGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCByb290VHJhbnNmb3JtLCByb290UmVjdCwgMS4w
LCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExh
eWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVj
dCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBy
b290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgcm9vdFRyYW5zZm9ybSwgcm9vdFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxk
VHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFj
a2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNr
ZXIuZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4o
JnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNo
YXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAg
b2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgp
KTsKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIu
Z2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFy
ZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAg
ICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCks
IGl0LCBvY2NsdXNpb25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAy
dSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygp
LnBpeGVsc0RyYXduT3BhcXVlKCksIDIwMzYzLCAxKTsKQEAgLTI1MSwxNCArMjU2LDEzIEBAIFRF
U1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVOb25JbnRlZ3JhbFNpemUy
KQogCiAgICAgcm9vdFJlY3QgPSBjaGlsZFJlY3QgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKTsK
IAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwg
cm9vdFRyYW5zZm9ybSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKLSAgICBPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0
KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIHJvb3RU
cmFuc2Zvcm0sIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtl
TGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRy
dWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAs
IDEwMDApKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShy
b290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9
IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAot
ICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0
KCksIG9jY2x1c2lvblRyYWNrZXIpOwotICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3Qs
IHNoYXJlZFN0YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAg
ICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgp
LCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJl
ZFN0YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CiAgICAg
RVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMnUpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVz
aW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAxOTY0Mywg
MSk7CkBAIC0yNzIsMTQgKzI3NiwxMyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1
bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkKIAogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0
ZSgxMDAsIDEwMCk7CiAKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0g
bWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUs
IEludFJlY3QoKSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBt
YWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAs
IHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXll
ciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0
cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hp
bGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRy
YWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJh
Y2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdp
bigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAg
ICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0
KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXll
ci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNo
YXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwor
ICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQo
KSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCks
IDl1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygp
LnBpeGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNp
b25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwg
MSk7CkBAIC0yOTIsMTUgKzI5NSwxNCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1
bGxTdWJSZWdpb24pCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKIAot
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CiAgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0
LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5o
ZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8g
Mik7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIo
cm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBj
aGlsZE9wYXF1ZVJlY3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVy
ID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwg
MS4wLCBmYWxzZSwgY2hpbGRPcGFxdWVSZWN0LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEw
MCwgLTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRl
cmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VM
YXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwg
Y2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tl
ci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRR
dWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lv
blRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNo
aWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25U
cmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogICAgIEVYUEVD
VF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFx
dWUoKSwgOTAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRy
YXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAzMDAwMCwgMSk7CkBAIC0zMTMs
MTUgKzMxNSwxNCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24y
KQogCiAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCAxMCk7CiAKLSAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRyPEND
VGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOwogICAgIEludFJlY3QgY2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGls
ZFJlY3Qud2lkdGgoKSAvIDQsIGNoaWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0
LCBjaGlsZFJlY3Qud2lkdGgoKSAvIDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAqIDMgLyA0KTsKLSAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5
ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgZmFsc2UsIGNoaWxkT3Bh
cXVlUmVjdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtl
TGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZh
bHNlLCBjaGlsZE9wYXF1ZVJlY3QsIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAw
LCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5
cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExh
eWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1
YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tl
cik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXll
ci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0
LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIp
OwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEydSk7CiAgICAgRVhQRUNUX05FQVIo
b2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCA5
MDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJp
Y3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDI1MDAwLCAxKTsKQEAgLTMzNCwxNSArMzM1
LDE0IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbkNoZWNrT3Zl
cmN1bGwpCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDQ5KTsKIAotICAgIE93
blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0
aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCk7CiAgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSAr
IGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQo
KSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8gMik7Ci0g
ICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExh
eWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBjaGlsZE9w
YXF1ZVJlY3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFr
ZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCBm
YWxzZSwgY2hpbGRPcGFxdWVSZWN0LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEw
MCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRlcmF0b3JU
eXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNr
ZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5
ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlz
dCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2Vy
KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogICAgIEVYUEVDVF9ORUFS
KG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwg
OTAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRy
aWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAzMDAwMCwgMSk7CkBAIC0zNTYsMTQgKzM1
NiwxMyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4aXNBbGlnbmVkUXVhZHNE
b250T2NjbHVkZSkKICAgICAvLyBVc2UgYSBzbWFsbCByb3RhdGlvbiBzbyBhcyB0byBub3QgZGlz
dHVyYiB0aGUgZ2VvbWV0cnkgc2lnbmlmaWNhbnRseS4KICAgICBjaGlsZFRyYW5zZm9ybS5yb3Rh
dGUoMSk7CiAKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxh
eWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJl
Y3QoKSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5
ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRydWUs
IEludFJlY3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1h
a2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJ
bnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFu
c2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIo
SW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAg
IENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVk
U3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2Ns
dXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwot
ICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQo
KSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0
YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFw
cGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQs
IG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhl
bHNEcmF3bk9wYXF1ZSgpLCAxMzAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRy
YWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAwLCAxKTsK
QEAgLTM4MywxNCArMzgyLDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhp
c0FsaWduZWRRdWFkc1NhZmVseUN1bGxlZCkKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJl
bnRUcmFuc2Zvcm07CiAgICAgcGFyZW50VHJhbnNmb3JtLnJvdGF0ZSgxKTsKIAotICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgcGFyZW50VHJhbnNm
b3JtLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVk
TGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBwYXJlbnRU
cmFuc2Zvcm0sIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtl
TGF5ZXIocm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3Qs
IDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEw
MCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRlcmF0b3JU
eXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNr
ZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5
ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlz
dCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2Vy
KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogICAgIEVYUEVDVF9ORUFS
KG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwg
MTAwNjAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0
cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00MDEsMTQgKzM5OSwx
MyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJU
aWxlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3du
UHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQo
KSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3Qo
KSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigw
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCks
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJ
bnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xh
eWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRl
TGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9u
VHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9j
Y2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxp
c3QsIGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRR
dWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2Ns
dXNpb25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxdSk7CiAgICAg
RVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3
bk9wYXF1ZSgpLCAxMDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtNDE5
LDE0ICs0MTYsMTMgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNj
aXNzb3JPdmVyQ3VsbGVkVGlsZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1Rf
UVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5
ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVj
dCgpKTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXll
cihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4w
LCB0cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5
ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwg
dHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9j
Y2x1c2lvblRyYWNrZXIoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKLSAgICBvY2NsdXNp
b25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShyb290TGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6
OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAotICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIp
OwotICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRMYXll
ci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9v
dExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlz
dCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tl
cik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExheWVy
LmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNp
emUoKSwgMXUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRy
aWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMTAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9j
Y2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgp
LCAwLCAxKTsKQEAgLTQzNywxNCArNDMzLDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVy
aWZ5Q3VsbE91dHNpZGVTY2lzc29yT3ZlclBhcnRpYWxUaWxlcykKIHsKICAgICBERUNMQVJFX0FO
RF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBy
b290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3Qs
IDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hp
bGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVk
TGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihy
b290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0
cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAw
KSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xh
eWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBv
Y2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFy
ZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBw
ZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQs
IG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0
ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVD
VF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFj
a2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDQwMDAwLCAxKTsKICAg
ICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0Ry
YXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00NTUsMTQgKzQ1MCwxMyBAQCBURVNUKENDUXVh
ZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJOb1RpbGVzKQogewogICAg
IERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRM
YXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3du
UHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0g
bWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRS
ZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDUwMCwg
NTAwLCAxMDAsIDEwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRlcmF0b3JU
eXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNr
ZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5
ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlz
dCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2Vy
KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAwdSk7CiAgICAgRVhQRUNUX05FQVIo
b2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAw
LCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygp
LnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00NzMsMTQgKzQ2NywxMyBAQCBU
RVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeVdpdGhvdXRNZXRyaWNzKQogewogICAgIERFQ0xB
UkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllcklt
cGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290
UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRyPEND
VGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxh
eWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAx
LjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDUwLCA1MCwgMjAw
LCAyMDApLCBmYWxzZSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5
cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExh
eWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1
YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tl
cik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXll
ci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0
LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIp
OwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKICAgICBFWFBFQ1RfTkVBUihv
Y2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDAs
IDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCku
cGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAwLCAxKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137779</attachid>
            <date>2012-04-18 15:04:53 -0700</date>
            <delta_ts>2012-04-18 17:06:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84088-20120418180450.patch</filename>
            <type>text/plain</type>
            <size>122922</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U1NjdjNmQ5NTkwNWQx
ZTEyYzc0YmMxZjQ0NDY1ZGEzNjI5NDE0MC4uMDQ5YTM3YWQ4NTQzZTU5MzQxNDdlMjY0MDcyNGVm
NWRhMzY5ZWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA0LTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2lt
cGxpZnkgb2NjbHVzaW9uIHRyYWNrZXIgQVBJIGJ5IHBhc3NpbmcgbGF5ZXIgaXRlcmF0b3IgZGF0
YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwODgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91
c2x5IHRocmVlIG1ldGhvZHMgbGl2ZWQgaW4gdGhlIEFQSSBhbmQgeW91IG5lZWRlZCB0byBjYWxs
IHRoZQorICAgICAgICBhcHByb3ByaWF0ZSBtZXRob2QgKHdpdGggZGlmZmVyZW50IGFtb3VudHMg
b2YgZGF0YSkgZGVwZW5kaW5nIG9uIHdoYXQKKyAgICAgICAgdGhlIGN1cnJlbnQgbGF5ZXIgaXRl
cmF0b3Igd2FzIHJlcHJlc2VudGluZy4KKworICAgICAgICBUaGlzIG1ha2VzIHVzYWdlIG9mIHRo
ZSBvY2NsdXNpb24gdHJhY2tlciBzaW1wbGVyIHRvIHJlYWQgYW5kIGhhcmRlcgorICAgICAgICB0
byBtZXNzIHVwLCBieSBqdXN0IHBhc3NpbmcgaW4gdGhlIGxheWVyIGl0ZXJhdG9yIGF0IGVhY2gg
c3RlcCBvZiB0aGUKKyAgICAgICAgaXRlcmF0aW9uIHByb2Nlc3MuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
Q0xheWVySXRlcmF0b3JQb3NpdGlvbik6CisgICAgICAgIChDQ0xheWVySXRlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpvcGVyYXRvciBjb25zdCBDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGU+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVGlsaW5nRGF0YTo6b3BhcXVlUmVnaW9uSW5MYXllclJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNz
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmVudGVyTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjo6OmxlYXZlTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oOgorICAgICAg
ICAoQ0NPY2NsdXNpb25UcmFja2VyQmFzZSk6CisKIDIwMTItMDQtMTcgIERhdmlkIFJldmVtYW4g
IDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBUZXh0dXJl
VXBsb2FkZXIgd2hpY2ggYWxsb3dzIHVzIHRvIHVzZSBwZXJzaXN0ZW50IEdDM0Qgc3RhdGUgZm9y
IHRleHR1cmUgdXBsb2Fkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzA0YmFkNjRh
YzIxYTBiNjZhMDRmNjBmODdiYTE0MWY2NzgzMzA4Mi4uODkzODc1YWMzYzA0MjAzMTliOTEyMzVl
YjZhOTQzYTc4ODkyZDg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
NiBAQAorMjAxMi0wNC0xNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIFNpbXBsaWZ5IG9jY2x1c2lvbiB0cmFja2VyIEFQSSBieSBwYXNz
aW5nIGxheWVyIGl0ZXJhdG9yIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0MDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcDoKKyAgICAg
ICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RNYWluVGhyZWFkVHlwZXMpOgorICAgICAgICAoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdEltcGxUaHJlYWRUeXBlcyk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdCk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Y2FsY0RyYXdFdGMpOgor
ICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6bW92ZVRvTGF5ZXJBc0l0c2VsZik6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6bW92ZVRvTGF5ZXJBc1RhcmdldCk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6bW92ZVRvTGF5
ZXJBc0NvbnRyaWJ1dGluZyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdDo6ZmluaXNoV2l0aExheWVyKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1
c2lvblRyYWNrZXJUZXN0OjpyZXNldExheWVySXRlcmF0b3IpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6Om1vdmVUb0xheWVyKToKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0SWRlbnRpdHlUcmFuc2Zvcm1zOjpydW5NeVRl
c3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVk
Q2hpbGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdFRyYW5zbGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q2hpbGRJblJvdGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0VmlzaXRUYXJnZXRU
d29UaW1lczo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRy
YWNrZXJUZXN0U3VyZmFjZVJvdGF0ZWRPZmZBeGlzOjpydW5NeVRlc3QpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlV2l0aFR3b09wYXF1ZUNoaWxk
cmVuOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tl
clRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5nczo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGlu
Z3NXaXRoVHdvVHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpD
Q09jY2x1c2lvblRyYWNrZXJUZXN0RmlsdGVyczo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0UmVwbGljYURvZXNPY2NsdWRlOjpydW5NeVRl
c3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RSZXBsaWNh
V2l0aENsaXBwaW5nOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkOjpydW5NeVRlc3QpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29y
UmVjdE91dHNpZGVDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJDaGlsZDo6cnVuTXlUZXN0KToK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3Nv
clJlY3RPdmVyQ2hpbGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2Ns
dXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQ6OnJ1bk15VGVz
dCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNj
aXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3Zlck5vdGhpbmc6OnJ1
bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNj
cmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9y
aWdpbjo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0eTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25Ob25F
bXB0eTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0M2RUcmFuc2Zvcm06OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NP
Y2NsdXNpb25UcmFja2VyVGVzdFBlcnNwZWN0aXZlVHJhbnNmb3JtOjpydW5NeVRlc3QpOgorICAg
ICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RQZXJzcGVjdGl2ZVRyYW5z
Zm9ybUJlaGluZENhbWVyYTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJCZWhpbmRDYW1lcmFEb2VzTm90T2NjbHVkZTo6cnVuTXlU
ZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGFyZ2VQ
aXhlbHNPY2NsdWRlSW5zaWRlQ2xpcFJlY3Q6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkxT25NYWluVGhyZWFk
OjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRl
c3RBbmltYXRpb25PcGFjaXR5ME9uTWFpblRocmVhZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25NYWlu
VGhyZWFkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJh
Y2tlclRlc3RTdXJmYWNlT2NjbHVzaW9uVHJhbnNsYXRlc1RvUGFyZW50OjpydW5NeVRlc3QpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlT2NjbHVz
aW9uVHJhbnNsYXRlc1dpdGhDbGlwcGluZzo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0UmVwbGljYU9jY2x1ZGVkOjpydW5NeVRlc3QpOgor
ICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlV2l0aFJl
cGxpY2FVbm9jY2x1ZGVkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlQW5kUmVwbGljYU9jY2x1ZGVkRGlmZmVyZW50bHk6OnJ1
bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFN1
cmZhY2VDaGlsZE9mU3VyZmFjZTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpD
Q09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZUNoaWxkT2ZDbGlwcGluZ1N1cmZhY2U6OnJ1bk15
VGVzdCk6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wNC0xNyAg
RGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gQWRkIFRleHR1cmVVcGxvYWRlciB3aGljaCBhbGxvd3MgdXMgdG8gdXNlIHBlcnNpc3RlbnQg
R0MzRCBzdGF0ZSBmb3IgdGV4dHVyZSB1cGxvYWRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3Iu
aAppbmRleCBkODliZDY5MTI3NzE3YTU5NzE1NWU1NzQwOTA0ZjdlYTQ2YmY3Y2RhLi4xMmM2Mjdm
NmEyZTRiOWIxNTlmODE0MGZiZGY1N2RhY2U3ODgwNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRl
cmF0b3IuaApAQCAtOTEsNiArOTEsMTYgQEAgc3RydWN0IENDTGF5ZXJJdGVyYXRvclZhbHVlIHsK
ICAgICBzdGF0aWMgY29uc3QgaW50IExheWVySW5kZXhSZXByZXNlbnRpbmdUYXJnZXRSZW5kZXJT
dXJmYWNlID0gLTE7CiB9OwogCisvLyBUaGUgcG9zaXRpb24gb2YgYSBsYXllciBpdGVyYXRvciB0
aGF0IGlzIGluZGVwZW5kZW50IG9mIGl0cyBtYW55IHRlbXBsYXRlIHR5cGVzLgordGVtcGxhdGUg
PHR5cGVuYW1lIExheWVyVHlwZT4KK3N0cnVjdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbiB7Cisg
ICAgYm9vbCByZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZTsKKyAgICBib29sIHJlcHJlc2Vu
dHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNlOworICAgIGJvb2wgcmVwcmVzZW50c0l0c2VsZjsK
KyAgICBMYXllclR5cGUqIHRhcmdldFJlbmRlclN1cmZhY2VMYXllcjsKKyAgICBMYXllclR5cGUq
IGN1cnJlbnRMYXllcjsKK307CisKIC8vIEFuIGl0ZXJhdG9yIGNsYXNzIGZvciB3YWxraW5nIG92
ZXIgbGF5ZXJzIGluIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUuCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlLCB0eXBlbmFtZSBJdGVyYXRvckFjdGlvblR5cGU+CiBjbGFzcyBDQ0xheWVySXRlcmF0
b3IgewpAQCAtMTE5LDYgKzEyOSwxNyBAQCBwdWJsaWM6CiAKICAgICBMYXllclR5cGUqIHRhcmdl
dFJlbmRlclN1cmZhY2VMYXllcigpIGNvbnN0IHsgcmV0dXJuIGdldFJhd1B0cigoKm1fcmVuZGVy
U3VyZmFjZUxheWVyTGlzdClbbV90YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleF0pOyB9CiAK
KyAgICBvcGVyYXRvciBjb25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGU+KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlwZT4g
cG9zaXRpb247CisgICAgICAgIHBvc2l0aW9uLnJlcHJlc2VudHNUYXJnZXRSZW5kZXJTdXJmYWNl
ID0gcmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgcG9zaXRpb24ucmVw
cmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UgPSByZXByZXNlbnRzQ29udHJpYnV0aW5n
UmVuZGVyU3VyZmFjZSgpOworICAgICAgICBwb3NpdGlvbi5yZXByZXNlbnRzSXRzZWxmID0gcmVw
cmVzZW50c0l0c2VsZigpOworICAgICAgICBwb3NpdGlvbi50YXJnZXRSZW5kZXJTdXJmYWNlTGF5
ZXIgPSB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKTsKKyAgICAgICAgcG9zaXRpb24uY3VycmVu
dExheWVyID0gY3VycmVudExheWVyKCk7CisgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgQ0NMYXllckl0ZXJhdG9yKGNvbnN0IExheWVyTGlzdCogcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgYm9vbCBzdGFydCkKICAgICAgICAgOiBtX3JlbmRlclN1cmZhY2VM
YXllckxpc3QocmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxp
bmdEYXRhLmNwcAppbmRleCA0MmYxZThkMWFiNTk4YzgzNzVkNWI1YzE3ZGQyNWU2MGU4M2JiNjM1
Li5hYjEzMmFlMTRmYmFkZWMzOWMzM2NiMGVhZWMwZWRmOTY5ZmM0OTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5n
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRpbGluZ0RhdGEuY3BwCkBAIC0xMTMsNiArMTEzLDkgQEAgSW50UmVjdCBDQ0xh
eWVyVGlsaW5nRGF0YTo6dGlsZVJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKIAogUmVnaW9u
IENDTGF5ZXJUaWxpbmdEYXRhOjpvcGFxdWVSZWdpb25JbkxheWVyUmVjdChjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QpIGNvbnN0CiB7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBSZWdpb24oKTsKKwogICAgIFJlZ2lvbiBvcGFxdWVSZWdpb247CiAgICAgaW50
IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBsYXllclJlY3RUb1RpbGVJbmRpY2VzKGxh
eWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCmluZGV4IDZlMzNlMzkxMzU2Mjk2NDJiMzYyZjg4MDdhOWM0ZDEyNDk5ZjhhNDYu
LjBiZDI3YmNjMDI2ZTBjZTZjNDNjZDYwNDljYmY1M2RjMTdjYTZjMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcApAQCAtNTU1LDE5ICs1NTUsMTcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VM
YXllckxpc3QKIAogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9y
VHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVy
YXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVu
dGVyTGF5ZXIoaXQpOworCiAgICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09w
YWNpdHkoKSB8fCBpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkp
OwotCi0gICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgqaXQsIGl0LT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICAgICAgcGFpbnRNYXNrc0Zv
clJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUsIHVwZGF0ZXIpOwogICAgICAgICB9IGVsc2Ug
aWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFpdC0+Ym91
bmRzKCkuaXNFbXB0eSgpKTsKLQotICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UoaXQtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgICAg
ICB1cGRhdGUoKml0LCBwYWludFR5cGUsIHVwZGF0ZXIsICZvY2NsdXNpb25UcmFja2VyKTsKLSAg
ICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoKml0KTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKGl0LnRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpLT5yZW5kZXJTdXJm
YWNlKCkpOworICAgICAgICB9CisKKyAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5sZWF2ZUxheWVy
KGl0KTsKICAgICB9CiAKICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnJl
Y29yZE1ldHJpY3ModGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CmluZGV4IDVlZjVhMzIwMjcwODE3OGNjMzgzNzc0OWI3MDU5Y2RkYmI3MWRkYzkuLmZiN2FiZTVi
MzNhZThlZTI4MTljODcxMzk2NjI1MmRkNTIxMWNlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yOTgsMzIgKzI5OCwyNCBAQCBib29sIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMs
IENDTGF5ZQogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRv
clR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgIENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSA9IGl0LnRhcmdldFJlbmRl
clN1cmZhY2VMYXllcigpLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIENDUmVuZGVyUGFzcyog
cGFzcyA9IHN1cmZhY2VQYXNzTWFwLmdldChyZW5kZXJTdXJmYWNlKTsKKyAgICAgICAgYm9vbCBo
YWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKKworICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVy
TGF5ZXIoaXQpOwogCi0gICAgICAgIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkpCi0gICAgICAg
ICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5kZXJTdXJm
YWNlKTsKLSAgICAgICAgZWxzZSBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2Uo
KSkgewotICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5maW5pc2hlZFRhcmdldFJlbmRlclN1
cmZhY2UoKml0LCByZW5kZXJTdXJmYWNlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1
cmZhY2UoKSkKICAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxh
eWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIpOwotICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tl
ci5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlKTsKLSAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYgIWl0
LT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpdC0+d2lsbERy
YXcobV9sYXllclJlbmRlcmVyLmdldCgpKTsKKyAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRz
Rm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChpdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGl0LT53aWxsRHJhdyhtX2xheWVyUmVuZGVy
ZXIuZ2V0KCkpOwotCi0gICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAg
ICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgaGFk
TWlzc2luZ1RpbGVzKTsKICAgICAgICAgaWYgKGhhZE1pc3NpbmdUaWxlcykgewogICAgICAgICAg
ICAgYm9vbCBsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSA9IGl0LT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybUlzQW5pbWF0aW5nKCkgfHwgaXQtPmRyYXdUcmFuc2Zvcm1Jc0FuaW1hdGluZygpOwogICAg
ICAgICAgICAgaWYgKGxheWVySGFzQW5pbWF0aW5nVHJhbnNmb3JtKQogICAgICAgICAgICAgICAg
IGRyYXdGcmFtZSA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgb2NjbHVzaW9uVHJhY2tl
ci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcigqaXQpOworICAgICAgICBvY2NsdXNpb25UcmFja2Vy
LmxlYXZlTGF5ZXIoaXQpOwogICAgIH0KIAogICAgIHBhc3Nlcy5sYXN0KCktPmFwcGVuZFF1YWRz
VG9GaWxsU2NyZWVuKG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9iYWNrZ3JvdW5kQ29sb3IsIG9j
Y2x1c2lvblRyYWNrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKaW5k
ZXggM2RiNmM0ZWE0YzAzYTMwNDgwMGU3NjIzYTJmMWE3NmM4MDQ0NmRiMS4uNDRhNjhiYTUyMTQw
OTIwOTJiYzYwZmFlNDA0ZGFjYjkzZjlkOTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lv
blRyYWNrZXIuY3BwCkBAIC00OCw2ICs0OCwyOCBAQCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VU
eXBlPgordm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+OjplbnRlckxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyVHlw
ZT4mIGxheWVySXRlcmF0b3IpCit7CisgICAgUmVuZGVyU3VyZmFjZVR5cGUqIHJlbmRlclN1cmZh
Y2UgPSBsYXllckl0ZXJhdG9yLnRhcmdldFJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFj
ZSgpOworCisgICAgaWYgKGxheWVySXRlcmF0b3IucmVwcmVzZW50c0l0c2VsZikKKyAgICAgICAg
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpOworICAgIGVsc2UgaWYgKGxh
eWVySXRlcmF0b3IucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UpCisgICAgICAgIGZpbmlz
aGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllckl0ZXJhdG9yLmN1cnJlbnRMYXllciwgcmVuZGVy
U3VyZmFjZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVu
ZGVyU3VyZmFjZVR5cGU+Cit2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZT46OmxlYXZlTGF5ZXIoY29uc3QgQ0NMYXllckl0ZXJhdG9yUG9zaXRp
b248TGF5ZXJUeXBlPiYgbGF5ZXJJdGVyYXRvcikKK3sKKyAgICBSZW5kZXJTdXJmYWNlVHlwZSog
cmVuZGVyU3VyZmFjZSA9IGxheWVySXRlcmF0b3IudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyLT5y
ZW5kZXJTdXJmYWNlKCk7CisKKyAgICBpZiAobGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzSXRzZWxm
KQorICAgICAgICBtYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllckl0ZXJhdG9yLmN1cnJlbnRM
YXllcik7CisgICAgZWxzZSBpZiAobGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzQ29udHJpYnV0aW5n
UmVuZGVyU3VyZmFjZSkKKyAgICAgICAgbGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocmVuZGVy
U3VyZmFjZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVu
ZGVyU3VyZmFjZVR5cGU+CiB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJT
dXJmYWNlVHlwZSogbmV3VGFyZ2V0KQogewogICAgIGlmICghbV9zdGFjay5pc0VtcHR5KCkgJiYg
bV9zdGFjay5sYXN0KCkuc3VyZmFjZSA9PSBuZXdUYXJnZXQpCkBAIC0zOTYsNiArNDE4LDggQEAg
SW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+OjpsYXllclNjaXNzb3JSZWN0SW4KIAogLy8gRGVjbGFyZSB0aGUgcG9zc2libGUgZnVuY3Rp
b25zIGhlcmUgZm9yIHRoZSBsaW5rZXIuCiB0ZW1wbGF0ZSBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OkNDT2NjbHVzaW9uVHJhY2tl
ckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVjb3JkTWV0cmlj
c0ZvckZyYW1lKTsKK3RlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNo
cm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjplbnRlckxheWVyKGNvbnN0IENDTGF5ZXJJ
dGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21pdW0+Jik7Cit0ZW1wbGF0ZSB2b2lkIENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6bGVh
dmVMYXllcihjb25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVtPiYpOwog
dGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRl
clN1cmZhY2VDaHJvbWl1bT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0qIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6ZmluaXNoZWRU
YXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qIG93bmluZ0xheWVyLCBjb25z
dCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIGZpbmlzaGVkVGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0+OjpsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0qIG5ld1RhcmdldCk7CkBAIC00MDYsNiArNDMwLDggQEAgdGVtcGxhdGUgSW50UmVjdCBDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46
OnUKIHRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNl
KGNvbnN0IExheWVyQ2hyb21pdW0qKSBjb25zdDsKIAogdGVtcGxhdGUgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6Q0NPY2NsdXNpb25UcmFja2Vy
QmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRNZXRyaWNz
Rm9yRnJhbWUpOwordGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJ
bXBsLCBDQ1JlbmRlclN1cmZhY2U+OjplbnRlckxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRvclBv
c2l0aW9uPENDTGF5ZXJJbXBsPiYpOwordGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpsZWF2ZUxheWVyKGNvbnN0IENDTGF5
ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsPiYpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjplbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBuZXdUYXJnZXQpOwogdGVtcGxh
dGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZh
Y2U+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NMYXllckltcGwqIG93bmlu
Z0xheWVyLCBjb25zdCBDQ1JlbmRlclN1cmZhY2UqIGZpbmlzaGVkVGFyZ2V0KTsKIHRlbXBsYXRl
IHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNl
Pjo6bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBuZXdU
YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAppbmRleCBmNGE2YWM5MzI5
N2IwM2NkMjEwYzkxMWZkZTViNmFkMjk1OGY5MjA3Li4yNzA1YzZiMTMzMWRmZDk0ZmI1YTgzZjcw
NmNiNDE4ZmJlMWFiYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiY2MvQ0NMYXll
ckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJhd01ldHJpY3MuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDgsMjYgKzQ5LDE3IEBAIGNsYXNzIENDT2NjbHVzaW9uVHJhY2tl
ckJhc2UgewogcHVibGljOgogICAgIENDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY2lz
c29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lKTsKIAotICAg
IC8vIENhbGxlZCB3aGVuIHZpc2l0aW5nIGEgbGF5ZXIgcmVwcmVzZW50aW5nIGl0c2VsZi4gSWYg
dGhlIHRhcmdldCB3YXMgbm90IGFscmVhZHkgY3VycmVudCwgdGhlbiB0aGlzIGluZGljYXRlcyB3
ZSBoYXZlIGVudGVyZWQgYSBuZXcgc3VyZmFjZSBzdWJ0cmVlLgotICAgIHZvaWQgZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBuZXdUYXJnZXQpOwotCi0g
ICAgLy8gQ2FsbGVkIHdoZW4gdmlzaXRpbmcgYSBsYXllciByZXByZXNlbnRpbmcgYSB0YXJnZXQg
c3VyZmFjZS4gVGhpcyBpbmRpY2F0ZXMgd2UgaGF2ZSB2aXNpdGVkIGFsbCB0aGUgbGF5ZXJzIHdp
dGhpbiB0aGUgc3VyZmFjZSwgYW5kIHdlIG1heQotICAgIC8vIHBlcmZvcm0gYW55IHN1cmZhY2Ut
d2lkZSBvcGVyYXRpb25zLgotICAgIHZvaWQgZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNv
bnN0IExheWVyVHlwZSosIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBmaW5pc2hlZFRhcmdldCk7
Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiB2aXNpdGluZyBhIGxheWVyIHJlcHJlc2VudGluZyBhIGNv
bnRyaWJ1dGluZyBzdXJmYWNlLiBUaGlzICBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgbGVhdmluZyBv
dXIgY3VycmVudCBzdXJmYWNlLCBhbmQKLSAgICAvLyBlbnRlcmluZyB0aGUgbmV3IG9uZS4gV2Ug
dGhlbiBwZXJmb3JtIGFueSBvcGVyYXRpb25zIHJlcXVpcmVkIGZvciBtZXJnaW5nIHJlc3VsdHMg
ZnJvbSB0aGUgY2hpbGQgc3VidHJlZSBpbnRvIGl0cyBwYXJlbnQuCi0gICAgdm9pZCBsZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogbmV3VGFyZ2V0KTsK
LQotICAgIC8vIEFkZCB0aGUgbGF5ZXIncyBvY2NsdXNpb24gdG8gdGhlIHRyYWNrZWQgc3RhdGUu
Ci0gICAgdm9pZCBtYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjb25zdCBMYXllclR5cGUqKTsKKyAg
ICAvLyBDYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHN0ZXAgaW4gdGhlIENDTGF5ZXJJ
dGVyYXRvcidzIGZyb250LXRvLWJhY2sgdHJhdmVyc2FsLgorICAgIHZvaWQgZW50ZXJMYXllcihj
b25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGU+Jik7CisgICAgLy8gQ2FsbGVk
IGF0IHRoZSBlbmQgb2YgZWFjaCBzdGVwIGluIHRoZSBDQ0xheWVySXRlcmF0b3IncyBmcm9udC10
by1iYWNrIHRyYXZlcnNhbC4KKyAgICB2b2lkIGxlYXZlTGF5ZXIoY29uc3QgQ0NMYXllckl0ZXJh
dG9yUG9zaXRpb248TGF5ZXJUeXBlPiYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBn
aXZlbiByZWN0IGluIGNvbnRlbnQgc3BhY2UgZm9yIHRoZSBsYXllciBpcyBmdWxseSBvY2NsdWRl
ZCBpbiBlaXRoZXIgc2NyZWVuIHNwYWNlIG9yIHRoZSBsYXllcidzIHRhcmdldCBzdXJmYWNlLgog
ICAgIGJvb2wgb2NjbHVkZWQoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QpIGNvbnN0OwogICAgIC8vIEdpdmVzIGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNv
bnRlbnRSZWN0fCBpbiB0aGUgY29udGVudCBzcGFjZSBvZiB0aGUgbGF5ZXIuIFVzZWQgd2hlbiBj
b25zaWRlcmluZyBvY2NsdXNpb24gZm9yIGEgbGF5ZXIgdGhhdCBwYWludHMvZHJhd3Mgc29tZXRo
aW5nLgogICAgIEludFJlY3QgdW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSos
IGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKIAotICAgIC8vIEdpdmVzIGFuIHVu
b2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRSZWN0fCBpbiB0aGUgY29udGVudCBzcGFjZSBv
ZiB0aGUgc3VyZmFjZSBvd25lZCBieSB8bGF5ZXJ8LiBVc2VkIHdoZW4gY29uc2lkZXJpbmcgb2Nj
bHVzaW9uIGZvciBhIHN1cmZhY2UKKyAgICAvLyBHaXZlcyBhbiB1bm9jY2x1ZGVkIHN1Yi1yZWN0
IG9mIHxjb250ZW50UmVjdHwgaW4gdGhlIGNvbnRlbnQgc3BhY2Ugb2YgdGhlIHN1cmZhY2Ugb3du
ZWQgYnkgfGxheWVyfC4gVXNlZCB3aGVuIGNvbnNpZGVyaW5nIG9jY2x1c2lvbiBmb3IgYSBjb250
cmlidXRpbmcgc3VyZmFjZQogICAgIC8vIHRoYXQgaXMgcmVuZGVyaW5nIGludG8gYW5vdGhlciB0
YXJnZXQgc3VyZmFjZS4KICAgICBJbnRSZWN0IHVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNl
Q29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CiAKQEAgLTEwMiw2ICs5NCwyMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCBJbnRSZWN0IGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UoY29u
c3QgTGF5ZXJUeXBlKikgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgLy8gQ2FsbGVkIHdoZW4gdmlz
aXRpbmcgYSBsYXllciByZXByZXNlbnRpbmcgaXRzZWxmLiBJZiB0aGUgdGFyZ2V0IHdhcyBub3Qg
YWxyZWFkeSBjdXJyZW50LCB0aGVuIHRoaXMgaW5kaWNhdGVzIHdlIGhhdmUgZW50ZXJlZCBhIG5l
dyBzdXJmYWNlIHN1YnRyZWUuCisgICAgdm9pZCBlbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY29u
c3QgUmVuZGVyU3VyZmFjZVR5cGUqIG5ld1RhcmdldCk7CisKKyAgICAvLyBDYWxsZWQgd2hlbiB2
aXNpdGluZyBhIGxheWVyIHJlcHJlc2VudGluZyBhIHRhcmdldCBzdXJmYWNlLiBUaGlzIGluZGlj
YXRlcyB3ZSBoYXZlIHZpc2l0ZWQgYWxsIHRoZSBsYXllcnMgd2l0aGluIHRoZSBzdXJmYWNlLCBh
bmQgd2UgbWF5CisgICAgLy8gcGVyZm9ybSBhbnkgc3VyZmFjZS13aWRlIG9wZXJhdGlvbnMuCisg
ICAgdm9pZCBmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgTGF5ZXJUeXBlKiwgY29u
c3QgUmVuZGVyU3VyZmFjZVR5cGUqIGZpbmlzaGVkVGFyZ2V0KTsKKworICAgIC8vIENhbGxlZCB3
aGVuIHZpc2l0aW5nIGEgbGF5ZXIgcmVwcmVzZW50aW5nIGEgY29udHJpYnV0aW5nIHN1cmZhY2Uu
IFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIGxlYXZpbmcgb3VyIGN1cnJlbnQgc3VyZmFjZSwg
YW5kCisgICAgLy8gZW50ZXJpbmcgdGhlIG5ldyBvbmUuIFdlIHRoZW4gcGVyZm9ybSBhbnkgb3Bl
cmF0aW9ucyByZXF1aXJlZCBmb3IgbWVyZ2luZyByZXN1bHRzIGZyb20gdGhlIGNoaWxkIHN1YnRy
ZWUgaW50byBpdHMgcGFyZW50LgorICAgIHZvaWQgbGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Uo
Y29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG5ld1RhcmdldCk7CisKKyAgICAvLyBBZGQgdGhlIGxh
eWVyJ3Mgb2NjbHVzaW9uIHRvIHRoZSB0cmFja2VkIHN0YXRlLgorICAgIHZvaWQgbWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIoY29uc3QgTGF5ZXJUeXBlKik7CisKICAgICBJbnRSZWN0IG1fc2Npc3Nv
clJlY3RJblNjcmVlblNwYWNlOwogICAgIE93blB0cjxDQ092ZXJkcmF3TWV0cmljcz4gbV9vdmVy
ZHJhd01ldHJpY3M7CiAgICAgYm9vbCBtX3VzZVBhaW50VHJhY2tpbmc7IC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdC5jcHAKaW5kZXggYjNlM2MzNjFlY2U5ZmZiYmYwMTY5ZDczMjhlM2IyY2Q3MGQ5NTFlZC4u
MDdjNjcyZTc5N2Q2MWM1OTQxNWYwZTdmYmVhMzRjNDhhNTM4NTQzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3Bw
CkBAIC0xMzIsNiArMTMyLDggQEAgc3RydWN0IENDT2NjbHVzaW9uVHJhY2tlclRlc3RNYWluVGhy
ZWFkVHlwZXMgewogICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBQYXNzTGF5
ZXJQdHJUeXBlOwogICAgIHR5cGVkZWYgUmVmUHRyPENvbnRlbnRMYXllclR5cGU+IENvbnRlbnRM
YXllclB0clR5cGU7CiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPENvbnRlbnRMYXllclR5cGU+IFBh
c3NDb250ZW50TGF5ZXJQdHJUeXBlOworICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPExheWVy
Q2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNo
cm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gTGF5ZXJJdGVyYXRv
cjsKKyAgICB0eXBlZGVmIENDT2NjbHVzaW9uVHJhY2tlciBPY2NsdXNpb25UcmFja2VyVHlwZTsK
IAogICAgIHN0YXRpYyBQYXNzTGF5ZXJQdHJUeXBlIGNyZWF0ZUxheWVyKCkgeyByZXR1cm4gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7IH0KICAgICBzdGF0aWMgUGFzc0NvbnRlbnRMYXllclB0clR5
cGUgY3JlYXRlQ29udGVudExheWVyKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXll
clR5cGUoKSk7IH0KQEAgLTE0NSw2ICsxNDcsOCBAQCBzdHJ1Y3QgQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdEltcGxUaHJlYWRUeXBlcyB7CiAgICAgdHlwZWRlZiBQYXNzT3duUHRyPENDTGF5ZXJJbXBs
PiBQYXNzTGF5ZXJQdHJUeXBlOwogICAgIHR5cGVkZWYgT3duUHRyPENvbnRlbnRMYXllclR5cGU+
IENvbnRlbnRMYXllclB0clR5cGU7CiAgICAgdHlwZWRlZiBQYXNzT3duUHRyPENvbnRlbnRMYXll
clR5cGU+IFBhc3NDb250ZW50TGF5ZXJQdHJUeXBlOworICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJh
dG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gTGF5ZXJJdGVyYXRvcjsKKyAgICB0
eXBlZGVmIENDT2NjbHVzaW9uVHJhY2tlckltcGwgT2NjbHVzaW9uVHJhY2tlclR5cGU7CiAKICAg
ICBzdGF0aWMgUGFzc0xheWVyUHRyVHlwZSBjcmVhdGVMYXllcigpIHsgcmV0dXJuIENDTGF5ZXJJ
bXBsOjpjcmVhdGUobmV4dENDTGF5ZXJJbXBsSWQrKyk7IH0KICAgICBzdGF0aWMgUGFzc0NvbnRl
bnRMYXllclB0clR5cGUgY3JlYXRlQ29udGVudExheWVyKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3
IENvbnRlbnRMYXllclR5cGUobmV4dENDTGF5ZXJJbXBsSWQrKykpOyB9CkBAIC0xNTYsNyArMTYw
LDEwIEBAIGludCBDQ09jY2x1c2lvblRyYWNrZXJUZXN0SW1wbFRocmVhZFR5cGVzOjpuZXh0Q0NM
YXllckltcGxJZCA9IDA7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlcywgYm9vbCBvcGFxdWVMYXll
cnM+CiBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewogcHJvdGVjdGVkOgotICAgIENDT2NjbHVzaW9uVHJhY2tlclRlc3QoKSA6IHRlc3Rpbmc6OlRl
c3QoKSB7IH0KKyAgICBDQ09jY2x1c2lvblRyYWNrZXJUZXN0KCkKKyAgICAgICAgOiB0ZXN0aW5n
OjpUZXN0KCkKKyAgICAgICAgLCBtX2xhc3RMYXllclZpc2l0ZWQoMCkKKyAgICB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBydW5NeVRlc3QoKSA9IDA7CiAKQEAgLTIzNiw4ICsyNDMsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBsYXllcjsKICAgICB9CiAKLQotICAgIFRlc3RDb250ZW50
TGF5ZXJJbXBsKiBjYWxjRHJhd0V0YyhUZXN0Q29udGVudExheWVySW1wbCogcm9vdCkKKyAgICB2
b2lkIGNhbGNEcmF3RXRjKFRlc3RDb250ZW50TGF5ZXJJbXBsKiByb290KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHJvb3QgPT0gbV9yb290LmdldCgpKTsKICAgICAgICAgVmVjdG9yPENDTGF5ZXJJ
bXBsKj4gZHVtbXlMYXllckxpc3Q7CkBAIC0yNTAsMTAgKzI1NiwxMCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdEltcGwuYXBwZW5kKG1fcm9vdC5nZXQoKSk7
CiAKICAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkocm9vdCwgcm9vdCwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RJbXBsLCBkdW1teUxheWVyTGlzdCwgMCwgZHVtbXlN
YXhUZXh0dXJlU2l6ZSk7Ci0gICAgICAgIHJldHVybiByb290OworICAgICAgICBtX2xheWVySXRl
cmF0b3IgPSBtX2xheWVySXRlcmF0b3JCZWdpbiA9IFR5cGVzOjpMYXllckl0ZXJhdG9yOjpiZWdp
bigmbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0SW1wbCk7CiAgICAgfQogCi0gICAgVGVzdENvbnRl
bnRMYXllckNocm9taXVtKiBjYWxjRHJhd0V0YyhUZXN0Q29udGVudExheWVyQ2hyb21pdW0qIHJv
b3QpCisgICAgdm9pZCBjYWxjRHJhd0V0YyhUZXN0Q29udGVudExheWVyQ2hyb21pdW0qIHJvb3Qp
CiAgICAgewogICAgICAgICBBU1NFUlQocm9vdCA9PSBtX3Jvb3QuZ2V0KCkpOwogICAgICAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CkBAIC0yNjYsNyAr
MjcyLDM5IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Q2hy
b21pdW0uYXBwZW5kKG1fcm9vdCk7CiAKICAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdCwgcm9vdCwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1bSwg
ZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotICAgICAgICByZXR1cm4gcm9v
dDsKKyAgICAgICAgbV9sYXllckl0ZXJhdG9yID0gbV9sYXllckl0ZXJhdG9yQmVnaW4gPSBUeXBl
czo6TGF5ZXJJdGVyYXRvcjo6YmVnaW4oJm1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdENocm9taXVt
KTsKKyAgICB9CisKKyAgICB2b2lkIG1vdmVUb0xheWVyQXNJdHNlbGYodHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSogbGF5ZXIsIHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFja2VyVHlwZSYg
b2NjbHVzaW9uKQorICAgIHsKKyAgICAgICAgbW92ZVRvTGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7
CisgICAgICAgIEFTU0VSVF9UUlVFKG1fbGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzSXRzZWxmKCkp
OworICAgIH0KKworICAgIHZvaWQgbW92ZVRvTGF5ZXJBc1RhcmdldCh0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlKiBsYXllciwgdHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlJiBv
Y2NsdXNpb24pCisgICAgeworICAgICAgICBtb3ZlVG9MYXllcihsYXllciwgb2NjbHVzaW9uKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUobV9sYXllckl0ZXJhdG9yLnJlcHJlc2VudHNUYXJnZXRSZW5k
ZXJTdXJmYWNlKCkpOworICAgIH0KKworICAgIHZvaWQgbW92ZVRvTGF5ZXJBc0NvbnRyaWJ1dGlu
Zyh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllciwgdHlwZW5hbWUgVHlwZXM6Ok9jY2x1
c2lvblRyYWNrZXJUeXBlJiBvY2NsdXNpb24pCisgICAgeworICAgICAgICBtb3ZlVG9MYXllcihs
YXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgQVNTRVJUX1RSVUUobV9sYXllckl0ZXJhdG9yLnJl
cHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNlKCkpOworICAgIH0KKworICAgIHZvaWQg
ZmluaXNoV2l0aExheWVyKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGxheWVyLCB0eXBlbmFt
ZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5cGUmIG9jY2x1c2lvbikKKyAgICB7CisgICAgICAg
IEFTU0VSVF9FUShsYXllciwgKm1fbGF5ZXJJdGVyYXRvcik7CisgICAgICAgIG9jY2x1c2lvbi5m
aW5pc2hXaXRoTGF5ZXIobV9sYXllckl0ZXJhdG9yKTsKKyAgICAgICAgbV9sYXN0TGF5ZXJWaXNp
dGVkID0gMDsKKyAgICAgICAgKyttX2xheWVySXRlcmF0b3I7CisgICAgfQorCisgICAgdm9pZCBy
ZXNldExheWVySXRlcmF0b3IoKQorICAgIHsKKyAgICAgICAgbV9sYXllckl0ZXJhdG9yID0gbV9s
YXllckl0ZXJhdG9yQmVnaW47CisgICAgICAgIG1fbGFzdExheWVyVmlzaXRlZCA9IDA7CiAgICAg
fQogCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CkBAIC0z
MDQsMTAgKzM0MiwyMiBAQCBwcml2YXRlOgogICAgICAgICBvd25pbmdMYXllci0+c2V0UmVwbGlj
YUxheWVyKGxheWVyKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdmVUb0xheWVyKHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUqIGxheWVyLCB0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5
cGUmIG9jY2x1c2lvbikKKyAgICB7CisgICAgICAgIGlmIChtX2xhc3RMYXllclZpc2l0ZWQpCisg
ICAgICAgICAgICBmaW5pc2hXaXRoTGF5ZXIobV9sYXN0TGF5ZXJWaXNpdGVkLCBvY2NsdXNpb24p
OworICAgICAgICBBU1NFUlRfRVEobGF5ZXIsICptX2xheWVySXRlcmF0b3IpOworICAgICAgICBv
Y2NsdXNpb24ubW92ZVRvTGF5ZXIobV9sYXllckl0ZXJhdG9yKTsKKyAgICAgICAgbV9sYXN0TGF5
ZXJWaXNpdGVkID0gbGF5ZXI7CisgICAgfQorCiAgICAgLy8gVGhlc2UgaG9sZCBvd25lcnNoaXAg
b2YgdGhlIGxheWVycyBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgogICAgIHR5cGVuYW1l
IFR5cGVzOjpMYXllclB0clR5cGUgbV9yb290OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1bTsKICAgICBWZWN0b3I8Q0NM
YXllckltcGwqPiBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RJbXBsOworICAgIHR5cGVuYW1lIFR5
cGVzOjpMYXllckl0ZXJhdG9yIG1fbGF5ZXJJdGVyYXRvckJlZ2luOworICAgIHR5cGVuYW1lIFR5
cGVzOjpMYXllckl0ZXJhdG9yIG1fbGF5ZXJJdGVyYXRvcjsKKyAgICB0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlKiBtX2xhc3RMYXllclZpc2l0ZWQ7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IG1fcmVwbGljYUxheWVyczsKIH07CiAKQEAgLTM2NCw4ICs0MTQsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNl
dExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Cisg
ICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7CisgICAg
ICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOworCiAgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CkBAIC00MTYsOCArNDY3LDkgQEAgcHJv
dGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwor
ICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNpb24pOworICAg
ICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKKwogICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwpAQCAtNDY2LDggKzUxOCw5IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
KyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihsYXllciwgb2NjbHVzaW9uKTsKKyAg
ICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CisKICAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKQEAgLTUzMiw4ICs1ODUsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBl
bmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
KyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihsYXllciwgb2NjbHVzaW9uKTsKKyAg
ICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc1RhcmdldChjaGlsZCwgb2NjbHVzaW9uKTsKIAogICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC01
NTQsOSArNjA3LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcxKSkpOwogICAgICAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAot
ICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQpOwotICAgICAg
ICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBjaGlsZC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJB
c0NvbnRyaWJ1dGluZyhjaGlsZCwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5
ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtNjI5LDIyICs2ODEsMjQgQEAgcHJv
dGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKIAotICAg
ICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
Mik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYoY2hpbGQyLCBvY2NsdXNpb24p
OworICAgICAgICB0aGlzLT5maW5pc2hXaXRoTGF5ZXIoY2hpbGQyLCBvY2NsdXNpb24pOwogCiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA2MCwgMjApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
IAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNp
b24pOworICAgICAgICB0aGlzLT5maW5pc2hXaXRoTGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CiAK
ICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEo
MnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwog
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKIAorICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0KGNoaWxkLCBvY2NsdXNpb24p
OworCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVj
dCgxMCwgNDMwLCA2MCwgNzApKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CiAgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkp
OwpAQCAtNjg1LDEwICs3MzksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAs
IDcwKSkuaXNFbXB0eSgpKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGNoaWxkKTsKLSAgICAgICAgLy8gfGNoaWxkMnwgc2hvdWxkIGdldCBt
ZXJnZWQgd2l0aCB0aGUgc3VyZmFjZSB3ZSBhcmUgbGVhdmluZyBub3cKLSAgICAgICAgb2NjbHVz
aW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQtPnJlbmRlclN1cmZh
Y2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIC8vIE9jY2x1c2lvbiBpbiB8Y2hpbGQyfCBz
aG91bGQgZ2V0IG1lcmdlZCB3aXRoIHRoZSB8Y2hpbGR8IHN1cmZhY2Ugd2UgYXJlIGxlYXZpbmcg
bm93LgorICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzQ29udHJpYnV0aW5nKGNoaWxkLCBvY2Ns
dXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVz
aW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNp
emUoKSk7CkBAIC03NzgsOCArODMxLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIEludFJlY3Qg
Y2xpcHBlZExheWVySW5DaGlsZCA9IGxheWVyVHJhbnNmb3JtLm1hcFJlY3QobGF5ZXItPnZpc2li
bGVMYXllclJlY3QoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2Vs
ZihsYXllciwgb2NjbHVzaW9uKTsKKworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0
KGNoaWxkLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNp
emUoKSk7CkBAIC04MDUsOSArODU5LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgY2xpcHBlZExheWVySW5D
aGlsZCkuaXNFbXB0eSgpKTsKICAgICAgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIC0x
KTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQpOwot
ICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBjaGls
ZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRv
TGF5ZXJBc0NvbnRyaWJ1dGluZyhjaGlsZCwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92
ZVRvTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKICAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTg0MSw5ICs4OTQsOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAg
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMik7Ci0gICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEpOworICAgICAgICB0aGlzLT5t
b3ZlVG9MYXllckFzSXRzZWxmKGxheWVyMiwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92
ZVRvTGF5ZXJBc0l0c2VsZihsYXllcjEsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVU
b0xheWVyQXNUYXJnZXQoY2hpbGQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtODYyLDkgKzkxNSw4IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3MCwgNDMwLCAxLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTEsIDQzMCwg
NjAsIDcwKSkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA1MDAsIDYwLCAx
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDMx
LCA2MCwgNzApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGNoaWxkKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShj
aGlsZCwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRo
aXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmcoY2hpbGQsIG9jY2x1c2lvbik7CisgICAgICAg
IHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTkzMCw4
ICs5ODIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRo
U2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVy
U3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMjAsIC0yMCwgMTAwMCwg
MTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIyKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihsYXll
cjIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNUYXJnZXQoY2hpbGQy
LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4
MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAg
ICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKQEAgLTk1MiwxNSArMTAwNCwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAs
IDcwLCA4MSkpKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVj
dCgtMjAsIC0yMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihjaGlsZDIpOwotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRS
ZW5kZXJTdXJmYWNlKGNoaWxkMiwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0
aGlzLT5tb3ZlVG9MYXllckFzQ29udHJpYnV0aW5nKGNoaWxkMiwgb2NjbHVzaW9uKTsKIAogICAg
ICAgICAvLyBUaGVyZSBpcyBub3RoaW5nIGFib3ZlIGNoaWxkMidzIHN1cmZhY2UgaW4gdGhlIHot
b3JkZXIuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNoaWxk
MiwgZmFsc2UsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKIAotICAgICAgICBvY2NsdXNp
b24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwot
ICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyMSk7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYobGF5ZXIxLCBvY2NsdXNp
b24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0KGNoaWxkMSwgb2NjbHVzaW9u
KTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7CkBAIC05NzMsMTMgKzEwMjMsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTAsIDQzMCwgODEsIDcwKSkp
OwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVj
dCgtMTAsIDQzMCwgODAsIDcxKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihjaGlsZDEpOwotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5k
ZXJTdXJmYWNlKGNoaWxkMSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlz
LT5tb3ZlVG9MYXllckFzQ29udHJpYnV0aW5nKGNoaWxkMSwgb2NjbHVzaW9uKTsKIAogICAgICAg
ICAvLyBjaGlsZDIncyBjb250ZW50cyB3aWxsIG9jY2x1ZGUgY2hpbGQxIGJlbG93IGl0LgogICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCAxMCwgNzApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChjaGlsZDEsIGZhbHNlLCBJ
bnRSZWN0KC0xMCwgNDMwLCA4MCwgNzApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhp
cy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtMTA0OSw4ICsx
MDk4LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNj
aXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1
cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTMwLCAtMzAsIDEwMDAsIDEw
MDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxk
Mi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyMik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYobGF5ZXIy
LCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGNoaWxkMiwg
b2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAs
IDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CkBAIC0xMDYzLDE2ICsxMTEyLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAs
IDcxLCA4MCkpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVk
VGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIsIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc1RhcmdldChjaGlsZDIsIG9jY2x1c2lvbik7CisgICAg
ICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmcoY2hpbGQyLCBvY2NsdXNpb24pOwog
CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vdGhpbmcgYWJvdmUgY2hpbGQyJ3Mgc3VyZmFjZSBpbiB0
aGUgei1vcmRlci4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQyMCwgNzAs
IDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qo
Y2hpbGQyLCBmYWxzZSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOwogCi0gICAgICAgIG9j
Y2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEt
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllcjEpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxheWVyMSwg
b2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc1RhcmdldChjaGlsZDEsIG9j
Y2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwpAQCAtMTA4NSwxNSArMTEzMiwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMCwgLTE5LCA4
MCwgOTApKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQx
LCBJbnRSZWN0KDQyMSwgLTIwLCA4MCwgOTApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGNoaWxkMSk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRh
cmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLCBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7CisgICAg
ICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmcoY2hpbGQxLCBvY2NsdXNpb24pOwog
CiAgICAgICAgIC8vIGNoaWxkMidzIGNvbnRlbnRzIHdpbGwgb2NjbHVkZSBjaGlsZDEgYmVsb3cg
aXQuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDIwLCAtMjAsIDgwLCA5MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNoaWxkMSwg
ZmFsc2UsIEludFJlY3QoNDIwLCAtMjAsIDgwLCA5MCkpKTsKICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCg0OTAsIC0xMCwgMTAsIDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmli
dXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQxLCBmYWxzZSwgSW50UmVjdCg0MjAsIC0xMCwg
ODAsIDkwKSkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQyMCwgLTIwLCA3MCwg
MTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChj
aGlsZDEsIGZhbHNlLCBJbnRSZWN0KDQyMCwgLTIwLCA3MCwgOTApKSk7CiAKLSAgICAgICAgb2Nj
bHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7
CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwpAQCAtMTE0Niw4ICsxMTkyLDggQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBibHVyTGF5ZXIgPSB0aGlzLT5j
cmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwg
MzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpD
b250ZW50TGF5ZXJUeXBlKiBvcGFjaXR5TGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIo
cGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSk7CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBv
cGFxdWVMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNm
b3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICAg
ICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIG9wYWNpdHlMYXllciA9IHRoaXMt
PmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMw
LCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKIAogICAgICAgICBGaWx0ZXJPcGVyYXRp
b25zIGZpbHRlcnM7CiAgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDEwLCBXZWJDb3JlOjpQZXJjZW50KSwgRmlsdGVy
T3BlcmF0aW9uOjpCTFVSKSk7CkBAIC0xMTY3LDIyICsxMjEzLDIyIEBAIHByb3RlY3RlZDoKICAg
ICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CiAKICAgICAgICAgLy8gT3BhY2l0eSBsYXllciB3b24ndCBjb250cmlidXRlIHRvIG9j
Y2x1c2lvbi4KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFj
aXR5TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihvcGFjaXR5TGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRU
YXJnZXRSZW5kZXJTdXJmYWNlKG9wYWNpdHlMYXllciwgb3BhY2l0eUxheWVyLT5yZW5kZXJTdXJm
YWNlKCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKG9wYWNpdHlMYXllciwg
b2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc1RhcmdldChvcGFjaXR5TGF5
ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmco
b3BhY2l0eUxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKICAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7CiAKICAg
ICAgICAgLy8gQW5kIGhhcyBub3RoaW5nIHRvIGNvbnRyaWJ1dGUgdG8gaXRzIHBhcmVudCBzdXJm
YWNlLgotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5maW5pc2hXaXRoTGF5ZXIob3BhY2l0
eUxheWVyLCBvY2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwogCiAgICAgICAgIC8v
IE9wYXF1ZSBsYXllciB3aWxsIGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgotICAgICAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhcXVlTGF5
ZXIpOwotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1
ZUxheWVyLCBvcGFxdWVMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92
ZVRvTGF5ZXJBc0l0c2VsZihvcGFxdWVMYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+
bW92ZVRvTGF5ZXJBc1RhcmdldChvcGFxdWVMYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhp
cy0+bW92ZVRvTGF5ZXJBc0NvbnRyaWJ1dGluZyhvcGFxdWVMYXllciwgb2NjbHVzaW9uKTsKIAog
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBA
IC0xMTkwLDI1ICsxMjM2LDI1IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCiAg
ICAgICAgIC8vIEFuZCBpdCBnZXRzIHRyYW5zbGF0ZWQgdG8gdGhlIHBhcmVudCBzdXJmYWNlLgot
ICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5maW5pc2hXaXRoTGF5ZXIob3BhcXVlTGF5ZXIs
IG9jY2x1c2lvbik7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwg
NzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKIAogICAgICAgICAvLyBUaGUgYmx1ciBsYXllciBuZWVkcyB0byB0aHJv
dyBhd2F5IGFueSBvY2NsdXNpb24gZnJvbSBvdXRzaWRlIGl0cyBzdWJ0cmVlLgotICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllci0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihibHVyTGF5ZXIsIG9jY2x1
c2lvbik7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuaXNFbXB0eSgpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7CiAKICAgICAgICAgLy8gQW5kIGl0IHdvbid0
IGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIoYmx1ckxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0
UmVuZGVyU3VyZmFjZShibHVyTGF5ZXIsIGJsdXJMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc1RhcmdldChibHVyTGF5ZXIsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmcoYmx1ckxheWVyLCBvY2NsdXNp
b24pOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwogCiAgICAgICAgIC8vIEJ1dCB0aGUgb3BhcXVl
IGxheWVyJ3Mgb2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0aGUgcGFyZW50LgotICAgICAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9u
KTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKQEAgLTEyMzEsMTYgKzEy
NzcsMTYgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNj
aXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1
cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKHN1cmZhY2UpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHN1cmZhY2Us
IG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNUYXJnZXQoc3VyZmFjZSwg
b2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDEwMCwgNTAs
IDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDUw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVj
dHMoKS5zaXplKCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1
cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVz
aW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0NvbnRyaWJ1dGluZyhzdXJmYWNlLCBvY2NsdXNp
b24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9u
KTsKIAogICAgICAgICAvLyBUaGUgc3VyZmFjZSBhbmQgcmVwbGljYSBzaG91bGQgYm90aCBiZSBv
Y2NsdWRpbmcgdGhlIHBhcmVudC4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAx
MDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKQEAgLTEyNjMsMTYgKzEzMDksMTYgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlw
ZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9u
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UpOworICAgICAgICB0aGlzLT5tb3ZlVG9M
YXllckFzSXRzZWxmKHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xh
eWVyQXNUYXJnZXQoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDEwMCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMCwgMCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0NvbnRyaWJ1
dGluZyhzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRz
ZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBUaGUgc3VyZmFjZSBhbmQgcmVw
bGljYSBzaG91bGQgYm90aCBiZSBvY2NsdWRpbmcgdGhlIHBhcmVudC4KICAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgwLCAxMDAsIDEwMCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwpAQCAtMTI5NCw3ICsxMzQwLDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlw
ZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNp
b24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXll
clNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CiAKLSAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihsYXllciwgb2NjbHVzaW9uKTsKIAog
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwpAQCAtMTMwNiw4ICsxMzUyLDkgQEAg
cHJvdGVjdGVkOgogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIs
IEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOwogCi0gICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNUYXJnZXQobGF5ZXIsIG9jY2x1c2lvbik7CisgICAg
ICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmcobGF5ZXIsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwogCiAg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKQEAgLTEzMzcsNyArMTM4NCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CiAgICAgICAgIG9jY2x1
c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0g
ICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1
c2lvbik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKQEAgLTEzNDksOCAr
MTM5Niw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAg
ICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc1RhcmdldChsYXllciwgb2NjbHVzaW9u
KTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0NvbnRyaWJ1dGluZyhsYXllciwgb2NjbHVz
aW9uKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lv
bik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwpAQCAtMTM4MCwxNSAr
MTQyOCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRo
U2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVy
U3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAx
MDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxh
eWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAs
IDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAotICAgICAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0KGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0
aGlzLT5tb3ZlVG9MYXllckFzQ29udHJpYnV0aW5nKGxheWVyLCBvY2NsdXNpb24pOworICAgICAg
ICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKIAogICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CkBAIC0xNDE4LDE1ICsxNDY3LDE2IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7CiAgICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAg
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1c2lv
bik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDAp
KSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPm1vdmVU
b0xheWVyQXNUYXJnZXQobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xh
eWVyQXNDb250cmlidXRpbmcobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVU
b0xheWVyQXNJdHNlbGYocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwg
MTAwLCAxMDAsIDEwMCkpKTsKQEAgLTE0NTYsMTUgKzE1MDYsMTYgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNz
b3JSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAg
IHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7CiAKICAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNUYXJn
ZXQobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmli
dXRpbmcobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNl
bGYocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEw
MCkpKTsKQEAgLTE0OTgsMTUgKzE1NDksMTYgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlw
ZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCg1MCwgNTAs
IDIwMCwgMjAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPm1vdmVU
b0xheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAx
MDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkp
OwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0g
ICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNUYXJnZXQobGF5ZXIsIG9j
Y2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmcobGF5ZXIs
IG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYocGFyZW50LCBv
Y2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKQEAgLTE1
NDAsMTUgKzE1OTIsMTYgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6
OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAwLCA1MDAs
IDEwMCwgMTAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0
c2VsZihsYXllciwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJl
Y3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAotICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNp
b24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0KGxheWVyLCBvY2NsdXNpb24pOworICAg
ICAgICB0aGlzLT5tb3ZlVG9MYXllckFzQ29udHJpYnV0aW5nKGxheWVyLCBvY2NsdXNpb24pOwor
ICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKIAog
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CkBAIC0xNTgyLDE1ICsxNjM1LDE2
IEBAIHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29y
PHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNl
VHlwZT4gb2NjbHVzaW9uKEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7CiAgICAgICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwog
Ci0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYobGF5ZXIsIG9j
Y2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAw
LCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwg
SW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+
bW92ZVRvTGF5ZXJBc1RhcmdldChsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92
ZVRvTGF5ZXJBc0NvbnRyaWJ1dGluZyhsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+
bW92ZVRvTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkp
KTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgwLCAxMDAsIDEwMCwgMTAwKSkpOwpAQCAtMTYyMiw3ICsxNjc2LDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCiAgICAgICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFt
ZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXll
ci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihs
YXllciwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQg
d2hlbiBkcmF3biBpbnRvIGl0cyB0YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4g
ZnJvbSB0aGUgdGFyZ2V0IHN1cmZhY2UKICAgICAgICAgLy8gaXMgbm90IGluIHRoYXQgdGFyZ2V0
IHNwYWNlLCB0aGVuIGFmdGVyIHRyYW5zbGF0aW5nIHRoZXNlIHF1ZXJ5IHJlY3RzIGludG8gdGhl
IHRhcmdldCwgdGhleSB3aWxsIGZhbGwgb3V0c2lkZQpAQCAtMTY0Niw3ICsxNzAwLDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCiAgICAgICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
LCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJB
c0l0c2VsZihsYXllciwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAw
LCAxMDApKSk7CkBAIC0xNjYxLDggKzE3MTUsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSkpOwogICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsK
IAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAg
ICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0KGxheWVyLCBvY2Ns
dXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzQ29udHJpYnV0aW5nKGxheWVyLCBv
Y2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2Nj
bHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpLmlzRW1wdHkoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgwdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0xNjg0
LDggKzE3MzksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6
OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
CiAgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAxMDApKTsKIAotICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICAgICAgdGhpcy0+cmVzZXRMYXll
ckl0ZXJhdG9yKCk7CisgICAgICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxheWVy
LCBvY2NsdXNpb24pOworICAgICAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihwYXJl
bnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtMTY5OSw4ICsxNzU1LDkgQEAgcHJvdGVj
dGVkOgogICAgICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICAgICAgbGF5ZXIt
PnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRSZWN0KDIwLCAyMCwgMTgwLCAxODApKTsKIAotICAg
ICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIobGF5ZXIpOworICAgICAgICAgICAgdGhpcy0+cmVzZXRMYXllckl0ZXJhdG9yKCk7CisgICAg
ICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNpb24pOworICAg
ICAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAK
ICAgICAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTIwLCAxMjAsIDE4MCwgMTgwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwpAQCAtMTcxNCw4ICsxNzcxLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5
cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNvbnRlbnRz
UmVjdChJbnRSZWN0KDE1MCwgMTUwLCAxMDAsIDEwMCkpOwogCi0gICAgICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAg
ICAgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAg
ICAgICAgICB0aGlzLT5yZXNldExheWVySXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHRoaXMtPm1v
dmVUb0xheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgICAgICB0aGlzLT5t
b3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKIAogICAgICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyNTAsIDI1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtMTc0
Myw4ICsxODAxLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJl
bnQpOwogCiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAg
IHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7CiAKKyAgICAgICAg
Ly8gVGhlIGxheWVyIGlzIHJvdGF0ZWQgaW4gM2QgYnV0IHdpdGhvdXQgcHJlc2VydmluZyAzZCwg
c28gaXQgb25seSBnZXRzIHJlc2l6ZWQuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVyLCBJ
bnRSZWN0KDAsIDAsIDIwMCwgMjAwKSkpOwogICAgIH0KIH07CkBAIC0xNzY2LDEwICsxODI1LDEx
IEBAIHByb3RlY3RlZDoKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY29udGFp
bmVyID0gdGhpcy0+Y3JlYXRlTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwogICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY29u
dGFpbmVyLCB0cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgdHJ1ZSk7CiAgICAgICAgIGNvbnRhaW5lci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisgICAg
ICAgIGxheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdF
dGMocGFyZW50KTsKIAogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8
dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNpb24pOwogCiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjAwLCAyMDApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSkpOwog
ICAgIH0KQEAgLTE3OTUsMTAgKzE4NTUsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlKiBjb250YWluZXIgPSB0aGlzLT5jcmVhdGVMYXllcihwYXJlbnQs
IHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDUwMCwgNTAw
KSk7CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdMYXllcihjb250YWluZXIsIHRyYW5zZm9ybSwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwogICAgICAgICBjb250YWluZXItPnNldFBy
ZXNlcnZlczNEKHRydWUpOworICAgICAgICBsYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAg
ICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKICAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1l
IFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihs
YXllciwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBUaGUgYm90dG9tIDExIHBpeGVsIHJvd3Mg
b2YgdGhpcyBsYXllciByZW1haW4gdmlzaWJsZSBpbnNpZGUgdGhlIGNvbnRhaW5lciwgYWZ0ZXIg
dHJhbnNsYXRpb24gdG8gdGhlIHRhcmdldCBzdXJmYWNlLiBXaGVuIHRyYW5zbGF0ZWQgYmFjaywK
ICAgICAgICAgLy8gdGhpcyB3aWxsIGluY2x1ZGUgbWFueSBtb3JlIHBpeGVscyBidXQgbXVzdCBp
bmNsdWRlIGF0IGxlYXN0IHRoZSBib3R0b20gMTEgcm93cy4KQEAgLTE4MjIsMTMgKzE4ODMsMTQg
QEAgcHJvdGVjdGVkOgogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
cGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29u
dGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0
cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsKICAg
ICAgICAgcGFyZW50LT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKKyAgICAgICAgbGF5ZXItPnNldFBy
ZXNlcnZlczNEKHRydWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCiAg
ICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICAgICAgLy8gVGhp
cyBsYXllciBpcyBlbnRpcmVseSBiZWhpbmQgdGhlIGNhbWVyYSBhbmQgc2hvdWxkIG5vdCBvY2Ns
dWRlLgotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwor
ICAgICAgICAvLyBUaGUgfGxheWVyfCBpcyBlbnRpcmVseSBiZWhpbmQgdGhlIGNhbWVyYSBhbmQg
c2hvdWxkIG5vdCBvY2NsdWRlLgorICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxh
eWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVu
dCwgb2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMHUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAg
IH0KQEAgLTE4NTAsMTQgKzE5MTIsMTUgQEAgcHJvdGVjdGVkOgogICAgICAgICB0eXBlbmFtZSBU
eXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwogICAg
ICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVh
dGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAxMDApLCB0cnVlKTsKICAgICAgICAgcGFyZW50LT5zZXRQcmVzZXJ2ZXMzRCh0cnVl
KTsKKyAgICAgICAgbGF5ZXItPnNldFByZXNlcnZlczNEKHRydWUpOwogICAgICAgICB0aGlzLT5j
YWxjRHJhd0V0YyhwYXJlbnQpOwogCiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRo
U2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVy
U3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZh
Y2UoKSk7CiAKICAgICAgICAgLy8gVGhpcyBpcyB2ZXJ5IGNsb3NlIHRvIHRoZSBjYW1lcmEsIHNv
IHBpeGVscyBpbiBpdHMgdmlzaWJsZUxheWVyUmVjdCB3aWxsIGFjdHVhbGx5IGdvIG91dHNpZGUg
b2YgdGhlIGxheWVyJ3MgY2xpcFJlY3QuCiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRob3NlIHBp
eGVscyBkb24ndCBvY2NsdWRlIHRoaW5ncyBvdXRzaWRlIHRoZSBjbGlwUmVjdC4KLSAgICAgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgdGhpcy0+
bW92ZVRvTGF5ZXJBc0l0c2VsZihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92
ZVRvTGF5ZXJBc0l0c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAgICAgICAgIEVYUEVDVF9FUShJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVEoSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOwpAQCAtMTg3Nyw2ICsxOTQwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB0eXBl
bmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZSA9IHRoaXMtPmNyZWF0ZURyYXdp
bmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZCA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJm
YWNlLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAs
IDMwMCksIHRydWUpOwogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
c3VyZmFjZUNoaWxkMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDMwMCksIHRydWUp
OworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50MiA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwogICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogdG9wbW9zdCA9IHRoaXMtPmNyZWF0ZURyYXdpbmdM
YXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDI1MCwgMCksIElu
dFNpemUoNTAsIDMwMCksIHRydWUpOwogCiAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9D
b250cm9sbGVyKCpsYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCksIDEwLCAwLCAxLCBm
YWxzZSk7CkBAIC0xODg5LDI2ICsxOTUzLDI2IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwg
dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcih0b3Btb3N0KTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0
c2VsZih0b3Btb3N0LCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRz
ZWxmKHBhcmVudDIsIG9jY2x1c2lvbik7CiAgICAgICAgIC8vIFRoaXMgb2NjbHVzaW9uIHdpbGwg
YWZmZWN0IGFsbCBzdXJmYWNlcy4KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAw
LCAyNTAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRS
ZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAs
IDAsIDI1MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQyLCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZDIpOwotICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwgMTUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQpOworICAgICAg
ICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHN1cmZhY2VDaGlsZDIsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24p
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwgMTUwLCAzMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2VDaGlsZCwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihzdXJmYWNlLCBv
Y2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMCwgNTAsIDMw
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAw
LCAzMDAsIDMwMCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KHN1cmZhY2UpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAw
LCAzMDApKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uo
c3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRv
TGF5ZXJBc1RhcmdldChzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9M
YXllckFzQ29udHJpYnV0aW5nKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8gT2Nj
bHVzaW9uIHdpdGhpbiB0aGUgc3VyZmFjZSBpcyBsb3N0IHdoZW4gbGVhdmluZyB0aGUgYW5pbWF0
aW5nIHN1cmZhY2UuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjUwLCAz
MDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChz
dXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKIAotICAgICAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAg
ICAgICAvLyBPY2NsdXNpb24gaXMgbm90IGFkZGVkIGZvciB0aGUgYW5pbWF0aW5nIGxheWVyLgor
ICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNpb24pOworICAg
ICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKKworICAg
ICAgICAvLyBPY2NsdXNpb24gaXMgbm90IGFkZGVkIGZvciB0aGUgYW5pbWF0aW5nIHxsYXllcnwu
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjUwLCAzMDApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkp
KTsKICAgICB9CiB9OwpAQCAtMTkyNSw2ICsxOTg5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB0
eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZSA9IHRoaXMtPmNyZWF0ZURy
YXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZCA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihz
dXJmYWNlLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgy
MDAsIDMwMCksIHRydWUpOwogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogc3VyZmFjZUNoaWxkMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDMwMCksIHRy
dWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50MiA9
IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwogICAgICAgICB0eXBl
bmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogdG9wbW9zdCA9IHRoaXMtPmNyZWF0ZURyYXdp
bmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDI1MCwgMCks
IEludFNpemUoNTAsIDMwMCksIHRydWUpOwogCiAgICAgICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9u
VG9Db250cm9sbGVyKCpsYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCksIDEwLCAxLCAw
LCBmYWxzZSk7CkBAIC0xOTM3LDI2ICsyMDAyLDI2IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlw
ZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcih0b3Btb3N0KTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJB
c0l0c2VsZih0b3Btb3N0LCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFz
SXRzZWxmKHBhcmVudDIsIG9jY2x1c2lvbik7CiAgICAgICAgIC8vIFRoaXMgb2NjbHVzaW9uIHdp
bGwgYWZmZWN0IGFsbCBzdXJmYWNlcy4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAyNTAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZDIpOwotICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwgMTUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQpOworICAgICAg
ICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHN1cmZhY2VDaGlsZDIsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24p
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwgMTUwLCAzMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2VDaGlsZCwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihzdXJmYWNlLCBv
Y2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMCwgNTAsIDMw
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAw
LCAzMDAsIDMwMCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KHN1cmZhY2UpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAw
LCAzMDApKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uo
c3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRv
TGF5ZXJBc1RhcmdldChzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9M
YXllckFzQ29udHJpYnV0aW5nKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8gT2Nj
bHVzaW9uIHdpdGhpbiB0aGUgc3VyZmFjZSBpcyBsb3N0IHdoZW4gbGVhdmluZyB0aGUgYW5pbWF0
aW5nIHN1cmZhY2UuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjUwLCAz
MDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChz
dXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKIAotICAgICAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAg
ICAgICAvLyBPY2NsdXNpb24gaXMgbm90IGFkZGVkIGZvciB0aGUgYW5pbWF0aW5nIGxheWVyLgor
ICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKGxheWVyLCBvY2NsdXNpb24pOworICAg
ICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKKworICAg
ICAgICAvLyBPY2NsdXNpb24gaXMgbm90IGFkZGVkIGZvciB0aGUgYW5pbWF0aW5nIHxsYXllcnwu
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjUwLCAzMDApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkp
KTsKICAgICB9CiB9OwpAQCAtMTk5MiwyMiArMjA1NywyMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXll
clR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2Uoc3VyZmFjZTItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlMik7Ci0gICAgICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZTIsIHN1cmZhY2UyLT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxm
KHN1cmZhY2UyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0
KHN1cmZhY2UyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzQ29udHJp
YnV0aW5nKHN1cmZhY2UyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgMCwgNTAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhp
cy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihzdXJmYWNlQ2hpbGQyLCBvY2NsdXNpb24pOwogCi0gICAg
ICAgIC8vIFRoZSBsYXllciBpcyBtb3ZpbmcgaW4gc2NyZWVuIHNwYWNlIGJ1dCBub3QgcmVsYXRp
dmUgdG8gaXRzIHRhcmdldCwgc28gb2NjbHVzaW9uIHNob3VsZCBoYXBwZW4gaW4gaXRzIHRhcmdl
dCBzcGFjZSBvbmx5LgorICAgICAgICAvLyBzdXJmYWNlQ2hpbGQyIGlzIG1vdmluZyBpbiBzY3Jl
ZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFyZ2V0LCBzbyBvY2NsdXNpb24gc2hv
dWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHkuCiAgICAgICAgIC8vIEl0IGFsc28g
bWVhbnMgdGhhdCB0aGluZ3Mgb2NjbHVkaW5nIGluIHNjcmVlbiBzcGFjZSAoZS5nLiBzdXJmYWNl
MikgY2Fubm90IG9jY2x1ZGUgdGhpcyBsYXllci4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3Vy
ZmFjZUNoaWxkMiwgSW50UmVjdCgwLCAwLCAxMDAsIDMwMCkpKTsKICAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChzdXJmYWNlQ2hpbGQsIEludFJlY3QoMCwgMCwgNTAsIDMw
MCkpKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFj
ZUNoaWxkMik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYoc3VyZmFjZUNoaWxk
LCBvY2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHN1
cmZhY2VDaGlsZCwgSW50UmVjdCgwLCAwLCAxMDAsIDMwMCkpKTsKICAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCA1MCwgMzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0yMDE1LDM4ICsyMDc5LDM5
IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwMCwgMCwgMjAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiAKLSAgICAgICAgLy8gVGhl
IHN1cmZhY2UgY2hpbGQgaXMgb2NjbHVkZWQgYnkgdGhlIHN1cmZhY2VDaGlsZDIsIGJ1dCBpcyBt
b3ZpbmcgcmVsYXRpdmUgaXRzIHRhcmdldCBhbmQgdGhlIHNjcmVlbiwgc28gaXQKKyAgICAgICAg
Ly8gVGhlIHN1cmZhY2VDaGlsZCBpcyBvY2NsdWRlZCBieSB0aGUgc3VyZmFjZUNoaWxkMiwgYnV0
IGlzIG1vdmluZyByZWxhdGl2ZSBpdHMgdGFyZ2V0IGFuZCB0aGUgc2NyZWVuLCBzbyBpdAogICAg
ICAgICAvLyBjYW4ndCBiZSBvY2NsdWRlZC4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFj
ZUNoaWxkLCBJbnRSZWN0KDAsIDAsIDIwMCwgMzAwKSkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHN1cmZhY2VDaGlsZCwgSW50UmVjdCgwLCAwLCA1MCwgMzAwKSkp
OwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hp
bGQpOwotICAgICAgICAvLyBUaGUgbGF5ZXIgaXMgbW92aW5nIGluIHNjcmVlbiBzcGFjZSBidXQg
bm90IHJlbGF0aXZlIHRvIGl0cyB0YXJnZXQsIHNvIG9jY2x1c2lvbiBzaG91bGQgaGFwcGVuIGlu
IGl0cyB0YXJnZXQgc3BhY2Ugb25seS4KKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2Vs
ZihzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICAvLyBUaGUgc3VyZmFjZUNoaWxkIGlzIG1v
dmluZyBpbiBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFyZ2V0LCBzbyBv
Y2NsdXNpb24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHkuCiAgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwgMjAwLCAzMDApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiAK
LSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UpOwotICAg
ICAgICAvLyBUaGUgbGF5ZXIgaXMgbW92aW5nIGluIHNjcmVlbiBzcGFjZSBidXQgbm90IHJlbGF0
aXZlIHRvIGl0cyB0YXJnZXQsIHNvIG9jY2x1c2lvbiBzaG91bGQgaGFwcGVuIGluIGl0cyB0YXJn
ZXQgc3BhY2Ugb25seS4KKyAgICAgICAgdGhpcy0+ZmluaXNoV2l0aExheWVyKHN1cmZhY2UsIG9j
Y2x1c2lvbik7CisgICAgICAgIC8vIFRoZSBzdXJmYWNlJ3Mgb3duaW5nIGxheWVyIGlzIG1vdmlu
ZyBpbiBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFyZ2V0LCBzbyBvY2Ns
dXNpb24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHkuCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiAKLSAgICAgICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0KHN1cmZh
Y2UsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmco
c3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBUaGUgY29udHJpYnV0aW5nIHxzdXJm
YWNlfCBpcyBhbmltYXRpbmcgc28gaXQgY2FuJ3QgYmUgb2NjbHVkZWQuCiAgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAw
LCAzMDAsIDMwMCkpKTsKIAotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAvLyBUaGUgc3VyZmFjZSBp
cyBtb3ZpbmcgaW4gdGhlIHNjcmVlbiBhbmQgaW4gaXRzIHRhcmdldCwgc28gYWxsIG9jY2x1c2lv
biB3aXRoaW4gdGhlIHN1cmZhY2UgaXMgbG9zdCB3aGVuIGxlYXZpbmcgaXQuCisgICAgICAgIHRo
aXMtPm1vdmVUb0xheWVyQXNJdHNlbGYobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIC8vIFRo
ZSB8c3VyZmFjZXwgaXMgbW92aW5nIGluIHRoZSBzY3JlZW4gYW5kIGluIGl0cyB0YXJnZXQsIHNv
IGFsbCBvY2NsdXNpb24gd2l0aGluIHRoZSBzdXJmYWNlIGlzIGxvc3Qgd2hlbiBsZWF2aW5nIGl0
LgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCAwLCAyNTAsIDMwMCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAw
KSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7
Ci0gICAgICAgIC8vIFRoZSBsYXllciBpcyBhbmltYXRpbmcgaW4gdGhlIHNjcmVlbiBhbmQgaW4g
aXRzIHRhcmdldCwgc28gbm8gb2NjbHVzaW9uIGlzIGFkZGVkLgorICAgICAgICB0aGlzLT5tb3Zl
VG9MYXllckFzSXRzZWxmKHBhcmVudCwgb2NjbHVzaW9uKTsKKyAgICAgICAgLy8gVGhlIHxsYXll
cnwgaXMgYW5pbWF0aW5nIGluIHRoZSBzY3JlZW4gYW5kIGluIGl0cyB0YXJnZXQsIHNvIG5vIG9j
Y2x1c2lvbiBpcyBhZGRlZC4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgMCwg
MjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCgwLCAwLCAzMDAsIDMwMCkpKTsKICAgICB9CiB9OwpAQCAtMjA3MiwxMCArMjEzNywxMCBAQCBw
cm90ZWN0ZWQ6CiAKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZTItPnJlbmRlclN1cmZhY2UoKSk7
Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlMik7Ci0g
ICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZTIsIHN1
cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1Rhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5t
b3ZlVG9MYXllckFzSXRzZWxmKHN1cmZhY2UyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5t
b3ZlVG9MYXllckFzVGFyZ2V0KHN1cmZhY2UyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5t
b3ZlVG9MYXllckFzQ29udHJpYnV0aW5nKHN1cmZhY2UyLCBvY2NsdXNpb24pOworICAgICAgICB0
aGlzLT5maW5pc2hXaXRoTGF5ZXIoc3VyZmFjZTIsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0yMDg2LDEw
ICsyMTUxLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgb2NjbHVzaW9uLnNldE9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoUmVnaW9uKCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0T2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKFJlZ2lvbigpKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKLSAgICAgICAgb2NjbHVzaW9uLmZp
bmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHN1
cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNUYXJnZXQoc3Vy
ZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0NvbnRyaWJ1dGlu
ZyhzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5maW5pc2hXaXRoTGF5ZXIoc3Vy
ZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAs
IDQwMCwgNDAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7
CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5yZWN0cygpLnNpemUoKSk7CkBAIC0yMTEyLDEwICsyMTc3LDEwIEBAIHByb3RlY3RlZDoKIAog
ICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7Ci0gICAgICAgIG9jY2x1c2lv
bi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2Vs
ZihzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0
KHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmli
dXRpbmcoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0
c2VsZihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCAzMDAsIDIwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtMjE0MCwyNCArMjIwNSwyNSBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgLy8g
VGhpcyBvY2NsdWRlcyB0aGUgcmVwbGljYSwgYnV0IG5vdCB0aGUgc3VyZmFjZSBpdHNlbGYuCi0g
ICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIodG9w
bW9zdCk7CisgICAgICAgIC8vIHx0b3Btb3N0fCBvY2NsdWRlcyB0aGUgcmVwbGljYSwgYnV0IG5v
dCB0aGUgc3VyZmFjZSBpdHNlbGYuCisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYo
dG9wbW9zdCwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZmluaXNoV2l0aExheWVyKHRvcG1v
c3QsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7
CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKKyAgICAgICAgdGhpcy0+bW92ZVRv
TGF5ZXJBc0l0c2VsZihzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5maW5pc2hX
aXRoTGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmZp
bmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0KHN1cmZhY2UsIG9jY2x1c2lv
bik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmcoc3VyZmFjZSwgb2Nj
bHVzaW9uKTsKIAogICAgICAgICAvLyBTdXJmYWNlIGlzIG5vdCBvY2NsdWRlZCBzbyBpdCBzaG91
bGRuJ3QgdGhpbmsgaXQgaXMuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwg
MTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50
UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKQEAgLTIxODAs
MjQgKzIyNDYsMjUgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
V2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAg
ICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwogCi0gICAgICAgIC8vIFRoaXMgb2NjbHVkZXMgdGhlIHN1cmZhY2UsIGJ1dCBub3Qg
dGhlIGVudGlyZSBzdXJmYWNlJ3MgcmVwbGljYS4KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcih0b3Btb3N0KTsKKyAgICAgICAgLy8gfHRvcG1v
c3R8IG9jY2x1ZGVzIHRoZSBzdXJmYWNlLCBidXQgbm90IHRoZSBlbnRpcmUgc3VyZmFjZSdzIHJl
cGxpY2EuCisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYodG9wbW9zdCwgb2NjbHVz
aW9uKTsKKyAgICAgICAgdGhpcy0+ZmluaXNoV2l0aExheWVyKHRvcG1vc3QsIG9jY2x1c2lvbik7
CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDExMCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMTEwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFj
ZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKHN1cmZhY2UpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHN1cmZh
Y2UsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmZpbmlzaFdpdGhMYXllcihzdXJmYWNlLCBv
Y2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAx
MTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJT
dXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
Pm1vdmVUb0xheWVyQXNUYXJnZXQoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+
bW92ZVRvTGF5ZXJBc0NvbnRyaWJ1dGluZyhzdXJmYWNlLCBvY2NsdXNpb24pOwogCiAgICAgICAg
IC8vIFN1cmZhY2UgaXMgb2NjbHVkZWQsIGJ1dCBvbmx5IHRoZSB0b3AgMTBweCBvZiB0aGUgcmVw
bGljYS4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qoc3VyZmFjZSwgZmFs
c2UsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CkBAIC0yMjIzLDI0ICsyMjkwLDI1IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7CiAKICAgICAgICAgLy8gVGhlc2Ugb2NjbHVkZSB0aGUgc3VyZmFj
ZSBhbmQgcmVwbGljYSBkaWZmZXJlbnRseSwgc28gd2UgY2FuIHRlc3QgZWFjaCBvbmUuCi0gICAg
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3ZlclJl
cGxpY2EpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3ZlclN1
cmZhY2UpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKG92ZXJSZXBsaWNhLCBv
Y2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKG92ZXJTdXJmYWNl
LCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5maW5pc2hXaXRoTGF5ZXIob3ZlclN1cmZhY2Us
IG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA1MCwg
MjAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDIw
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0
c2VsZihzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5maW5pc2hXaXRoTGF5ZXIo
c3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAs
IDAsIDEwMCwgMjAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwg
MCwgMTAwLCAxMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFy
Z2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAg
ICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFyZ2V0KHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAg
ICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmcoc3VyZmFjZSwgb2NjbHVzaW9uKTsK
IAogICAgICAgICAvLyBTdXJmYWNlIGFuZCByZXBsaWNhIGFyZSBvY2NsdWRlZCBkaWZmZXJlbnQg
YW1vdW50cy4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0MCwgMCwgNjAsIDEwMCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZh
Y2UsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwpAQCAtMjI2NSwxOCArMjMzMywx
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lz
c29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJm
YWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0g
ICAgICAgIC8vIFRoaXMgb2NjbHVkZXMgZXZlcnl0aGluZyBwYXJ0aWFsbHkgc28gd2Uga25vdyBv
Y2NsdXNpb24gaXMgaGFwcGVuaW5nIGF0IGFsbC4KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcih0b3Btb3N0KTsKKyAgICAgICAgLy8gfHRvcG1v
c3R8IG9jY2x1ZGVzIGV2ZXJ5dGhpbmcgcGFydGlhbGx5IHNvIHdlIGtub3cgb2NjbHVzaW9uIGlz
IGhhcHBlbmluZyBhdCBhbGwuCisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYodG9w
bW9zdCwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZmluaXNoV2l0aExheWVyKHRvcG1vc3Qs
IG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAs
IDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCA1
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHN1cmZhY2VDaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkKTsKKyAgICAgICAgdGhpcy0+bW92
ZVRvTGF5ZXJBc0l0c2VsZihzdXJmYWNlQ2hpbGQsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMt
PmZpbmlzaFdpdGhMYXllcihzdXJmYWNlQ2hpbGQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8g
c3VyZmFjZUNoaWxkIGluY3JlYXNlcyB0aGUgb2NjbHVzaW9uIGluIHRoZSBzY3JlZW4gYnkgYSBu
YXJyb3cgc2xpdmVyLgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwg
NjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTIy
ODksMjEgKzIzNTYsMjEgQEAgcHJvdGVjdGVkOgogICAgICAgICAvLyBtYXNrIHRvIGJvdW5kcywg
c28gaXQgZG9lc24ndCBoYXZlIGEgY2xpcFJlY3Qgb2YgaXRzIG93bi4gVGh1cyB0aGUgcGFyZW50
IG9mIHxzdXJmYWNlQ2hpbGR8IGV4ZXJjaXNlcyBkaWZmZXJlbnQgY29kZSBwYXRocwogICAgICAg
ICAvLyBhcyBpdHMgcGFyZW50IGRvZXMgbm90IGhhdmUgYSBjbGlwUmVjdC4KIAotICAgICAgICBv
Y2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2VDaGlsZCwgc3VyZmFj
ZUNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzVGFy
Z2V0KHN1cmZhY2VDaGlsZCwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJB
c0NvbnRyaWJ1dGluZyhzdXJmYWNlQ2hpbGQsIG9jY2x1c2lvbik7CiAgICAgICAgIC8vIFRoZSBz
dXJmYWNlQ2hpbGQncyBwYXJlbnQgZG9lcyBub3QgaGF2ZSBhIGNsaXBSZWN0IGFzIGl0IG93bnMg
YSByZW5kZXIgc3VyZmFjZS4gTWFrZSBzdXJlIHRoZSB1bm9jY2x1ZGVkIHJlY3QKICAgICAgICAg
Ly8gZG9lcyBub3QgZ2V0IGNsaXBwZWQgYXdheSBpbmFwcHJvcHJpYXRlbHkuCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNDAsIDEwMCwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlQ2hpbGQsIGZhbHNlLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgNTApKSk7CiAKICAgICAgICAgLy8gV2hlbiB0aGUgc3VyZmFjZUNoaWxk
J3Mgb2NjbHVzaW9uIGlzIHRyYW5zZm9ybWVkIHVwIHRvIGl0cyBwYXJlbnQsIG1ha2Ugc3VyZSBp
dCBpcyBub3QgY2xpcHBlZCBhd2F5IGluYXBwcm9wcmlhdGVseSBhbHNvLgotICAgICAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc0l0c2VsZihzdXJmYWNlLCBvY2NsdXNpb24p
OwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgNjApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
ICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAxMCwgMTAwLCA1MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7
Ci0KLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNl
LCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFz
VGFyZ2V0KHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXND
b250cmlidXRpbmcoc3VyZmFjZSwgb2NjbHVzaW9uKTsKICAgICAgICAgLy8gVGhlIHN1cmZhY2Un
cyBwYXJlbnQgZG9lcyBoYXZlIGEgY2xpcFJlY3QgYXMgaXQgaXMgdGhlIHJvb3QgbGF5ZXIuCiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICB9CkBAIC0yMzI3LDE4ICsyMzk0LDE4IEBA
IHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAg
ICAgICAvLyBUaGlzIG9jY2x1ZGVzIGV2ZXJ5dGhpbmcgcGFydGlhbGx5IHNvIHdlIGtub3cgb2Nj
bHVzaW9uIGlzIGhhcHBlbmluZyBhdCBhbGwuCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIodG9wbW9zdCk7CisgICAgICAgIC8vIHx0b3Btb3N0
fCBvY2NsdWRlcyBldmVyeXRoaW5nIHBhcnRpYWxseSBzbyB3ZSBrbm93IG9jY2x1c2lvbiBpcyBo
YXBwZW5pbmcgYXQgYWxsLgorICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzSXRzZWxmKHRvcG1v
c3QsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmZpbmlzaFdpdGhMYXllcih0b3Btb3N0LCBv
Y2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgODAsIDUw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgODAsIDUwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMo
KS5zaXplKCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
c3VyZmFjZUNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICAvLyBzdXJmYWNlQ2hpbGQg
aXMgbm90IG9wYXF1ZSBhbmQgZG9lcyBub3Qgb2NjbHVkZSwgc28gd2UgaGF2ZSBhIG5vbi1lbXB0
eSB1bm9jY2x1ZGVkIGFyZWEgb24gc3VyZmFjZS4KLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZCk7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVy
QXNJdHNlbGYoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5maW5pc2hX
aXRoTGF5ZXIoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgMCwgODAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0yMzQ5LDE0ICsyNDE2LDE0IEBA
IHByb3RlY3RlZDoKICAgICAgICAgLy8gbWFzayB0byBib3VuZHMsIHNvIGl0IGRvZXNuJ3QgaGF2
ZSBhIGNsaXBSZWN0IG9mIGl0cyBvd24uIFRodXMgdGhlIHBhcmVudCBvZiB8c3VyZmFjZUNoaWxk
fCBleGVyY2lzZXMgZGlmZmVyZW50IGNvZGUgcGF0aHMKICAgICAgICAgLy8gYXMgaXRzIHBhcmVu
dCBkb2VzIG5vdCBoYXZlIGEgY2xpcFJlY3QuCiAKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVk
VGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlQ2hpbGQsIHN1cmZhY2VDaGlsZC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc1RhcmdldChzdXJmYWNlQ2hpbGQs
IG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNDb250cmlidXRpbmcoc3Vy
ZmFjZUNoaWxkLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBUaGUgc3VyZmFjZUNoaWxkJ3MgcGFy
ZW50IGRvZXMgbm90IGhhdmUgYSBjbGlwUmVjdCBhcyBpdCBvd25zIGEgcmVuZGVyIHN1cmZhY2Uu
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNTAsIDgwLCA1MCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2VDaGlsZCwg
ZmFsc2UsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKLQotICAgICAg
ICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1cmZhY2Ut
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPm1vdmVUb0xheWVyQXNJdHNlbGYoc3Vy
ZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+bW92ZVRvTGF5ZXJBc1RhcmdldChzdXJm
YWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5tb3ZlVG9MYXllckFzQ29udHJpYnV0aW5n
KHN1cmZhY2UsIG9jY2x1c2lvbik7CiAgICAgICAgIC8vIFRoZSBzdXJmYWNlJ3MgcGFyZW50IGRv
ZXMgaGF2ZSBhIGNsaXBSZWN0IGFzIGl0IGlzIHRoZSByb290IGxheWVyLgogICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDUwLCA4MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCAzYmEwYTFkZDI0MzUxOTI3ODBlNDc4YzAzZmZl
YjY1Y2M3ZWIyMjY5Li45OTFjZGRjNDY0YWIyNzE0NDBiYjc1Y2ZlODkxMTM0N2U2ZGMxZjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5j
cHAKQEAgLTUzLDcgKzUzLDkgQEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IG1fc2Npc3NvclJlY3RJ
blNjcmVlbjsKIH07CiAKLXN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IG1ha2VM
YXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGZsb2F0IG9wYWNpdHks
IGJvb2wgb3BhcXVlLCBjb25zdCBJbnRSZWN0JiBsYXllck9wYXF1ZVJlY3QpCit0eXBlZGVmIEND
TGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVy
U3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVy
YXRvclR5cGU7CisKK3N0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IG1ha2VMYXll
cihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBk
cmF3VHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGZsb2F0IG9wYWNpdHksIGJv
b2wgb3BhcXVlLCBjb25zdCBJbnRSZWN0JiBsYXllck9wYXF1ZVJlY3QsIFZlY3RvcjxDQ0xheWVy
SW1wbCo+JiBzdXJmYWNlTGF5ZXJMaXN0KQogewogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllciA9IENDVGlsZWRMYXllckltcGw6OmNyZWF0ZSgwKTsKICAgICBPd25QdHI8Q0NMYXll
clRpbGluZ0RhdGE+IHRpbGVyID0gQ0NMYXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXplKDEw
MCwgMTAwKSwgQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzKTsKQEAgLTc2LDI1ICs3
OCwzMyBAQCBzdGF0aWMgUGFzc093blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBtYWtlTGF5ZXIoQ0NU
aWxlZExheWVySW1wbCogcGFyZW50LCBjb25zdCBUcgogICAgIGlmICghcGFyZW50KSB7CiAgICAg
ICAgIGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIGxheWVyLT5zZXRUYXJn
ZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIH0gZWxzZQorICAg
ICAgICBzdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChsYXllci5nZXQoKSk7CisgICAgICAgIGxheWVy
LT5yZW5kZXJTdXJmYWNlKCktPmxheWVyTGlzdCgpLmFwcGVuZChsYXllci5nZXQoKSk7CisgICAg
fSBlbHNlIHsKICAgICAgICAgbGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT50
YXJnZXRSZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+
bGF5ZXJMaXN0KCkuYXBwZW5kKGxheWVyLmdldCgpKTsKKyAgICB9CiAKICAgICByZXR1cm4gbGF5
ZXIucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBx
dWFkTGlzdCwgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiYgc2hhcmVkU3RhdGVM
aXN0LCBDQ1RpbGVkTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2Nj
bHVzaW9uVHJhY2tlcikKK3N0YXRpYyB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRM
aXN0LCBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+JiBzaGFyZWRTdGF0ZUxpc3Qs
IENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ0xheWVySXRlcmF0b3JUeXBlJiBpdCwgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKIHsKKyAgICBvY2NsdXNpb25UcmFj
a2VyLmVudGVyTGF5ZXIoaXQpOwogICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRMaXN0
LCBsYXllciwgJm9jY2x1c2lvblRyYWNrZXIpOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwogICAg
IGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7CiAgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1
YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICBz
aGFyZWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOworICAgIG9j
Y2x1c2lvblRyYWNrZXIubGVhdmVMYXllcihpdCk7CisgICAgKytpdDsKIH0KIAogI2RlZmluZSBE
RUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAgICAgICBcCiAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBD
Q1F1YWRMaXN0IHF1YWRMaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
IFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4gc2hhcmVkU3RhdGVMaXN0OyBcCisg
ICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsgICAgICAgIFwK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsgICAgICAgICAgICAgICAg
XAogICAgIEludFNpemUgcm9vdFNpemUgPSBJbnRTaXplKDMwMCwgMzAwKTsgICAgICAgICAgICAg
ICBcCiAgICAgSW50UmVjdCByb290UmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgcm9vdFNpemUp
OyAgIFwKQEAgLTEwNSwxNiArMTE1LDE2IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5
Tm9DdWxsaW5nKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0g
ICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXll
ci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIElu
dFJlY3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VM
YXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRS
ZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRy
YWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJh
Y2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdp
bigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAg
ICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCks
IG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0
ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBv
Y2NsdXNpb25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwot
ICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxz
RHJhd25PcGFxdWUoKSwgMTMwMDAwLCAxKTsKLSAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFj
a2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7Cisg
ICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNE
cmF3bk9wYXF1ZSgpLCA5MDAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tl
ci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDQwMDAwLCAxKTsK
ICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c0N1bGxlZEZvckRyYXdpbmcoKSwgMCwgMSk7CiB9CiAKQEAgLTEyMiwxNCArMTMyLDEzIEBAIFRF
U1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcFRvcExlZnQpCiB7CiAg
ICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCiAKLSAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7Ci0gICAgT3duUHRyPENDVGlsZWRM
YXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBP
d25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIg
PSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGls
ZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEw
MCwgLTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRl
cmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VM
YXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwg
Y2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tl
ci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRR
dWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lv
blRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNo
aWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25U
cmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CiAgICAgRVhQRUNU
X05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1
ZSgpLCA5MDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJh
d01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtMTQwLDE0ICsx
NDksMTMgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhY2l0
eU5vdE9uZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEsIHRydWUsIEludFJlY3QoKSk7Ci0gICAgT3du
UHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdl
dCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAwLjlmLCB0cnVlLCBJbnRSZWN0KCkpOwor
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEsIHRydWUsIEludFJlY3QoKSwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5
ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0
LCAwLjlmLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAt
MTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRv
clR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGls
ZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRz
KHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJh
Y2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRM
YXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNr
ZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CiAgICAgRVhQRUNUX05F
QVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgp
LCA5MDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01l
dHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDQwMDAwLCAxKTsKQEAgLTE1OCwxNCAr
MTY2LDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFdoZW5DaGlsZE9wYXF1
ZUZsYWdGYWxzZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAot
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKLSAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5
ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgZmFsc2UsIEludFJlY3Qo
KSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigw
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCks
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNo
aWxkUmVjdCwgMS4wLCBmYWxzZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3Qo
LTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlz
dCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJh
Y2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1
c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3Qs
IGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFk
cyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNp
b25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogICAgIEVY
UEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25P
cGFxdWUoKSwgOTAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3Zl
cmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCA0MDAwMCwgMSk7CkBAIC0x
NzgsMTQgKzE4NSwxMyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJU
aWxlT25seSkKIAogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogCi0gICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93
blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5n
ZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwor
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRM
YXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJl
Y3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwg
LTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRlcmF0
b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hp
bGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFk
cyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRy
YWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxk
TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFk
TGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFj
a2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogCiAgICAgSW50UmVj
dCBxdWFkVmlzaWJsZVJlY3QxID0gcXVhZExpc3RbNV0uZ2V0KCktPnF1YWRWaXNpYmxlUmVjdCgp
OwpAQCAtMjIyLDE0ICsyMjgsMTMgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxs
Q2VudGVyVGlsZU5vbkludGVncmFsU2l6ZTEpCiAKICAgICByb290UmVjdCA9IGNoaWxkUmVjdCA9
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApOwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+
IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCByb290VHJhbnNmb3JtLCByb290UmVjdCwgMS4wLCB0
cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVy
ID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwg
MS4wLCB0cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290
TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgcm9vdFRyYW5zZm9ybSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwg
SW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJh
bnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2Vy
KEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIu
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJl
ZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2Nj
bHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsK
LSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0
KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRT
dGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0
LCBvY2NsdXNpb25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAydSk7
CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc0RyYXduT3BhcXVlKCksIDIwMzYzLCAxKTsKQEAgLTI1MSwxNCArMjU2LDEzIEBAIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVOb25JbnRlZ3JhbFNpemUyKQog
CiAgICAgcm9vdFJlY3QgPSBjaGlsZFJlY3QgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKTsKIAot
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgcm9v
dFRyYW5zZm9ybSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKLSAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCks
IGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBP
d25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIHJvb3RUcmFu
c2Zvcm0sIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5
ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRydWUs
IEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEw
MDApKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShyb290
TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IEND
TGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAotICAg
IGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCks
IG9jY2x1c2lvblRyYWNrZXIpOwotICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNo
YXJlZFN0YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBp
dCwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0
YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMnUpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9u
VHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAxOTY0MywgMSk7
CkBAIC0yNzIsMTQgKzI3NiwxMyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxD
aGlsZExpbmVzVXBCb3R0b21SaWdodCkKIAogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgx
MDAsIDEwMCk7CiAKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFr
ZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIElu
dFJlY3QoKSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtl
TGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRy
dWUsIEludFJlY3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9
IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVl
LCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVk
TGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRU
cmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VM
YXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNr
ZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tl
ci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigm
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hh
cmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBv
Y2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkp
OwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5n
ZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJl
ZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAg
IGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwg
aXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1
KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25U
cmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7
CkBAIC0yOTIsMTUgKzI5NSwxNCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxT
dWJSZWdpb24pCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKIAotICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBP
d25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk7CiAgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0Lngo
KSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWln
aHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8gMik7
Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9v
dExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBjaGls
ZE9wYXF1ZVJlY3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0g
bWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4w
LCBmYWxzZSwgY2hpbGRPcGFxdWVSZWN0LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwg
LTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRlcmF0
b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hp
bGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFk
cyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRy
YWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxk
TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFk
TGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFj
a2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogICAgIEVYUEVDVF9O
RUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUo
KSwgOTAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdN
ZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAzMDAwMCwgMSk7CkBAIC0zMTMsMTUg
KzMxNSwxNCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24yKQog
CiAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCAxMCk7CiAKLSAgICBPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRyPENDVGls
ZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwogICAgIEludFJlY3QgY2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJl
Y3Qud2lkdGgoKSAvIDQsIGNoaWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBj
aGlsZFJlY3Qud2lkdGgoKSAvIDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAqIDMgLyA0KTsKLSAgICBP
d25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIu
Z2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgZmFsc2UsIGNoaWxkT3BhcXVl
UmVjdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5
ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNl
LCBjaGlsZE9wYXF1ZVJlY3QsIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAx
MDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUg
aXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVy
LmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7
CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5n
ZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBz
aGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwog
ICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEydSk7CiAgICAgRVhQRUNUX05FQVIob2Nj
bHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCA5MDAw
MCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDI1MDAwLCAxKTsKQEAgLTMzNCwxNSArMzM1LDE0
IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbkNoZWNrT3ZlcmN1
bGwpCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDQ5KTsKIAotICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CiAgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNo
aWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAv
IDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8gMik7Ci0gICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVy
LmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBjaGlsZE9wYXF1
ZVJlY3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxh
eWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCBmYWxz
ZSwgY2hpbGRPcGFxdWVSZWN0LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwg
MTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRlcmF0b3JUeXBl
IGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXll
ci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhxdWFk
TGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIp
OworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIu
Z2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsK
ICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogICAgIEVYUEVDVF9ORUFSKG9j
Y2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgOTAw
MDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAzMDAwMCwgMSk7CkBAIC0zNTYsMTQgKzM1Niwx
MyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4aXNBbGlnbmVkUXVhZHNEb250
T2NjbHVkZSkKICAgICAvLyBVc2UgYSBzbWFsbCByb3RhdGlvbiBzbyBhcyB0byBub3QgZGlzdHVy
YiB0aGUgZ2VvbWV0cnkgc2lnbmlmaWNhbnRseS4KICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUo
MSk7CiAKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVy
KDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3Qo
KSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIo
cm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIElu
dFJlY3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VM
YXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRS
ZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zv
cm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50
UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIEND
TGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3Rh
dGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNp
b25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAg
IGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwg
b2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRl
TGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVu
ZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9j
Y2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CiAg
ICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNE
cmF3bk9wYXF1ZSgpLCAxMzAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNr
ZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAwLCAxKTsKQEAg
LTM4MywxNCArMzgyLDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0Fs
aWduZWRRdWFkc1NhZmVseUN1bGxlZCkKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRU
cmFuc2Zvcm07CiAgICAgcGFyZW50VHJhbnNmb3JtLnJvdGF0ZSgxKTsKIAotICAgIE93blB0cjxD
Q1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgcGFyZW50VHJhbnNmb3Jt
LCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3du
UHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBwYXJlbnRUcmFu
c2Zvcm0sIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5
ZXIocm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwg
MTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRlcmF0b3JUeXBl
IGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXll
ci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhxdWFk
TGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIp
OworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIu
Z2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsK
ICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogICAgIEVYUEVDVF9ORUFSKG9j
Y2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMTAw
NjAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00MDEsMTQgKzM5OSwxMyBA
QCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJUaWxl
KQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRy
PENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxD
Q1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwg
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7
CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGls
ZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlz
dCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJh
Y2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1
c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3Qs
IGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFk
cyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNp
b25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxdSk7CiAgICAgRVhQ
RUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9w
YXF1ZSgpLCAxMDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVy
ZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtNDE5LDE0
ICs0MTYsMTMgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNz
b3JPdmVyQ3VsbGVkVGlsZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVB
RFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIo
MCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgp
KTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihy
b290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0
cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIg
PSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRl
clN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1
c2lvblRyYWNrZXIoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKLSAgICBvY2NsdXNpb25U
cmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShyb290TGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJl
Z2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0
LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOwot
ICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRMYXllci5n
ZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExh
eWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7
CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExheWVyLmdl
dCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUo
KSwgMXUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMTAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1
c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAw
LCAxKTsKQEAgLTQzNywxNCArNDMzLDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5
Q3VsbE91dHNpZGVTY2lzc29yT3ZlclBhcnRpYWxUaWxlcykKIHsKICAgICBERUNMQVJFX0FORF9J
TklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290
TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpKTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRM
YXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
cm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
KyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290
TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVl
LCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7
Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVy
SXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2Ns
dXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRT
dGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5k
UXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9j
Y2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxp
c3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9F
UShxdWFkTGlzdC5zaXplKCksIDl1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2Vy
Lm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDQwMDAwLCAxKTsKICAgICBF
WFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXdu
VHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00NTUsMTQgKzQ1MCwxMyBAQCBURVNUKENDUXVhZEN1
bGxlclRlc3QsIHZlcmlmeUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJOb1RpbGVzKQogewogICAgIERF
Q0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRMYXll
ckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBy
b290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRy
PENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VM
YXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFr
ZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0
LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDUwMCwgNTAw
LCAxMDAsIDEwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRlcmF0b3JUeXBl
IGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXll
ci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhxdWFk
TGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIp
OworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIu
Z2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsK
ICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAwdSk7CiAgICAgRVhQRUNUX05FQVIob2Nj
bHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAwLCAx
KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00NzMsMTQgKzQ2NywxMyBAQCBURVNU
KENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeVdpdGhvdXRNZXRyaWNzKQogewogICAgIERFQ0xBUkVf
QU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+
IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVj
dCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRyPENDVGls
ZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxp
c3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVy
KHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAs
IHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDUwLCA1MCwgMjAwLCAy
MDApLCBmYWxzZSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUg
aXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVy
LmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7
CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5n
ZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBz
aGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwog
ICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDAsIDEp
OwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4
ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAwLCAxKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137807</attachid>
            <date>2012-04-18 17:06:26 -0700</date>
            <delta_ts>2012-04-18 19:01:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84088-20120418200624.patch</filename>
            <type>text/plain</type>
            <size>121583</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U1NjdjNmQ5NTkwNWQx
ZTEyYzc0YmMxZjQ0NDY1ZGEzNjI5NDE0MC4uYjQ4ZTUyYjBkMTE5YjFkNjczNzdjYmU3ZGFlYTUz
NWZiNjJlOTRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA0LTE4ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2lt
cGxpZnkgb2NjbHVzaW9uIHRyYWNrZXIgQVBJIGJ5IHBhc3NpbmcgbGF5ZXIgaXRlcmF0b3IgZGF0
YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQwODgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91
c2x5IHRocmVlIG1ldGhvZHMgbGl2ZWQgaW4gdGhlIEFQSSBhbmQgeW91IG5lZWRlZCB0byBjYWxs
IHRoZQorICAgICAgICBhcHByb3ByaWF0ZSBtZXRob2QgKHdpdGggZGlmZmVyZW50IGFtb3VudHMg
b2YgZGF0YSkgZGVwZW5kaW5nIG9uIHdoYXQKKyAgICAgICAgdGhlIGN1cnJlbnQgbGF5ZXIgaXRl
cmF0b3Igd2FzIHJlcHJlc2VudGluZy4KKworICAgICAgICBUaGlzIG1ha2VzIHVzYWdlIG9mIHRo
ZSBvY2NsdXNpb24gdHJhY2tlciBzaW1wbGVyIHRvIHJlYWQgYW5kIGhhcmRlcgorICAgICAgICB0
byBtZXNzIHVwLCBieSBqdXN0IHBhc3NpbmcgaW4gdGhlIGxheWVyIGl0ZXJhdG9yIGF0IGVhY2gg
c3RlcCBvZiB0aGUKKyAgICAgICAgaXRlcmF0aW9uIHByb2Nlc3MuCisKKyAgICAgICAgQ292ZXJl
ZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
Q0xheWVySXRlcmF0b3JQb3NpdGlvbik6CisgICAgICAgIChDQ0xheWVySXRlcmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckl0ZXJhdG9yOjpvcGVyYXRvciBjb25zdCBDQ0xheWVySXRl
cmF0b3JQb3NpdGlvbjxMYXllclR5cGU+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVGlsaW5nRGF0YTo6b3BhcXVlUmVnaW9uSW5MYXllclJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNz
ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmVudGVyTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjo6OmxlYXZlTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oOgorICAgICAg
ICAoQ0NPY2NsdXNpb25UcmFja2VyQmFzZSk6CisKIDIwMTItMDQtMTcgIERhdmlkIFJldmVtYW4g
IDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBUZXh0dXJl
VXBsb2FkZXIgd2hpY2ggYWxsb3dzIHVzIHRvIHVzZSBwZXJzaXN0ZW50IEdDM0Qgc3RhdGUgZm9y
IHRleHR1cmUgdXBsb2Fkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzA0YmFkNjRh
YzIxYTBiNjZhMDRmNjBmODdiYTE0MWY2NzgzMzA4Mi4uNGZlZjBkNzQxOWNlZDI1N2Q2NWVkZWRm
MjQwZjM2NDc1MzVlZWEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
NyBAQAorMjAxMi0wNC0xOCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIFNpbXBsaWZ5IG9jY2x1c2lvbiB0cmFja2VyIEFQSSBieSBwYXNz
aW5nIGxheWVyIGl0ZXJhdG9yIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg0MDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcDoKKyAgICAg
ICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RNYWluVGhyZWFkVHlwZXMpOgorICAgICAgICAoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdEltcGxUaHJlYWRUeXBlcyk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdCk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Y2FsY0RyYXdFdGMpOgor
ICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6ZW50ZXJMYXllcik6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6bGVhdmVMYXllcik6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6dmlzaXRMYXllcik6CisgICAgICAgIChXZWJL
aXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6ZW50ZXJDb250cmlidXRpbmdTdXJmYWNl
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpsZWF2ZUNv
bnRyaWJ1dGluZ1N1cmZhY2UpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJh
Y2tlclRlc3Q6OnZpc2l0Q29udHJpYnV0aW5nU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6cmVzZXRMYXllckl0ZXJhdG9yKToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0SWRlbnRpdHlUcmFuc2Zvcm1zOjpy
dW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RS
b3RhdGVkQ2hpbGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNp
b25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q2hpbGRJblJvdGF0ZWRDaGlsZDo6cnVuTXlU
ZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0VmlzaXRU
YXJnZXRUd29UaW1lczo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1
c2lvblRyYWNrZXJUZXN0U3VyZmFjZVJvdGF0ZWRPZmZBeGlzOjpydW5NeVRlc3QpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlV2l0aFR3b09wYXF1
ZUNoaWxkcmVuOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9u
VHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5nczo6cnVuTXlUZXN0KToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNl
U2libGluZ3NXaXRoVHdvVHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0RmlsdGVyczo6cnVuTXlUZXN0KToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0UmVwbGljYURvZXNPY2NsdWRlOjpy
dW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RS
ZXBsaWNhV2l0aENsaXBwaW5nOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkND
T2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkOjpydW5NeVRl
c3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5T
Y2lzc29yUmVjdE91dHNpZGVDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJDaGlsZDo6cnVuTXlU
ZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVu
U2Npc3NvclJlY3RPdmVyQ2hpbGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQ6OnJ1
bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNj
cmVlblNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3Zlck5vdGhp
bmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2Vy
VGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RGb3JMYXll
ck9mZk9yaWdpbjo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0eTo6cnVuTXlUZXN0KToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdp
b25Ob25FbXB0eTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0M2RUcmFuc2Zvcm06OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFBlcnNwZWN0aXZlVHJhbnNmb3JtOjpydW5NeVRlc3Qp
OgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RQZXJzcGVjdGl2
ZVRyYW5zZm9ybUJlaGluZENhbWVyYTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJCZWhpbmRDYW1lcmFEb2VzTm90T2NjbHVkZTo6
cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
TGFyZ2VQaXhlbHNPY2NsdWRlSW5zaWRlQ2xpcFJlY3Q6OnJ1bk15VGVzdCk6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkxT25NYWlu
VGhyZWFkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJh
Y2tlclRlc3RBbmltYXRpb25PcGFjaXR5ME9uTWFpblRocmVhZDo6cnVuTXlUZXN0KToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRl
T25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3RTdXJmYWNlT2NjbHVzaW9uVHJhbnNsYXRlc1RvUGFyZW50OjpydW5NeVRl
c3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNl
T2NjbHVzaW9uVHJhbnNsYXRlc1dpdGhDbGlwcGluZzo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0UmVwbGljYU9jY2x1ZGVkOjpydW5NeVRl
c3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNl
V2l0aFJlcGxpY2FVbm9jY2x1ZGVkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlQW5kUmVwbGljYU9jY2x1ZGVkRGlmZmVyZW50
bHk6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2Vy
VGVzdFN1cmZhY2VDaGlsZE9mU3VyZmFjZTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZUNoaWxkT2ZDbGlwcGluZ1N1cmZhY2U6
OnJ1bk15VGVzdCk6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0w
NC0xNyAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gQWRkIFRleHR1cmVVcGxvYWRlciB3aGljaCBhbGxvd3MgdXMgdG8gdXNlIHBlcnNp
c3RlbnQgR0MzRCBzdGF0ZSBmb3IgdGV4dHVyZSB1cGxvYWRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckl0ZXJhdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRl
cmF0b3IuaAppbmRleCBkODliZDY5MTI3NzE3YTU5NzE1NWU1NzQwOTA0ZjdlYTQ2YmY3Y2RhLi4x
MmM2MjdmNmEyZTRiOWIxNTlmODE0MGZiZGY1N2RhY2U3ODgwNjhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySXRlcmF0b3IuaApAQCAtOTEsNiArOTEsMTYgQEAgc3RydWN0IENDTGF5ZXJJdGVyYXRvclZh
bHVlIHsKICAgICBzdGF0aWMgY29uc3QgaW50IExheWVySW5kZXhSZXByZXNlbnRpbmdUYXJnZXRS
ZW5kZXJTdXJmYWNlID0gLTE7CiB9OwogCisvLyBUaGUgcG9zaXRpb24gb2YgYSBsYXllciBpdGVy
YXRvciB0aGF0IGlzIGluZGVwZW5kZW50IG9mIGl0cyBtYW55IHRlbXBsYXRlIHR5cGVzLgordGVt
cGxhdGUgPHR5cGVuYW1lIExheWVyVHlwZT4KK3N0cnVjdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlv
biB7CisgICAgYm9vbCByZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3VyZmFjZTsKKyAgICBib29sIHJl
cHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJmYWNlOworICAgIGJvb2wgcmVwcmVzZW50c0l0
c2VsZjsKKyAgICBMYXllclR5cGUqIHRhcmdldFJlbmRlclN1cmZhY2VMYXllcjsKKyAgICBMYXll
clR5cGUqIGN1cnJlbnRMYXllcjsKK307CisKIC8vIEFuIGl0ZXJhdG9yIGNsYXNzIGZvciB3YWxr
aW5nIG92ZXIgbGF5ZXJzIGluIHRoZSBSZW5kZXJTdXJmYWNlLUxheWVyIHRyZWUuCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlLCB0eXBlbmFtZSBJdGVyYXRvckFjdGlvblR5cGU+CiBjbGFzcyBDQ0xheWVy
SXRlcmF0b3IgewpAQCAtMTE5LDYgKzEyOSwxNyBAQCBwdWJsaWM6CiAKICAgICBMYXllclR5cGUq
IHRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpIGNvbnN0IHsgcmV0dXJuIGdldFJhd1B0cigoKm1f
cmVuZGVyU3VyZmFjZUxheWVyTGlzdClbbV90YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXJJbmRleF0p
OyB9CiAKKyAgICBvcGVyYXRvciBjb25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5
cGU+KCkgY29uc3QKKyAgICB7CisgICAgICAgIENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVy
VHlwZT4gcG9zaXRpb247CisgICAgICAgIHBvc2l0aW9uLnJlcHJlc2VudHNUYXJnZXRSZW5kZXJT
dXJmYWNlID0gcmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgcG9zaXRp
b24ucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UgPSByZXByZXNlbnRzQ29udHJp
YnV0aW5nUmVuZGVyU3VyZmFjZSgpOworICAgICAgICBwb3NpdGlvbi5yZXByZXNlbnRzSXRzZWxm
ID0gcmVwcmVzZW50c0l0c2VsZigpOworICAgICAgICBwb3NpdGlvbi50YXJnZXRSZW5kZXJTdXJm
YWNlTGF5ZXIgPSB0YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKTsKKyAgICAgICAgcG9zaXRpb24u
Y3VycmVudExheWVyID0gY3VycmVudExheWVyKCk7CisgICAgICAgIHJldHVybiBwb3NpdGlvbjsK
KyAgICB9CisKIHByaXZhdGU6CiAgICAgQ0NMYXllckl0ZXJhdG9yKGNvbnN0IExheWVyTGlzdCog
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgYm9vbCBzdGFydCkKICAgICAgICAgOiBtX3JlbmRlclN1
cmZhY2VMYXllckxpc3QocmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUaWxpbmdEYXRhLmNwcAppbmRleCA0MmYxZThkMWFiNTk4YzgzNzVkNWI1YzE3ZGQyNWU2MGU4
M2JiNjM1Li5hYjEzMmFlMTRmYmFkZWMzOWMzM2NiMGVhZWMwZWRmOTY5ZmM0OTc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VGlsaW5nRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuY3BwCkBAIC0xMTMsNiArMTEzLDkgQEAgSW50UmVj
dCBDQ0xheWVyVGlsaW5nRGF0YTo6dGlsZVJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29uc3QKIAog
UmVnaW9uIENDTGF5ZXJUaWxpbmdEYXRhOjpvcGFxdWVSZWdpb25JbkxheWVyUmVjdChjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QpIGNvbnN0CiB7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBSZWdpb24oKTsKKwogICAgIFJlZ2lvbiBvcGFxdWVSZWdpb247CiAg
ICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKICAgICBsYXllclJlY3RUb1RpbGVJbmRp
Y2VzKGxheWVyUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCmluZGV4IDZlMzNlMzkxMzU2Mjk2NDJiMzYyZjg4MDdhOWM0ZDEyNDk5
ZjhhNDYuLjBiZDI3YmNjMDI2ZTBjZTZjNDNjZDYwNDljYmY1M2RjMTdjYTZjMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNTU1LDE5ICs1NTUsMTcgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QKIAogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0
ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5
ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBvY2NsdXNpb25UcmFj
a2VyLmVudGVyTGF5ZXIoaXQpOworCiAgICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVu
ZGVyU3VyZmFjZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+
ZHJhd09wYWNpdHkoKSB8fCBpdC0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0
aW5nKCkpOwotCi0gICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZSgqaXQsIGl0LT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICAgICAgcGFpbnRN
YXNrc0ZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUsIHVwZGF0ZXIpOwogICAgICAgICB9
IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFp
dC0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKLQotICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UoaXQtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CiAgICAg
ICAgICAgICB1cGRhdGUoKml0LCBwYWludFR5cGUsIHVwZGF0ZXIsICZvY2NsdXNpb25UcmFja2Vy
KTsKLSAgICAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
Kml0KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKGl0LnRhcmdldFJlbmRlclN1cmZhY2VMYXllcigpLT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICB9CisKKyAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5sZWF2
ZUxheWVyKGl0KTsKICAgICB9CiAKICAgICBvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmlj
cygpLnJlY29yZE1ldHJpY3ModGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCmluZGV4IDVlZjVhMzIwMjcwODE3OGNjMzgzNzc0OWI3MDU5Y2RkYmI3MWRkYzkuLmZi
N2FiZTViMzNhZThlZTI4MTljODcxMzk2NjI1MmRkNTIxMWNlODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yOTgsMzIgKzI5OCwyNCBAQCBib29sIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBw
YXNzZXMsIENDTGF5ZQogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJ
dGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSA9IGl0LnRhcmdl
dFJlbmRlclN1cmZhY2VMYXllcigpLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIENDUmVuZGVy
UGFzcyogcGFzcyA9IHN1cmZhY2VQYXNzTWFwLmdldChyZW5kZXJTdXJmYWNlKTsKKyAgICAgICAg
Ym9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxzZTsKKworICAgICAgICBvY2NsdXNpb25UcmFja2Vy
LmVudGVyTGF5ZXIoaXQpOwogCi0gICAgICAgIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkpCi0g
ICAgICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5k
ZXJTdXJmYWNlKTsKLSAgICAgICAgZWxzZSBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJlbmRlclN1
cmZhY2UoKSkgewotICAgICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5maW5pc2hlZFRhcmdldFJl
bmRlclN1cmZhY2UoKml0LCByZW5kZXJTdXJmYWNlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1Jl
bmRlclN1cmZhY2UoKSkKICAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3Vy
ZmFjZUxheWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIpOwotICAgICAgICAgICAgb2NjbHVzaW9u
VHJhY2tlci5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkg
JiYgIWl0LT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpdC0+
d2lsbERyYXcobV9sYXllclJlbmRlcmVyLmdldCgpKTsKKyAgICAgICAgICAgIHBhc3MtPmFwcGVu
ZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tlciwgaGFkTWlzc2luZ1RpbGVzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChpdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGl0LT53aWxsRHJhdyhtX2xheWVy
UmVuZGVyZXIuZ2V0KCkpOwotCi0gICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7
Ci0gICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yTGF5ZXIoKml0LCAmb2NjbHVzaW9uVHJhY2tl
ciwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgaWYgKGhhZE1pc3NpbmdUaWxlcykgewogICAg
ICAgICAgICAgYm9vbCBsYXllckhhc0FuaW1hdGluZ1RyYW5zZm9ybSA9IGl0LT5zY3JlZW5TcGFj
ZVRyYW5zZm9ybUlzQW5pbWF0aW5nKCkgfHwgaXQtPmRyYXdUcmFuc2Zvcm1Jc0FuaW1hdGluZygp
OwogICAgICAgICAgICAgaWYgKGxheWVySGFzQW5pbWF0aW5nVHJhbnNmb3JtKQogICAgICAgICAg
ICAgICAgIGRyYXdGcmFtZSA9IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgb2NjbHVzaW9u
VHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcigqaXQpOworICAgICAgICBvY2NsdXNpb25U
cmFja2VyLmxlYXZlTGF5ZXIoaXQpOwogICAgIH0KIAogICAgIHBhc3Nlcy5sYXN0KCktPmFwcGVu
ZFF1YWRzVG9GaWxsU2NyZWVuKG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9iYWNrZ3JvdW5kQ29s
b3IsIG9jY2x1c2lvblRyYWNrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5j
cHAKaW5kZXggM2RiNmM0ZWE0YzAzYTMwNDgwMGU3NjIzYTJmMWE3NmM4MDQ0NmRiMS4uNDRhNjhi
YTUyMTQwOTIwOTJiYzYwZmFlNDA0ZGFjYjkzZjlkOTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuY3BwCkBAIC00OCw2ICs0OCwyOCBAQCBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNl
KEludAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1
cmZhY2VUeXBlPgordm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVy
U3VyZmFjZVR5cGU+OjplbnRlckxheWVyKGNvbnN0IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPExh
eWVyVHlwZT4mIGxheWVySXRlcmF0b3IpCit7CisgICAgUmVuZGVyU3VyZmFjZVR5cGUqIHJlbmRl
clN1cmZhY2UgPSBsYXllckl0ZXJhdG9yLnRhcmdldFJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVy
U3VyZmFjZSgpOworCisgICAgaWYgKGxheWVySXRlcmF0b3IucmVwcmVzZW50c0l0c2VsZikKKyAg
ICAgICAgZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2UpOworICAgIGVsc2Ug
aWYgKGxheWVySXRlcmF0b3IucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZhY2UpCisgICAgICAg
IGZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllckl0ZXJhdG9yLmN1cnJlbnRMYXllciwg
cmVuZGVyU3VyZmFjZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5h
bWUgUmVuZGVyU3VyZmFjZVR5cGU+Cit2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJU
eXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmxlYXZlTGF5ZXIoY29uc3QgQ0NMYXllckl0ZXJhdG9y
UG9zaXRpb248TGF5ZXJUeXBlPiYgbGF5ZXJJdGVyYXRvcikKK3sKKyAgICBSZW5kZXJTdXJmYWNl
VHlwZSogcmVuZGVyU3VyZmFjZSA9IGxheWVySXRlcmF0b3IudGFyZ2V0UmVuZGVyU3VyZmFjZUxh
eWVyLT5yZW5kZXJTdXJmYWNlKCk7CisKKyAgICBpZiAobGF5ZXJJdGVyYXRvci5yZXByZXNlbnRz
SXRzZWxmKQorICAgICAgICBtYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllckl0ZXJhdG9yLmN1
cnJlbnRMYXllcik7CisgICAgZWxzZSBpZiAobGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzQ29udHJp
YnV0aW5nUmVuZGVyU3VyZmFjZSkKKyAgICAgICAgbGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Uo
cmVuZGVyU3VyZmFjZSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5h
bWUgUmVuZGVyU3VyZmFjZVR5cGU+CiB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJU
eXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBS
ZW5kZXJTdXJmYWNlVHlwZSogbmV3VGFyZ2V0KQogewogICAgIGlmICghbV9zdGFjay5pc0VtcHR5
KCkgJiYgbV9zdGFjay5sYXN0KCkuc3VyZmFjZSA9PSBuZXdUYXJnZXQpCkBAIC0zOTYsNiArNDE4
LDggQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGU+OjpsYXllclNjaXNzb3JSZWN0SW4KIAogLy8gRGVjbGFyZSB0aGUgcG9zc2libGUg
ZnVuY3Rpb25zIGhlcmUgZm9yIHRoZSBsaW5rZXIuCiB0ZW1wbGF0ZSBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OkNDT2NjbHVzaW9u
VHJhY2tlckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVjb3Jk
TWV0cmljc0ZvckZyYW1lKTsKK3RlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjplbnRlckxheWVyKGNvbnN0IEND
TGF5ZXJJdGVyYXRvclBvc2l0aW9uPExheWVyQ2hyb21pdW0+Jik7Cit0ZW1wbGF0ZSB2b2lkIEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVt
Pjo6bGVhdmVMYXllcihjb25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllckNocm9taXVt
PiYpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0s
IFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6Zmlu
aXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qIG93bmluZ0xheWVy
LCBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIGZpbmlzaGVkVGFyZ2V0KTsKIHRlbXBsYXRl
IHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0+OjpsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0qIG5ld1RhcmdldCk7CkBAIC00MDYsNiArNDMwLDggQEAgdGVtcGxhdGUgSW50UmVj
dCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJv
bWl1bT46OnUKIHRlbXBsYXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNo
cm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRT
dXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qKSBjb25zdDsKIAogdGVtcGxhdGUgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6Q0NPY2NsdXNpb25U
cmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRN
ZXRyaWNzRm9yRnJhbWUpOwordGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPEND
TGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjplbnRlckxheWVyKGNvbnN0IENDTGF5ZXJJdGVy
YXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsPiYpOwordGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpsZWF2ZUxheWVyKGNvbnN0
IENDTGF5ZXJJdGVyYXRvclBvc2l0aW9uPENDTGF5ZXJJbXBsPiYpOwogdGVtcGxhdGUgdm9pZCBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjplbnRl
clRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBuZXdUYXJnZXQpOwog
dGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRl
clN1cmZhY2U+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NMYXllckltcGwq
IG93bmluZ0xheWVyLCBjb25zdCBDQ1JlbmRlclN1cmZhY2UqIGZpbmlzaGVkVGFyZ2V0KTsKIHRl
bXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJT
dXJmYWNlPjo6bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNl
KiBuZXdUYXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAppbmRleCBmNGE2
YWM5MzI5N2IwM2NkMjEwYzkxMWZkZTViNmFkMjk1OGY5MjA3Li4yNzA1YzZiMTMzMWRmZDk0ZmI1
YTgzZjcwNmNiNDE4ZmJlMWFiYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIlJl
Z2lvbi5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiY2Mv
Q0NMYXllckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJhd01ldHJpY3MuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMjYgKzQ5LDE3IEBAIGNsYXNzIENDT2NjbHVzaW9u
VHJhY2tlckJhc2UgewogcHVibGljOgogICAgIENDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVj
dCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lKTsK
IAotICAgIC8vIENhbGxlZCB3aGVuIHZpc2l0aW5nIGEgbGF5ZXIgcmVwcmVzZW50aW5nIGl0c2Vs
Zi4gSWYgdGhlIHRhcmdldCB3YXMgbm90IGFscmVhZHkgY3VycmVudCwgdGhlbiB0aGlzIGluZGlj
YXRlcyB3ZSBoYXZlIGVudGVyZWQgYSBuZXcgc3VyZmFjZSBzdWJ0cmVlLgotICAgIHZvaWQgZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBuZXdUYXJnZXQp
OwotCi0gICAgLy8gQ2FsbGVkIHdoZW4gdmlzaXRpbmcgYSBsYXllciByZXByZXNlbnRpbmcgYSB0
YXJnZXQgc3VyZmFjZS4gVGhpcyBpbmRpY2F0ZXMgd2UgaGF2ZSB2aXNpdGVkIGFsbCB0aGUgbGF5
ZXJzIHdpdGhpbiB0aGUgc3VyZmFjZSwgYW5kIHdlIG1heQotICAgIC8vIHBlcmZvcm0gYW55IHN1
cmZhY2Utd2lkZSBvcGVyYXRpb25zLgotICAgIHZvaWQgZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJm
YWNlKGNvbnN0IExheWVyVHlwZSosIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBmaW5pc2hlZFRh
cmdldCk7Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiB2aXNpdGluZyBhIGxheWVyIHJlcHJlc2VudGlu
ZyBhIGNvbnRyaWJ1dGluZyBzdXJmYWNlLiBUaGlzICBpbmRpY2F0ZXMgdGhhdCB3ZSBhcmUgbGVh
dmluZyBvdXIgY3VycmVudCBzdXJmYWNlLCBhbmQKLSAgICAvLyBlbnRlcmluZyB0aGUgbmV3IG9u
ZS4gV2UgdGhlbiBwZXJmb3JtIGFueSBvcGVyYXRpb25zIHJlcXVpcmVkIGZvciBtZXJnaW5nIHJl
c3VsdHMgZnJvbSB0aGUgY2hpbGQgc3VidHJlZSBpbnRvIGl0cyBwYXJlbnQuCi0gICAgdm9pZCBs
ZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogbmV3VGFy
Z2V0KTsKLQotICAgIC8vIEFkZCB0aGUgbGF5ZXIncyBvY2NsdXNpb24gdG8gdGhlIHRyYWNrZWQg
c3RhdGUuCi0gICAgdm9pZCBtYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjb25zdCBMYXllclR5cGUq
KTsKKyAgICAvLyBDYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHN0ZXAgaW4gdGhlIEND
TGF5ZXJJdGVyYXRvcidzIGZyb250LXRvLWJhY2sgdHJhdmVyc2FsLgorICAgIHZvaWQgZW50ZXJM
YXllcihjb25zdCBDQ0xheWVySXRlcmF0b3JQb3NpdGlvbjxMYXllclR5cGU+Jik7CisgICAgLy8g
Q2FsbGVkIGF0IHRoZSBlbmQgb2YgZWFjaCBzdGVwIGluIHRoZSBDQ0xheWVySXRlcmF0b3IncyBm
cm9udC10by1iYWNrIHRyYXZlcnNhbC4KKyAgICB2b2lkIGxlYXZlTGF5ZXIoY29uc3QgQ0NMYXll
ckl0ZXJhdG9yUG9zaXRpb248TGF5ZXJUeXBlPiYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBnaXZlbiByZWN0IGluIGNvbnRlbnQgc3BhY2UgZm9yIHRoZSBsYXllciBpcyBmdWxseSBv
Y2NsdWRlZCBpbiBlaXRoZXIgc2NyZWVuIHNwYWNlIG9yIHRoZSBsYXllcidzIHRhcmdldCBzdXJm
YWNlLgogICAgIGJvb2wgb2NjbHVkZWQoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpIGNvbnN0OwogICAgIC8vIEdpdmVzIGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qg
b2YgfGNvbnRlbnRSZWN0fCBpbiB0aGUgY29udGVudCBzcGFjZSBvZiB0aGUgbGF5ZXIuIFVzZWQg
d2hlbiBjb25zaWRlcmluZyBvY2NsdXNpb24gZm9yIGEgbGF5ZXIgdGhhdCBwYWludHMvZHJhd3Mg
c29tZXRoaW5nLgogICAgIEludFJlY3QgdW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExheWVy
VHlwZSosIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KSBjb25zdDsKIAotICAgIC8vIEdpdmVz
IGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRSZWN0fCBpbiB0aGUgY29udGVudCBz
cGFjZSBvZiB0aGUgc3VyZmFjZSBvd25lZCBieSB8bGF5ZXJ8LiBVc2VkIHdoZW4gY29uc2lkZXJp
bmcgb2NjbHVzaW9uIGZvciBhIHN1cmZhY2UKKyAgICAvLyBHaXZlcyBhbiB1bm9jY2x1ZGVkIHN1
Yi1yZWN0IG9mIHxjb250ZW50UmVjdHwgaW4gdGhlIGNvbnRlbnQgc3BhY2Ugb2YgdGhlIHN1cmZh
Y2Ugb3duZWQgYnkgfGxheWVyfC4gVXNlZCB3aGVuIGNvbnNpZGVyaW5nIG9jY2x1c2lvbiBmb3Ig
YSBjb250cmlidXRpbmcgc3VyZmFjZQogICAgIC8vIHRoYXQgaXMgcmVuZGVyaW5nIGludG8gYW5v
dGhlciB0YXJnZXQgc3VyZmFjZS4KICAgICBJbnRSZWN0IHVub2NjbHVkZWRDb250cmlidXRpbmdT
dXJmYWNlQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgYm9vbCBmb3JSZXBsaWNhLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCkgY29uc3Q7CiAKQEAgLTEwMiw2ICs5NCwyMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBJbnRSZWN0IGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZh
Y2UoY29uc3QgTGF5ZXJUeXBlKikgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgLy8gQ2FsbGVkIHdo
ZW4gdmlzaXRpbmcgYSBsYXllciByZXByZXNlbnRpbmcgaXRzZWxmLiBJZiB0aGUgdGFyZ2V0IHdh
cyBub3QgYWxyZWFkeSBjdXJyZW50LCB0aGVuIHRoaXMgaW5kaWNhdGVzIHdlIGhhdmUgZW50ZXJl
ZCBhIG5ldyBzdXJmYWNlIHN1YnRyZWUuCisgICAgdm9pZCBlbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UoY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG5ld1RhcmdldCk7CisKKyAgICAvLyBDYWxsZWQg
d2hlbiB2aXNpdGluZyBhIGxheWVyIHJlcHJlc2VudGluZyBhIHRhcmdldCBzdXJmYWNlLiBUaGlz
IGluZGljYXRlcyB3ZSBoYXZlIHZpc2l0ZWQgYWxsIHRoZSBsYXllcnMgd2l0aGluIHRoZSBzdXJm
YWNlLCBhbmQgd2UgbWF5CisgICAgLy8gcGVyZm9ybSBhbnkgc3VyZmFjZS13aWRlIG9wZXJhdGlv
bnMuCisgICAgdm9pZCBmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgTGF5ZXJUeXBl
KiwgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIGZpbmlzaGVkVGFyZ2V0KTsKKworICAgIC8vIENh
bGxlZCB3aGVuIHZpc2l0aW5nIGEgbGF5ZXIgcmVwcmVzZW50aW5nIGEgY29udHJpYnV0aW5nIHN1
cmZhY2UuIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIGxlYXZpbmcgb3VyIGN1cnJlbnQgc3Vy
ZmFjZSwgYW5kCisgICAgLy8gZW50ZXJpbmcgdGhlIG5ldyBvbmUuIFdlIHRoZW4gcGVyZm9ybSBh
bnkgb3BlcmF0aW9ucyByZXF1aXJlZCBmb3IgbWVyZ2luZyByZXN1bHRzIGZyb20gdGhlIGNoaWxk
IHN1YnRyZWUgaW50byBpdHMgcGFyZW50LgorICAgIHZvaWQgbGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UoY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG5ld1RhcmdldCk7CisKKyAgICAvLyBBZGQg
dGhlIGxheWVyJ3Mgb2NjbHVzaW9uIHRvIHRoZSB0cmFja2VkIHN0YXRlLgorICAgIHZvaWQgbWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoY29uc3QgTGF5ZXJUeXBlKik7CisKICAgICBJbnRSZWN0IG1f
c2Npc3NvclJlY3RJblNjcmVlblNwYWNlOwogICAgIE93blB0cjxDQ092ZXJkcmF3TWV0cmljcz4g
bV9vdmVyZHJhd01ldHJpY3M7CiAgICAgYm9vbCBtX3VzZVBhaW50VHJhY2tpbmc7IC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5n
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRy
YWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25U
cmFja2VyVGVzdC5jcHAKaW5kZXggYjNlM2MzNjFlY2U5ZmZiYmYwMTY5ZDczMjhlM2IyY2Q3MGQ5
NTFlZC4uNDFmYjVhNTFmNTRlNmU1MmY1MmVmMWUxZDJiOWQ3Njk2MmJlMDFiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRl
c3QuY3BwCkBAIC0xMzIsNiArMTMyLDggQEAgc3RydWN0IENDT2NjbHVzaW9uVHJhY2tlclRlc3RN
YWluVGhyZWFkVHlwZXMgewogICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBQ
YXNzTGF5ZXJQdHJUeXBlOwogICAgIHR5cGVkZWYgUmVmUHRyPENvbnRlbnRMYXllclR5cGU+IENv
bnRlbnRMYXllclB0clR5cGU7CiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPENvbnRlbnRMYXllclR5
cGU+IFBhc3NDb250ZW50TGF5ZXJQdHJUeXBlOworICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9y
PExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gTGF5ZXJJ
dGVyYXRvcjsKKyAgICB0eXBlZGVmIENDT2NjbHVzaW9uVHJhY2tlciBPY2NsdXNpb25UcmFja2Vy
VHlwZTsKIAogICAgIHN0YXRpYyBQYXNzTGF5ZXJQdHJUeXBlIGNyZWF0ZUxheWVyKCkgeyByZXR1
cm4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7IH0KICAgICBzdGF0aWMgUGFzc0NvbnRlbnRMYXll
clB0clR5cGUgY3JlYXRlQ29udGVudExheWVyKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRl
bnRMYXllclR5cGUoKSk7IH0KQEAgLTE0NSw2ICsxNDcsOCBAQCBzdHJ1Y3QgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdEltcGxUaHJlYWRUeXBlcyB7CiAgICAgdHlwZWRlZiBQYXNzT3duUHRyPENDTGF5
ZXJJbXBsPiBQYXNzTGF5ZXJQdHJUeXBlOwogICAgIHR5cGVkZWYgT3duUHRyPENvbnRlbnRMYXll
clR5cGU+IENvbnRlbnRMYXllclB0clR5cGU7CiAgICAgdHlwZWRlZiBQYXNzT3duUHRyPENvbnRl
bnRMYXllclR5cGU+IFBhc3NDb250ZW50TGF5ZXJQdHJUeXBlOworICAgIHR5cGVkZWYgQ0NMYXll
ckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJm
YWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gTGF5ZXJJdGVyYXRvcjsK
KyAgICB0eXBlZGVmIENDT2NjbHVzaW9uVHJhY2tlckltcGwgT2NjbHVzaW9uVHJhY2tlclR5cGU7
CiAKICAgICBzdGF0aWMgUGFzc0xheWVyUHRyVHlwZSBjcmVhdGVMYXllcigpIHsgcmV0dXJuIEND
TGF5ZXJJbXBsOjpjcmVhdGUobmV4dENDTGF5ZXJJbXBsSWQrKyk7IH0KICAgICBzdGF0aWMgUGFz
c0NvbnRlbnRMYXllclB0clR5cGUgY3JlYXRlQ29udGVudExheWVyKCkgeyByZXR1cm4gYWRvcHRQ
dHIobmV3IENvbnRlbnRMYXllclR5cGUobmV4dENDTGF5ZXJJbXBsSWQrKykpOyB9CkBAIC0xNTYs
NyArMTYwLDkgQEAgaW50IENDT2NjbHVzaW9uVHJhY2tlclRlc3RJbXBsVGhyZWFkVHlwZXM6Om5l
eHRDQ0xheWVySW1wbElkID0gMDsKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGVzLCBib29sIG9wYXF1
ZUxheWVycz4KIGNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CiBwcm90ZWN0ZWQ6Ci0gICAgQ0NPY2NsdXNpb25UcmFja2VyVGVzdCgpIDogdGVzdGlu
Zzo6VGVzdCgpIHsgfQorICAgIENDT2NjbHVzaW9uVHJhY2tlclRlc3QoKQorICAgICAgICA6IHRl
c3Rpbmc6OlRlc3QoKQorICAgIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJ1bk15VGVzdCgpID0g
MDsKIApAQCAtMjM2LDggKzI0Miw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGxheWVy
OwogICAgIH0KIAotCi0gICAgVGVzdENvbnRlbnRMYXllckltcGwqIGNhbGNEcmF3RXRjKFRlc3RD
b250ZW50TGF5ZXJJbXBsKiByb290KQorICAgIHZvaWQgY2FsY0RyYXdFdGMoVGVzdENvbnRlbnRM
YXllckltcGwqIHJvb3QpCiAgICAgewogICAgICAgICBBU1NFUlQocm9vdCA9PSBtX3Jvb3QuZ2V0
KCkpOwogICAgICAgICBWZWN0b3I8Q0NMYXllckltcGwqPiBkdW1teUxheWVyTGlzdDsKQEAgLTI1
MCwxMCArMjU1LDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9yZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0SW1wbC5hcHBlbmQobV9yb290LmdldCgpKTsKIAogICAgICAgICBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290LCByb290LCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdElt
cGwsIGR1bW15TGF5ZXJMaXN0LCAwLCBkdW1teU1heFRleHR1cmVTaXplKTsKLSAgICAgICAgcmV0
dXJuIHJvb3Q7CisgICAgICAgIG1fbGF5ZXJJdGVyYXRvciA9IG1fbGF5ZXJJdGVyYXRvckJlZ2lu
ID0gVHlwZXM6OkxheWVySXRlcmF0b3I6OmJlZ2luKCZtX3JlbmRlclN1cmZhY2VMYXllckxpc3RJ
bXBsKTsKICAgICB9CiAKLSAgICBUZXN0Q29udGVudExheWVyQ2hyb21pdW0qIGNhbGNEcmF3RXRj
KFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSogcm9vdCkKKyAgICB2b2lkIGNhbGNEcmF3RXRjKFRl
c3RDb250ZW50TGF5ZXJDaHJvbWl1bSogcm9vdCkKICAgICB7CiAgICAgICAgIEFTU0VSVChyb290
ID09IG1fcm9vdC5nZXQoKSk7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiBkdW1teUxheWVyTGlzdDsKQEAgLTI2Niw3ICsyNzEsNTggQEAgcHJvdGVjdGVkOgogICAgICAg
ICBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1bS5hcHBlbmQobV9yb290KTsKIAogICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShyb290LCByb290LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdENocm9taXVtLCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0
dXJlU2l6ZSk7Ci0gICAgICAgIHJldHVybiByb290OworICAgICAgICBtX2xheWVySXRlcmF0b3Ig
PSBtX2xheWVySXRlcmF0b3JCZWdpbiA9IFR5cGVzOjpMYXllckl0ZXJhdG9yOjpiZWdpbigmbV9y
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Q2hyb21pdW0pOworICAgIH0KKworICAgIHZvaWQgZW50ZXJM
YXllcih0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllciwgdHlwZW5hbWUgVHlwZXM6Ok9j
Y2x1c2lvblRyYWNrZXJUeXBlJiBvY2NsdXNpb24pCisgICAgeworICAgICAgICBBU1NFUlRfRVEo
bGF5ZXIsICptX2xheWVySXRlcmF0b3IpOworICAgICAgICBBU1NFUlRfVFJVRShtX2xheWVySXRl
cmF0b3IucmVwcmVzZW50c0l0c2VsZigpKTsKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyTGF5ZXIo
bV9sYXllckl0ZXJhdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIGxlYXZlTGF5ZXIodHlwZW5hbWUg
VHlwZXM6OkxheWVyVHlwZSogbGF5ZXIsIHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFja2Vy
VHlwZSYgb2NjbHVzaW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUX0VRKGxheWVyLCAqbV9sYXll
ckl0ZXJhdG9yKTsKKyAgICAgICAgQVNTRVJUX1RSVUUobV9sYXllckl0ZXJhdG9yLnJlcHJlc2Vu
dHNJdHNlbGYoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZUxheWVyKG1fbGF5ZXJJdGVyYXRv
cik7CisgICAgICAgICsrbV9sYXllckl0ZXJhdG9yOworICAgIH0KKworICAgIHZvaWQgdmlzaXRM
YXllcih0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllciwgdHlwZW5hbWUgVHlwZXM6Ok9j
Y2x1c2lvblRyYWNrZXJUeXBlJiBvY2NsdXNpb24pCisgICAgeworICAgICAgICBlbnRlckxheWVy
KGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICBsZWF2ZUxheWVyKGxheWVyLCBvY2NsdXNpb24p
OworICAgIH0KKworICAgIHZvaWQgZW50ZXJDb250cmlidXRpbmdTdXJmYWNlKHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUqIGxheWVyLCB0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5
cGUmIG9jY2x1c2lvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9FUShsYXllciwgKm1fbGF5ZXJJ
dGVyYXRvcik7CisgICAgICAgIEFTU0VSVF9UUlVFKG1fbGF5ZXJJdGVyYXRvci5yZXByZXNlbnRz
VGFyZ2V0UmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyTGF5ZXIobV9s
YXllckl0ZXJhdG9yKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlTGF5ZXIobV9sYXllckl0ZXJh
dG9yKTsKKyAgICAgICAgKyttX2xheWVySXRlcmF0b3I7CisgICAgICAgIEFTU0VSVF9UUlVFKG1f
bGF5ZXJJdGVyYXRvci5yZXByZXNlbnRzQ29udHJpYnV0aW5nUmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgb2NjbHVzaW9uLmVudGVyTGF5ZXIobV9sYXllckl0ZXJhdG9yKTsKKyAgICB9CisKKyAg
ICB2b2lkIGxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZSh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
KiBsYXllciwgdHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlJiBvY2NsdXNpb24p
CisgICAgeworICAgICAgICBBU1NFUlRfRVEobGF5ZXIsICptX2xheWVySXRlcmF0b3IpOworICAg
ICAgICBBU1NFUlRfVFJVRShtX2xheWVySXRlcmF0b3IucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1Jl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZUxheWVyKG1fbGF5ZXJJdGVy
YXRvcik7CisgICAgICAgICsrbV9sYXllckl0ZXJhdG9yOworICAgIH0KKworICAgIHZvaWQgdmlz
aXRDb250cmlidXRpbmdTdXJmYWNlKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGxheWVyLCB0
eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5cGUmIG9jY2x1c2lvbikKKyAgICB7Cisg
ICAgICAgIGVudGVyQ29udHJpYnV0aW5nU3VyZmFjZShsYXllciwgb2NjbHVzaW9uKTsKKyAgICAg
ICAgbGVhdmVDb250cmlidXRpbmdTdXJmYWNlKGxheWVyLCBvY2NsdXNpb24pOworICAgIH0KKwor
ICAgIHZvaWQgcmVzZXRMYXllckl0ZXJhdG9yKCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJJdGVy
YXRvciA9IG1fbGF5ZXJJdGVyYXRvckJlZ2luOwogICAgIH0KIAogICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwpAQCAtMzA4LDYgKzM2NCw5IEBAIHByaXZhdGU6
CiAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyUHRyVHlwZSBtX3Jvb3Q7CiAgICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdENocm9taXVtOwog
ICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdEltcGw7Cisg
ICAgdHlwZW5hbWUgVHlwZXM6OkxheWVySXRlcmF0b3IgbV9sYXllckl0ZXJhdG9yQmVnaW47Cisg
ICAgdHlwZW5hbWUgVHlwZXM6OkxheWVySXRlcmF0b3IgbV9sYXllckl0ZXJhdG9yOworICAgIHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIG1fbGFzdExheWVyVmlzaXRlZDsKICAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbV9yZXBsaWNhTGF5ZXJzOwogfTsKIApAQCAtMzY0LDgg
KzQyMyw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhT
Y2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJT
dXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyKTsKKyAgICAgICAgdGhpcy0+dmlzaXRMYXllcihsYXllciwgb2NjbHVzaW9uKTsK
KyAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihwYXJlbnQsIG9jY2x1c2lvbik7CisKICAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKQEAgLTQxNiw4ICs0NzYsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAg
ICAgIHRoaXMtPnZpc2l0TGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVu
dGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOworCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5ib3VuZHMoKSk7CkBAIC00NjYsOCArNTI3LDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwg
dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICB0aGlzLT52aXNpdExh
eWVyKGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyKHBhcmVudCwg
b2NjbHVzaW9uKTsKKwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgNTAs
IDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwg
NTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwpAQCAt
NTMyLDggKzU5NCw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tl
cldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpS
ZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwog
ICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIpOworICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBvY2NsdXNp
b24pOworICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2UoY2hpbGQsIG9jY2x1
c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5z
aXplKCkpOwpAQCAtNTU0LDkgKzYxNiw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MSkpKTsK
ICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNo
aWxkKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGls
ZCwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
PmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShjaGlsZCwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhp
cy0+ZW50ZXJMYXllcihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtNjI5LDIyICs2OTAsMjIgQEAg
cHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKIAot
ICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNo
aWxkMik7CisgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoY2hpbGQyLCBvY2NsdXNpb24pOwogCiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA2MCwgMjApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
IAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIpOworICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBvY2NsdXNpb24pOwogCiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDJ1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7
CiAKKyAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdTdXJmYWNlKGNoaWxkLCBvY2NsdXNp
b24pOworCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50
UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CiAgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcw
KSkpOwpAQCAtNjg1LDEwICs3NDYsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwg
NjAsIDcwKSkuaXNFbXB0eSgpKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGNoaWxkKTsKLSAgICAgICAgLy8gfGNoaWxkMnwgc2hvdWxkIGdl
dCBtZXJnZWQgd2l0aCB0aGUgc3VyZmFjZSB3ZSBhcmUgbGVhdmluZyBub3cKLSAgICAgICAgb2Nj
bHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIC8vIE9jY2x1c2lvbiBpbiB8Y2hpbGQy
fCBzaG91bGQgZ2V0IG1lcmdlZCB3aXRoIHRoZSB8Y2hpbGR8IHN1cmZhY2Ugd2UgYXJlIGxlYXZp
bmcgbm93LgorICAgICAgICB0aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1cmZhY2UoY2hpbGQsIG9j
Y2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwog
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VR
KDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
QEAgLTc3OCw4ICs4MzgsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgSW50UmVjdCBjbGlwcGVk
TGF5ZXJJbkNoaWxkID0gbGF5ZXJUcmFuc2Zvcm0ubWFwUmVjdChsYXllci0+dmlzaWJsZUxheWVy
UmVjdCgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIpOworICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBvY2NsdXNp
b24pOworICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2UoY2hpbGQsIG9jY2x1
c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDB1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTgw
NSw5ICs4NjUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5
KCkpOwogICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOwogCi0gICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7Ci0gICAgICAgIG9jY2x1
c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1
cmZhY2UoY2hpbGQsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50
LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
CkBAIC04NDEsOSArOTAwLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlw
ZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllcjIpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIxKTsKKyAgICAgICAgdGhpcy0+dmlzaXRMYXllcihsYXllcjIsIG9jY2x1
c2lvbik7CisgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIobGF5ZXIxLCBvY2NsdXNpb24pOworICAg
ICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2UoY2hpbGQsIG9jY2x1c2lvbik7CiAK
ICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpA
QCAtODYyLDkgKzkyMSw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCg3MCwgNDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hp
bGQsIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEwLCA1MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChj
aGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVk
VGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShjaGlsZCwg
b2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihwYXJlbnQsIG9jY2x1c2lvbik7
CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwpAQCAtOTMwLDggKzk4OCw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5
cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0yMCwg
LTIwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIpOworICAgICAgICB0aGlzLT52aXNpdExheWVyKGxh
eWVyMiwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdTdXJmYWNl
KGNoaWxkMiwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIw
LCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC05NTIsMTUgKzEwMTAsMTIgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0x
MCwgNDIwLCA3MCwgODEpKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVk
VGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIsIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKLQog
ICAgICAgICAvLyBUaGVyZSBpcyBub3RoaW5nIGFib3ZlIGNoaWxkMidzIHN1cmZhY2UgaW4gdGhl
IHotb3JkZXIuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNo
aWxkMiwgZmFsc2UsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKIAotICAgICAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVu
ZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGxheWVyMSk7CisgICAgICAgIHRoaXMtPmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShjaGlsZDIs
IG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIobGF5ZXIxLCBvY2NsdXNpb24p
OworICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2UoY2hpbGQxLCBvY2NsdXNp
b24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQ
RUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKQEAgLTk3MywxMyArMTAyOCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDMwLCA4MSwgNzAp
KSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRS
ZWN0KC0xMCwgNDMwLCA4MCwgNzEpKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGNoaWxkMSk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJl
bmRlclN1cmZhY2UoY2hpbGQxLCBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7Ci0KICAgICAgICAg
Ly8gY2hpbGQyJ3MgY29udGVudHMgd2lsbCBvY2NsdWRlIGNoaWxkMSBiZWxvdyBpdC4KICAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgMTAsIDcwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQxLCBmYWxzZSwgSW50
UmVjdCgtMTAsIDQzMCwgODAsIDcwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
PmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShjaGlsZDEsIG9jY2x1c2lvbik7CisgICAgICAgIHRo
aXMtPmVudGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTEwNDksOCArMTEwMiw4IEBA
IHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0zMCwgLTMwLCAxMDAwLCAxMDAwKSk7CiAK
LSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDItPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllcjIpOworICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyMiwgb2NjbHVzaW9uKTsKKyAg
ICAgICAgdGhpcy0+ZW50ZXJMYXllcihjaGlsZDIsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtMTA2MywxNiAr
MTExNiwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7CiAgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwg
ODEpKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
Mik7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQy
LCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIoY2hp
bGQyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2Uo
Y2hpbGQyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIC8vIFRoZXJlIGlzIG5vdGhpbmcgYWJvdmUg
Y2hpbGQyJ3Mgc3VyZmFjZSBpbiB0aGUgei1vcmRlci4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRp
bmdTdXJmYWNlQ29udGVudFJlY3QoY2hpbGQyLCBmYWxzZSwgSW50UmVjdCgtMTAsIDQyMCwgNzAs
IDgwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEpOworICAgICAgICB0aGlzLT5sZWF2ZUNv
bnRyaWJ1dGluZ1N1cmZhY2UoY2hpbGQyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT52aXNp
dExheWVyKGxheWVyMSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRp
bmdTdXJmYWNlKGNoaWxkMSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0xMDg1LDE1ICsxMTM3LDEzIEBAIHBy
b3RlY3RlZDoKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEs
IEludFJlY3QoNDIwLCAtMTksIDgwLCA5MCkpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoNDIxLCAtMjAsIDgwLCA5MCkpKTsKIAotICAg
ICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxKTsKLSAgICAgICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEsIGNoaWxkMS0+cmVu
ZGVyU3VyZmFjZSgpKTsKLQogICAgICAgICAvLyBjaGlsZDIncyBjb250ZW50cyB3aWxsIG9jY2x1
ZGUgY2hpbGQxIGJlbG93IGl0LgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQyMCwg
LTIwLCA4MCwgOTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250
ZW50UmVjdChjaGlsZDEsIGZhbHNlLCBJbnRSZWN0KDQyMCwgLTIwLCA4MCwgOTApKSk7CiAgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDkwLCAtMTAsIDEwLCA4MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KGNoaWxkMSwgZmFsc2UsIElu
dFJlY3QoNDIwLCAtMTAsIDgwLCA5MCkpKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCg0MjAsIC0yMCwgNzAsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJm
YWNlQ29udGVudFJlY3QoY2hpbGQxLCBmYWxzZSwgSW50UmVjdCg0MjAsIC0yMCwgNzAsIDkwKSkp
OwogCi0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmxlYXZlQ29udHJpYnV0aW5nU3VyZmFj
ZShjaGlsZDEsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50LCBv
Y2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwg
ODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKQEAgLTExNDYsOCArMTE5Niw4IEBAIHByb3RlY3RlZDoKIAogICAgICAgICB0
eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9v
dCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpOwogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogYmx1ckxheWVy
ID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0
UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwotICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogb3BhY2l0eUxheWVyID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIHRydWUpOwogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExh
eWVyVHlwZSogb3BhcXVlTGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBs
YXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1
ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBvcGFjaXR5TGF5
ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxv
YXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CiAKICAgICAgICAgRmls
dGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwogICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBl
bmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgxMCwgV2ViQ29yZTo6UGVyY2Vu
dCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikpOwpAQCAtMTE2NywyMiArMTIxNywyMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIC8vIE9wYWNpdHkgbGF5ZXIgd29uJ3QgY29udHJp
YnV0ZSB0byBvY2NsdXNpb24uCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2Uob3BhY2l0eUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhY2l0eUxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9u
LmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5TGF5ZXIsIG9wYWNpdHlMYXllci0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+dmlzaXRMYXllcihvcGFjaXR5TGF5ZXIs
IG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyQ29udHJpYnV0aW5nU3VyZmFjZShvcGFj
aXR5TGF5ZXIsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOwogICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKIAogICAgICAg
ICAvLyBBbmQgaGFzIG5vdGhpbmcgdG8gY29udHJpYnV0ZSB0byBpdHMgcGFyZW50IHN1cmZhY2Uu
Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShv
cGFjaXR5TGF5ZXIsIG9jY2x1c2lvbik7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKICAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7CiAKICAgICAg
ICAgLy8gT3BhcXVlIGxheWVyIHdpbGwgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAgICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihvcGFx
dWVMYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uo
b3BhcXVlTGF5ZXIsIG9wYXF1ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlz
LT52aXNpdExheWVyKG9wYXF1ZUxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRl
ckNvbnRyaWJ1dGluZ1N1cmZhY2Uob3BhcXVlTGF5ZXIsIG9jY2x1c2lvbik7CiAKICAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtMTE5MCwy
NSArMTIzOCwyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAogICAgICAgICAv
LyBBbmQgaXQgZ2V0cyB0cmFuc2xhdGVkIHRvIHRoZSBwYXJlbnQgc3VyZmFjZS4KLSAgICAgICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVDb250cmlidXRpbmdTdXJmYWNlKG9wYXF1ZUxheWVy
LCBvY2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAs
IDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwg
NzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5y
ZWN0cygpLnNpemUoKSk7CiAKICAgICAgICAgLy8gVGhlIGJsdXIgbGF5ZXIgbmVlZHMgdG8gdGhy
b3cgYXdheSBhbnkgb2NjbHVzaW9uIGZyb20gb3V0c2lkZSBpdHMgc3VidHJlZS4KLSAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShibHVyTGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIoYmx1ckxheWVyLCBvY2NsdXNpb24pOwog
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlz
RW1wdHkoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5pc0VtcHR5KCkpOwogCiAgICAgICAgIC8vIEFuZCBpdCB3b24ndCBjb250cmli
dXRlIHRvIG9jY2x1c2lvbi4KLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGJsdXJMYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1
cmZhY2UoYmx1ckxheWVyLCBibHVyTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRo
aXMtPmxlYXZlTGF5ZXIoYmx1ckxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRl
ckNvbnRyaWJ1dGluZ1N1cmZhY2UoYmx1ckxheWVyLCBvY2NsdXNpb24pOwogICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5p
c0VtcHR5KCkpOwogCi0gICAgICAgIC8vIEJ1dCB0aGUgb3BhcXVlIGxheWVyJ3Mgb2NjbHVzaW9u
IGlzIHByZXNlcnZlZCBvbiB0aGUgcGFyZW50LgotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICAvLyBC
dXQgdGhlIG9wYXF1ZSBsYXllcidzIG9jY2x1c2lvbiBpcyBwcmVzZXJ2ZWQgb24gdGhlIHBhcmVu
dC4gCisgICAgICAgIHRoaXMtPmxlYXZlQ29udHJpYnV0aW5nU3VyZmFjZShibHVyTGF5ZXIsIG9j
Y2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwog
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwpAQCAtMTIzMSwxNiArMTI4MCwx
NSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nv
cjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFj
ZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2Nj
bHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAK
LSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
c3VyZmFjZSk7CisgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsK
IAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDEwMCwgNTAsIDUwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDUwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkp
OwogCi0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFj
ZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhp
cy0+dmlzaXRDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAg
IHRoaXMtPmVudGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIC8vIFRoZSBz
dXJmYWNlIGFuZCByZXBsaWNhIHNob3VsZCBib3RoIGJlIG9jY2x1ZGluZyB0aGUgcGFyZW50Lgog
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwpAQCAtMTI2MywxNiArMTMx
MSwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Np
c3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3Vy
ZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAg
b2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIoc3VyZmFjZSk7CisgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9u
KTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDEwMCwgNTAsIDUwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDUwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3Vy
ZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAg
dGhpcy0+dmlzaXRDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAg
ICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIC8vIFRo
ZSBzdXJmYWNlIGFuZCByZXBsaWNhIHNob3VsZCBib3RoIGJlIG9jY2x1ZGluZyB0aGUgcGFyZW50
LgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDEwMCwgMTAwLCA3MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CkBAIC0xMjk0LDcgKzEz
NDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Np
c3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3Vy
ZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAg
b2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyKGxheWVyLCBvY2NsdXNp
b24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CkBAIC0xMzA2LDggKzEz
NTMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CiAKLSAg
ICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVMYXllcihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAg
ICAgdGhpcy0+dmlzaXRDb250cmlidXRpbmdTdXJmYWNlKGxheWVyLCBvY2NsdXNpb24pOworICAg
ICAgICB0aGlzLT5lbnRlckxheWVyKHBhcmVudCwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CkBAIC0xMzM3LDcgKzEzODUsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICB0aGlzLT5lbnRlckxheWVyKGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CkBAIC0xMzQ5LDggKzEzOTcsOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
PmxlYXZlTGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPnZpc2l0Q29udHJp
YnV0aW5nU3VyZmFjZShsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXll
cihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOwpAQCAtMTM4MCwxNSArMTQyOSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBl
bmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRl
ckxheWVyKGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAx
MDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAotICAgICAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICB0aGlzLT5sZWF2ZUxheWVyKGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0
aGlzLT52aXNpdENvbnRyaWJ1dGluZ1N1cmZhY2UobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAg
IHRoaXMtPmVudGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKQEAgLTE0MTgsMTUgKzE0NjgsMTYgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24o
SW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgdGhpcy0+ZW50ZXJMYXllcihsYXllciwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
KSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVj
dCgwLCAxMDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAx
MDApKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVy
KTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVMYXllcihsYXllciwgb2NjbHVz
aW9uKTsKKyAgICAgICAgdGhpcy0+dmlzaXRDb250cmlidXRpbmdTdXJmYWNlKGxheWVyLCBvY2Ns
dXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyKHBhcmVudCwgb2NjbHVzaW9uKTsKIAog
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CkBAIC0xNDU2LDE1ICsxNTA3LDE2
IEBAIHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29y
PHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNl
VHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKIAot
ICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJT
dXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyKGxheWVyLCBvY2NsdXNpb24pOwog
CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkp
OwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5sZWF2ZUxh
eWVyKGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT52aXNpdENvbnRyaWJ1dGluZ1N1
cmZhY2UobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50
LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKQEAg
LTE0OTgsMTUgKzE1NTAsMTYgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlw
ZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAw
KSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIobGF5
ZXIsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwog
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEw
MCwgMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogCi0gICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5s
ZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAg
ICAgIHRoaXMtPmxlYXZlTGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPnZp
c2l0Q29udHJpYnV0aW5nU3VyZmFjZShsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+
ZW50ZXJMYXllcihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOwpAQCAtMTU0MCwxNSArMTU5MywxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJU
eXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJl
Y3QoSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0
aGlzLT5lbnRlckxheWVyKGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEw
MCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwog
Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAg
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPnZpc2l0Q29udHJpYnV0aW5nU3VyZmFjZShsYXllciwgb2NjbHVzaW9uKTsK
KyAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihwYXJlbnQsIG9jY2x1c2lvbik7CiAKICAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwpAQCAtMTU4MiwxNSArMTYzNiwxNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOwogICAgICAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgICAgICB0aGlzLT5lbnRlckxheWVyKGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIobGF5ZXIs
IG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPnZpc2l0Q29udHJpYnV0aW5nU3VyZmFjZShsYXll
ciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihwYXJlbnQsIG9jY2x1c2lv
bik7CiAKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwpAQCAtMTYyMiw3ICsx
Njc3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwog
CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+
ZW50ZXJMYXllcihsYXllciwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBUaGlzIGxheWVyIGlz
IHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBpbnRvIGl0cyB0YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29y
IHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFyZ2V0IHN1cmZhY2UKICAgICAgICAgLy8gaXMgbm90IGlu
IHRoYXQgdGFyZ2V0IHNwYWNlLCB0aGVuIGFmdGVyIHRyYW5zbGF0aW5nIHRoZXNlIHF1ZXJ5IHJl
Y3RzIGludG8gdGhlIHRhcmdldCwgdGhleSB3aWxsIGZhbGwgb3V0c2lkZQpAQCAtMTY0Niw3ICsx
NzAxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwog
CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+
ZW50ZXJMYXllcihsYXllciwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7CkBAIC0xNjYxLDggKzE3MTYsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSkpOwogICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3Qo
KTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwot
ICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5sZWF2ZUxheWVyKGxheWVyLCBvY2NsdXNpb24p
OworICAgICAgICB0aGlzLT52aXNpdENvbnRyaWJ1dGluZ1N1cmZhY2UobGF5ZXIsIG9jY2x1c2lv
bik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkuaXNFbXB0eSgpKTsKICAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKQEAgLTE2ODQsOCArMTc0MCw5IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0
eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgICAgIGxh
eWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCi0g
ICAgICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllcik7CisgICAgICAgICAgICB0aGlzLT5yZXNldExheWVySXRlcmF0b3IoKTsKKyAg
ICAgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgICAg
ICB0aGlzLT5lbnRlckxheWVyKHBhcmVudCwgb2NjbHVzaW9uKTsKIAogICAgICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0x
Njk5LDggKzE3NTYsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlw
ZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CiAgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJlY3QoMjAs
IDIwLCAxODAsIDE4MCkpOwogCi0gICAgICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgICAgICB0aGlzLT5yZXNl
dExheWVySXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIobGF5ZXIsIG9j
Y2x1c2lvbik7CisgICAgICAgICAgICB0aGlzLT5lbnRlckxheWVyKHBhcmVudCwgb2NjbHVzaW9u
KTsKIAogICAgICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMjAsIDEyMCwgMTgwLCAx
ODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAg
ICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5y
ZWN0cygpLnNpemUoKSk7CkBAIC0xNzE0LDggKzE3NzIsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29u
dGVudHNSZWN0KEludFJlY3QoMTUwLCAxNTAsIDEwMCwgMTAwKSk7CiAKLSAgICAgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
KyAgICAgICAgICAgIHRoaXMtPnJlc2V0TGF5ZXJJdGVyYXRvcigpOworICAgICAgICAgICAgdGhp
cy0+dmlzaXRMYXllcihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgICAgIHRoaXMtPmVudGVy
TGF5ZXIocGFyZW50LCBvY2NsdXNpb24pOwogCiAgICAgICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDI1MCwgMjUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKICAgICAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0xNzQzLDggKzE4MDIsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKICAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXll
clR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJM
YXllcihsYXllciwgb2NjbHVzaW9uKTsKIAorICAgICAgICAvLyBUaGUgbGF5ZXIgaXMgcm90YXRl
ZCBpbiAzZCBidXQgd2l0aG91dCBwcmVzZXJ2aW5nIDNkLCBzbyBpdCBvbmx5IGdldHMgcmVzaXpl
ZC4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QobGF5ZXIsIEludFJlY3QoMCwgMCwgMjAwLCAyMDAp
KSk7CiAgICAgfQogfTsKQEAgLTE3NjYsMTAgKzE4MjYsMTEgQEAgcHJvdGVjdGVkOgogICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjb250YWluZXIgPSB0aGlzLT5jcmVhdGVMYXll
cihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDMwMCwgMzAwKSk7CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBs
YXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjb250YWluZXIsIHRyYW5zZm9ybSwgRmxv
YXRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKICAgICAgICAgY29u
dGFpbmVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKKyAgICAgICAgbGF5ZXItPnNldFByZXNlcnZl
czNEKHRydWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCiAgICAgICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJU
eXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5
ZXIobGF5ZXIsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QobGF5ZXIsIElu
dFJlY3QoMCwgMCwgMjAwLCAyMDApKSk7CiAgICAgfQpAQCAtMTc5NSwxMCArMTg1NiwxMSBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNvbnRhaW5lciA9
IHRoaXMtPmNyZWF0ZUxheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApKTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNvbnRhaW5l
ciwgdHJhbnNmb3JtLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7
CiAgICAgICAgIGNvbnRhaW5lci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisgICAgICAgIGxheWVy
LT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50
KTsKIAogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUg
VHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0
aGlzLT5lbnRlckxheWVyKGxheWVyLCBvY2NsdXNpb24pOwogCiAgICAgICAgIC8vIFRoZSBib3R0
b20gMTEgcGl4ZWwgcm93cyBvZiB0aGlzIGxheWVyIHJlbWFpbiB2aXNpYmxlIGluc2lkZSB0aGUg
Y29udGFpbmVyLCBhZnRlciB0cmFuc2xhdGlvbiB0byB0aGUgdGFyZ2V0IHN1cmZhY2UuIFdoZW4g
dHJhbnNsYXRlZCBiYWNrLAogICAgICAgICAvLyB0aGlzIHdpbGwgaW5jbHVkZSBtYW55IG1vcmUg
cGl4ZWxzIGJ1dCBtdXN0IGluY2x1ZGUgYXQgbGVhc3QgdGhlIGJvdHRvbSAxMSByb3dzLgpAQCAt
MTgyMiwxMyArMTg4NCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpD
b250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdp
bmdMYXllcihwYXJlbnQsIHRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAs
IDEwMCksIHRydWUpOwogICAgICAgICBwYXJlbnQtPnNldFByZXNlcnZlczNEKHRydWUpOworICAg
ICAgICBsYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3
RXRjKHBhcmVudCk7CiAKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29y
PHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNl
VHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
IAotICAgICAgICAvLyBUaGlzIGxheWVyIGlzIGVudGlyZWx5IGJlaGluZCB0aGUgY2FtZXJhIGFu
ZCBzaG91bGQgbm90IG9jY2x1ZGUuCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllcik7CisgICAgICAgIC8vIFRoZSB8bGF5ZXJ8IGlzIGVudGlyZWx5IGJlaGlu
ZCB0aGUgY2FtZXJhIGFuZCBzaG91bGQgbm90IG9jY2x1ZGUuCisgICAgICAgIHRoaXMtPnZpc2l0
TGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50
LCBvY2NsdXNpb24pOwogICAgICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgwdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAg
fQpAQCAtMTg1MCwxNCArMTkxMywxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0
ZURyYXdpbmdMYXllcihwYXJlbnQsIHRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgxMDAsIDEwMCksIHRydWUpOwogICAgICAgICBwYXJlbnQtPnNldFByZXNlcnZlczNEKHRydWUp
OworICAgICAgICBsYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAgICAgICAgIHRoaXMtPmNh
bGNEcmF3RXRjKHBhcmVudCk7CiAKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhT
Y2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJT
dXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKIAogICAgICAgICAvLyBUaGlzIGlzIHZlcnkgY2xvc2UgdG8gdGhlIGNhbWVyYSwgc28g
cGl4ZWxzIGluIGl0cyB2aXNpYmxlTGF5ZXJSZWN0IHdpbGwgYWN0dWFsbHkgZ28gb3V0c2lkZSBv
ZiB0aGUgbGF5ZXIncyBjbGlwUmVjdC4KICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhvc2UgcGl4
ZWxzIGRvbid0IG9jY2x1ZGUgdGhpbmdzIG91dHNpZGUgdGhlIGNsaXBSZWN0LgotICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICB0aGlzLT52
aXNpdExheWVyKGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyKHBh
cmVudCwgb2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX0VRKEludFJlY3QoMCwgMCwgMTAwLCAx
MDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5y
ZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUShJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xODc3
LDYgKzE5NDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50
TGF5ZXJUeXBlKiBzdXJmYWNlID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCks
IHRydWUpOwogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFj
ZUNoaWxkID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2UsIHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMzAwKSwgdHJ1ZSk7CiAgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hpbGQyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2UsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xh
eWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApLCBmYWxzZSk7CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiB0b3Btb3N0ID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMjUwLCAwKSwgSW50U2l6ZSg1MCwgMzAwKSwgdHJ1
ZSk7CiAKICAgICAgICAgYWRkT3BhY2l0eVRyYW5zaXRpb25Ub0NvbnRyb2xsZXIoKmxheWVyLT5s
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSwgMTAsIDAsIDEsIGZhbHNlKTsKQEAgLTE4ODksMjYg
KzE5NTQsMjkgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJX
aXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVu
ZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAot
ICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHRv
cG1vc3QpOworICAgICAgICB0aGlzLT52aXNpdExheWVyKHRvcG1vc3QsIG9jY2x1c2lvbik7Cisg
ICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50Miwgb2NjbHVzaW9uKTsKICAgICAgICAgLy8g
VGhpcyBvY2NsdXNpb24gd2lsbCBhZmZlY3QgYWxsIHN1cmZhY2VzLgotICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDAsIDAsIDI1MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0KLSAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxk
Mik7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAwLCAxNTAsIDMwMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZh
Y2VDaGlsZCk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjUwLCAzMDAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudDIsIEludFJlY3QoMCwgMCwg
MzAwLCAzMDApKSk7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIocGFyZW50Miwgb2NjbHVzaW9u
KTsKKworICAgICAgICB0aGlzLT52aXNpdExheWVyKHN1cmZhY2VDaGlsZDIsIG9jY2x1c2lvbik7
CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwgMTUwLCAzMDApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2VDaGlsZCwgSW50UmVjdCgwLCAwLCAzMDAsIDMw
MCkpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVMYXllcihzdXJmYWNlQ2hpbGQsIG9jY2x1c2lvbik7
CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKICAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDAsIDUwLCAzMDApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKLSAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgICAgICBv
Y2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIoc3VyZmFjZSwgb2NjbHVz
aW9uKTsKIAorICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZSwg
b2NjbHVzaW9uKTsKICAgICAgICAgLy8gT2NjbHVzaW9uIHdpdGhpbiB0aGUgc3VyZmFjZSBpcyBs
b3N0IHdoZW4gbGVhdmluZyB0aGUgYW5pbWF0aW5nIHN1cmZhY2UuCiAgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRy
aWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVDb250cmlidXRpbmdTdXJmYWNlKHN1cmZh
Y2UsIG9jY2x1c2lvbik7CiAKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAgLy8gT2NjbHVzaW9uIGlzIG5vdCBh
ZGRlZCBmb3IgdGhlIGFuaW1hdGluZyBsYXllci4KKyAgICAgICAgdGhpcy0+dmlzaXRMYXllcihs
YXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihwYXJlbnQsIG9jY2x1
c2lvbik7CisKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIG5vdCBhZGRlZCBmb3IgdGhlIGFuaW1h
dGluZyB8bGF5ZXJ8LgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDI1MCwg
MzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwg
MCwgMzAwLCAzMDApKSk7CiAgICAgfQogfTsKQEAgLTE5MjUsNiArMTk5Myw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2UgPSB0
aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CiAgICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hpbGQgPSB0aGlzLT5jcmVhdGVE
cmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMjAwLCAzMDApLCB0cnVlKTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIo
c3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MTAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIHBhcmVudDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsK
ICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHRvcG1vc3QgPSB0aGlz
LT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgyNTAsIDApLCBJbnRTaXplKDUwLCAzMDApLCB0cnVlKTsKIAogICAgICAgICBhZGRPcGFj
aXR5VHJhbnNpdGlvblRvQ29udHJvbGxlcigqbGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxl
cigpLCAxMCwgMSwgMCwgZmFsc2UpOwpAQCAtMTkzNywyNiArMjAwNiwyOSBAQCBwcm90ZWN0ZWQ6
CiAKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIodG9wbW9zdCk7CisgICAgICAgIHRoaXMt
PnZpc2l0TGF5ZXIodG9wbW9zdCwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJMYXll
cihwYXJlbnQyLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBUaGlzIG9jY2x1c2lvbiB3aWxsIGFm
ZmVjdCBhbGwgc3VyZmFjZXMuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwg
MjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVMYXllcihwYXJlbnQyLCBv
Y2NsdXNpb24pOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
c3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZDIpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDEwMCwgMCwgMTUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1
cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQpOworICAgICAgICB0aGlzLT52aXNpdExh
eWVyKHN1cmZhY2VDaGlsZDIsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIo
c3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDEwMCwgMCwgMTUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZh
Y2VDaGlsZCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVM
YXllcihzdXJmYWNlQ2hpbGQsIG9jY2x1c2lvbik7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIo
c3VyZmFjZSwgb2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAs
IDAsIDUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihzdXJmYWNlKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAw
LCAwLCAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5k
ZXJTdXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRo
aXMtPmxlYXZlTGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAorICAgICAgICB0aGlzLT5lbnRl
ckNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2NjbHVzaW9uKTsKICAgICAgICAgLy8gT2Nj
bHVzaW9uIHdpdGhpbiB0aGUgc3VyZmFjZSBpcyBsb3N0IHdoZW4gbGVhdmluZyB0aGUgYW5pbWF0
aW5nIHN1cmZhY2UuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjUwLCAz
MDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChz
dXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgdGhpcy0+
bGVhdmVDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKLSAgICAgICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
LSAgICAgICAgLy8gT2NjbHVzaW9uIGlzIG5vdCBhZGRlZCBmb3IgdGhlIGFuaW1hdGluZyBsYXll
ci4KKyAgICAgICAgdGhpcy0+dmlzaXRMYXllcihsYXllciwgb2NjbHVzaW9uKTsKKyAgICAgICAg
dGhpcy0+ZW50ZXJMYXllcihwYXJlbnQsIG9jY2x1c2lvbik7CisKKyAgICAgICAgLy8gT2NjbHVz
aW9uIGlzIG5vdCBhZGRlZCBmb3IgdGhlIGFuaW1hdGluZyB8bGF5ZXJ8LgogICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDI1MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiAgICAgfQogfTsK
QEAgLTE5OTIsMjIgKzIwNjQsMjIgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFt
ZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1
cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIoc3VyZmFjZTIpOwotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRS
ZW5kZXJTdXJmYWNlKHN1cmZhY2UyLCBzdXJmYWNlMi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAg
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+dmlzaXRMYXllcihzdXJmYWNlMiwgb2NjbHVzaW9uKTsK
KyAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2UyLCBvY2NsdXNp
b24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDMwMCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFj
ZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVDb250cmlidXRpbmdTdXJm
YWNlKHN1cmZhY2UyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxheWVyKHN1cmZh
Y2VDaGlsZDIsIG9jY2x1c2lvbik7CiAKLSAgICAgICAgLy8gVGhlIGxheWVyIGlzIG1vdmluZyBp
biBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFyZ2V0LCBzbyBvY2NsdXNp
b24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHkuCisgICAgICAgIC8vIHN1
cmZhY2VDaGlsZDIgaXMgbW92aW5nIGluIHNjcmVlbiBzcGFjZSBidXQgbm90IHJlbGF0aXZlIHRv
IGl0cyB0YXJnZXQsIHNvIG9jY2x1c2lvbiBzaG91bGQgaGFwcGVuIGluIGl0cyB0YXJnZXQgc3Bh
Y2Ugb25seS4KICAgICAgICAgLy8gSXQgYWxzbyBtZWFucyB0aGF0IHRoaW5ncyBvY2NsdWRpbmcg
aW4gc2NyZWVuIHNwYWNlIChlLmcuIHN1cmZhY2UyKSBjYW5ub3Qgb2NjbHVkZSB0aGlzIGxheWVy
LgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMzAwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlQ2hpbGQyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMzAwKSkpOwogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHN1cmZh
Y2VDaGlsZCwgSW50UmVjdCgwLCAwLCA1MCwgMzAwKSkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQyKTsKKyAgICAgICAgdGhpcy0+bGVh
dmVMYXllcihzdXJmYWNlQ2hpbGQyLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxh
eWVyKHN1cmZhY2VDaGlsZCwgb2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChzdXJmYWNlQ2hpbGQsIEludFJlY3QoMCwgMCwgMTAwLCAzMDApKSk7CiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDMwMCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAt
MjAxNSwzOCArMjA4Nyw0MCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwog
Ci0gICAgICAgIC8vIFRoZSBzdXJmYWNlIGNoaWxkIGlzIG9jY2x1ZGVkIGJ5IHRoZSBzdXJmYWNl
Q2hpbGQyLCBidXQgaXMgbW92aW5nIHJlbGF0aXZlIGl0cyB0YXJnZXQgYW5kIHRoZSBzY3JlZW4s
IHNvIGl0CisgICAgICAgIC8vIFRoZSBzdXJmYWNlQ2hpbGQgaXMgb2NjbHVkZWQgYnkgdGhlIHN1
cmZhY2VDaGlsZDIsIGJ1dCBpcyBtb3ZpbmcgcmVsYXRpdmUgaXRzIHRhcmdldCBhbmQgdGhlIHNj
cmVlbiwgc28gaXQKICAgICAgICAgLy8gY2FuJ3QgYmUgb2NjbHVkZWQuCiAgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHN1cmZhY2VDaGlsZCwgSW50UmVjdCgwLCAwLCAyMDAsIDMwMCkpKTsKICAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChzdXJmYWNlQ2hpbGQsIEludFJlY3Qo
MCwgMCwgNTAsIDMwMCkpKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoc3VyZmFjZUNoaWxkKTsKLSAgICAgICAgLy8gVGhlIGxheWVyIGlzIG1vdmluZyBpbiBz
Y3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFyZ2V0LCBzbyBvY2NsdXNpb24g
c2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHkuCisgICAgICAgIHRoaXMtPmxl
YXZlTGF5ZXIoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT5lbnRlckxh
eWVyKHN1cmZhY2UsIG9jY2x1c2lvbik7CisgICAgICAgIC8vIFRoZSBzdXJmYWNlQ2hpbGQgaXMg
bW92aW5nIGluIHNjcmVlbiBzcGFjZSBidXQgbm90IHJlbGF0aXZlIHRvIGl0cyB0YXJnZXQsIHNv
IG9jY2x1c2lvbiBzaG91bGQgaGFwcGVuIGluIGl0cyB0YXJnZXQgc3BhY2Ugb25seS4KICAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA1MCwgMzAwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsK
IAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7Ci0g
ICAgICAgIC8vIFRoZSBsYXllciBpcyBtb3ZpbmcgaW4gc2NyZWVuIHNwYWNlIGJ1dCBub3QgcmVs
YXRpdmUgdG8gaXRzIHRhcmdldCwgc28gb2NjbHVzaW9uIHNob3VsZCBoYXBwZW4gaW4gaXRzIHRh
cmdldCBzcGFjZSBvbmx5LgorICAgICAgICB0aGlzLT5sZWF2ZUxheWVyKHN1cmZhY2UsIG9jY2x1
c2lvbik7CisgICAgICAgIC8vIFRoZSBzdXJmYWNlJ3Mgb3duaW5nIGxheWVyIGlzIG1vdmluZyBp
biBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFyZ2V0LCBzbyBvY2NsdXNp
b24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHkuCiAgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiAKLSAgICAgICAgb2Nj
bHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5k
ZXJTdXJmYWNlKCkpOwotCisgICAgICAgIHRoaXMtPmVudGVyQ29udHJpYnV0aW5nU3VyZmFjZShz
dXJmYWNlLCBvY2NsdXNpb24pOwogICAgICAgICAvLyBUaGUgY29udHJpYnV0aW5nIHxzdXJmYWNl
fCBpcyBhbmltYXRpbmcgc28gaXQgY2FuJ3QgYmUgb2NjbHVkZWQuCiAgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRy
aWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVDb250cmlidXRpbmdTdXJmYWNlKHN1cmZh
Y2UsIG9jY2x1c2lvbik7CiAKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgLy8gVGhlIHN1cmZhY2Ug
aXMgbW92aW5nIGluIHRoZSBzY3JlZW4gYW5kIGluIGl0cyB0YXJnZXQsIHNvIGFsbCBvY2NsdXNp
b24gd2l0aGluIHRoZSBzdXJmYWNlIGlzIGxvc3Qgd2hlbiBsZWF2aW5nIGl0LgorICAgICAgICB0
aGlzLT5lbnRlckxheWVyKGxheWVyLCBvY2NsdXNpb24pOworICAgICAgICAvLyBUaGUgfHN1cmZh
Y2V8IGlzIG1vdmluZyBpbiB0aGUgc2NyZWVuIGFuZCBpbiBpdHMgdGFyZ2V0LCBzbyBhbGwgb2Nj
bHVzaW9uIHdpdGhpbiB0aGUgc3VyZmFjZSBpcyBsb3N0IHdoZW4gbGVhdmluZyBpdC4KICAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgMCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAg
ICAgICAgdGhpcy0+bGVhdmVMYXllcihsYXllciwgb2NjbHVzaW9uKTsKIAotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICAvLyBUaGUgbGF5
ZXIgaXMgYW5pbWF0aW5nIGluIHRoZSBzY3JlZW4gYW5kIGluIGl0cyB0YXJnZXQsIHNvIG5vIG9j
Y2x1c2lvbiBpcyBhZGRlZC4KKyAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihwYXJlbnQsIG9jY2x1
c2lvbik7CisgICAgICAgIC8vIFRoZSB8bGF5ZXJ8IGlzIGFuaW1hdGluZyBpbiB0aGUgc2NyZWVu
IGFuZCBpbiBpdHMgdGFyZ2V0LCBzbyBubyBvY2NsdXNpb24gaXMgYWRkZWQuCiAgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDAsIDI1MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiAgICAgfQog
fTsKQEAgLTIwNzIsMTAgKzIxNDYsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVu
YW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
c3VyZmFjZTItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihzdXJmYWNlMik7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdl
dFJlbmRlclN1cmZhY2Uoc3VyZmFjZTIsIHN1cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
ICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOworICAgICAgICB0aGlzLT52aXNpdExheWVyKHN1cmZhY2UyLCBvY2NsdXNpb24p
OworICAgICAgICB0aGlzLT52aXNpdENvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZTIsIG9jY2x1
c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CkBAIC0yMDg2LDEwICsyMTU4LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBvY2Ns
dXNpb24uc2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZShSZWdpb24oKSk7CiAgICAgICAgIG9jY2x1
c2lvbi5zZXRPY2NsdXNpb25JblRhcmdldFN1cmZhY2UoUmVnaW9uKCkpOwogCi0gICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgp
KTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UpOwot
ICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1
cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPnZp
c2l0TGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKKyAgICAgICAgdGhpcy0+dmlzaXRDb250cmli
dXRpbmdTdXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCA0MDAsIDQwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwpAQCAtMjExMiwxMCArMjE4Miw4IEBA
IHByb3RlY3RlZDoKIAogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8
dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7Ci0g
ICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3Vy
ZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+dmlz
aXRMYXllcihzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0aGlzLT52aXNpdENvbnRyaWJ1
dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDAsIDMwMCwgMjAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CkBAIC0yMTQwLDI0ICsyMjA4LDIyIEBA
IHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAg
ICAgICAvLyBUaGlzIG9jY2x1ZGVzIHRoZSByZXBsaWNhLCBidXQgbm90IHRoZSBzdXJmYWNlIGl0
c2VsZi4KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcih0b3Btb3N0KTsKKyAgICAgICAgLy8gfHRvcG1vc3R8IG9jY2x1ZGVzIHRoZSByZXBsaWNh
LCBidXQgbm90IHRoZSBzdXJmYWNlIGl0c2VsZi4KKyAgICAgICAgdGhpcy0+dmlzaXRMYXllcih0
b3Btb3N0LCBvY2NsdXNpb24pOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwg
MTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91
bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7CisgICAgICAgIHRoaXMtPnZp
c2l0TGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmZp
bmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2Nj
bHVzaW9uKTsKIAogICAgICAgICAvLyBTdXJmYWNlIGlzIG5vdCBvY2NsdWRlZCBzbyBpdCBzaG91
bGRuJ3QgdGhpbmsgaXQgaXMuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwg
MTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50
UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKQEAgLTIxODAs
MjQgKzIyNDYsMjIgQEAgcHJvdGVjdGVkOgogICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
V2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAg
ICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwogCi0gICAgICAgIC8vIFRoaXMgb2NjbHVkZXMgdGhlIHN1cmZhY2UsIGJ1dCBub3Qg
dGhlIGVudGlyZSBzdXJmYWNlJ3MgcmVwbGljYS4KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcih0b3Btb3N0KTsKKyAgICAgICAgLy8gfHRvcG1v
c3R8IG9jY2x1ZGVzIHRoZSBzdXJmYWNlLCBidXQgbm90IHRoZSBlbnRpcmUgc3VyZmFjZSdzIHJl
cGxpY2EuCisgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIodG9wbW9zdCwgb2NjbHVzaW9uKTsKIAog
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMTEwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAxMTApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7
CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIoc3VyZmFjZSk7CisgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9u
KTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMTEwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShz
dXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckNv
bnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICAvLyBTdXJm
YWNlIGlzIG9jY2x1ZGVkLCBidXQgb25seSB0aGUgdG9wIDEwcHggb2YgdGhlIHJlcGxpY2EuCiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0KHN1cmZhY2UsIGZhbHNlLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwpAQCAtMjIyMywyNCArMjI4NywyMiBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwogCiAgICAgICAgIC8vIFRoZXNlIG9jY2x1ZGUgdGhlIHN1cmZhY2UgYW5kIHJl
cGxpY2EgZGlmZmVyZW50bHksIHNvIHdlIGNhbiB0ZXN0IGVhY2ggb25lLgotICAgICAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
LSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG92ZXJSZXBsaWNhKTsK
LSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG92ZXJTdXJmYWNlKTsK
KyAgICAgICAgdGhpcy0+dmlzaXRMYXllcihvdmVyUmVwbGljYSwgb2NjbHVzaW9uKTsKKyAgICAg
ICAgdGhpcy0+dmlzaXRMYXllcihvdmVyU3VyZmFjZSwgb2NjbHVzaW9uKTsKIAogICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDUwLCAyMDApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA1MCwgMjAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2Up
OworICAgICAgICB0aGlzLT52aXNpdExheWVyKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMnUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0g
ICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3Vy
ZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdGhpcy0+ZW50ZXJDb250cmlidXRpbmdT
dXJmYWNlKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAKICAgICAgICAgLy8gU3VyZmFjZSBhbmQgcmVw
bGljYSBhcmUgb2NjbHVkZWQgZGlmZmVyZW50IGFtb3VudHMuCiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNDAsIDAsIDYwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRyaWJ1
dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKQEAgLTIyNjUsMTggKzIzMjcsMTUgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
LCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KC0x
MDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKIAotICAgICAgICAvLyBUaGlzIG9jY2x1ZGVzIGV2ZXJ5
dGhpbmcgcGFydGlhbGx5IHNvIHdlIGtub3cgb2NjbHVzaW9uIGlzIGhhcHBlbmluZyBhdCBhbGwu
Ci0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
dG9wbW9zdCk7CisgICAgICAgIC8vIHx0b3Btb3N0fCBvY2NsdWRlcyBldmVyeXRoaW5nIHBhcnRp
YWxseSBzbyB3ZSBrbm93IG9jY2x1c2lvbiBpcyBoYXBwZW5pbmcgYXQgYWxsLgorICAgICAgICB0
aGlzLT52aXNpdExheWVyKHRvcG1vc3QsIG9jY2x1c2lvbik7CiAKICAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgMCwgMTAwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2VDaGlsZC0+cmVuZGVyU3VyZmFjZSgp
KTsKLQotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNo
aWxkKTsKKyAgICAgICAgdGhpcy0+dmlzaXRMYXllcihzdXJmYWNlQ2hpbGQsIG9jY2x1c2lvbik7
CiAKICAgICAgICAgLy8gc3VyZmFjZUNoaWxkIGluY3JlYXNlcyB0aGUgb2NjbHVzaW9uIGluIHRo
ZSBzY3JlZW4gYnkgYSBuYXJyb3cgc2xpdmVyLgogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDAsIDAsIDEwMCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKQEAgLTIyODksMjEgKzIzNDgsMjEgQEAgcHJvdGVjdGVkOgogICAgICAgICAvLyBt
YXNrIHRvIGJvdW5kcywgc28gaXQgZG9lc24ndCBoYXZlIGEgY2xpcFJlY3Qgb2YgaXRzIG93bi4g
VGh1cyB0aGUgcGFyZW50IG9mIHxzdXJmYWNlQ2hpbGR8IGV4ZXJjaXNlcyBkaWZmZXJlbnQgY29k
ZSBwYXRocwogICAgICAgICAvLyBhcyBpdHMgcGFyZW50IGRvZXMgbm90IGhhdmUgYSBjbGlwUmVj
dC4KIAotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZh
Y2VDaGlsZCwgc3VyZmFjZUNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5l
bnRlckNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOwogICAgICAg
ICAvLyBUaGUgc3VyZmFjZUNoaWxkJ3MgcGFyZW50IGRvZXMgbm90IGhhdmUgYSBjbGlwUmVjdCBh
cyBpdCBvd25zIGEgcmVuZGVyIHN1cmZhY2UuIE1ha2Ugc3VyZSB0aGUgdW5vY2NsdWRlZCByZWN0
CiAgICAgICAgIC8vIGRvZXMgbm90IGdldCBjbGlwcGVkIGF3YXkgaW5hcHByb3ByaWF0ZWx5Lgog
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDQwLCAxMDAsIDEwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVudFJlY3Qoc3VyZmFjZUNoaWxkLCBm
YWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDUwKSkpOworICAgICAgICB0aGlzLT5sZWF2ZUNvbnRy
aWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZUNoaWxkLCBvY2NsdXNpb24pOwogCiAgICAgICAgIC8vIFdo
ZW4gdGhlIHN1cmZhY2VDaGlsZCdzIG9jY2x1c2lvbiBpcyB0cmFuc2Zvcm1lZCB1cCB0byBpdHMg
cGFyZW50LCBtYWtlIHN1cmUgaXQgaXMgbm90IGNsaXBwZWQgYXdheSBpbmFwcHJvcHJpYXRlbHkg
YWxzby4KLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZh
Y2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIoc3VyZmFjZSwg
b2NjbHVzaW9uKTsKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDYw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMTAsIDEwMCwgNTAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0
cygpLnNpemUoKSk7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9u
KTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7
Ci0KLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNl
LCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5lbnRlckNvbnRyaWJ1
dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2NjbHVzaW9uKTsKICAgICAgICAgLy8gVGhlIHN1cmZhY2Un
cyBwYXJlbnQgZG9lcyBoYXZlIGEgY2xpcFJlY3QgYXMgaXQgaXMgdGhlIHJvb3QgbGF5ZXIuCiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRyaWJ1dGluZ1N1cmZhY2VDb250ZW50UmVjdChzdXJmYWNlLCBmYWxzZSwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICB9CkBAIC0yMzI3LDE4ICsyMzg2LDE3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAg
ICAgICAvLyBUaGlzIG9jY2x1ZGVzIGV2ZXJ5dGhpbmcgcGFydGlhbGx5IHNvIHdlIGtub3cgb2Nj
bHVzaW9uIGlzIGhhcHBlbmluZyBhdCBhbGwuCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIodG9wbW9zdCk7CisgICAgICAgIC8vIHx0b3Btb3N0
fCBvY2NsdWRlcyBldmVyeXRoaW5nIHBhcnRpYWxseSBzbyB3ZSBrbm93IG9jY2x1c2lvbiBpcyBo
YXBwZW5pbmcgYXQgYWxsLgorICAgICAgICB0aGlzLT5lbnRlckxheWVyKHRvcG1vc3QsIG9jY2x1
c2lvbik7CisgICAgICAgIHRoaXMtPmxlYXZlTGF5ZXIodG9wbW9zdCwgb2NjbHVzaW9uKTsKIAog
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDgwLCA1MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDgwLCA1MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAot
ICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2VDaGlsZC0+
cmVuZGVyU3VyZmFjZSgpKTsKICAgICAgICAgLy8gc3VyZmFjZUNoaWxkIGlzIG5vdCBvcGFxdWUg
YW5kIGRvZXMgbm90IG9jY2x1ZGUsIHNvIHdlIGhhdmUgYSBub24tZW1wdHkgdW5vY2NsdWRlZCBh
cmVhIG9uIHN1cmZhY2UuCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihzdXJmYWNlQ2hpbGQpOworICAgICAgICB0aGlzLT52aXNpdExheWVyKHN1cmZhY2VDaGlsZCwg
b2NjbHVzaW9uKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDgwLCA1
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwpAQCAtMjM0OSwxNCArMjQwNywxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIC8v
IG1hc2sgdG8gYm91bmRzLCBzbyBpdCBkb2Vzbid0IGhhdmUgYSBjbGlwUmVjdCBvZiBpdHMgb3du
LiBUaHVzIHRoZSBwYXJlbnQgb2YgfHN1cmZhY2VDaGlsZHwgZXhlcmNpc2VzIGRpZmZlcmVudCBj
b2RlIHBhdGhzCiAgICAgICAgIC8vIGFzIGl0cyBwYXJlbnQgZG9lcyBub3QgaGF2ZSBhIGNsaXBS
ZWN0LgogCi0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3Vy
ZmFjZUNoaWxkLCBzdXJmYWNlQ2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHRoaXMt
PmVudGVyQ29udHJpYnV0aW5nU3VyZmFjZShzdXJmYWNlQ2hpbGQsIG9jY2x1c2lvbik7CiAgICAg
ICAgIC8vIFRoZSBzdXJmYWNlQ2hpbGQncyBwYXJlbnQgZG9lcyBub3QgaGF2ZSBhIGNsaXBSZWN0
IGFzIGl0IG93bnMgYSByZW5kZXIgc3VyZmFjZS4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgwLCA1MCwgODAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJm
YWNlQ29udGVudFJlY3Qoc3VyZmFjZUNoaWxkLCBmYWxzZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgdGhpcy0+bGVhdmVDb250cmlidXRpbmdTdXJmYWNlKHN1cmZhY2VDaGls
ZCwgb2NjbHVzaW9uKTsKIAotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UpOwotCi0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hl
ZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgdGhpcy0+dmlzaXRMYXllcihzdXJmYWNlLCBvY2NsdXNpb24pOworICAgICAgICB0
aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZSwgb2NjbHVzaW9uKTsKICAgICAg
ICAgLy8gVGhlIHN1cmZhY2UncyBwYXJlbnQgZG9lcyBoYXZlIGEgY2xpcFJlY3QgYXMgaXQgaXMg
dGhlIHJvb3QgbGF5ZXIuCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNTAsIDgw
LCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udHJpYnV0aW5nU3VyZmFjZUNvbnRlbnRSZWN0
KHN1cmZhY2UsIGZhbHNlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4
IDNiYTBhMWRkMjQzNTE5Mjc4MGU0NzhjMDNmZmViNjVjYzdlYjIyNjkuLjk5MWNkZGM0NjRhYjI3
MTQ0MGJiNzVjZmU4OTExMzQ3ZTZkYzFmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtNTMsNyArNTMsOSBAQCBwcml2YXRl
OgogICAgIEludFJlY3QgbV9zY2lzc29yUmVjdEluU2NyZWVuOwogfTsKIAotc3RhdGljIFBhc3NP
d25QdHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGlsZWRMYXllckltcGwqIHBhcmVu
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUsIGNvbnN0IEludFJlY3Qm
IGxheWVyT3BhcXVlUmVjdCkKK3R5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBW
ZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rp
b25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKKworc3RhdGljIFBhc3NPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGlsZWRMYXllckltcGwqIHBhcmVudCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3Qm
IGxheWVyUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUsIGNvbnN0IEludFJlY3QmIGxh
eWVyT3BhcXVlUmVjdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHN1cmZhY2VMYXllckxpc3QpCiB7
CiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gQ0NUaWxlZExheWVySW1wbDo6
Y3JlYXRlKDApOwogICAgIE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gdGlsZXIgPSBDQ0xheWVy
VGlsaW5nRGF0YTo6Y3JlYXRlKEludFNpemUoMTAwLCAxMDApLCBDQ0xheWVyVGlsaW5nRGF0YTo6
Tm9Cb3JkZXJUZXhlbHMpOwpAQCAtNzYsMjUgKzc4LDMzIEBAIHN0YXRpYyBQYXNzT3duUHRyPEND
VGlsZWRMYXllckltcGw+IG1ha2VMYXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0
IFRyCiAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICAgbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKICAgICAgICAgbGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgfSBlbHNlCisgICAgICAgIHN1cmZhY2VMYXllckxpc3QuYXBwZW5k
KGxheWVyLmdldCgpKTsKKyAgICAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+bGF5ZXJMaXN0
KCkuYXBwZW5kKGxheWVyLmdldCgpKTsKKyAgICB9IGVsc2UgewogICAgICAgICBsYXllci0+c2V0
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7CisgICAg
ICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKS5hcHBlbmQobGF5ZXIuZ2V0
KCkpOworICAgIH0KIAogICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBWZWN0b3I8T3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiA+JiBzaGFyZWRTdGF0ZUxpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVy
LCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJiBvY2NsdXNpb25UcmFja2VyKQorc3RhdGljIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+ID4mIHNoYXJlZFN0YXRlTGlzdCwgQ0NUaWxlZExheWVySW1wbCogbGF5ZXIsIEND
TGF5ZXJJdGVyYXRvclR5cGUmIGl0LCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsJiBvY2NsdXNpb25U
cmFja2VyKQogeworICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJMYXllcihpdCk7CiAgICAgQ0NR
dWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVhZExpc3QsIGxheWVyLCAmb2NjbHVzaW9uVHJhY2tlcik7
CiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+
Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAgICAgYm9vbCBoYWRNaXNzaW5nVGlsZXMgPSBmYWxz
ZTsKICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdl
dCgpLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgIHNoYXJlZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVk
UXVhZFN0YXRlLnJlbGVhc2UoKSk7CisgICAgb2NjbHVzaW9uVHJhY2tlci5sZWF2ZUxheWVyKGl0
KTsKKyAgICArK2l0OwogfQogCiAjZGVmaW5lIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9R
VUFEUyAgICAgICAgICAgICAgIFwKICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgIENDUXVhZExpc3QgcXVhZExpc3Q7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gPiBzaGFyZWRTdGF0ZUxpc3Q7IFwKKyAgICBWZWN0b3I8Q0NMYXllckltcGwqPiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0OyAgICAgICAgXAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNo
aWxkVHJhbnNmb3JtOyAgICAgICAgICAgICAgICBcCiAgICAgSW50U2l6ZSByb290U2l6ZSA9IElu
dFNpemUoMzAwLCAzMDApOyAgICAgICAgICAgICAgIFwKICAgICBJbnRSZWN0IHJvb3RSZWN0ID0g
SW50UmVjdChJbnRQb2ludCgpLCByb290U2l6ZSk7ICAgXApAQCAtMTA1LDE2ICsxMTUsMTYgQEAg
VEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlOb0N1bGxpbmcpCiB7CiAgICAgREVDTEFSRV9B
TkRfSU5JVElBTElaRV9URVNUX1FVQURTCiAKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
cm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0
LCAxLjAsIHRydWUsIEludFJlY3QoKSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNo
aWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIo
cm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwg
ZmFsc2UsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEw
MDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShyb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBp
dCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
IAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIu
Z2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFy
ZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBw
ZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQs
IG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0
ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVD
VF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJh
Y2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAxMzAwMDAsIDEpOwot
ICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxz
RHJhd25UcmFuc2x1Y2VudCgpLCAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFj
a2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsKKyAg
ICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0Ry
YXduVHJhbnNsdWNlbnQoKSwgNDAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRy
YWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVkRm9yRHJhd2luZygpLCAwLCAxKTsK
IH0KIApAQCAtMTIyLDE0ICsxMzIsMTMgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlD
dWxsQ2hpbGRMaW5lc1VwVG9wTGVmdCkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RF
U1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtl
TGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50
UmVjdCgpKTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VM
YXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwg
MS4wLCB0cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290
TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCks
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCks
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBs
IG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAg
b2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0
b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFk
cyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25U
cmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNo
aWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxp
c3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMo
cXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lv
blRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJv
b3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFk
TGlzdC5zaXplKCksIDl1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJk
cmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsKICAgICBFWFBFQ1Rf
TkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNs
dWNlbnQoKSwgMCwgMSk7CkBAIC0xNDAsMTQgKzE0OSwxMyBAQCBURVNUKENDUXVhZEN1bGxlclRl
c3QsIHZlcmlmeUN1bGxXaGVuQ2hpbGRPcGFjaXR5Tm90T25lKQogewogICAgIERFQ0xBUkVfQU5E
X0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJv
b3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwg
MSwgdHJ1ZSwgSW50UmVjdCgpKTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRM
YXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJl
Y3QsIDAuOWYsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+
IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVj
dCwgMSwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0
KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDAuOWYsIHRydWUsIEludFJlY3QoKSwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2Nj
bHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2Ns
dXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShyb290TGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5
cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAotICAgIGFwcGVuZFF1YWRzKHF1
YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNr
ZXIpOwotICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRM
YXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwg
cm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFk
TGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJh
Y2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExh
eWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0
LnNpemUoKSwgMTN1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3
TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVB
UihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNl
bnQoKSwgNDAwMDAsIDEpOwpAQCAtMTU4LDE0ICsxNjYsMTMgQEAgVEVTVChDQ1F1YWRDdWxsZXJU
ZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhcXVlRmxhZ0ZhbHNlKQogewogICAgIERFQ0xBUkVf
QU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+
IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVj
dCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNo
aWxkUmVjdCwgMS4wLCBmYWxzZSwgSW50UmVjdCgpKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVy
SW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJv
b3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Cisg
ICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExh
eWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBJbnRSZWN0
KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0g
ICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRl
cmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRR
dWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNp
b25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0
ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVh
ZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1
c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3Qs
IHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShx
dWFkTGlzdC5zaXplKCksIDEzdSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCA5MDAwMCwgMSk7CiAgICAgRVhQ
RUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRy
YW5zbHVjZW50KCksIDQwMDAwLCAxKTsKQEAgLTE3OCwxNCArMTg1LDEzIEBAIFRFU1QoQ0NRdWFk
Q3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVPbmx5KQogCiAgICAgY2hpbGRUcmFuc2Zv
cm0udHJhbnNsYXRlKDUwLCA1MCk7CiAKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9v
dExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAx
LjAsIHRydWUsIEludFJlY3QoKSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxk
TGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRS
ZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+
IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVj
dCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93
blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5n
ZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9j
Y2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2Nj
bHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJT
dXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JU
eXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFj
a2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
TGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3Qs
IHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVh
ZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRy
YWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RM
YXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEydSk7CiAKICAgICBJbnRSZWN0IHF1YWRWaXNpYmxlUmVjdDEgPSBxdWFkTGlz
dFs1XS5nZXQoKS0+cXVhZFZpc2libGVSZWN0KCk7CkBAIC0yMjIsMTQgKzIyOCwxMyBAQCBURVNU
KENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJUaWxlTm9uSW50ZWdyYWxTaXplMSkK
IAogICAgIHJvb3RSZWN0ID0gY2hpbGRSZWN0ID0gSW50UmVjdCgwLCAwLCAxMDAsIDEwMCk7CiAK
LSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIHJv
b3RUcmFuc2Zvcm0sIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7Ci0gICAgT3duUHRy
PENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgp
LCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCByb290VHJh
bnNmb3JtLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxh
eWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVl
LCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAx
MDAwKSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9v
dExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAg
ICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgp
LCBvY2NsdXNpb25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBz
aGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAg
YXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwg
aXQsIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRT
dGF0ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVY
UEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDJ1KTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lv
blRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMjAzNjMsIDEp
OwpAQCAtMjUxLDE0ICsyNTYsMTMgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxs
Q2VudGVyVGlsZU5vbkludGVncmFsU2l6ZTIpCiAKICAgICByb290UmVjdCA9IGNoaWxkUmVjdCA9
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApOwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+
IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCByb290VHJhbnNmb3JtLCByb290UmVjdCwgMS4wLCB0
cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVy
ID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwg
MS4wLCB0cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290
TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgcm9vdFRyYW5zZm9ybSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwg
SW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJh
bnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2Vy
KEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIu
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJl
ZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2Nj
bHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsK
LSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0
KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRT
dGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0
LCBvY2NsdXNpb25UcmFja2VyKTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAydSk7
CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc0RyYXduT3BhcXVlKCksIDE5NjQzLCAxKTsKQEAgLTI3MiwxNCArMjc2LDEzIEBAIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcEJvdHRvbVJpZ2h0KQogCiAg
ICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDEwMCwgMTAwKTsKIAotICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKLSAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxk
VHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtl
TGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRy
dWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAs
IDEwMDApKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShy
b290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9
IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAot
ICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0
KCksIG9jY2x1c2lvblRyYWNrZXIpOwotICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3Qs
IHNoYXJlZFN0YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAg
ICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgp
LCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJl
ZFN0YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CiAgICAg
RVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgOXUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lv
blRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgOTAwMDAsIDEp
OwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4
ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAwLCAxKTsKQEAgLTI5MiwxNSArMjk1LDE0IEBAIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbikKIAogICAgIGNoaWxkVHJhbnNm
b3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJv
b3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwg
MS4wLCB0cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290
TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBJbnRSZWN0
IGNoaWxkT3BhcXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBj
aGlsZFJlY3QueSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkg
LyAyLCBjaGlsZFJlY3QuaGVpZ2h0KCkgLyAyKTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1w
bD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3Jt
LCBjaGlsZFJlY3QsIDEuMCwgZmFsc2UsIGNoaWxkT3BhcXVlUmVjdCk7CisgICAgT3duUHRyPEND
VGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBj
aGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBjaGlsZE9wYXF1ZVJlY3QsIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9j
Y2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2Nj
bHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJT
dXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JU
eXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFj
a2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
TGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3Qs
IHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVh
ZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRy
YWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RM
YXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEydSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJh
d01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCA5MDAwMCwgMSk7CiAgICAgRVhQRUNUX05F
QVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVj
ZW50KCksIDMwMDAwLCAxKTsKQEAgLTMxMywxNSArMzE1LDE0IEBAIFRFU1QoQ0NRdWFkQ3VsbGVy
VGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbjIpCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xh
dGUoNTAsIDEwKTsKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBt
YWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwg
SW50UmVjdCgpKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFr
ZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIElu
dFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgSW50UmVjdCBjaGlsZE9wYXF1
ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0Lnko
KSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRS
ZWN0LmhlaWdodCgpICogMyAvIDQpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGls
ZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxk
UmVjdCwgMS4wLCBmYWxzZSwgY2hpbGRPcGFxdWVSZWN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJh
bnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgZmFsc2UsIGNoaWxkT3BhcXVlUmVjdCwgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9u
VHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb25U
cmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShyb290TGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJl
Z2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0
LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOwot
ICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRMYXllci5n
ZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExh
eWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7
CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExheWVyLmdl
dCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUo
KSwgMTJ1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwg
MjUwMDAsIDEpOwpAQCAtMzM0LDE1ICszMzUsMTQgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2
ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVyY3VsbCkKIAogICAgIGNoaWxkVHJhbnNmb3JtLnRy
YW5zbGF0ZSg1MCwgNDkpOwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXll
ciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0
cnVlLCBJbnRSZWN0KCkpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIg
PSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBJbnRSZWN0IGNoaWxk
T3BhcXVlUmVjdChjaGlsZFJlY3QueCgpICsgY2hpbGRSZWN0LndpZHRoKCkgLyA0LCBjaGlsZFJl
Y3QueSgpICsgY2hpbGRSZWN0LmhlaWdodCgpIC8gNCwgY2hpbGRSZWN0LndpZHRoKCkgLyAyLCBj
aGlsZFJlY3QuaGVpZ2h0KCkgLyAyKTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hp
bGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGls
ZFJlY3QsIDEuMCwgZmFsc2UsIGNoaWxkT3BhcXVlUmVjdCk7CisgICAgT3duUHRyPENDVGlsZWRM
YXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRy
YW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBjaGlsZE9wYXF1ZVJlY3QsIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lv
blRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9u
VHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpi
ZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlz
dCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsK
LSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIu
Z2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3Qs
IHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIp
OworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5n
ZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXpl
KCksIDEzdSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJp
Y3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCA5MDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2Nj
bHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCks
IDMwMDAwLCAxKTsKQEAgLTM1NiwxNCArMzU2LDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwg
dmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFkc0RvbnRPY2NsdWRlKQogICAgIC8vIFVzZSBhIHNtYWxs
IHJvdGF0aW9uIHNvIGFzIHRvIG5vdCBkaXN0dXJiIHRoZSBnZW9tZXRyeSBzaWduaWZpY2FudGx5
LgogICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSgxKTsKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
cm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVy
SW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNm
b3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIo
cm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIElu
dFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDAp
KTsKLSAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShyb290TGF5
ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5
ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAotICAgIGFw
cGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9j
Y2x1c2lvblRyYWNrZXIpOwotICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJl
ZFN0YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBpdCwg
b2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRl
TGlzdCwgcm9vdExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgRVhQRUNU
X0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFj
a2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDEzMDAwMCwgMSk7CiAg
ICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNE
cmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtMzgzLDE0ICszODIsMTMgQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlOb25BeGlzQWxpZ25lZFF1YWRzU2FmZWx5Q3VsbGVkKQogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zZm9ybTsKICAgICBwYXJlbnRUcmFuc2Zv
cm0ucm90YXRlKDEpOwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9
IG1ha2VMYXllcigwLCBwYXJlbnRUcmFuc2Zvcm0sIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJl
Y3QoKSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5
ZXIocm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExh
eWVyID0gbWFrZUxheWVyKDAsIHBhcmVudFRyYW5zZm9ybSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwg
SW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lv
blRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9u
VHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpi
ZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlz
dCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsK
LSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIu
Z2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3Qs
IHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIp
OworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5n
ZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXpl
KCksIDEydSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJp
Y3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAxMDA2MDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9j
Y2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgp
LCAwLCAxKTsKQEAgLTQwMSwxNCArMzk5LDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVy
aWZ5Q3VsbE91dHNpZGVTY2lzc29yT3ZlclRpbGUpCiB7CiAgICAgREVDTEFSRV9BTkRfSU5JVElB
TElaRV9URVNUX1FVQURTCiAKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVy
ID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRy
dWUsIEludFJlY3QoKSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIg
PSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGls
ZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1w
bD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RS
ZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVy
LmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50
UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7Ci0g
ICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRl
cmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRR
dWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNp
b25UcmFja2VyKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0
ZUxpc3QsIHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVh
ZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1
c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3Qs
IHJvb3RMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShx
dWFkTGlzdC5zaXplKCksIDF1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDEwMDAwLCAxKTsKICAgICBFWFBF
Q1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJh
bnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00MTksMTQgKzQxNiwxMyBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJDdWxsZWRUaWxlKQogewogICAgIERF
Q0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRMYXll
ckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBy
b290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRy
PENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VM
YXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFr
ZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0
LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDEwMCwgMTAw
LCAxMDAsIDEwMCkpOwotICAgIG9jY2x1c2lvblRyYWNrZXIuZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBDQ0xheWVySXRlcmF0b3JUeXBl
IGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXll
ci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhxdWFk
TGlzdCwgc2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIp
OworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIu
Z2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCByb290TGF5ZXIuZ2V0KCksIGl0LCBvY2NsdXNpb25UcmFja2VyKTsK
ICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxdSk7CiAgICAgRVhQRUNUX05FQVIob2Nj
bHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAxMDAw
MCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtNDM3LDE0ICs0MzMsMTMgQEAg
VEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyUGFydGlh
bFRpbGVzKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwotICAgIE93
blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5n
ZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJl
Y3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXll
cigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0
KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tl
cihJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKLSAgICBvY2NsdXNpb25UcmFja2VyLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShyb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgQ0NM
YXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKIAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0
ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOwotICAgIG9jY2x1c2lv
blRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7Ci0gICAg
YXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBv
Y2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgc2hhcmVkU3RhdGVM
aXN0LCBjaGlsZExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5k
UXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBpdCwgb2Nj
bHVzaW9uVHJhY2tlcik7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgOXUpOwogICAg
IEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJh
d25PcGFxdWUoKSwgNDAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIu
b3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAwLCAxKTsKQEAgLTQ1
NSwxNCArNDUwLDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbE91dHNpZGVT
Y2lzc29yT3Zlck5vVGlsZXMpCiB7CiAgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FV
QURTCiAKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVy
KDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3Qo
KSk7Ci0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIo
cm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwg
dHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVy
ID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRy
dWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGls
ZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2Ns
dXNpb25UcmFja2VyKEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7Ci0gICAgb2NjbHVzaW9u
VHJhY2tlci5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uocm9vdExheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpi
ZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlz
dCwgc2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsK
LSAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIu
Z2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3Qs
IHNoYXJlZFN0YXRlTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIp
OworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIHJvb3RMYXllci5n
ZXQoKSwgaXQsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXpl
KCksIDB1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lv
blRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAwLCAx
KTsKQEAgLTQ3MywxNCArNDY3LDEzIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5V2l0
aG91dE1ldHJpY3MpCiB7CiAgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCiAK
LSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7Ci0g
ICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExh
eWVyLmdldCgpLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwg
SW50UmVjdCgpKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFr
ZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIElu
dFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXll
ckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25U
cmFja2VyKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIGZhbHNlKTsKLSAgICBvY2NsdXNpb25U
cmFja2VyLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShyb290TGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJl
Z2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0
LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOwot
ICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRMYXllci5n
ZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExh
eWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
c2hhcmVkU3RhdGVMaXN0LCBjaGlsZExheWVyLmdldCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7
CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCwgcm9vdExheWVyLmdl
dCgpLCBpdCwgb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUo
KSwgOXUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9u
VHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>