<?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>80173</bug_id>
          
          <creation_ts>2012-03-02 11:01:37 -0800</creation_ts>
          <short_desc>[chromium] Use opaque paints in CCOcclusionTracker</short_desc>
          <delta_ts>2012-03-09 12:23:14 -0800</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>
          
          <blocked>80613</blocked>
          <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>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>569771</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-02 11:01:37 -0800</bug_when>
    <thetext>Make sure this unit test is covered http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/tests/TiledLayerChromiumTest.cpp?rev=109584#L647</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573018</commentid>
    <comment_count>1</comment_count>
      <attachid>130650</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-07 11:01:37 -0800</bug_when>
    <thetext>Created attachment 130650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573022</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-07 11:02:46 -0800</bug_when>
    <thetext>Bugs filed for fixmes:
http://code.google.com/p/chromium/issues/detail?id=117203
http://code.google.com/p/chromium/issues/detail?id=117165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573938</commentid>
    <comment_count>3</comment_count>
      <attachid>130848</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-08 10:46:09 -0800</bug_when>
    <thetext>Created attachment 130848
Patch

Missing a virtual. And rebased for paint-culling CL landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574941</commentid>
    <comment_count>4</comment_count>
      <attachid>130848</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-09 09:18:15 -0800</bug_when>
    <thetext>Comment on attachment 130848
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp:120
&gt; +    // FIXME: Don&apos;t lose pixels with tile boundaries inside them.

This is because of the enclosedIntRect, yeah? Can you just transform post-unite rather than pre-unite?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp:127
&gt; +            if (tile) {

style nit: &quot;if (!tile) continue;&quot; (early outs and less indenting is better)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:543
&gt; +    occlusionTracker.setUsePaintTracking(false); // FIXME: Remove this to turn on paint tracking for paint culling

Is there some larger picture I&apos;m missing as to why you want to land this with paint culling turned off? (I understand leaving a switch to make it easily disabled if need be, just curious about the initial state of that switch.)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.h:59
&gt; +    virtual Region opaqueContentsRegion(const TransformationMatrix&amp; contentSpaceTransform) const;

I find it a little bit awkward that this function takes a transform.  I&apos;m guessing you&apos;re trying to save recalculating the transform since you have it in the occlusion tracker.  However, isn&apos;t this value always calculated from values on the layer itself, and you&apos;ll never pass anything but that same value to a given layer? If so, is there some way to clean this up?

Can you also leave some comments about what spaces this function is dealing with?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574956</commentid>
    <comment_count>5</comment_count>
      <attachid>130848</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 09:39:00 -0800</bug_when>
    <thetext>Comment on attachment 130848
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp:120
&gt;&gt; +    // FIXME: Don&apos;t lose pixels with tile boundaries inside them.
&gt; 
&gt; This is because of the enclosedIntRect, yeah? Can you just transform post-unite rather than pre-unite?

Yes, I could stick them all in a Region, then transform each rect in the region. That is probably what I&apos;d like to do, but I&apos;d like to in a follow up CL?

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTilingData.cpp:127
&gt;&gt; +            if (tile) {
&gt; 
&gt; style nit: &quot;if (!tile) continue;&quot; (early outs and less indenting is better)

k!

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:543
&gt;&gt; +    occlusionTracker.setUsePaintTracking(false); // FIXME: Remove this to turn on paint tracking for paint culling
&gt; 
&gt; Is there some larger picture I&apos;m missing as to why you want to land this with paint culling turned off? (I understand leaving a switch to make it easily disabled if need be, just curious about the initial state of that switch.)

Mostly for bisect. I&apos;d like to watch paint culling not cause bugs for a little bit on canaries, then turn it on, and we can bisect to the switch flip for problems.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.h:59
&gt;&gt; +    virtual Region opaqueContentsRegion(const TransformationMatrix&amp; contentSpaceTransform) const;
&gt; 
&gt; I find it a little bit awkward that this function takes a transform.  I&apos;m guessing you&apos;re trying to save recalculating the transform since you have it in the occlusion tracker.  However, isn&apos;t this value always calculated from values on the layer itself, and you&apos;ll never pass anything but that same value to a given layer? If so, is there some way to clean this up?
&gt; 
&gt; Can you also leave some comments about what spaces this function is dealing with?

I&apos;ll add a comment. The reason is the function can take both a contentToTargetSpace and a contentToScreenSpace transform. Taking a transform as parameter lets one function do both.

I could pass a bool and compute the transform inside, but that feels less intuitive to me, wdyt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574965</commentid>
    <comment_count>6</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 09:45:36 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; I find it a little bit awkward that this function takes a transform.  I&apos;m guessing you&apos;re trying to save recalculating the transform since you have it in the occlusion tracker.  However, isn&apos;t this value always calculated from values on the layer itself, and you&apos;ll never pass anything but that same value to a given layer? If so, is there some way to clean this up?
&gt; &gt; 
&gt; &gt; Can you also leave some comments about what spaces this function is dealing with?
&gt; 
&gt; I&apos;ll add a comment. The reason is the function can take both a contentToTargetSpace and a contentToScreenSpace transform. Taking a transform as parameter lets one function do both.
&gt; 
&gt; I could pass a bool and compute the transform inside, but that feels less intuitive to me, wdyt?

Further.. The reason I pass in a transform at all is because I wanted to do this transform before constructing a Region to prevent having to use an intermediate Region in the content space.

If we&apos;re going to stick them all together in content space to avoid losing pixels, then I could just return that and transform it elsewhere. Better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574973</commentid>
    <comment_count>7</comment_count>
      <attachid>131051</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 10:06:28 -0800</bug_when>
    <thetext>Created attachment 131051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574974</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 10:06:45 -0800</bug_when>
    <thetext>- Removed transform.
- Removed FIXME for missing pixels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574980</commentid>
    <comment_count>9</comment_count>
      <attachid>131051</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-09 10:19:46 -0800</bug_when>
    <thetext>Comment on attachment 131051
Patch

Thanks for those changes! That looks much simpler to my eyes.

I&apos;m still a little confused about the flag switch, since this patch seems like a no-op to me without it turned on.  What bugs are you hoping to catch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574984</commentid>
    <comment_count>10</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 10:21:12 -0800</bug_when>
    <thetext>You&apos;re right about no-op, but I&apos;m hoping to land draw side using this soonish. And wanted to do so without flipping paint side.

I&apos;m not sure.. I don&apos;t really expect any bugs, but one never does.. Just trying to be a little conservative with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574991</commentid>
    <comment_count>11</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-09 10:27:50 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; You&apos;re right about no-op, but I&apos;m hoping to land draw side using this soonish. And wanted to do so without flipping paint side.
&gt; 
&gt; I&apos;m not sure.. I don&apos;t really expect any bugs, but one never does.. Just trying to be a little conservative with it.

Ok! I just wanted to make sure that I was clear on the larger picture.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575077</commentid>
    <comment_count>12</comment_count>
      <attachid>131051</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 12:23:09 -0800</bug_when>
    <thetext>Comment on attachment 131051
Patch

Clearing flags on attachment: 131051

Committed r110317: &lt;http://trac.webkit.org/changeset/110317&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575078</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 12:23:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130650</attachid>
            <date>2012-03-07 11:01:37 -0800</date>
            <delta_ts>2012-03-08 10:46:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80173-20120307140135.patch</filename>
            <type>text/plain</type>
            <size>74603</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkN2U1NjU4ZTIyYWZj
NmUxMjc1ZjlkNzk2ZTUxNTk0NjcyNGMwNy4uMzEwMGMwZDM2NDQzNzRjMTFlNDc5ZWRiN2I4NWYx
MjI4ZTFmY2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAzLTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IG9wYXF1ZSBwYWludHMgaW4gQ0NPY2NsdXNpb25UcmFja2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0cmFja2VkIG9wYXF1ZSBwYWludHMgaW4g
dGhlIHRpbGVzIHdoZW4gdHJhY2tpbmcgb2NjbHVzaW9uIGluCisgICAgICAgIENDT2NjbHVzaW9u
VHJhY2tlci4gTW92ZXMgdGhlIFRpbGU6Om1fb3BhcXVlUmVjdCB1cCB0byB0aGUgc3VwZXItCisg
ICAgICAgIGNsYXNzIGluIENDTGF5ZXJUaWxpbmdEYXRhIHJhdGhlciB0aGFuIGhhdmluZyBpdCBk
ZWNsYXJlZCBpbiBib3RoCisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bSBhbmQgQ0NUaWxlZExh
eWVySW1wbC4gVGhpcyBsZXRzIHRoZSBDQ0xheWVyVGlsaW5nRGF0YQorICAgICAgICBjbGFzcyBj
b21wdXRlIHRoZSBvcGFxdWUgcmVnaW9uIGZvciBpdHMgdGlsZXMsIHNoYXJpbmcgY29kZSBiZXR3
ZWVuIHRoZQorICAgICAgICB0d28gdGlsZWQgbGF5ZXIgaW1wbGVtZW50YXRpb25zLgorCisgICAg
ICAgIFVzZSBvZiB0aGlzIGZlYXR1cmUgaXMgZ3VhcmRlZCBiZWhpbmQgYSBydW50aW1lIGZsYWcg
c28gdGhhdCB3ZSBjYW4KKyAgICAgICAga2VlcCBpdCBvZmYgZm9yIHBhaW50IGN1bGxpbmcgYXQg
Zmlyc3QsIGFuZCB0dXJuIGl0IG9uIGFzIHdlIGFyZQorICAgICAgICBjb21mb3J0YWJsZSB3aXRo
IHBhaW50IGN1bGxpbmcuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0Lm9wYXF1ZUNvbnRlbnRzUmVnaW9uRW1wdHkKKyAgICAgICAgICAgICAgICAgICBDQ09jY2x1
c2lvblRyYWNrZXJUZXN0Lm9wYXF1ZUNvbnRlbnRzUmVnaW9uTm9uRW1wdHkKKyAgICAgICAgICAg
ICAgICAgICBUaWxlZExheWVyQ2hyb21pdW1UZXN0Lm9wYXF1ZUNvbnRlbnRzUmVnaW9uCisKKyAg
ICAgICAgQWxsIGV4aXN0aW5nIENDT2NjbHVzaW9uVHJhY2tlclRlc3QuKiBkdXBsaWNhdGVkIHdp
dGggb3BhcXVlIHBhaW50ZWQKKyAgICAgICAgcmVjdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNocm9taXVtOjpvcGFxdWVDb250ZW50c1JlZ2lvbik6CisgICAgICAgIChMYXllckNocm9taXVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAoVXBkYXRhYmxlVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxl
ZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpUaWxlZExheWVyQ2hyb21pdW06OmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpvcGFxdWVDb250ZW50c1JlZ2lvbik6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6Om9w
YXF1ZUNvbnRlbnRzUmVnaW9uKToKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVGlsaW5nRGF0YTo6b3BhcXVlUmVnaW9uSW5MYXllclJlY3Qp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
VGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZTo6b3BhcXVl
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZTo6c2V0T3Bh
cXVlUmVjdCk6CisgICAgICAgIChDQ0xheWVyVGlsaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ojo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpj
b21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6OjptYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPY2NsdXNpb25UcmFja2VyLmg6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlckJhc2U6OnNldFVzZVBhaW50
VHJhY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuY3BwOgorICAgICAgICAoRHJhd2FibGVUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGlsZWRMYXllckltcGw6Om9wYXF1ZUNvbnRlbnRzUmVnaW9uKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuaDoKKyAgICAgICAgKENDVGlsZWRMYXllckltcGwpOgorCiAyMDEyLTAzLTA3ICBB
cnVuIFBhdG9sZSAgPGJtZjgzNEBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgSFRNTFRyYWNrRWxl
bWVudC5pZGwgZG9lc24ndCBoYXZlIGRlZmF1bHQgYXR0cmlidXRlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA2MzJmZGY5ZWEyZDcxY2E5OTY1MDViODA3MzMwYjY1ZjExZDJjMWQ2Li45
ZTM0MTgxMzgwMWVkNzI0MTRmZWMwMzEzZjY4ZjIyMDEyMzA4YmYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTAzLTA3ICBEYW5hIEphbnNlbnMgIDxk
YW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNlIG9wYXF1ZSBwYWlu
dHMgaW4gQ0NPY2NsdXNpb25UcmFja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MDE3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudDo6b3BhcXVl
Q29udGVudHNSZWdpb24pOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ6OnNldE9wYXF1ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6bGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJB
ZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bGF5
ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6bGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6bGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlP
blN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0
aFJvdGF0ZWRPZmZBeGlzU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9P
Y2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpzdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OnN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3Jtcyk6
CisgICAgICAgIChXZWJDb3JlOjpvY2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmxheWVyU2Npc3NvclJlY3RPdmVyVGlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5TY2lzc29yUmVjdE92ZXJUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVy
U2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5TY2lz
c29yUmVjdE92ZXJDdWxsZWRUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyU2Npc3NvclJl
Y3RPdmVyUGFydGlhbFRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblNjaXNzb3JSZWN0
T3ZlclBhcnRpYWxUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpsYXllclNjaXNzb3JSZWN0T3Zl
ck5vVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuU2Npc3NvclJlY3RPdmVyTm9UaWxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpsYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6ZGFtYWdlUmVjdE92ZXJUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OmRhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpkYW1hZ2VS
ZWN0T3ZlclBhcnRpYWxUaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpkYW1hZ2VSZWN0T3Zlck5v
VGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRFU1QpOgorICAgICAgICAoV1RG
KToKKwogMjAxMi0wMy0wNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIEFkZCBjbGlwcGluZyB0byBzY2lzc29yIHJlY3QgdG8gQ0NPY2Ns
dXNpb25UcmFja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggYTUwOGM5ZTY4MzJmNDE3MGIwMGNl
NTFiNjUyY2RjODQ2OTYwZjZiOC4uNDk3Y2MwY2Q4MzU5MjI3ZjRjYmVmNDkyNDZiNjllZWYwNDRl
NWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMjMyLDYgKzIzMiw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYpOwogCisg
ICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSkgY29uc3QgeyByZXR1cm4gUmVnaW9uKCk7
IH07CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgQ0NMYXllckltcGw7CiAgICAgZnJp
ZW5kIGNsYXNzIExheWVyVGlsZXJDaHJvbWl1bTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IGViYzlkNTVhYWY1YzIyODJlZTZmNDJhOGQyM2E5YTk3ZmE3YzIzMTUuLmNkYWQ5
MThmZjYyZjVlNTZhYWU4OWRmYzkzNTRlYTRkZmMyNmFjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcApAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IG1f
ZGlydHlSZWN0OwogICAgIEludFJlY3QgbV91cGRhdGVSZWN0OwotICAgIEludFJlY3QgbV9vcGFx
dWVSZWN0OwogICAgIGJvb2wgbV9wYXJ0aWFsVXBkYXRlOwogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBVcGRhdGFibGVUaWxlKFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4g
dGV4dHVyZSkKQEAgLTI2Nyw3ICsyNjYsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGlmICh0aWxlLT5pc0Rp
cnR5Rm9yQ3VycmVudEZyYW1lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB0
aWxlZExheWVyLT5wdXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1cmUo
KS0+dGV4dHVyZUlkKCksIHRpbGUtPm1fb3BhcXVlUmVjdCk7CisgICAgICAgIHRpbGVkTGF5ZXIt
PnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJl
SWQoKSwgdGlsZS0+b3BhcXVlUmVjdCgpKTsKICAgICB9CiAgICAgZm9yIChWZWN0b3I8VXBkYXRh
YmxlVGlsZSo+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaW52YWxpZFRpbGVzLmJlZ2luKCk7IGl0
ZXIgIT0gaW52YWxpZFRpbGVzLmVuZCgpOyArK2l0ZXIpCiAgICAgICAgIG1fdGlsZXItPnRha2VU
aWxlKCgqaXRlciktPmkoKSwgKCppdGVyKS0+aigpKTsKQEAgLTQ3MywxMiArNDcyLDEyIEBAIHZv
aWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGlu
dCBsZWZ0LCBpbnQgdG9wLCBpbnQKICAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0
ID0gaW50ZXJzZWN0aW9uKHRpbGVSZWN0LCBtX3BhaW50UmVjdCk7CiAgICAgICAgICAgICBJbnRS
ZWN0IHRpbGVQYWludGVkT3BhcXVlUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgcGFpbnRl
ZE9wYXF1ZVJlY3QpOwogICAgICAgICAgICAgaWYgKCF0aWxlUGFpbnRlZFJlY3QuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBwYWludEluc2lkZVRpbGVPcGFxdWVSZWN0ID0g
aW50ZXJzZWN0aW9uKHRpbGUtPm1fb3BhcXVlUmVjdCwgdGlsZVBhaW50ZWRSZWN0KTsKKyAgICAg
ICAgICAgICAgICBJbnRSZWN0IHBhaW50SW5zaWRlVGlsZU9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rp
b24odGlsZS0+b3BhcXVlUmVjdCgpLCB0aWxlUGFpbnRlZFJlY3QpOwogICAgICAgICAgICAgICAg
IGJvb2wgcGFpbnRJbnNpZGVUaWxlT3BhcXVlUmVjdElzTm9uT3BhcXVlID0gIXRpbGVQYWludGVk
T3BhcXVlUmVjdC5jb250YWlucyhwYWludEluc2lkZVRpbGVPcGFxdWVSZWN0KTsKLSAgICAgICAg
ICAgICAgICBib29sIG9wYXF1ZVBhaW50Tm90SW5zaWRlVGlsZU9wYXF1ZVJlY3QgPSAhdGlsZVBh
aW50ZWRPcGFxdWVSZWN0LmlzRW1wdHkoKSAmJiAhdGlsZS0+bV9vcGFxdWVSZWN0LmNvbnRhaW5z
KHRpbGVQYWludGVkT3BhcXVlUmVjdCk7CisgICAgICAgICAgICAgICAgYm9vbCBvcGFxdWVQYWlu
dE5vdEluc2lkZVRpbGVPcGFxdWVSZWN0ID0gIXRpbGVQYWludGVkT3BhcXVlUmVjdC5pc0VtcHR5
KCkgJiYgIXRpbGUtPm9wYXF1ZVJlY3QoKS5jb250YWlucyh0aWxlUGFpbnRlZE9wYXF1ZVJlY3Qp
OwogCiAgICAgICAgICAgICAgICAgaWYgKHBhaW50SW5zaWRlVGlsZU9wYXF1ZVJlY3RJc05vbk9w
YXF1ZSB8fCBvcGFxdWVQYWludE5vdEluc2lkZVRpbGVPcGFxdWVSZWN0KQotICAgICAgICAgICAg
ICAgICAgICB0aWxlLT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJlY3Q7CisgICAg
ICAgICAgICAgICAgICAgIHRpbGUtPnNldE9wYXF1ZVJlY3QodGlsZVBhaW50ZWRPcGFxdWVSZWN0
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gVXNlIG1fdXBkYXRlUmVjdCBhcyBj
b3B5QW5kQ2xlYXJEaXJ0eSBhYm92ZSBtb3ZlZCB0aGUgZXhpc3RpbmcgZGlydHkgcmVjdCB0byBt
X3VwZGF0ZVJlY3QuCkBAIC01NTAsNyArNTQ5LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2UoUmVnaW9uJiBvY2NsdWRlZFNjcmVlblNwYWMK
ICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAg
ICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAgICAgICAgIGlmICh0
aWxlKSB7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCB2aXNpYmxlVGlsZU9wYXF1ZVJlY3QgPSBp
bnRlcnNlY3Rpb24odmlzaWJsZVJlY3QsIHRpbGUtPm1fb3BhcXVlUmVjdCk7CisgICAgICAgICAg
ICAgICAgSW50UmVjdCB2aXNpYmxlVGlsZU9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odmlzaWJs
ZVJlY3QsIHRpbGUtPm9wYXF1ZVJlY3QoKSk7CiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IHNj
cmVlblJlY3QgPSBjb250ZW50VHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KHZpc2libGVUaWxl
T3BhcXVlUmVjdCkpOwogICAgICAgICAgICAgICAgIEludFJlY3Qgc2NyZWVuSW50UmVjdCA9IGVu
Y2xvc2VkSW50UmVjdChzY3JlZW5SZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoIXNjcmVlbklu
dFJlY3QuaXNFbXB0eSgpKQpAQCAtNTYwLDYgKzU1OSwxNCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
U3BhYwogICAgIH0KIH0KIAorUmVnaW9uIFRpbGVkTGF5ZXJDaHJvbWl1bTo6b3BhcXVlQ29udGVu
dHNSZWdpb24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9y
bSkgY29uc3QKK3sKKyAgICBpZiAobV9za2lwc0RyYXcpCisgICAgICAgIHJldHVybiBSZWdpb24o
KTsKKworICAgIHJldHVybiBtX3RpbGVyLT5vcGFxdWVSZWdpb25JbkxheWVyUmVjdCh2aXNpYmxl
TGF5ZXJSZWN0KCksIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSk7Cit9CisKIHZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpyZXNldFVwZGF0ZVN0YXRlKCkKIHsKICAgICAvLyBSZXNldCBtX3VwZGF0ZVJl
Y3QgZm9yIGFsbCB0aWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNmZjN2Qx
ZDkyYmM1YWI5NzM3NmFhYmMxMTZkMzQ0MGNjNzlhOGVmNS4uYWVmNjFjNzE3M2FlZmIzNTZhNzdh
OGNlNWQ5YmFkNTE3ZWYyODUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTY2
LDYgKzY2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlc2VydmVUZXh0dXJlcygp
OwogCisgICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSkgY29uc3Q7CisKICAgICB2aXJ0
dWFsIHZvaWQgYWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShSZWdpb24mIG9jY2x1ZGVkU2Ny
ZWVuU3BhY2UpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCAyYTJkOWU4
NDg3NGI3MzFhZjI1ODk3ZjU1MDk4ZDAzNWU4OWQ5ZWI1Li43MzUzM2U4N2YyYjljZGMyMzY5MDMy
NzY5ZWYyMDI5ZGM0ZDUyMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTIxNSw2ICsyMTUs
OCBAQCBwdWJsaWM6CiAKICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlckltcGwqIGxheWVy
QW5pbWF0aW9uQ29udHJvbGxlcigpIHsgcmV0dXJuIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmdldCgpOyB9CiAKKyAgICB2aXJ0dWFsIFJlZ2lvbiBvcGFxdWVDb250ZW50c1JlZ2lvbihjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudFNwYWNlVHJhbnNmb3JtKSBjb25zdCB7IHJl
dHVybiBSZWdpb24oKTsgfTsKKwogICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBjb250ZXh0IHBy
ZXZpb3VzbHkgdXNlZCB0byByZW5kZXIgdGhpcyBsYXllcgogICAgIC8vIHdhcyBsb3N0IGFuZCB0
aGF0IGEgbmV3IG9uZSBoYXMgYmVlbiBjcmVhdGVkLiBXb24ndCBiZSBjYWxsZWQKICAgICAvLyB1
bnRpbCB0aGUgbmV3IGNvbnRleHQgaGFzIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVGlsaW5nRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5jcHAKaW5kZXggY2ZlZmJkMmI4MDFkMjA2OTI2ODY1
YzEzNTUyODYyZjY0NjQwMjgyNy4uMjA4N2UzYTlhYjc5YTMzYWExMDM0ZTAzMWM0ZTMyMmFhNDM5
YjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmNwcApAQCAtMzAsNiArMzAs
OSBAQAogCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGluZ0RhdGEuaCIKIAorI2luY2x1ZGUgIkZs
b2F0UXVhZC5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMiw2ICsxMTUsMjYgQEAg
SW50UmVjdCBDQ0xheWVyVGlsaW5nRGF0YTo6dGlsZVJlY3QoY29uc3QgVGlsZSogdGlsZSkgY29u
c3QKICAgICByZXR1cm4gdGlsZVJlY3Q7CiB9CiAKK1JlZ2lvbiBDQ0xheWVyVGlsaW5nRGF0YTo6
b3BhcXVlUmVnaW9uSW5MYXllclJlY3QoY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudFNwYWNlVHJhbnNmb3JtKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBEb24ndCBsb3NlIHBpeGVscyB3aXRoIHRpbGUgYm91bmRhcmllcyBpbnNpZGUg
dGhlbS4KKyAgICBSZWdpb24gb3BhcXVlUmVnaW9uOworICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b207CisgICAgbGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhsYXllclJlY3QsIGxlZnQsIHRv
cCwgcmlnaHQsIGJvdHRvbSk7CisgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsr
aikgeworICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CisgICAg
ICAgICAgICBUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOworICAgICAgICAgICAgaWYgKHRpbGUp
IHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHRpbGVPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9u
KGxheWVyUmVjdCwgdGlsZS0+b3BhcXVlUmVjdCgpKTsKKyAgICAgICAgICAgICAgICBGbG9hdFF1
YWQgdHJhbnNmb3JtZWRRdWFkID0gY29udGVudFNwYWNlVHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRR
dWFkKHRpbGVPcGFxdWVSZWN0KSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRyYW5zZm9ybWVk
UXVhZC5pc1JlY3RpbGluZWFyKCkpOworICAgICAgICAgICAgICAgIG9wYXF1ZVJlZ2lvbi51bml0
ZShlbmNsb3NlZEludFJlY3QodHJhbnNmb3JtZWRRdWFkLmJvdW5kaW5nQm94KCkpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb3BhcXVlUmVnaW9uOworfQor
CiB2b2lkIENDTGF5ZXJUaWxpbmdEYXRhOjpzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKICAgICBtX3RpbGluZ0RhdGEuc2V0VG90YWxTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuaAppbmRleCA4NjlkNDJlMTVhYzYz
MGE1MzFmYjUzZDQyZDk2ZDQwNzYzZmQ4NmVlLi40N2QxZTUzOWIyNGYxYjMxNjU1Y2ExYmFjNjM3
OTAzOWI0NTA0ZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmgKQEAgLTMwLDEy
ICszMCwxNCBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUg
IkludFJlY3QuaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUaWxpbmdEYXRhLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBjbGFzcyBDQ0xheWVyVGlsaW5nRGF0YSB7CiBwdWJs
aWM6CkBAIC02OSw5ICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGludCBpKCkgY29uc3QgeyBy
ZXR1cm4gbV9pOyB9CiAgICAgICAgIGludCBqKCkgY29uc3QgeyByZXR1cm4gbV9qOyB9CiAgICAg
ICAgIHZvaWQgbW92ZVRvKGludCBpLCBpbnQgaikgeyBtX2kgPSBpOyBtX2ogPSBqOyB9CisKKyAg
ICAgICAgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVl
UmVjdDsgfQorICAgICAgICB2b2lkIHNldE9wYXF1ZVJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVl
UmVjdCkgeyBtX29wYXF1ZVJlY3QgPSBvcGFxdWVSZWN0OyB9CiAgICAgcHJpdmF0ZToKICAgICAg
ICAgaW50IG1faTsKICAgICAgICAgaW50IG1fajsKKyAgICAgICAgSW50UmVjdCBtX29wYXF1ZVJl
Y3Q7CiAgICAgfTsKICAgICAvLyBEZWZhdWx0IGhhc2gga2V5IHRyYWl0cyBmb3IgaW50ZWdlcnMg
ZGlzYWxsb3cgMCBhbmQgLTEgYXMgYSBrZXksIHNvCiAgICAgLy8gdXNlIGEgY3VzdG9tIGhhc2gg
dHJhaXQgd2hpY2ggZGlzYWxsb3dzIC0xIGFuZCAtMiBpbnN0ZWFkLgpAQCAtOTYsNiArMTAyLDgg
QEAgcHVibGljOgogICAgIHZvaWQgbGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyhjb25zdCBJbnRSZWN0
JiwgaW50ICZsZWZ0LCBpbnQgJnRvcCwgaW50ICZyaWdodCwgaW50ICZib3R0b20pIGNvbnN0Owog
ICAgIEludFJlY3QgdGlsZVJlY3QoY29uc3QgVGlsZSopIGNvbnN0OwogCisgICAgUmVnaW9uIG9w
YXF1ZVJlZ2lvbkluTGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpIGNvbnN0OworCiAgICAgdm9pZCByZXNldCgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCA2NTg1NDU0ZmZjYjc2MGVkOGQx
ZjVmM2QzYTQ5MmMzNzdlNDM2OGM4Li4yMGRmZDg5NzU2ZGU1ZDJkZmJiYmQ0ZjIxMzA1ODk0YjAz
OGYzMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTQyLDYg
KzQyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJm
YWNlVHlwZT4KIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT46OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVu
U3BhY2UpCiAgICAgOiBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZShzY2lzc29yUmVjdEluU2Ny
ZWVuU3BhY2UpCiAgICAgLCBtX3N1cmZhY2VEYW1hZ2VDbGllbnQoMCkKKyAgICAsIG1fdXNlUGFp
bnRUcmFja2luZyh0cnVlKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBwYWludCB0cmFja2lu
ZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KIHsKIH0KIApAQCAtNDksNiArNTAsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgogQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6Q0NPY2Ns
dXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgY29uc3Qg
RGFtYWdlQ2xpZW50VHlwZSogc3VyZmFjZURhbWFnZUNsaWVudCkKICAgICA6IG1fc2Npc3NvclJl
Y3RJblNjcmVlblNwYWNlKHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSkKICAgICAsIG1fc3VyZmFj
ZURhbWFnZUNsaWVudChzdXJmYWNlRGFtYWdlQ2xpZW50KQorICAgICwgbV91c2VQYWludFRyYWNr
aW5nKHRydWUpIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9u
IGZvciBwYWludCBjdWxsaW5nLgogewogfQogCkBAIC0xODUsNyArMTg3LDcgQEAgc3RhdGljIGlu
bGluZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3Jt
KGNvbnN0IExheWVyVHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgotc3RhdGlj
IGlubGluZSBSZWdpb24gY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKGNvbnN0IExheWVyVHlw
ZSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCitzdGF0aWMg
aW5saW5lIFJlZ2lvbiBjb21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXIoY29uc3QgTGF5ZXJUeXBl
KiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgYm9vbCB1c2VQ
YWludFRyYWNraW5nKQogewogICAgIFJlZ2lvbiBvcGFxdWVSZWdpb247CiAKQEAgLTE5Niw3ICsx
OTgsOCBAQCBzdGF0aWMgaW5saW5lIFJlZ2lvbiBjb21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXIo
Y29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgVAogCiAgICAgaWYgKGxheWVyLT5vcGFxdWUo
KSkKICAgICAgICAgb3BhcXVlUmVnaW9uID0gZW5jbG9zZWRJbnRSZWN0KHVub2NjbHVkZWRRdWFk
LmJvdW5kaW5nQm94KCkpOwotICAgIC8vIEZJWE1FOiBDYXB0dXJlIG9wYXF1ZSBwYWludHM6IGVs
c2Ugb3BhcXVlUmVnaW9uID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKHRyYW5zZm9ybSk7
CisgICAgZWxzZSBpZiAodXNlUGFpbnRUcmFja2luZykgLy8gRklYTUU6IFJlbW92ZSB1c2VQYWlu
dFRyYWNraW5nIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCisg
ICAgICAgIG9wYXF1ZVJlZ2lvbiA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbih0cmFuc2Zv
cm0pOwogICAgIHJldHVybiBvcGFxdWVSZWdpb247CiB9CiAKQEAgLTIxNCw4ICsyMTcsOSBAQCB2
b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46
Om1hcmtPY2NsdWRlZEJlaGluZExheQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRU
b1NjcmVlblNwYWNlID0gY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihs
YXllcik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvVGFyZ2V0U3VyZmFjZSA9
IGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllcik7CiAKLSAg
ICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbi51bml0ZShjb21wdXRlT2NjbHVzaW9u
QmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvU2NyZWVuU3BhY2UpKTsKLSAg
ICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldC51bml0ZShjb21wdXRlT2NjbHVzaW9u
QmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvVGFyZ2V0U3VyZmFjZSkpOwor
ICAgIC8vIEZJWE1FOiBSZW1vdmUgbV91c2VQYWludFRyYWNraW5nIHdoZW4gcGFpbnQgdHJhY2tp
bmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCisgICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9u
SW5TY3JlZW4udW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obGF5
ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlLCBtX3VzZVBhaW50VHJhY2tpbmcpKTsKKyAgICBtX3N0
YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldC51bml0ZShjb21wdXRlT2NjbHVzaW9uQmVoaW5k
TGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvVGFyZ2V0U3VyZmFjZSwgbV91c2VQYWlu
dFRyYWNraW5nKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCB0ZXN0Q29udGVudFJlY3RPY2Ns
dWRlZChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGNv
bnN0IFJlZ2lvbiYgb2NjbHVzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaApp
bmRleCBiN2MwZTNiMjhmYzA3MzEzYWU2ZTEyMGRkOTNhZDM3NmZiZGMwZDg3Li4xOWZjMmMxZGQw
ZGFjODI1NWI1NjQyODI0MzI3ODAzYjEyYWVlZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lv
blRyYWNrZXIuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgLy8gR2l2ZXMgYW4gdW5v
Y2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVudFJlY3R8IGluIHRoZSBjb250ZW50IHNwYWNlIG9m
IHRoZSBsYXllci4gVXNlZCB3aGVuIGNvbnNpZGVyaW5nIG9jY2x1c2lvbiBmb3IgYSBsYXllciB0
aGF0IHBhaW50cy9kcmF3cyBzb21ldGhpbmcuCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkQ29udGVu
dFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpIGNvbnN0
OwogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24g
Zm9yIHBhaW50IGN1bGxpbmcuCisgICAgdm9pZCBzZXRVc2VQYWludFRyYWNraW5nKGJvb2wgdXNl
KSB7IG1fdXNlUGFpbnRUcmFja2luZyA9IHVzZTsgfQorCiAgICAgLy8gRklYTUU6IFJlbW92ZSB0
aGVzZSBpbiBmdXR1cmUsIHRoZXkgYXJlIHRvIG1ha2UgQ0xzIGZvciB0cmFuc2l0aW9uaW5nIHRv
IHRoaXMgZWFzaWVyLgogICAgIGNvbnN0IFJlZ2lvbiYgY3VycmVudE9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKSBjb25zdDsKICAgICBjb25zdCBSZWdpb24mIGN1cnJlbnRPY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKSBjb25zdDsKQEAgLTEwMyw2ICsxMDYsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRl
OgogICAgIEludFJlY3QgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2U7CiAgICAgY29uc3QgRGFt
YWdlQ2xpZW50VHlwZSogbV9zdXJmYWNlRGFtYWdlQ2xpZW50OworICAgIGJvb2wgbV91c2VQYWlu
dFRyYWNraW5nOyAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBwYWludCB0cmFja2luZyBpcyBv
biBmb3IgcGFpbnQgY3VsbGluZy4KIH07CiAKIHR5cGVkZWYgQ0NPY2NsdXNpb25UcmFja2VyQmFz
ZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+IENDT2NjbHVzaW9uVHJhY2tl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggNDdkMGE3MDhjMzJjNzY1
Zjg1MTE4NTZlNGUyZjBlODI3MDIxYTA4OS4uNTFiNzVlYWNhNzZlZTFkOWQxNjM0MGEzZjVhYjIx
NTQxMmVmOGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTUyLDE0
ICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlSWQoKSBjb25z
dCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQogICAgIHZvaWQgc2V0VGV4dHVyZUlkKFBsYXRmb3Jt
M0RPYmplY3QgdGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0gdGV4dHVyZUlkOyB9CiAKLSAgICBj
b25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWN0OyB9
Ci0gICAgdm9pZCBzZXRPcGFxdWVSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpIHsgbV9v
cGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsgfQotCiBwcml2YXRlOgogICAgIERyYXdhYmxlVGlsZSgp
IDogbV90ZXh0dXJlSWQoMCkgeyB9CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdGV4dHVyZUlk
OwotICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogfTsKIAogQ0NUaWxlZExheWVySW1wbDo6Q0NU
aWxlZExheWVySW1wbChpbnQgaWQpCkBAIC0yMDMsNiArMTk5LDE0IEBAIHZvaWQgQ0NUaWxlZExh
eWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKGludCBpLCBpbnQgaiwgUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlCiAgICAgdGlsZS0+c2V0T3BhcXVlUmVjdChvcGFxdWVSZWN0KTsKIH0KIAorUmVn
aW9uIENDVGlsZWRMYXllckltcGw6Om9wYXF1ZUNvbnRlbnRzUmVnaW9uKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBjb250ZW50U3BhY2VUcmFuc2Zvcm0pIGNvbnN0Cit7CisgICAgaWYgKG1f
c2tpcHNEcmF3KQorICAgICAgICByZXR1cm4gUmVnaW9uKCk7CisKKyAgICByZXR1cm4gbV90aWxl
ci0+b3BhcXVlUmVnaW9uSW5MYXllclJlY3QodmlzaWJsZUxheWVyUmVjdCgpLCBjb250ZW50U3Bh
Y2VUcmFuc2Zvcm0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgK
aW5kZXggN2U2MzdjZmZiNGNjN2JmN2JkYWFmOWQ2MDliZDJhMzU2MTQ5ZmYwMy4uYjdlZGM4MzM5
MjA5YTFiYzJmZmExNGI4MTk4ZjVkZTM5ODhiMjQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1N3
aXp6bGVkKGJvb2wgY29udGVudHNTd2l6emxlZCkgeyBtX2NvbnRlbnRzU3dpenpsZWQgPSBjb250
ZW50c1N3aXp6bGVkOyB9CiAgICAgYm9vbCBjb250ZW50c1N3aXp6bGVkKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50c1N3aXp6bGVkOyB9CiAKKyAgICBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdp
b24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSkgY29u
c3Q7CisKICAgICB0eXBlZGVmIFByb2dyYW1CaW5kaW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdt
ZW50U2hhZGVyUkdCQVRleEFscGhhPiBQcm9ncmFtOwogICAgIC8vIFNoYWRlciBwcm9ncmFtIHRo
YXQgc3dhcHMgcmVkIGFuZCBibHVlIGNvbXBvbmVudHMgb2YgdGV4dHVyZS4KICAgICAvLyBVc2Vk
IHdoZW4gdGV4dHVyZSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggbmF0aXZlIGNvbG9yIGZvcm1hdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJh
Y2tlclRlc3QuY3BwCmluZGV4IDc2NWI0OTFhYzU2OWJlZDE3MDM3ODAxNjIyNzk2MmVlNzNhM2Zm
YmMuLmZjOGQyZTQ1ZWUzYjEwNzkwZThlMmI5ZWI4ZWQwMWRmY2E3YmNlM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0
LmNwcApAQCAtNDUsMTYgKzQ1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSB7CiAKLXZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhMYXllckNocm9taXVt
KiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBh
bmNob3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMs
IGJvb2wgb3BhcXVlKQotewotICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAg
ICBsYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oc3VibGF5ZXJUcmFuc2Zvcm0pOwotICAgIGxh
eWVyLT5zZXRBbmNob3JQb2ludChhbmNob3IpOwotICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb3Np
dGlvbik7Ci0gICAgbGF5ZXItPnNldEJvdW5kcyhib3VuZHMpOwotICAgIGxheWVyLT5zZXRPcGFx
dWUob3BhcXVlKTsKLX0KLQogY2xhc3MgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgTGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQoKQpAQCAtNjMsOCArNTMsNDEgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSkgY29uc3QKKyAgICB7CisgICAgICAg
IEZsb2F0UmVjdCB0cmFuc2Zvcm1lZFJlY3QgPSBjb250ZW50U3BhY2VUcmFuc2Zvcm0ubWFwUmVj
dChGbG9hdFJlY3QoaW50ZXJzZWN0aW9uKG1fb3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlTGF5ZXJS
ZWN0KCkpKSk7CisgICAgICAgIHJldHVybiBSZWdpb24oZW5jbG9zZWRJbnRSZWN0KHRyYW5zZm9y
bWVkUmVjdCkpOworICAgIH0KKworICAgIHZvaWQgc2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IElu
dFJlY3QmIG9wYXF1ZVBhaW50UmVjdCkgeyBtX29wYXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50
UmVjdDsgfQorCitwcml2YXRlOgorICAgIEludFJlY3QgbV9vcGFxdWVQYWludFJlY3Q7CiB9Owog
Cit2b2lkIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoTGF5ZXJDaHJvbWl1bSogbGF5ZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCit7CisgICAgbGF5ZXItPnNldFRyYW5z
Zm9ybSh0cmFuc2Zvcm0pOworICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKTsKKyAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgw
LCAwKSk7CisgICAgbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICBsYXllci0+c2V0
Qm91bmRzKGJvdW5kcyk7Cit9CisKK3ZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCogbGF5ZXIsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25z
dCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlLCBib29sIG9wYXF1ZUxheWVycykKK3sKKyAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLCB0cmFuc2Zvcm0sIHBvc2l0aW9u
LCBib3VuZHMpOworICAgIGlmIChvcGFxdWVMYXllcnMpCisgICAgICAgIGxheWVyLT5zZXRPcGFx
dWUob3BhcXVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGF5ZXItPnNldE9wYXF1ZShmYWxzZSk7
CisgICAgICAgIGlmIChvcGFxdWUpCisgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRS
ZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKKyAgICB9Cit9CisKIC8v
IEEgc3ViY2xhc3MgdG8gZXhwb3NlIHRoZSB0b3RhbCBjdXJyZW50IG9jY2x1c2lvbi4KIGNsYXNz
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyIHsKIHB1
YmxpYzoKQEAgLTExMCw3ICsxMzMsMTcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kYW1h
Z2VSZWN0OwogfTsKIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9P
Y2NsdWRlZFJlZ2lvbikKKyNkZWZpbmUgVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKEZV
TExURVNUTkFNRSwgU0hPUlRURVNUTkFNRSkgXAorICAgIFRFU1QoRlVMTFRFU1ROQU1FLCBvcGFx
dWVMYXllcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgU0hPUlRURVNUTkFNRSh0cnVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVEVTVChGVUxMVEVTVE5BTUUsIG9wYXF1
ZVBhaW50UmVjdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBTSE9SVFRFU1ROQU1FKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfQorCit2b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uKGJv
b2wgb3BhcXVlTGF5ZXJzKQogewogICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJh
bnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKQEAgLTExOSw4ICsxNTIsOCBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tl
clRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uKQogICAgIHBhcmVudC0+Y3JlYXRlUmVu
ZGVyU3VyZmFjZSgpOwogICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwogCi0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgx
MDAsIDEwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAz
MCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTY3LDcgKzIw
MCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRS
ZWdpb24pCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzEsIDcwLCA3MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMSwg
NzAsIDcwKSkpOwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRU
b09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BB
UVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24sIGxh
eWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uKTsKKwordm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJl
Z2lvbldpdGhSb3RhdGlvbihib29sIG9wYXF1ZUxheWVycykKIHsKICAgICAvLyBUaGlzIHRlc3Rz
IHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCiAgICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CkBAIC0xODEsOCArMjE2LDggQEAgVEVT
VChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhS
b3RhdGlvbikKICAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOwogICAgIGxheWVyVHJhbnNm
b3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFu
c2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDMwLCAz
MCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTIyOSw3ICsyNjQsOSBAQCBURVNUKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9u
KQogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMxLCA3MCwgNzApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzEsIDcwLCA3
MCkpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2Ns
dWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlvbikKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFV
RShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJv
dGF0aW9uLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbik7CisKK3ZvaWQg
bGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24oYm9vbCBvcGFxdWVMYXll
cnMpCiB7CiAgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBi
ZWluZyB1c2VkLgogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OwpAQCAtMjQxLDggKzI3OCw4IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJB
ZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24pCiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbGF5ZXJUcmFuc2Zvcm07CiAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDIwLCAy
MCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwg
dHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVy
cyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxp
c3Q7CkBAIC0zMDEsNyArMzM4LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXll
ckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlvbikKICAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIH0KIAotVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3Rh
dGVkU3VyZmFjZSkKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRy
YWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0aW9uLCBsYXll
ckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlvbik7CisKK3ZvaWQgbGF5ZXJBZGRl
ZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2UoYm9vbCBvcGFxdWVMYXllcnMpCiB7
CiAgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1
c2VkLgogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwpAQCAt
MzE3LDkgKzM1Niw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRv
T2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2UpCiAgICAgY2hpbGRUcmFuc2Zvcm0ucm90
YXRlKDkwKTsKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcoY2hpbGQuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgZmFsc2UpOwot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgMTAp
LCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5n
ZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUw
MCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBv
cGFxdWVMYXllcnMpOwogCiAgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAKQEAg
LTQwOCw3ICs0NDcsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRU
b09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJmYWNlKQogICAgICAqLwogfQogCi1URVNUKEND
T2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZh
Y2VBbHJlYWR5T25TdGFjaykKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1
c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJm
YWNlLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZSk7CisKK3Zv
aWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrKGJv
b2wgb3BhcXVlTGF5ZXJzKQogewogICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJh
bnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKQEAgLTQyNiwxMyArNDY3LDEzIEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0
YWNrCiAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICBjaGlsZFRyYW5zZm9ybS50
cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCksIGNoaWxkVHJhbnNmb3Jt
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJ
bnRTaXplKDUwMCwgNTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Cisg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9p
bnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCks
IEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgLy8gfGNoaWxk
MnwgbWFrZXMgfHBhcmVudHwncyBzdXJmYWNlIGdldCBjb25zaWRlcmVkIGJ5IENDT2NjbHVzaW9u
VHJhY2tlciBmaXJzdCwgaW5zdGVhZCBvZiB8Y2hpbGR8J3MuIFRoaXMgZXhlcmNpc2VzIGRpZmZl
cmVudCBjb2RlIGluCiAgICAgLy8gbGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UsIGFzIHRoZSB0
YXJnZXQgc3VyZmFjZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4uCi0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDYwLCAyMCks
IHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDYwLCAyMCksIHRydWUs
IG9wYXF1ZUxheWVycyk7CiAKICAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKIApA
QCAtNTc0LDcgKzYxNSw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRl
ZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrCiAgICAgICovCiB9CiAK
LVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25X
aXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVF
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3Vy
ZmFjZUFscmVhZHlPblN0YWNrLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhTdXJmYWNl
QWxyZWFkeU9uU3RhY2spOworCit2b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJv
dGF0ZWRPZmZBeGlzU3VyZmFjZShib29sIG9wYXF1ZUxheWVycykKIHsKICAgICBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC01OTUsOSArNjM4LDkgQEAg
VEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldp
dGhSb3RhdGVkT2ZmQXhpc1N1cmZhY2UKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRy
YW5zZm9ybTsKICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKIAotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAxMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhj
aGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCBmYWxzZSk7Ci0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0s
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEw
MCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwg
Y2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwor
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNm
b3JtLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5
ZXJzKTsKIAogICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogCkBAIC02NTYsNyAr
Njk5LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRl
ZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZhY2UKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDc1LCA1NSwgMSwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDc1LCA1NSwgMSwgMSkpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRy
YWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxh
eWVycykKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRPZmZBeGlzU3VyZmFjZSwg
bGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKTsKKwor
dm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycyhi
b29sIG9wYXF1ZUxheWVycykKIHsKICAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHByZXZp
b3VzIHRlc3QgYnV0IG5vdyB3ZSBtYWtlIGEgZmV3IG9wYXF1ZSBsYXllcnMgaW5zaWRlIG9mIHxj
aGlsZHwgc28gdGhhdCB0aGUgb2NjbHVkZWQgcGFydHMgb2YgY2hpbGQgYXJlIG5vdCBhIHNpbXBs
ZSByZWN0LgogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwpA
QCAtNjc0LDEwICs3MTksMTAgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFk
ZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycykKICAgICBjaGlsZFRy
YW5zZm9ybS5yb3RhdGUoOTApOwogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAt
MjUwKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDAp
LCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQ
b2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNDQwKSwgdHJ1ZSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1MDAs
IDYwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFu
c2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNDQwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsK
KyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMTAsIDQ1MCksIEludFNpemUoNTAwLCA2MCksIHRydWUsIG9wYXF1
ZUxheWVycyk7CiAKICAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKIApAQCAtNzYw
LDcgKzgwNSw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2Nj
bHVkZWRSZWdpb25XaXRoTXVsdGlwbGVPcGFxdWVMYXllcnMpCiAgICAgICovCiB9CiAKLVRFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc3VyZmFjZU9jY2x1c2lvbldpdGhPdmVybGFwcGluZ1Np
YmxpbmdTdXJmYWNlcykKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lv
blRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aE11bHRpcGxlT3BhcXVl
TGF5ZXJzLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVy
cyk7CisKK3ZvaWQgc3VyZmFjZU9jY2x1c2lvbldpdGhPdmVybGFwcGluZ1NpYmxpbmdTdXJmYWNl
cyhib29sIG9wYXF1ZUxheWVycykKIHsKICAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0
IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXggaWRlbnRpdHlNYXRyaXg7CkBAIC03ODAsMTEgKzgyNywxMSBAQCBURVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3QsIHN1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3VyZmFj
ZXMpCiAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICBjaGlsZFRyYW5zZm9ybS50
cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQxLmdldCgpLCBjaGlsZFRyYW5zZm9y
bSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwg
SW50U2l6ZSg1MDAsIDUwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0g
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNm
b3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgyMCwgNDAp
LCBJbnRTaXplKDUwMCwgNTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsK
KyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0
UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBv
aW50KDIwLCA0MCksIEludFNpemUoNTAwLCA1MDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgY2hpbGQxLT5z
ZXRNYXNrc1RvQm91bmRzKHRydWUpOwogICAgIGNoaWxkMi0+c2V0TWFza3NUb0JvdW5kcyh0cnVl
KTsKQEAgLTg3OCw3ICs5MjUsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHN1cmZh
Y2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3VyZmFjZXMpCiAgICAgICovCiB9CiAK
LVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dF9zdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzLCBzdXJmYWNl
T2NjbHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzKTsKKwordm9pZCBzdXJmYWNl
T2NjbHVzaW9uSW5TY3JlZW5TcGFjZShib29sIG9wYXF1ZUxheWVycykKIHsKICAgICAvLyBUaGlz
IHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCiAgICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CkBAIC04OTksMTEgKzk0OCwx
MSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHN1cmZhY2VPY2NsdXNpb25JblNjcmVl
blNwYWNlKQogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAogICAg
IC8vIFRoZSBvd25pbmcgbGF5ZXJzIGhhdmUgdmVyeSBkaWZmZXJlbnQgYm91bmRzIGZyb20gdGhl
IHN1cmZhY2VzIHRoYXQgdGhleSBvd24uCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwgY2hpbGRUcmFuc2Zv
cm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoMTAsIDEwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJh
bnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgyMCwg
NDApLCBJbnRTaXplKDEwLCAxMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRy
dWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQxLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwg
RmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDEwLCAxMCkpOworICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgt
MTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwg
RmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDEwLCAxMCkpOworICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgt
MTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAg
Ly8gTWFrZSB0aGVtIGJvdGggcmVuZGVyIHN1cmZhY2VzCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBm
aWx0ZXJzOwpAQCAtMTAxMCw3ICsxMDU5LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0
LCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZSkKICAgICAgKi8KIH0KIAotVEVTVChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0LCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVu
dFRyYW5zZm9ybXMpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZSwgc3VyZmFjZU9jY2x1c2lv
bkluU2NyZWVuU3BhY2UpOworCit2b2lkIHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlRGlm
ZmVyZW50VHJhbnNmb3Jtcyhib29sIG9wYXF1ZUxheWVycykKIHsKICAgICAvLyBUaGlzIHRlc3Rz
IHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCiAgICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CkBAIC0xMDM2LDExICsxMDg3LDExIEBA
IFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2VEaWZmZXJlbnRUcmFuc2Zvcm1zKQogICAgIGNoaWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoLTI1
MCwgLTI1MCk7CiAKICAgICAvLyBUaGUgb3duaW5nIGxheWVycyBoYXZlIHZlcnkgZGlmZmVyZW50
IGJvdW5kcyBmcm9tIHRoZSBzdXJmYWNlcyB0aGF0IHRoZXkgb3duLgotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAx
MDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0
KCksIGNoaWxkMVRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZs
b2F0UG9pbnQoMzAsIDIwKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgtMTAsIC0yMCksIEludFNpemUo
NTEwLCA1MjApLCB0cnVlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxk
Mi5nZXQoKSwgY2hpbGQyVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDEwLCAxMCksIGZhbHNlKTsKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50
U2l6ZSg1MTAsIDUxMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgx
MDAsIDEwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQxLmdldCgp
LCBjaGlsZDFUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDIwKSwgSW50U2l6ZSgxMCwgMTApKTsK
KyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMjApLCBJbnRTaXplKDUxMCwgNTIwKSwgdHJ1ZSwgb3Bh
cXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQo
KSwgY2hpbGQyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUsIG9w
YXF1ZUxheWVycyk7CiAKICAgICAvLyBNYWtlIHRoZW0gYm90aCByZW5kZXIgc3VyZmFjZXMKICAg
ICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CkBAIC0xMTM1LDcgKzExODYsOSBAQCBURVNUKEND
T2NjbHVzaW9uVHJhY2tlclRlc3QsIHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVy
ZW50VHJhbnNmb3JtcykKICAgICAgKi8KIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0
LCBvY2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0ZXJzKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5U
RURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVu
U3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zLCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURp
ZmZlcmVudFRyYW5zZm9ybXMpOworCit2b2lkIG9jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRl
cnMoYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdo
dCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4IGlkZW50aXR5TWF0cml4OwpAQCAtMTE1MywxMCArMTIwNiwxMCBAQCBURVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3QsIG9jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMpCiAgICAgbGF5
ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1
MCwgLTI1MCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcoYmx1ckxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1
MDAsIDUwMCksIHRydWUpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmcob3BhcXVl
TGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhvcGFjaXR5TGF5ZXIuZ2V0KCksIGxheWVyVHJh
bnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwg
MzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhibHVy
TGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
NTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3Rpbmcob3BhcXVlTGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMw
LCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3Rpbmcob3BhY2l0eUxheWVyLmdldCgpLCBsYXllclRyYW5zZm9y
bSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5
ZXJzKTsKIAogICAgIHsKICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwpAQCAtMTIz
OSw3ICsxMjkyLDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBvY2NsdXNpb25JbnRl
cmFjdGlvbldpdGhGaWx0ZXJzKQogICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0LCBsYXllclNjaXNzb3JSZWN0T3ZlclRpbGUpCitURVNUX09QQVFVRV9BTkRf
UEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9vY2NsdXNpb25JbnRlcmFjdGlv
bldpdGhGaWx0ZXJzLCBvY2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0ZXJzKTsKKwordm9pZCBs
YXllclNjaXNzb3JSZWN0T3ZlclRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAgICAgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTI1NCw5ICsxMzA5
LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllclNjaXNzb3JSZWN0T3ZlclRp
bGUpCiAgICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAgICAgbGF5ZXItPnNl
dEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwor
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5
ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVy
TGlzdDsKQEAgLTEzMDIsNyArMTM1Nyw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwg
bGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlKQogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAw
LCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdCwgc2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSkKK1RFU1RfT1BBUVVFX0FORF9Q
QUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVy
VGlsZSwgbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlKTsKKwordm9pZCBzY3JlZW5TY2lzc29yUmVj
dE92ZXJUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTEzMTcsOSArMTM3NCw5IEBAIFRFU1QoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSkKICAgICBwYXJl
bnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAg
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTM2
Nyw3ICsxNDI0LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzY3JlZW5TY2lzc29y
UmVjdE92ZXJUaWxlKQogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMCwgMCwgMzAwLCAzMDApKSk7CiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwg
bGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSwg
c2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSk7CisKK3ZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJD
dWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTEzODIsOSArMTQ0MSw5IEBAIFRFU1QoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKQogICAg
IHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAgIGxheWVyLT5zZXRGaWx0ZXJz
KGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXll
ci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CkBA
IC0xNDI1LDcgKzE0ODQsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyU2Np
c3NvclJlY3RPdmVyQ3VsbGVkVGlsZSkKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlz
RW1wdHkoKSk7CiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Npc3Nv
clJlY3RPdmVyQ3VsbGVkVGlsZSkKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSwgbGF5ZXJT
Y2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKTsKKwordm9pZCBzY3JlZW5TY2lzc29yUmVjdE92ZXJD
dWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE0NDAsOSArMTUwMSw5IEBAIFRFU1QoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSkKICAg
ICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwog
CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxp
c3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpA
QCAtMTQ4Miw3ICsxNTQzLDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzY3JlZW5T
Y2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKQogICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSku
aXNFbXB0eSgpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllclNjaXNz
b3JSZWN0T3ZlclBhcnRpYWxUaWxlcykKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShD
Q09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUsIHNj
cmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOworCit2b2lkIGxheWVyU2Npc3NvclJlY3RP
dmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBw
YXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE0OTcsOSArMTU2MCw5IEBAIFRF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGls
ZXMpCiAgICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAgICAgbGF5ZXItPnNl
dEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwor
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5
ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVy
TGlzdDsKQEAgLTE1NDQsNyArMTYwNyw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwg
bGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKIH0KIAotVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0LCBzY3JlZW5TY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMp
CitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9s
YXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcywgbGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0
aWFsVGlsZXMpOworCit2b2lkIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyhib29s
IG9wYXF1ZUxheWVycykKIHsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CkBAIC0xNTU5LDkgKzE2MjQsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tl
clRlc3QsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcykKICAgICBwYXJlbnRMYXll
ci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsK
IAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwg
ZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTYwNSw3ICsx
NjcwLDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzY3JlZW5TY2lzc29yUmVjdE92
ZXJQYXJ0aWFsVGlsZXMpCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAw
LCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0LCBsYXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpCitURVNUX09QQVFVRV9BTkRfUEFJTlRF
RF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5TY2lzc29yUmVjdE92ZXJQYXJ0
aWFsVGlsZXMsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyk7CisKK3ZvaWQgbGF5
ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE2MjAsOSArMTY4
Nyw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdE92ZXJO
b1RpbGVzKQogICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAgIGxheWVy
LT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJz
KTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1
ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlM
YXllckxpc3Q7CkBAIC0xNjY3LDcgKzE3MzQsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRl
c3QsIGxheWVyU2Npc3NvclJlY3RPdmVyTm9UaWxlcykKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwg
MTAwLCAxMDApKS5pc0VtcHR5KCkpOwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3Qs
IHNjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9P
UEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMs
IGxheWVyU2Npc3NvclJlY3RPdmVyTm9UaWxlcyk7CisKK3ZvaWQgc2NyZWVuU2Npc3NvclJlY3RP
dmVyTm9UaWxlcyhib29sIG9wYXF1ZUxheWVycykKIHsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC0xNjgyLDkgKzE3NTEsOSBAQCBURVNUKEND
T2NjbHVzaW9uVHJhY2tlclRlc3QsIHNjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpCiAgICAg
cGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAgICAgbGF5ZXItPnNldEZpbHRlcnMo
ZmlsdGVycyk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgz
MDAsIDMwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAog
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAg
LTE3MjgsNyArMTc5Nyw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Np
c3NvclJlY3RPdmVyTm9UaWxlcykKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5p
c0VtcHR5KCkpOwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyU2Npc3Nv
clJlY3RGb3JMYXllck9mZk9yaWdpbikKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShD
Q09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMsIHNjcmVl
blNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpOworCit2b2lkIGxheWVyU2Npc3NvclJlY3RGb3JMYXll
ck9mZk9yaWdpbihib29sIG9wYXF1ZUxheWVycykKIHsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC0xNzQzLDkgKzE4MTQsOSBAQCBURVNUKEND
T2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbikK
ICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICBsYXllci0+c2V0Rmls
dGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgRmxvYXRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwor
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1
ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlM
YXllckxpc3Q7CkBAIC0xNzcwLDcgKzE4NDEsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRl
c3QsIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbikKICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBkYW1hZ2VSZWN0T3ZlclRp
bGUpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dF9sYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4sIGxheWVyU2Npc3NvclJlY3RGb3JM
YXllck9mZk9yaWdpbik7CisKK3ZvaWQgZGFtYWdlUmVjdE92ZXJUaWxlKGJvb2wgb3BhcXVlTGF5
ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owog
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKQEAgLTE3ODUsOSArMTg1OCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFt
YWdlUmVjdE92ZXJUaWxlKQogICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwog
ICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZh
bHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Cisg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3Bh
cXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRy
dWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
cmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gZHVtbXlMYXllckxpc3Q7CkBAIC0xODE5LDcgKzE4OTIsNyBAQCBURVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3QsIGRhbWFnZVJlY3RPdmVyVGlsZSkKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CiAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKQEAgLTE4MzEsNyArMTkwNCw5IEBAIFRFU1QoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJUaWxlKQogICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiB9CiAKLVRFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlKQorVEVTVF9P
UEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVj
dE92ZXJUaWxlLCBkYW1hZ2VSZWN0T3ZlclRpbGUpOworCit2b2lkIGRhbWFnZVJlY3RPdmVyQ3Vs
bGVkVGlsZShib29sIG9wYXF1ZUxheWVycykKIHsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC0xODQ2LDkgKzE5MjEsOSBAQCBURVNUKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3QsIGRhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSkKICAgICBwYXJlbnRM
YXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJz
KTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTg4OSw3
ICsxOTY0LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBkYW1hZ2VSZWN0T3ZlckN1
bGxlZFRpbGUpCiAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwogfQog
Ci1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGRhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVz
KQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rf
ZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlLCBkYW1hZ2VSZWN0T3ZlckN1bGxlZFRpbGUpOworCit2
b2lkIGRhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE5MDQs
OSArMTk4MSw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJQ
YXJ0aWFsVGlsZXMpCiAgICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAgICAg
bGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2Up
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0
cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVM
YXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwg
b3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBk
dW1teUxheWVyTGlzdDsKQEAgLTE5NTEsNyArMjAyOCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMpCiAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKIH0KIAotVEVT
VChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBkYW1hZ2VSZWN0T3Zlck5vVGlsZXMpCitURVNUX09Q
QVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0
T3ZlclBhcnRpYWxUaWxlcywgZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMpOworCit2b2lkIGRh
bWFnZVJlY3RPdmVyTm9UaWxlcyhib29sIG9wYXF1ZUxheWVycykKIHsKICAgICBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC0xOTY2LDkgKzIwNDUsOSBA
QCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGRhbWFnZVJlY3RPdmVyTm9UaWxlcykKICAg
ICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwog
CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxp
c3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpA
QCAtMjAxMyw0ICsyMDkyLDEyMiBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGRhbWFn
ZVJlY3RPdmVyTm9UaWxlcykKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0Vt
cHR5KCkpOwogfQogCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdF9kYW1hZ2VSZWN0T3Zlck5vVGlsZXMsIGRhbWFnZVJlY3RPdmVyTm9UaWxlcyk7
CisKK1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb25FbXB0
eSkKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAg
ICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxh
eWVyKTsKKworICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAgICBmaWx0ZXJzLm9wZXJh
dGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICBsYXllci0+c2V0Rmls
dGVycyhmaWx0ZXJzKTsKKworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgZmFsc2UsIGZh
bHNlKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVy
TGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QuYXBwZW5kKHBhcmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5n
ZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICAvLyBPY2NsdWRlZCBz
aW5jZSBpdHMgb3V0c2lkZSB0aGUgc3VyZmFjZSBib3VuZHMuCisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKworICAgIC8vIFRlc3Qgd2l0aG91dCBhbnkgc2Npc3NvcnMuCisgICAgb2NjbHVzaW9uLnNl
dExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7
CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwor
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKK30KKworVEVTVChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KQoreworICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworCisg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMTAwLCAxMDApLCBJbnRTaXplKDIwMCwgMjAwKSwgZmFsc2UsIGZhbHNlKTsKKworICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBh
cmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlz
dCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICB7CisgICAgICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBs
YXllci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKworICAg
ICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVy
LmdldCgpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgfQorCisgICAg
eworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKyAgICAgICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0
KDIwLCAyMCwgMTgwLCAxODApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKworICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDEyMCwgMTIwLCAxODAsIDE4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwg
MTAwLCAxMDApKSk7CisgICAgfQorCisgICAgeworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgbGF5ZXIt
PnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KDE1MCwgMTUwLCAxMDAsIDEwMCkpOworCisgICAg
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIu
Z2V0KCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjUwLCAyNTAsIDUwLCA1
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIH0KK30KKwogfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGls
ZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDMxY2RmMzViN2UxY2UyZjhkZjdkMzU4MDY5
NWE0M2UyYzk3YmIzZWIuLmM0ZjJiZjZlNGEwNDIwNmVlYTdhOTcyZmQ4YWMyYzY3MDVkZWM3MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcApAQCAtODQ2LDQgKzg0Niw3NSBAQCBURVNUKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1
dGRvd24oKTsKIH0KIAorVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVDb250ZW50
c1JlZ2lvbikKK3sKKyAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwor
ICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBG
YWtlVGlsZWRMYXllckNocm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7CisKKyAgICAvLyBU
aGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFp
bnRzIHR3byB0aWxlcyBpbiB2YXJpb3VzIHdheXMuCisKKyAgICBJbnRSZWN0IG9wYXF1ZVBhaW50
UmVjdDsKKyAgICBSZWdpb24gb3BhcXVlQ29udGVudHM7CisKKyAgICBJbnRSZWN0IGNvbnRlbnRC
b3VuZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKTsKKyAgICBJbnRSZWN0IHZpc2libGVCb3Vu
ZHMgPSBJbnRSZWN0KDAsIDAsIDEwMCwgMTUwKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKKworICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcy5zaXpl
KCkpOworICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVCb3VuZHMpOworICAg
IGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKKworICAgIC8vIElmIHRoZSBsYXllciBkb2Vzbid0
IHBhaW50IG9wYXF1ZSBjb250ZW50LCB0aGVuIHRoZSBvcGFxdWVDb250ZW50c1JlZ2lvbiBzaG91
bGQgYmUgZW1wdHkuCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9w
YXF1ZVBhaW50UmVjdChvcGFxdWVQYWludFJlY3QpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVj
dChjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3Vu
ZHMpOworICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKGlk
ZW50aXR5TWF0cml4KTsKKyAgICBFWFBFQ1RfVFJVRShvcGFxdWVDb250ZW50cy5pc0VtcHR5KCkp
OworCisgICAgLy8gb3BhcXVlQ29udGVudHNSZWdpb24gc2hvdWxkIG1hdGNoIHRoZSB2aXNpYmxl
IHBhcnQgb2Ygd2hhdCBpcyBwYWludGVkIG9wYXF1ZS4KKyAgICBvcGFxdWVQYWludFJlY3QgPSBJ
bnRSZWN0KDEwLCAxMCwgOTAsIDE5MCk7CisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChvcGFxdWVQYWludFJlY3QpOworICAgIGxheWVyLT5p
bnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRl
KGNvbnRlbnRCb3VuZHMpOworICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRl
bnRzUmVnaW9uKGlkZW50aXR5TWF0cml4KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rp
b24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRz
KCkpOworICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwor
CisgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1l
IHN0dWZmIHNob3VsZCBiZSBvcGFxdWUuCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRh
dGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOworICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+b3Bh
cXVlQ29udGVudHNSZWdpb24oaWRlbnRpdHlNYXRyaXgpOworICAgIEVYUEVDVF9FUV9SRUNUKGlu
dGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50
cy5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygpLnNp
emUoKSk7CisKKyAgICAvLyBJZiB3ZSByZXBhaW50IGEgbm9uLW9wYXF1ZSBwYXJ0IG9mIHRoZSB0
aWxlLCB0aGVuIGl0IHNob3VsZG4ndCBsb3NlIGl0cyBvcGFxdWUtbmVzcy4gQW5kIG90aGVyIHRp
bGVzIHNob3VsZAorICAgIC8vIG5vdCBiZSBhZmZlY3RlZC4KKyAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CisgICAgbGF5
ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMCwgMCwgMSwgMSkpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7CisgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+
b3BhcXVlQ29udGVudHNSZWdpb24oaWRlbnRpdHlNYXRyaXgpOworICAgIEVYUEVDVF9FUV9SRUNU
KGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250
ZW50cy5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygp
LnNpemUoKSk7CisKKyAgICAvLyBJZiB3ZSByZXBhaW50IGFuIG9wYXF1ZSBwYXJ0IG9mIHRoZSB0
aWxlLCB0aGVuIGl0IHNob3VsZCBsb3NlIGl0cyBvcGFxdWUtbmVzcy4gQnV0IG90aGVyIHRpbGVz
IHNob3VsZCBzdGlsbAorICAgIC8vIG5vdCBiZSBhZmZlY3RlZC4KKyAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CisgICAg
bGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJlY3QoMTAsIDEwLCAxLCAxKSk7CisgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBvcGFxdWVDb250ZW50cyA9IGxh
eWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbihpZGVudGl0eU1hdHJpeCk7CisgICAgRVhQRUNUX0VR
X1JFQ1QoaW50ZXJzZWN0aW9uKEludFJlY3QoMTAsIDEwMCwgOTAsIDEwMCksIHZpc2libGVCb3Vu
ZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVD
b250ZW50cy5yZWN0cygpLnNpemUoKSk7CisKKyAgICAvLyBBIHRyYW5zZm9ybSBzaG91bGQgY2hh
bmdlIHdoYXQgaXMgZ2l2ZW4gYmFjayBhcyB0aGUgb3BhcXVlQ29udGVudHNSZWdpb24uCisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIHRyYW5zZm9ybS5yb3RhdGUoOTAp
OworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKKyAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7Cisg
ICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KG9wYXF1ZVBhaW50UmVjdCk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKKyAgICBvcGFxdWVDb250ZW50cyA9IGxheWVy
LT5vcGFxdWVDb250ZW50c1JlZ2lvbih0cmFuc2Zvcm0pOworICAgIEVYUEVDVF9FUV9SRUNUKHRy
YW5zZm9ybS5tYXBSZWN0KGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3Vu
ZHMpKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVl
Q29udGVudHMucmVjdHMoKS5zaXplKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130848</attachid>
            <date>2012-03-08 10:46:09 -0800</date>
            <delta_ts>2012-03-09 10:06:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80173-20120308134608.patch</filename>
            <type>text/plain</type>
            <size>75188</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU4MzEzZmEyYmMzZTY4
OGNjNWExMDA4ZmQ3ZmY4OGUwMDIwOTkyOS4uMGVjMWEzNmZiOGIwNzZhNDM3OGQwNjMwOTM1ZGIz
YzE0ODUzYTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAzLTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IG9wYXF1ZSBwYWludHMgaW4gQ0NPY2NsdXNpb25UcmFja2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0cmFja2VkIG9wYXF1ZSBwYWludHMgaW4g
dGhlIHRpbGVzIHdoZW4gdHJhY2tpbmcgb2NjbHVzaW9uIGluCisgICAgICAgIENDT2NjbHVzaW9u
VHJhY2tlci4gTW92ZXMgdGhlIFRpbGU6Om1fb3BhcXVlUmVjdCB1cCB0byB0aGUgc3VwZXItCisg
ICAgICAgIGNsYXNzIGluIENDTGF5ZXJUaWxpbmdEYXRhIHJhdGhlciB0aGFuIGhhdmluZyBpdCBk
ZWNsYXJlZCBpbiBib3RoCisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bSBhbmQgQ0NUaWxlZExh
eWVySW1wbC4gVGhpcyBsZXRzIHRoZSBDQ0xheWVyVGlsaW5nRGF0YQorICAgICAgICBjbGFzcyBj
b21wdXRlIHRoZSBvcGFxdWUgcmVnaW9uIGZvciBpdHMgdGlsZXMsIHNoYXJpbmcgY29kZSBiZXR3
ZWVuIHRoZQorICAgICAgICB0d28gdGlsZWQgbGF5ZXIgaW1wbGVtZW50YXRpb25zLgorCisgICAg
ICAgIFVzZSBvZiB0aGlzIGZlYXR1cmUgaXMgZ3VhcmRlZCBiZWhpbmQgYSBydW50aW1lIGZsYWcg
YW5kIHR1cm5lZCBvZmYgZm9yCisgICAgICAgIHBhaW50IGN1bGxpbmcuIFdlIHdpbGwgZW5hYmxl
IGl0IGluIHRoZSBmdXR1cmUgb25jZSB3ZSdyZSBjb21mb3J0YWJsZQorICAgICAgICB3aXRoIHRo
ZSBwYWludCBjdWxsaW5nLgorCisgICAgICAgIFVuaXQgdGVzdDogQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdC5vcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5CisgICAgICAgICAgICAgICAgICAgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdC5vcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5CisgICAgICAgICAg
ICAgICAgICAgVGlsZWRMYXllckNocm9taXVtVGVzdC5vcGFxdWVDb250ZW50c1JlZ2lvbgorCisg
ICAgICAgIEFsbCBleGlzdGluZyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0LiogZHVwbGljYXRlZCB3
aXRoIG9wYXF1ZSBwYWludGVkCisgICAgICAgIHJlY3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6b3BhcXVlQ29udGVudHNSZWdpb24pOgorICAgICAgICAoTGF5ZXJDaHJvbWl1
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFVwZGF0YWJsZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRMYXllckNocm9taXVtOjphZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6b3BhcXVlQ29udGVudHNSZWdpb24p
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpv
cGFxdWVDb250ZW50c1JlZ2lvbik6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRpbGluZ0RhdGE6Om9wYXF1ZVJlZ2lvbkluTGF5ZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRpbGluZ0RhdGE6OlRpbGU6Om9wYXF1
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRpbGluZ0RhdGE6OlRpbGU6OnNldE9w
YXF1ZVJlY3QpOgorICAgICAgICAoQ0NMYXllclRpbGluZ0RhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjo6OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyQmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpzZXRVc2VQYWlu
dFRyYWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKERyYXdhYmxlVGlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpvcGFxdWVDb250ZW50c1JlZ2lvbik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RpbGVkTGF5ZXJJbXBsKToKKwogMjAxMi0wMy0wOCAg
Q2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIE1ha2UgZWxlbWVudHMgd2l0aCBhdHRyaWJ1dGVzIHNtYWxsZXIgYnkg
ZWxpbWluYXRpbmcgdGhlIG1fZWxlbWVudCBiYWNrIHBvaW50ZXIgaW4gTmFtZWROb2RlTWFwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDM4ZDJjYTc4MjRjYzA2MDFmMzgzZTgzYmU5ZmNl
YjhjNGM1MmY0ZmEuLjIzN2EzYzRjNjkxZThlNzBlYzg2OTRhNGQ2YzVkYjJhN2YyNWYxYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTItMDMtMDcgIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBV
c2Ugb3BhcXVlIHBhaW50cyBpbiBDQ09jY2x1c2lvblRyYWNrZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwMTczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJU
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50OjpvcGFxdWVDb250ZW50c1JlZ2lvbik6CisgICAgICAgIChMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudDo6c2V0T3BhcXVlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OnNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3Vy
ZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhT
dXJmYWNlQWxyZWFkeU9uU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJBZGRlZFRvT2Nj
bHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aE11bHRpcGxlT3BhcXVlTGF5ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OnN1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3Vy
ZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJl
bnRUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6Om9jY2x1c2lvbkludGVyYWN0aW9uV2l0
aEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6bGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
bGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
ZWVuU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVy
U2Npc3NvclJlY3RPdmVyTm9UaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5TY2lzc29y
UmVjdE92ZXJOb1RpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyU2Npc3NvclJlY3RGb3JM
YXllck9mZk9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpkYW1hZ2VSZWN0T3ZlclRpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OmRhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmRh
bWFnZVJlY3RPdmVyTm9UaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAg
KiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdURjo6VEVTVCk6
CisgICAgICAgIChXVEYpOgorCiAyMDEyLTAzLTA4ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEg
RmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgTWFrZSBlbGVt
ZW50cyB3aXRoIGF0dHJpYnV0ZXMgc21hbGxlciBieSBlbGltaW5hdGluZyB0aGUgbV9lbGVtZW50
IGJhY2sgcG9pbnRlciBpbiBOYW1lZE5vZGVNYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAwY2Uz
YmEwZmExOTY0MTU2NDEzNmMxY2FiODg0MjdiYWIxODhkMzc3Li41YTg5YWU5ZmRiOTVmNzM1ZTUy
MjViN2QwNDRjNmJhZDZiODVjNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0yMjcsNiArMjI3
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRBbmltYXRpb25FdmVudChjb25zdCBDQ0FuaW1h
dGlvbkV2ZW50Jik7CiAKKyAgICB2aXJ0dWFsIFJlZ2lvbiBvcGFxdWVDb250ZW50c1JlZ2lvbihj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudFNwYWNlVHJhbnNmb3JtKSBjb25zdCB7
IHJldHVybiBSZWdpb24oKTsgfTsKKwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBDQ0xh
eWVySW1wbDsKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJUaWxlckNocm9taXVtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDVmMWJmNDY0NmEwNjU3YzdjNmM5OWE1ODM2YzBm
NGFlYTFiM2QyYi4uMzYzYmRmNWViOWUwMzc2YmY4MDFlNzEyMWRhNmI5NGFjNzhiYmVkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC03Miw3ICs3Miw2IEBAIHB1YmxpYzoK
IAogICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgSW50UmVjdCBtX3VwZGF0ZVJlY3Q7Ci0g
ICAgSW50UmVjdCBtX29wYXF1ZVJlY3Q7CiAgICAgYm9vbCBtX3BhcnRpYWxVcGRhdGU7CiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFVwZGF0YWJsZVRpbGUoUGFzc093blB0cjxMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlPiB0ZXh0dXJlKQpAQCAtMjY4LDcgKzI2Nyw3IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICAg
ICAgaWYgKHRpbGUtPmlzRGlydHlGb3JDdXJyZW50RnJhbWUoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJvcGVydGllcyhpLCBqLCB0aWxl
LT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgdGlsZS0+bV9vcGFxdWVSZWN0KTsKKyAg
ICAgICAgdGlsZWRMYXllci0+cHVzaFRpbGVQcm9wZXJ0aWVzKGksIGosIHRpbGUtPm1hbmFnZWRU
ZXh0dXJlKCktPnRleHR1cmVJZCgpLCB0aWxlLT5vcGFxdWVSZWN0KCkpOwogICAgIH0KICAgICBm
b3IgKFZlY3RvcjxVcGRhdGFibGVUaWxlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpbnZhbGlk
VGlsZXMuYmVnaW4oKTsgaXRlciAhPSBpbnZhbGlkVGlsZXMuZW5kKCk7ICsraXRlcikKICAgICAg
ICAgbV90aWxlci0+dGFrZVRpbGUoKCppdGVyKS0+aSgpLCAoKml0ZXIpLT5qKCkpOwpAQCAtNTAz
LDEyICs1MDIsMTIgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZVRp
bGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludAogICAgICAgICAgICAgSW50UmVj
dCB0aWxlUGFpbnRlZFJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZVJlY3QsIG1fcGFpbnRSZWN0KTsK
ICAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9u
KHRpbGVSZWN0LCBwYWludGVkT3BhcXVlUmVjdCk7CiAgICAgICAgICAgICBpZiAoIXRpbGVQYWlu
dGVkUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IHBhaW50SW5zaWRl
VGlsZU9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZS0+bV9vcGFxdWVSZWN0LCB0aWxlUGFp
bnRlZFJlY3QpOworICAgICAgICAgICAgICAgIEludFJlY3QgcGFpbnRJbnNpZGVUaWxlT3BhcXVl
UmVjdCA9IGludGVyc2VjdGlvbih0aWxlLT5vcGFxdWVSZWN0KCksIHRpbGVQYWludGVkUmVjdCk7
CiAgICAgICAgICAgICAgICAgYm9vbCBwYWludEluc2lkZVRpbGVPcGFxdWVSZWN0SXNOb25PcGFx
dWUgPSAhdGlsZVBhaW50ZWRPcGFxdWVSZWN0LmNvbnRhaW5zKHBhaW50SW5zaWRlVGlsZU9wYXF1
ZVJlY3QpOwotICAgICAgICAgICAgICAgIGJvb2wgb3BhcXVlUGFpbnROb3RJbnNpZGVUaWxlT3Bh
cXVlUmVjdCA9ICF0aWxlUGFpbnRlZE9wYXF1ZVJlY3QuaXNFbXB0eSgpICYmICF0aWxlLT5tX29w
YXF1ZVJlY3QuY29udGFpbnModGlsZVBhaW50ZWRPcGFxdWVSZWN0KTsKKyAgICAgICAgICAgICAg
ICBib29sIG9wYXF1ZVBhaW50Tm90SW5zaWRlVGlsZU9wYXF1ZVJlY3QgPSAhdGlsZVBhaW50ZWRP
cGFxdWVSZWN0LmlzRW1wdHkoKSAmJiAhdGlsZS0+b3BhcXVlUmVjdCgpLmNvbnRhaW5zKHRpbGVQ
YWludGVkT3BhcXVlUmVjdCk7CiAKICAgICAgICAgICAgICAgICBpZiAocGFpbnRJbnNpZGVUaWxl
T3BhcXVlUmVjdElzTm9uT3BhcXVlIHx8IG9wYXF1ZVBhaW50Tm90SW5zaWRlVGlsZU9wYXF1ZVJl
Y3QpCi0gICAgICAgICAgICAgICAgICAgIHRpbGUtPm1fb3BhcXVlUmVjdCA9IHRpbGVQYWludGVk
T3BhcXVlUmVjdDsKKyAgICAgICAgICAgICAgICAgICAgdGlsZS0+c2V0T3BhcXVlUmVjdCh0aWxl
UGFpbnRlZE9wYXF1ZVJlY3QpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBzb3Vy
Y2VSZWN0IHN0YXJ0cyBhcyBhIGZ1bGwtc2l6ZWQgdGlsZSB3aXRoIGJvcmRlciB0ZXhlbHMgaW5j
bHVkZWQuCkBAIC01NTQsNiArNTUzLDE0IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpyZXNl
cnZlVGV4dHVyZXMoKQogICAgIH0KIH0KIAorUmVnaW9uIFRpbGVkTGF5ZXJDaHJvbWl1bTo6b3Bh
cXVlQ29udGVudHNSZWdpb24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFj
ZVRyYW5zZm9ybSkgY29uc3QKK3sKKyAgICBpZiAobV9za2lwc0RyYXcpCisgICAgICAgIHJldHVy
biBSZWdpb24oKTsKKworICAgIHJldHVybiBtX3RpbGVyLT5vcGFxdWVSZWdpb25JbkxheWVyUmVj
dCh2aXNpYmxlTGF5ZXJSZWN0KCksIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSk7Cit9CisKIHZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpyZXNldFVwZGF0ZVN0YXRlKCkKIHsKICAgICAvLyBSZXNldCBt
X3VwZGF0ZVJlY3QgZm9yIGFsbCB0aWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5k
ZXggYzkzNmU2ZGVjNzQzMGY2YTM0MzU3MTg0NWEwZmMzZDk3NzYwZmVhMC4uYTdhNTEwOTBjNjJk
NmI1MmU2N2I3OTI5MDRjZjIyOTRhYzliNDlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmgKQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlc2VydmVU
ZXh0dXJlcygpOwogCisgICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSkgY29uc3Q7CisK
IHByb3RlY3RlZDoKICAgICBUaWxlZExheWVyQ2hyb21pdW0oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmgKaW5kZXggMmEyZDllODQ4NzRiNzMxYWYyNTg5N2Y1NTA5OGQwMzVlODlkOWViNS4uNzM1MzNl
ODdmMmI5Y2RjMjM2OTAzMjc2OWVmMjAyOWRjNGQ1MjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5o
CkBAIC0yMTUsNiArMjE1LDggQEAgcHVibGljOgogCiAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJJbXBsKiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2xheWVyQW5p
bWF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogCisgICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29u
dGVudHNSZWdpb24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5z
Zm9ybSkgY29uc3QgeyByZXR1cm4gUmVnaW9uKCk7IH07CisKICAgICAvLyBJbmRpY2F0ZXMgdGhh
dCB0aGUgY29udGV4dCBwcmV2aW91c2x5IHVzZWQgdG8gcmVuZGVyIHRoaXMgbGF5ZXIKICAgICAv
LyB3YXMgbG9zdCBhbmQgdGhhdCBhIG5ldyBvbmUgaGFzIGJlZW4gY3JlYXRlZC4gV29uJ3QgYmUg
Y2FsbGVkCiAgICAgLy8gdW50aWwgdGhlIG5ldyBjb250ZXh0IGhhcyBiZWVuIGNyZWF0ZWQgc3Vj
Y2Vzc2Z1bGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuY3BwCmluZGV4IGNmZWZi
ZDJiODAxZDIwNjkyNjg2NWMxMzU1Mjg2MmY2NDY0MDI4MjcuLjIwODdlM2E5YWI3OWEzM2FhMTAz
NGUwMzFjNGUzMjJhYTQzOWIzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0YS5j
cHAKQEAgLTMwLDYgKzMwLDkgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRhLmgi
CiAKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0x
MTIsNiArMTE1LDI2IEBAIEludFJlY3QgQ0NMYXllclRpbGluZ0RhdGE6OnRpbGVSZWN0KGNvbnN0
IFRpbGUqIHRpbGUpIGNvbnN0CiAgICAgcmV0dXJuIHRpbGVSZWN0OwogfQogCitSZWdpb24gQ0NM
YXllclRpbGluZ0RhdGE6Om9wYXF1ZVJlZ2lvbkluTGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9y
bSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogRG9uJ3QgbG9zZSBwaXhlbHMgd2l0aCB0aWxlIGJv
dW5kYXJpZXMgaW5zaWRlIHRoZW0uCisgICAgUmVnaW9uIG9wYXF1ZVJlZ2lvbjsKKyAgICBpbnQg
bGVmdCwgdG9wLCByaWdodCwgYm90dG9tOworICAgIGxheWVyUmVjdFRvVGlsZUluZGljZXMobGF5
ZXJSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAgIGZvciAoaW50IGogPSB0b3A7
IGogPD0gYm90dG9tOyArK2opIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmln
aHQ7ICsraSkgeworICAgICAgICAgICAgVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKKyAgICAg
ICAgICAgIGlmICh0aWxlKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCB0aWxlT3BhcXVlUmVj
dCA9IGludGVyc2VjdGlvbihsYXllclJlY3QsIHRpbGUtPm9wYXF1ZVJlY3QoKSk7CisgICAgICAg
ICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUXVhZCA9IGNvbnRlbnRTcGFjZVRyYW5zZm9y
bS5tYXBRdWFkKEZsb2F0UXVhZCh0aWxlT3BhcXVlUmVjdCkpOworICAgICAgICAgICAgICAgIEFT
U0VSVCh0cmFuc2Zvcm1lZFF1YWQuaXNSZWN0aWxpbmVhcigpKTsKKyAgICAgICAgICAgICAgICBv
cGFxdWVSZWdpb24udW5pdGUoZW5jbG9zZWRJbnRSZWN0KHRyYW5zZm9ybWVkUXVhZC5ib3VuZGlu
Z0JveCgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG9w
YXF1ZVJlZ2lvbjsKK30KKwogdm9pZCBDQ0xheWVyVGlsaW5nRGF0YTo6c2V0Qm91bmRzKGNvbnN0
IEludFNpemUmIHNpemUpCiB7CiAgICAgbV90aWxpbmdEYXRhLnNldFRvdGFsU2l6ZShzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmgKaW5k
ZXggODY5ZDQyZTE1YWM2MzBhNTMxZmI1M2Q0MmQ5NmQ0MDc2M2ZkODZlZS4uNDdkMWU1MzliMjRm
MWIzMTY1NWNhMWJhYzYzNzkwMzliNDUwNGRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5n
RGF0YS5oCkBAIC0zMCwxMiArMzAsMTQgQEAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiVGlsaW5nRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogY2xhc3MgQ0NMYXllclRp
bGluZ0RhdGEgewogcHVibGljOgpAQCAtNjksOSArNzEsMTMgQEAgcHVibGljOgogICAgICAgICBp
bnQgaSgpIGNvbnN0IHsgcmV0dXJuIG1faTsgfQogICAgICAgICBpbnQgaigpIGNvbnN0IHsgcmV0
dXJuIG1fajsgfQogICAgICAgICB2b2lkIG1vdmVUbyhpbnQgaSwgaW50IGopIHsgbV9pID0gaTsg
bV9qID0gajsgfQorCisgICAgICAgIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QoKSBjb25zdCB7
IHJldHVybiBtX29wYXF1ZVJlY3Q7IH0KKyAgICAgICAgdm9pZCBzZXRPcGFxdWVSZWN0KGNvbnN0
IEludFJlY3QmIG9wYXF1ZVJlY3QpIHsgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsgfQogICAg
IHByaXZhdGU6CiAgICAgICAgIGludCBtX2k7CiAgICAgICAgIGludCBtX2o7CisgICAgICAgIElu
dFJlY3QgbV9vcGFxdWVSZWN0OwogICAgIH07CiAgICAgLy8gRGVmYXVsdCBoYXNoIGtleSB0cmFp
dHMgZm9yIGludGVnZXJzIGRpc2FsbG93IDAgYW5kIC0xIGFzIGEga2V5LCBzbwogICAgIC8vIHVz
ZSBhIGN1c3RvbSBoYXNoIHRyYWl0IHdoaWNoIGRpc2FsbG93cyAtMSBhbmQgLTIgaW5zdGVhZC4K
QEAgLTk2LDYgKzEwMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxheWVyUmVjdFRvVGlsZUluZGlj
ZXMoY29uc3QgSW50UmVjdCYsIGludCAmbGVmdCwgaW50ICZ0b3AsIGludCAmcmlnaHQsIGludCAm
Ym90dG9tKSBjb25zdDsKICAgICBJbnRSZWN0IHRpbGVSZWN0KGNvbnN0IFRpbGUqKSBjb25zdDsK
IAorICAgIFJlZ2lvbiBvcGFxdWVSZWdpb25JbkxheWVyUmVjdChjb25zdCBJbnRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBjb25zdDsKKwogICAgIHZvaWQgcmVzZXQoKTsKIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggOGIzNGIxY2Fm
ZjFkYjE2M2VkZTNlOGI0YTE2NmY2YzAwNmQ5M2ZmYy4uYzc4MjRmNDJmNTUzYjc3MDc0YzAyMjZj
M2ZhNDM3NzBjMTk4NzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC01
NDAsNiArNTQwLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhj
b25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICB0eXBlZGVmIENDTGF5
ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4s
IFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0Jh
Y2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKICAgICBDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVz
aW9uVHJhY2tlcihJbnRSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKSk7CisgICAgb2Nj
bHVzaW9uVHJhY2tlci5zZXRVc2VQYWludFRyYWNraW5nKGZhbHNlKTsgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIHRvIHR1cm4gb24gcGFpbnQgdHJhY2tpbmcgZm9yIHBhaW50IGN1bGxpbmcKIAogICAg
IENDTGF5ZXJJdGVyYXRvclR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9
IGVuZDsgKytpdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKaW5kZXgg
NjU4NTQ1NGZmY2I3NjBlZDhkMWY1ZjNkM2E0OTJjMzc3ZTQzNjhjOC4uMjBkZmQ4OTc1NmRlNWQy
ZGZiYmJkNGYyMTMwNTg5NGIwMzhmMzJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRy
YWNrZXIuY3BwCkBAIC00Miw2ICs0Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwg
dHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVy
VHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qg
c2Npc3NvclJlY3RJblNjcmVlblNwYWNlKQogICAgIDogbV9zY2lzc29yUmVjdEluU2NyZWVuU3Bh
Y2Uoc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKQogICAgICwgbV9zdXJmYWNlRGFtYWdlQ2xpZW50
KDApCisgICAgLCBtX3VzZVBhaW50VHJhY2tpbmcodHJ1ZSkgLy8gRklYTUU6IFJlbW92ZSB0aGlz
IHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCiB7CiB9CiAKQEAg
LTQ5LDYgKzUwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5k
ZXJTdXJmYWNlVHlwZT4KIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZT46OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdElu
U2NyZWVuU3BhY2UsIGNvbnN0IERhbWFnZUNsaWVudFR5cGUqIHN1cmZhY2VEYW1hZ2VDbGllbnQp
CiAgICAgOiBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZShzY2lzc29yUmVjdEluU2NyZWVuU3Bh
Y2UpCiAgICAgLCBtX3N1cmZhY2VEYW1hZ2VDbGllbnQoc3VyZmFjZURhbWFnZUNsaWVudCkKKyAg
ICAsIG1fdXNlUGFpbnRUcmFja2luZyh0cnVlKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBw
YWludCB0cmFja2luZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KIHsKIH0KIApAQCAtMTg1LDcg
KzE4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvVGFy
Z2V0U3VyZmFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgUmVnaW9uIGNvbXB1dGVPY2NsdXNpb25CZWhpbmRM
YXllcihjb25zdCBMYXllclR5cGUqIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtKQorc3RhdGljIGlubGluZSBSZWdpb24gY29tcHV0ZU9jY2x1c2lvbkJlaGluZExh
eWVyKGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGJvb2wgdXNlUGFpbnRUcmFja2luZykKIHsKICAgICBSZWdpb24gb3BhcXVlUmVn
aW9uOwogCkBAIC0xOTYsNyArMTk4LDggQEAgc3RhdGljIGlubGluZSBSZWdpb24gY29tcHV0ZU9j
Y2x1c2lvbkJlaGluZExheWVyKGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IFQKIAogICAg
IGlmIChsYXllci0+b3BhcXVlKCkpCiAgICAgICAgIG9wYXF1ZVJlZ2lvbiA9IGVuY2xvc2VkSW50
UmVjdCh1bm9jY2x1ZGVkUXVhZC5ib3VuZGluZ0JveCgpKTsKLSAgICAvLyBGSVhNRTogQ2FwdHVy
ZSBvcGFxdWUgcGFpbnRzOiBlbHNlIG9wYXF1ZVJlZ2lvbiA9IGxheWVyLT5vcGFxdWVDb250ZW50
c1JlZ2lvbih0cmFuc2Zvcm0pOworICAgIGVsc2UgaWYgKHVzZVBhaW50VHJhY2tpbmcpIC8vIEZJ
WE1FOiBSZW1vdmUgdXNlUGFpbnRUcmFja2luZyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZv
ciBwYWludCBjdWxsaW5nLgorICAgICAgICBvcGFxdWVSZWdpb24gPSBsYXllci0+b3BhcXVlQ29u
dGVudHNSZWdpb24odHJhbnNmb3JtKTsKICAgICByZXR1cm4gb3BhcXVlUmVnaW9uOwogfQogCkBA
IC0yMTQsOCArMjE3LDkgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBjb250ZW50VG9TY3JlZW5TcGFjZSA9IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJh
bnNmb3JtPExheWVyVHlwZT4obGF5ZXIpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRl
bnRUb1RhcmdldFN1cmZhY2UgPSBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVy
VHlwZT4obGF5ZXIpOwogCi0gICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4udW5p
dGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRU
b1NjcmVlblNwYWNlKSk7Ci0gICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQudW5p
dGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRU
b1RhcmdldFN1cmZhY2UpKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIG1fdXNlUGFpbnRUcmFja2lu
ZyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5nLgorICAgIG1fc3Rh
Y2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLnVuaXRlKGNvbXB1dGVPY2NsdXNpb25CZWhpbmRM
YXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9TY3JlZW5TcGFjZSwgbV91c2VQYWludFRy
YWNraW5nKSk7CisgICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQudW5pdGUoY29t
cHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1Rhcmdl
dFN1cmZhY2UsIG1fdXNlUGFpbnRUcmFja2luZykpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
dGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250ZW50U3BhY2VUcmFuc2Zvcm0sIGNvbnN0IEludFJl
Y3QmIHNjaXNzb3JSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1c2lvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJh
Y2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NP
Y2NsdXNpb25UcmFja2VyLmgKaW5kZXggYjdjMGUzYjI4ZmMwNzMxM2FlNmUxMjBkZDkzYWQzNzZm
YmRjMGQ4Ny4uMTlmYzJjMWRkMGRhYzgyNTViNTY0MjgyNDMyNzgwM2IxMmFlZWUzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2Ns
dXNpb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgKQEAgLTc3LDYgKzc3LDkgQEAgcHVibGljOgog
ICAgIC8vIEdpdmVzIGFuIHVub2NjbHVkZWQgc3ViLXJlY3Qgb2YgfGNvbnRlbnRSZWN0fCBpbiB0
aGUgY29udGVudCBzcGFjZSBvZiB0aGUgbGF5ZXIuIFVzZWQgd2hlbiBjb25zaWRlcmluZyBvY2Ns
dXNpb24gZm9yIGEgbGF5ZXIgdGhhdCBwYWludHMvZHJhd3Mgc29tZXRoaW5nLgogICAgIEludFJl
Y3QgdW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnN0IExheWVyVHlwZSosIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0KSBjb25zdDsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHBh
aW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5nLgorICAgIHZvaWQgc2V0VXNlUGFp
bnRUcmFja2luZyhib29sIHVzZSkgeyBtX3VzZVBhaW50VHJhY2tpbmcgPSB1c2U7IH0KKwogICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgaW4gZnV0dXJlLCB0aGV5IGFyZSB0byBtYWtlIENMcyBm
b3IgdHJhbnNpdGlvbmluZyB0byB0aGlzIGVhc2llci4KICAgICBjb25zdCBSZWdpb24mIGN1cnJl
bnRPY2NsdXNpb25JblNjcmVlblNwYWNlKCkgY29uc3Q7CiAgICAgY29uc3QgUmVnaW9uJiBjdXJy
ZW50T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkgY29uc3Q7CkBAIC0xMDMsNiArMTA2LDcgQEAg
cHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBJbnRSZWN0IG1fc2Npc3NvclJlY3RJblNjcmVlblNw
YWNlOwogICAgIGNvbnN0IERhbWFnZUNsaWVudFR5cGUqIG1fc3VyZmFjZURhbWFnZUNsaWVudDsK
KyAgICBib29sIG1fdXNlUGFpbnRUcmFja2luZzsgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4g
cGFpbnQgdHJhY2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCiB9OwogCiB0eXBlZGVmIEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVt
PiBDQ09jY2x1c2lvblRyYWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmlu
ZGV4IDQ3ZDBhNzA4YzMyYzc2NWY4NTExODU2ZTRlMmYwZTgyNzAyMWEwODkuLjUxYjc1ZWFjYTc2
ZWUxZDlkMTYzNDBhM2Y1YWIyMTU0MTJlZjhiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuY3BwCkBAIC01MiwxNCArNTIsMTAgQEAgcHVibGljOgogICAgIFBsYXRmb3JtM0RPYmpl
Y3QgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KICAgICB2b2lkIHNl
dFRleHR1cmVJZChQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCkgeyBtX3RleHR1cmVJZCA9IHRl
eHR1cmVJZDsgfQogCi0gICAgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fb3BhcXVlUmVjdDsgfQotICAgIHZvaWQgc2V0T3BhcXVlUmVjdChjb25zdCBJbnRSZWN0
JiBvcGFxdWVSZWN0KSB7IG1fb3BhcXVlUmVjdCA9IG9wYXF1ZVJlY3Q7IH0KLQogcHJpdmF0ZToK
ICAgICBEcmF3YWJsZVRpbGUoKSA6IG1fdGV4dHVyZUlkKDApIHsgfQogCiAgICAgUGxhdGZvcm0z
RE9iamVjdCBtX3RleHR1cmVJZDsKLSAgICBJbnRSZWN0IG1fb3BhcXVlUmVjdDsKIH07CiAKIEND
VGlsZWRMYXllckltcGw6OkNDVGlsZWRMYXllckltcGwoaW50IGlkKQpAQCAtMjAzLDYgKzE5OSwx
NCBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OnB1c2hUaWxlUHJvcGVydGllcyhpbnQgaSwgaW50
IGosIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZQogICAgIHRpbGUtPnNldE9wYXF1ZVJlY3Qob3Bh
cXVlUmVjdCk7CiB9CiAKK1JlZ2lvbiBDQ1RpbGVkTGF5ZXJJbXBsOjpvcGFxdWVDb250ZW50c1Jl
Z2lvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudFNwYWNlVHJhbnNmb3JtKSBj
b25zdAoreworICAgIGlmIChtX3NraXBzRHJhdykKKyAgICAgICAgcmV0dXJuIFJlZ2lvbigpOwor
CisgICAgcmV0dXJuIG1fdGlsZXItPm9wYXF1ZVJlZ2lvbkluTGF5ZXJSZWN0KHZpc2libGVMYXll
clJlY3QoKSwgY29udGVudFNwYWNlVHJhbnNmb3JtKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5oCmluZGV4IDdlNjM3Y2ZmYjRjYzdiZjdiZGFhZjlkNjA5YmQyYTM1
NjE0OWZmMDMuLmE3YjZmM2UyYzAwNTczODU2MGQxYjkxYTM5YjkxM2IwNTExMTUzNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Q29udGVudHNTd2l6emxlZChib29sIGNvbnRlbnRzU3dpenpsZWQpIHsgbV9jb250
ZW50c1N3aXp6bGVkID0gY29udGVudHNTd2l6emxlZDsgfQogICAgIGJvb2wgY29udGVudHNTd2l6
emxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTd2l6emxlZDsgfQogCisgICAgdmlydHVh
bCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGNvbnRlbnRTcGFjZVRyYW5zZm9ybSkgY29uc3Q7CisKICAgICB0eXBlZGVmIFByb2dyYW1CaW5k
aW5nPFZlcnRleFNoYWRlclRpbGUsIEZyYWdtZW50U2hhZGVyUkdCQVRleEFscGhhPiBQcm9ncmFt
OwogICAgIC8vIFNoYWRlciBwcm9ncmFtIHRoYXQgc3dhcHMgcmVkIGFuZCBibHVlIGNvbXBvbmVu
dHMgb2YgdGV4dHVyZS4KICAgICAvLyBVc2VkIHdoZW4gdGV4dHVyZSBmb3JtYXQgZG9lcyBub3Qg
bWF0Y2ggbmF0aXZlIGNvbG9yIGZvcm1hdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCmluZGV4IDc2NWI0OTFhYzU2
OWJlZDE3MDM3ODAxNjIyNzk2MmVlNzNhM2ZmYmMuLmZjOGQyZTQ1ZWUzYjEwNzkwZThlMmI5ZWI4
ZWQwMWRmY2E3YmNlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcApAQCAtNDUsMTYgKzQ1LDYgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7CiAKLXZvaWQgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQotewotICAgIGxheWVyLT5z
ZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0o
c3VibGF5ZXJUcmFuc2Zvcm0pOwotICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChhbmNob3IpOwot
ICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgbGF5ZXItPnNldEJvdW5kcyhi
b3VuZHMpOwotICAgIGxheWVyLT5zZXRPcGFxdWUob3BhcXVlKTsKLX0KLQogY2xhc3MgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBw
dWJsaWM6CiAgICAgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKQpAQCAtNjMs
OCArNTMsNDEgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29u
dGVudHNSZWdpb24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5z
Zm9ybSkgY29uc3QKKyAgICB7CisgICAgICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZFJlY3QgPSBj
b250ZW50U3BhY2VUcmFuc2Zvcm0ubWFwUmVjdChGbG9hdFJlY3QoaW50ZXJzZWN0aW9uKG1fb3Bh
cXVlUGFpbnRSZWN0LCB2aXNpYmxlTGF5ZXJSZWN0KCkpKSk7CisgICAgICAgIHJldHVybiBSZWdp
b24oZW5jbG9zZWRJbnRSZWN0KHRyYW5zZm9ybWVkUmVjdCkpOworICAgIH0KKworICAgIHZvaWQg
c2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVBhaW50UmVjdCkgeyBtX29w
YXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVjdDsgfQorCitwcml2YXRlOgorICAgIEludFJl
Y3QgbV9vcGFxdWVQYWludFJlY3Q7CiB9OwogCit2b2lkIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3Vu
ZHMpCit7CisgICAgbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIGxheWVyLT5z
ZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBsYXllci0+
c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgbGF5ZXItPnNldFBvc2l0aW9u
KHBvc2l0aW9uKTsKKyAgICBsYXllci0+c2V0Qm91bmRzKGJvdW5kcyk7Cit9CisKK3ZvaWQgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudCogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVl
LCBib29sIG9wYXF1ZUxheWVycykKK3sKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGxheWVyLCB0cmFuc2Zvcm0sIHBvc2l0aW9uLCBib3VuZHMpOworICAgIGlmIChvcGFxdWVMYXll
cnMpCisgICAgICAgIGxheWVyLT5zZXRPcGFxdWUob3BhcXVlKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgbGF5ZXItPnNldE9wYXF1ZShmYWxzZSk7CisgICAgICAgIGlmIChvcGFxdWUpCisgICAgICAg
ICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYm91bmRz
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3Qo
SW50UmVjdCgpKTsKKyAgICB9Cit9CisKIC8vIEEgc3ViY2xhc3MgdG8gZXhwb3NlIHRoZSB0b3Rh
bCBjdXJyZW50IG9jY2x1c2lvbi4KIGNsYXNzIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgOiBwdWJs
aWMgQ0NPY2NsdXNpb25UcmFja2VyIHsKIHB1YmxpYzoKQEAgLTExMCw3ICsxMzMsMTcgQEAgcHJp
dmF0ZToKICAgICBGbG9hdFJlY3QgbV9kYW1hZ2VSZWN0OwogfTsKIAotVEVTVChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbikKKyNkZWZpbmUgVEVTVF9P
UEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKEZVTExURVNUTkFNRSwgU0hPUlRURVNUTkFNRSkgXAor
ICAgIFRFU1QoRlVMTFRFU1ROQU1FLCBvcGFxdWVMYXllcikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgU0hPUlRURVNUTkFNRSh0cnVlKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgVEVTVChGVUxMVEVTVE5BTUUsIG9wYXF1ZVBhaW50UmVjdCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBTSE9SVFRFU1ROQU1FKGZhbHNlKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCit2b2lkIGxh
eWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIC8vIFRo
aXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KICAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKQEAgLTExOSw4ICsxNTIs
OCBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVn
aW9uKQogICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIHBhcmVudC0+YWRk
Q2hpbGQobGF5ZXIpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1
MDAsIDUwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBv
cGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRl
clN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1
bW15TGF5ZXJMaXN0OwpAQCAtMTY3LDcgKzIwMCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24pCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyOSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSkpOwogfQogCi1URVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uKQor
VEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5
ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24sIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uKTsKKwor
dm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbihib29sIG9wYXF1ZUxh
eWVycykKIHsKICAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJl
IGJlaW5nIHVzZWQuCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRy
aXg7CkBAIC0xODEsOCArMjE2LDggQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXll
ckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbikKICAgICBsYXllclRyYW5zZm9ybS5y
b3RhdGUoOTApOwogICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsK
KyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQ
b2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAog
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAg
LTIyOSw3ICsyNjQsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRU
b09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uKQogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MjksIDMxLCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgyOSwgMzEsIDcwLCA3MCkpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRy
YWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlvbikKK1RF
U1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVy
QWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uLCBsYXllckFkZGVkVG9PY2NsdWRlZFJl
Z2lvbldpdGhSb3RhdGlvbik7CisKK3ZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRo
VHJhbnNsYXRpb24oYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAgICAgLy8gVGhpcyB0ZXN0cyB0aGF0
IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgogICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwpAQCAtMjQxLDggKzI3OCw4IEBAIFRFU1QoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNs
YXRpb24pCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CiAgICAgbGF5
ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDIwLCAyMCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFs
c2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVy
VHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgz
MCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1
MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CkBAIC0zMDEsNyArMzM4LDkgQEAgVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFu
c2xhdGlvbikKICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFk
ZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZSkKK1RFU1RfT1BBUVVFX0FORF9Q
QUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVk
UmVnaW9uV2l0aFRyYW5zbGF0aW9uLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFu
c2xhdGlvbik7CisKK3ZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1
cmZhY2UoYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSBy
aWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OwpAQCAtMzE3LDkgKzM1Niw5IEBAIFRFU1QoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZh
Y2UpCiAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICBjaGlsZFRyYW5zZm9ybS50
cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCksIGNoaWxkVHJhbnNmb3Jt
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJ
bnRTaXplKDUwMCwgNTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Cisg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9p
bnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCks
IEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgY2hpbGQtPnNl
dE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAKQEAgLTQwOCw3ICs0NDcsOSBAQCBURVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJm
YWNlKQogICAgICAqLwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRk
ZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJlYWR5T25TdGFjaykKK1RFU1RfT1BBUVVF
X0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09j
Y2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJmYWNlLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lv
bldpdGhSb3RhdGVkU3VyZmFjZSk7CisKK3ZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25X
aXRoU3VyZmFjZUFscmVhZHlPblN0YWNrKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIC8vIFRo
aXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KICAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKQEAgLTQyNiwxMyArNDY3
LDEzIEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRS
ZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrCiAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRl
KDkwKTsKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
Y2hpbGQuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgZmFsc2UpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgMTApLCBJ
bnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQo
KSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkp
OworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFx
dWVMYXllcnMpOwogCiAgICAgLy8gfGNoaWxkMnwgbWFrZXMgfHBhcmVudHwncyBzdXJmYWNlIGdl
dCBjb25zaWRlcmVkIGJ5IENDT2NjbHVzaW9uVHJhY2tlciBmaXJzdCwgaW5zdGVhZCBvZiB8Y2hp
bGR8J3MuIFRoaXMgZXhlcmNpc2VzIGRpZmZlcmVudCBjb2RlIGluCiAgICAgLy8gbGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UsIGFzIHRoZSB0YXJnZXQgc3VyZmFjZSBoYXMgYWxyZWFkeSBiZWVu
IHNlZW4uCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2lu
dCgzMCwgMzApLCBJbnRTaXplKDYwLCAyMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwg
MzApLCBJbnRTaXplKDYwLCAyMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBjaGlsZC0+
c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKIApAQCAtNTc0LDcgKzYxNSw5IEBAIFRFU1QoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFs
cmVhZHlPblN0YWNrCiAgICAgICovCiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwg
bGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKQorVEVT
VF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJB
ZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrLCBsYXllckFkZGVk
VG9PY2NsdWRlZFJlZ2lvbldpdGhTdXJmYWNlQWxyZWFkeU9uU3RhY2spOworCit2b2lkIGxheWVy
QWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRPZmZBeGlzU3VyZmFjZShib29sIG9wYXF1
ZUxheWVycykKIHsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJp
eDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7CkBAIC01OTUsOSArNjM4LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBs
YXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZhY2UKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKICAgICBsYXllclRyYW5zZm9ybS50
cmFuc2xhdGUoMTAsIDEwKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFy
ZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNp
emUoNTAwLCA1MDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAs
IDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIGNoaWxkLT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpOwogCkBAIC02NTYsNyArNjk5LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZh
Y2UKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDc1LCA1NSwgMSwgMSksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDc1LCA1NSwgMSwgMSkp
KTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRl
ZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycykKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVE
X09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9u
V2l0aFJvdGF0ZWRPZmZBeGlzU3VyZmFjZSwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRo
Um90YXRlZE9mZkF4aXNTdXJmYWNlKTsKKwordm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lv
bldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycyhib29sIG9wYXF1ZUxheWVycykKIHsKICAgICAvLyBU
aGlzIGlzIHNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QgYnV0IG5vdyB3ZSBtYWtlIGEgZmV3
IG9wYXF1ZSBsYXllcnMgaW5zaWRlIG9mIHxjaGlsZHwgc28gdGhhdCB0aGUgb2NjbHVkZWQgcGFy
dHMgb2YgY2hpbGQgYXJlIG5vdCBhIHNpbXBsZSByZWN0LgogICAgIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwpAQCAtNjc0LDEwICs3MTksMTAgQEAgVEVTVChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBs
ZU9wYXF1ZUxheWVycykKICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwogICAgIGNoaWxk
VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBm
YWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hp
bGRUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50
KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNDQw
KSwgdHJ1ZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQ
b2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1MDAsIDYwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50
U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIx
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwg
NDQwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDQ1MCksIElu
dFNpemUoNTAwLCA2MCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBjaGlsZC0+c2V0TWFz
a3NUb0JvdW5kcyh0cnVlKTsKIApAQCAtNzYwLDcgKzgwNSw5IEBAIFRFU1QoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoTXVsdGlwbGVPcGFxdWVM
YXllcnMpCiAgICAgICovCiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc3VyZmFj
ZU9jY2x1c2lvbldpdGhPdmVybGFwcGluZ1NpYmxpbmdTdXJmYWNlcykKK1RFU1RfT1BBUVVFX0FO
RF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1
ZGVkUmVnaW9uV2l0aE11bHRpcGxlT3BhcXVlTGF5ZXJzLCBsYXllckFkZGVkVG9PY2NsdWRlZFJl
Z2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycyk7CisKK3ZvaWQgc3VyZmFjZU9jY2x1c2lvbldp
dGhPdmVybGFwcGluZ1NpYmxpbmdTdXJmYWNlcyhib29sIG9wYXF1ZUxheWVycykKIHsKICAgICAv
LyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCiAg
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CkBAIC03ODAsMTEg
KzgyNywxMSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHN1cmZhY2VPY2NsdXNpb25X
aXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3VyZmFjZXMpCiAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRl
KDkwKTsKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
Y2hpbGQxLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIGZhbHNlKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDUwMCwgNTAwKSwgZmFsc2UpOwot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMS5n
ZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUw
MCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9w
YXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0
KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoNTAwLCA1MDAp
KTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFx
dWVMYXllcnMpOwogCiAgICAgY2hpbGQxLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogICAgIGNo
aWxkMi0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKQEAgLTg3OCw3ICs5MjUsOSBAQCBURVNUKEND
T2NjbHVzaW9uVHJhY2tlclRlc3QsIHN1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJs
aW5nU3VyZmFjZXMpCiAgICAgICovCiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwg
c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2UpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9P
UEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBw
aW5nU2libGluZ1N1cmZhY2VzLCBzdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGlu
Z1N1cmZhY2VzKTsKKwordm9pZCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZShib29sIG9w
YXF1ZUxheWVycykKIHsKICAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9y
bXMgYXJlIGJlaW5nIHVzZWQuCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7CkBAIC04OTksMTEgKzk0OCwxMSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRl
c3QsIHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlKQogICAgIGNoaWxkVHJhbnNmb3JtLnRy
YW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAogICAgIC8vIFRoZSBvd25pbmcgbGF5ZXJzIGhhdmUgdmVy
eSBkaWZmZXJlbnQgYm91bmRzIGZyb20gdGhlIHN1cmZhY2VzIHRoYXQgdGhleSBvd24uCi0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGNoaWxkMS5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoMTAsIDEwKSwgZmFsc2UpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoLTEwLCAtMTAp
LCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDEwLCAxMCksIGZhbHNlKTsK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KC0xMCwg
LTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hp
bGQxLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDEw
LCAxMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0
cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hp
bGQyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDEw
LCAxMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0
cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgLy8gTWFrZSB0aGVtIGJvdGggcmVuZGVyIHN1cmZh
Y2VzCiAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwpAQCAtMTAxMCw3ICsxMDU5LDkgQEAg
VEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSkKICAgICAgKi8KIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzdXJmYWNlT2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9ybXMpCitURVNUX09QQVFVRV9BTkRf
UEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSwgc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2UpOworCit2b2lkIHN1cmZh
Y2VPY2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3Jtcyhib29sIG9wYXF1ZUxh
eWVycykKIHsKICAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJl
IGJlaW5nIHVzZWQuCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRy
aXg7CkBAIC0xMDM2LDExICsxMDg3LDExIEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwg
c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zKQogICAgIGNo
aWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKICAgICAvLyBUaGUgb3duaW5n
IGxheWVycyBoYXZlIHZlcnkgZGlmZmVyZW50IGJvdW5kcyBmcm9tIHRoZSBzdXJmYWNlcyB0aGF0
IHRoZXkgb3duLgotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0KCksIGNoaWxkMVRyYW5zZm9ybSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDIwKSwgSW50U2l6ZSgxMCwg
MTApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxv
YXRQb2ludCgtMTAsIC0yMCksIEludFNpemUoNTEwLCA1MjApLCB0cnVlKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgY2hpbGQyVHJhbnNmb3JtLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXpl
KDEwLCAxMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
Mi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOworICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcoY2hpbGQxLmdldCgpLCBjaGlsZDFUcmFuc2Zvcm0sIEZsb2F0UG9pbnQo
MzAsIDIwKSwgSW50U2l6ZSgxMCwgMTApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMjApLCBJ
bnRTaXplKDUxMCwgNTIwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgY2hpbGQyVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwg
SW50U2l6ZSg1MTAsIDUxMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICAvLyBNYWtlIHRo
ZW0gYm90aCByZW5kZXIgc3VyZmFjZXMKICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CkBA
IC0xMTM1LDcgKzExODYsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHN1cmZhY2VP
Y2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3JtcykKICAgICAgKi8KIH0KIAot
VEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBvY2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0
ZXJzKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRl
c3Rfc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zLCBzdXJm
YWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9ybXMpOworCit2b2lkIG9j
Y2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMoYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAgICAg
Ly8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgog
ICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwpAQCAtMTE1Mywx
MCArMTIwNiwxMCBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIG9jY2x1c2lvbkludGVy
YWN0aW9uV2l0aEZpbHRlcnMpCiAgICAgbGF5ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICBs
YXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAw
KSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoYmx1ckxheWVyLmdl
dCgpLCBsYXllclRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZs
b2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3Rpbmcob3BhcXVlTGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRT
aXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhv
cGFjaXR5TGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhibHVyTGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBG
bG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMp
OworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmcob3BhcXVlTGF5ZXIuZ2V0KCksIGxh
eWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVl
LCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmcob3BhY2l0
eUxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXpl
KDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIHsKICAgICAgICAgRmlsdGVy
T3BlcmF0aW9ucyBmaWx0ZXJzOwpAQCAtMTIzOSw3ICsxMjkyLDkgQEAgVEVTVChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0LCBvY2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0ZXJzKQogICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllclNjaXNzb3JSZWN0
T3ZlclRpbGUpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdF9vY2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0ZXJzLCBvY2NsdXNpb25JbnRlcmFj
dGlvbldpdGhGaWx0ZXJzKTsKKwordm9pZCBsYXllclNjaXNzb3JSZWN0T3ZlclRpbGUoYm9vbCBv
cGFxdWVMYXllcnMpCiB7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlN
YXRyaXg7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwpAQCAtMTI1NCw5ICsxMzA5LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0LCBsYXllclNjaXNzb3JSZWN0T3ZlclRpbGUpCiAgICAgcGFyZW50TGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7CiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFy
ZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTEzMDIsNyArMTM1Nyw5IEBAIFRF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlKQogICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDAp
KSk7CiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Npc3NvclJlY3RP
dmVyVGlsZSkKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVyVGlsZSwgbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxl
KTsKKwordm9pZCBzY3JlZW5TY2lzc29yUmVjdE92ZXJUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQog
ewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAg
LTEzMTcsOSArMTM3NCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Np
c3NvclJlY3RPdmVyVGlsZSkKICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsK
ICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBm
YWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIw
MCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwor
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9w
YXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0
cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTM2Nyw3ICsxNDI0LDkgQEAgVEVTVChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0LCBzY3JlZW5TY2lzc29yUmVjdE92ZXJUaWxlKQogICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CiB9CiAKLVRF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxl
KQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rf
c2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSwgc2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSk7CisK
K3ZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQog
ewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAg
LTEzODIsOSArMTQ0MSw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lz
c29yUmVjdE92ZXJDdWxsZWRUaWxlKQogICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRl
cnMpOwogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIw
MCwgMjAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxz
ZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIw
MCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CkBAIC0xNDI1LDcgKzE0ODQsOSBAQCBURVNUKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3QsIGxheWVyU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSkKICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7CiB9CiAKLVRFU1QoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdCwgc2NyZWVuU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSkKK1RFU1RfT1BB
UVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3Nv
clJlY3RPdmVyQ3VsbGVkVGlsZSwgbGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKTsKKwor
dm9pZCBzY3JlZW5TY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQog
ewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAg
LTE0NDAsOSArMTUwMSw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Np
c3NvclJlY3RPdmVyQ3VsbGVkVGlsZSkKICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAz
MDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXll
ci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgy
MDAsIDIwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFs
c2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXll
ci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAy
MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTQ4Miw3ICsxNTQzLDkgQEAgVEVTVChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0LCBzY3JlZW5TY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKQogICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKIH0KIAotVEVTVChDQ09jY2x1
c2lvblRyYWNrZXJUZXN0LCBsYXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcykKK1RFU1Rf
T1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNj
aXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUsIHNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUp
OworCit2b2lkIGxheWVyU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5
ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owog
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKQEAgLTE0OTcsOSArMTU2MCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5
ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpCiAgICAgcGFyZW50TGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7CiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFy
ZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTE1NDQsNyArMTYwNyw5IEBAIFRF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGls
ZXMpCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzY3JlZW5T
Y2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFR
VUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxl
cywgbGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpOworCit2b2lkIHNjcmVlblNjaXNz
b3JSZWN0T3ZlclBhcnRpYWxUaWxlcyhib29sIG9wYXF1ZUxheWVycykKIHsKICAgICBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC0xNTU5LDkgKzE2MjQs
OSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBh
cnRpYWxUaWxlcykKICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICBs
YXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRy
dWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxh
eWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBv
cGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRl
clN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1
bW15TGF5ZXJMaXN0OwpAQCAtMTYwNSw3ICsxNjcwLDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0LCBzY3JlZW5TY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpCiAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKIH0K
IAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllclNjaXNzb3JSZWN0T3Zlck5vVGls
ZXMpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dF9zY3JlZW5TY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMsIHNjcmVlblNjaXNzb3JSZWN0T3Zl
clBhcnRpYWxUaWxlcyk7CisKK3ZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKGJvb2wg
b3BhcXVlTGF5ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5
TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKQEAgLTE2MjAsOSArMTY4Nyw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdCwgbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKQogICAgIHBhcmVudExheWVyLT5zZXRG
aWx0ZXJzKGZpbHRlcnMpOwogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CkBAIC0xNjY3LDcgKzE3MzQsOSBA
QCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyU2Npc3NvclJlY3RPdmVyTm9UaWxl
cykKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwogfQogCi1U
RVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHNjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMp
CitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9s
YXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMsIGxheWVyU2Npc3NvclJlY3RPdmVyTm9UaWxlcyk7
CisKK3ZvaWQgc2NyZWVuU2Npc3NvclJlY3RPdmVyTm9UaWxlcyhib29sIG9wYXF1ZUxheWVycykK
IHsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBA
IC0xNjgyLDkgKzE3NTEsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHNjcmVlblNj
aXNzb3JSZWN0T3Zlck5vVGlsZXMpCiAgICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cyk7CiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAw
LCAyMDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
KTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNl
LCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTE3MjgsNyArMTc5Nyw5IEBAIFRFU1QoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Npc3NvclJlY3RPdmVyTm9UaWxlcykKICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwogfQogCi1URVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3QsIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbikKK1RFU1Rf
T1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNj
aXNzb3JSZWN0T3Zlck5vVGlsZXMsIHNjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpOworCit2
b2lkIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbihib29sIG9wYXF1ZUxheWVycykK
IHsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBA
IC0xNzQzLDkgKzE4MTQsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyU2Np
c3NvclJlY3RGb3JMYXllck9mZk9yaWdpbikKICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMDAsIDEwMCksIElu
dFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwMCwgMTAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CkBAIC0xNzcwLDcgKzE4NDEsOSBA
QCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9m
Zk9yaWdpbikKICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRy
YWNrZXJUZXN0LCBkYW1hZ2VSZWN0T3ZlclRpbGUpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9P
UEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZP
cmlnaW4sIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbik7CisKK3ZvaWQgZGFtYWdl
UmVjdE92ZXJUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJl
bnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE3ODUsOSArMTg1OCw5IEBAIFRFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJUaWxlKQogICAgIHBhcmVudExh
eWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMp
OwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
LCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CkBAIC0xODE5LDcg
KzE4OTIsNyBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGRhbWFnZVJlY3RPdmVyVGls
ZSkKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CiAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CiAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKQEAgLTE4
MzEsNyArMTkwNCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFtYWdlUmVjdE92
ZXJUaWxlKQogICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwg
MCwgMzAwLCAzMDApKSk7CiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFtYWdl
UmVjdE92ZXJDdWxsZWRUaWxlKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJUaWxlLCBkYW1hZ2VSZWN0T3ZlclRpbGUp
OworCit2b2lkIGRhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZShib29sIG9wYXF1ZUxheWVycykKIHsK
ICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC0x
ODQ2LDkgKzE5MjEsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGRhbWFnZVJlY3RP
dmVyQ3VsbGVkVGlsZSkKICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAg
ICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxz
ZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCks
IHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1
ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVl
LCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJl
bmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTg4OSw3ICsxOTY0LDkgQEAgVEVTVChDQ09jY2x1c2lvblRy
YWNrZXJUZXN0LCBkYW1hZ2VSZWN0T3ZlckN1bGxlZFRpbGUpCiAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwg
MzAwLCAzMDApKS5pc0VtcHR5KCkpOwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3Qs
IGRhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BB
UVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlLCBkYW1h
Z2VSZWN0T3ZlckN1bGxlZFRpbGUpOworCit2b2lkIGRhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVz
KGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKQEAgLTE5MDQsOSArMTk4MSw5IEBAIFRFU1QoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMpCiAgICAgcGFyZW50TGF5ZXIt
PnNldEZpbHRlcnMoZmlsdGVycyk7CiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZh
bHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTE5NTEsNyArMjAy
OCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJQYXJ0aWFs
VGlsZXMpCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwg
MjAwLCAxMDAsIDEwMCkpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBkYW1h
Z2VSZWN0T3Zlck5vVGlsZXMpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3ZlclBhcnRpYWxUaWxlcywgZGFtYWdlUmVjdE92
ZXJQYXJ0aWFsVGlsZXMpOworCit2b2lkIGRhbWFnZVJlY3RPdmVyTm9UaWxlcyhib29sIG9wYXF1
ZUxheWVycykKIHsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJp
eDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7CkBAIC0xOTY2LDkgKzIwNDUsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3Qs
IGRhbWFnZVJlY3RPdmVyTm9UaWxlcykKICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAz
MDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXll
ci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgy
MDAsIDIwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFs
c2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXll
ci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAy
MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMjAxMyw0ICsyMDkyLDEyMiBAQCBURVNUKEND
T2NjbHVzaW9uVHJhY2tlclRlc3QsIGRhbWFnZVJlY3RPdmVyTm9UaWxlcykKICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVj
dCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwogfQogCitURVNUX09QQVFVRV9BTkRf
UEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3Zlck5vVGls
ZXMsIGRhbWFnZVJlY3RPdmVyTm9UaWxlcyk7CisKK1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dCwgb3BhcXVlQ29udGVudHNSZWdpb25FbXB0eSkKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2Uo
KTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKworICAgIEZpbHRlck9wZXJhdGlvbnMg
ZmlsdGVyczsKKyAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZ
U0NBTEUpKTsKKyAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKworICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDIwMCwgMjAwKSwgZmFsc2UsIGZhbHNlKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJl
U2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVj
dChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBwYXJl
bnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMo
KSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisKKyAgICBD
Q0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0
dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAw
LCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAx
MDApKSk7CisKKyAgICAvLyBPY2NsdWRlZCBzaW5jZSBpdHMgb3V0c2lkZSB0aGUgc3VyZmFjZSBi
b3VuZHMuCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJ
bnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgIC8vIFRlc3Qgd2l0aG91dCBhbnkg
c2Npc3NvcnMuCisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgb2NjbHVzaW9uLnVz
ZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpLmlzRW1wdHkoKSk7Cisg
ICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKK30KKworVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBvcGFxdWVDb250
ZW50c1JlZ2lvbk5vbkVtcHR5KQoreworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBh
cmVudC0+YWRkQ2hpbGQobGF5ZXIpOworCisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgZmFsc2UsIGZhbHNlKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKwor
ICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCks
IHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAg
ICB7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOworICAgICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKworICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwg
MTAwLCAxMDApKSk7CisgICAgfQorCisgICAgeworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgbGF5ZXIt
PnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KDIwLCAyMCwgMTgwLCAxODApKTsKKworICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdl
dCgpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEyMCwgMTIwLCAxODAsIDE4
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgfQorCisgICAgewor
ICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKKyAgICAgICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KDE1
MCwgMTUwLCAxMDAsIDEwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworCisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjUwLCAyNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEw
MCwgMTAwKSkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4
IDBkZGFlY2E0MmMwN2EzNDhhZDcwN2M3YmNhZjAwNGYxMDdkZTZmYWMuLjA4NDJiY2Q4YjNlYzQy
YzU1NzI1ZTA3ZTg5MjNiOTA2NzBkNTgwNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtOTU3LDQgKzk1
Nyw3NiBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2Ns
dXNpb25BbmRTY2FsaW5nKQogICAgIEVYUEVDVF9FUSg5LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogfQogCitURVNUKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKQoreworICAgIE93blB0cjxUZXh0dXJl
TWFuYWdlcj4gdGV4dHVyZU1hbmFnZXIgPSBUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDQqMTAyNCox
MDI0LCAyKjEwMjQqMTAyNCwgMTAyNCk7CisgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21p
dW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0odGV4dHVyZU1h
bmFnZXIuZ2V0KCkpKTsKKworICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhp
cyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGluIHZhcmlvdXMgd2F5cy4K
KworICAgIEludFJlY3Qgb3BhcXVlUGFpbnRSZWN0OworICAgIFJlZ2lvbiBvcGFxdWVDb250ZW50
czsKKyAgICBSZWdpb24gbm9PY2NsdXNpb247CisKKyAgICBJbnRSZWN0IGNvbnRlbnRCb3VuZHMg
PSBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKTsKKyAgICBJbnRSZWN0IHZpc2libGVCb3VuZHMgPSBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTUwKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKKworICAgIGxheWVyLT5zZXRCb3VuZHMoY29udGVudEJvdW5kcy5zaXplKCkpOwor
ICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVCb3VuZHMpOworICAgIGxheWVy
LT5zZXREcmF3T3BhY2l0eSgxKTsKKworICAgIC8vIElmIHRoZSBsYXllciBkb2Vzbid0IHBhaW50
IG9wYXF1ZSBjb250ZW50LCB0aGVuIHRoZSBvcGFxdWVDb250ZW50c1JlZ2lvbiBzaG91bGQgYmUg
ZW1wdHkuCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBh
aW50UmVjdChvcGFxdWVQYWludFJlY3QpOworICAgIGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250
ZW50Qm91bmRzKTsKKyAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5v
T2NjbHVzaW9uKTsKKyAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1Jl
Z2lvbihpZGVudGl0eU1hdHJpeCk7CisgICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGVudHMuaXNF
bXB0eSgpKTsKKworICAgIC8vIG9wYXF1ZUNvbnRlbnRzUmVnaW9uIHNob3VsZCBtYXRjaCB0aGUg
dmlzaWJsZSBwYXJ0IG9mIHdoYXQgaXMgcGFpbnRlZCBvcGFxdWUuCisgICAgb3BhcXVlUGFpbnRS
ZWN0ID0gSW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKKyAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVU
b1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CisgICAgb3BhcXVlQ29udGVudHMg
PSBsYXllci0+b3BhcXVlQ29udGVudHNSZWdpb24oaWRlbnRpdHlNYXRyaXgpOworICAgIEVYUEVD
VF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBv
cGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVDb250ZW50
cy5yZWN0cygpLnNpemUoKSk7CisKKyAgICAvLyBJZiB3ZSBwYWludCBhZ2FpbiB3aXRob3V0IGlu
dmFsaWRhdGluZywgdGhlIHNhbWUgc3R1ZmYgc2hvdWxkIGJlIG9wYXF1ZS4KKyAgICBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7
CisgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7
CisgICAgb3BhcXVlQ29udGVudHMgPSBsYXllci0+b3BhcXVlQ29udGVudHNSZWdpb24oaWRlbnRp
dHlNYXRyaXgpOworICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJl
Y3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CisgICAgRVhQRUNU
X0VRKDF1LCBvcGFxdWVDb250ZW50cy5yZWN0cygpLnNpemUoKSk7CisKKyAgICAvLyBJZiB3ZSBy
ZXBhaW50IGEgbm9uLW9wYXF1ZSBwYXJ0IG9mIHRoZSB0aWxlLCB0aGVuIGl0IHNob3VsZG4ndCBs
b3NlIGl0cyBvcGFxdWUtbmVzcy4gQW5kIG90aGVyIHRpbGVzIHNob3VsZAorICAgIC8vIG5vdCBi
ZSBhZmZlY3RlZC4KKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3Bh
cXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CisgICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KEludFJl
Y3QoMCwgMCwgMSwgMSkpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5k
cywgbm9PY2NsdXNpb24pOworICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRl
bnRzUmVnaW9uKGlkZW50aXR5TWF0cml4KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNlY3Rp
b24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91bmRz
KCkpOworICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOwor
CisgICAgLy8gSWYgd2UgcmVwYWludCBhbiBvcGFxdWUgcGFydCBvZiB0aGUgdGlsZSwgdGhlbiBp
dCBzaG91bGQgbG9zZSBpdHMgb3BhcXVlLW5lc3MuIEJ1dCBvdGhlciB0aWxlcyBzaG91bGQgc3Rp
bGwKKyAgICAvLyBub3QgYmUgYWZmZWN0ZWQuCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOworICAgIGxheWVyLT5pbnZh
bGlkYXRlUmVjdChJbnRSZWN0KDEwLCAxMCwgMSwgMSkpOworICAgIGxheWVyLT5wcmVwYXJlVG9V
cGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOworICAgIG9wYXF1ZUNvbnRlbnRzID0g
bGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKGlkZW50aXR5TWF0cml4KTsKKyAgICBFWFBFQ1Rf
RVFfUkVDVChpbnRlcnNlY3Rpb24oSW50UmVjdCgxMCwgMTAwLCA5MCwgMTAwKSwgdmlzaWJsZUJv
dW5kcyksIG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9wYXF1
ZUNvbnRlbnRzLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgIC8vIEEgdHJhbnNmb3JtIHNob3VsZCBj
aGFuZ2Ugd2hhdCBpcyBnaXZlbiBiYWNrIGFzIHRoZSBvcGFxdWVDb250ZW50c1JlZ2lvbi4KKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgdHJhbnNmb3JtLnJvdGF0ZSg5
MCk7CisgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgxMCwgMTApOworICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsK
KyAgICBsYXllci0+aW52YWxpZGF0ZVJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKKyAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMsIG5vT2NjbHVzaW9uKTsKKyAgICBvcGFxdWVD
b250ZW50cyA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbih0cmFuc2Zvcm0pOworICAgIEVY
UEVDVF9FUV9SRUNUKHRyYW5zZm9ybS5tYXBSZWN0KGludGVyc2VjdGlvbihvcGFxdWVQYWludFJl
Y3QsIHZpc2libGVCb3VuZHMpKSwgb3BhcXVlQ29udGVudHMuYm91bmRzKCkpOworICAgIEVYUEVD
VF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131051</attachid>
            <date>2012-03-09 10:06:28 -0800</date>
            <delta_ts>2012-03-09 12:23:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80173-20120309130627.patch</filename>
            <type>text/plain</type>
            <size>73633</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDA2NGUwMDIwYmUxMmYw
ZTFkODM5NDI3NmUzNzJlNTI2OTc0ZGNhNi4uY2UzMTI1YzRhYzgwNDAzMGEzNGY4NDA1MjlhZDdm
MjQyMjYzNDc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAzLTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IG9wYXF1ZSBwYWludHMgaW4gQ0NPY2NsdXNpb25UcmFja2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDE3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSB0cmFja2VkIG9wYXF1ZSBwYWludHMgaW4g
dGhlIHRpbGVzIHdoZW4gdHJhY2tpbmcgb2NjbHVzaW9uIGluCisgICAgICAgIENDT2NjbHVzaW9u
VHJhY2tlci4gTW92ZXMgdGhlIFRpbGU6Om1fb3BhcXVlUmVjdCB1cCB0byB0aGUgc3VwZXItCisg
ICAgICAgIGNsYXNzIGluIENDTGF5ZXJUaWxpbmdEYXRhIHJhdGhlciB0aGFuIGhhdmluZyBpdCBk
ZWNsYXJlZCBpbiBib3RoCisgICAgICAgIFRpbGVkTGF5ZXJDaHJvbWl1bSBhbmQgQ0NUaWxlZExh
eWVySW1wbC4gVGhpcyBsZXRzIHRoZSBDQ0xheWVyVGlsaW5nRGF0YQorICAgICAgICBjbGFzcyBj
b21wdXRlIHRoZSBvcGFxdWUgcmVnaW9uIGZvciBpdHMgdGlsZXMsIHNoYXJpbmcgY29kZSBiZXR3
ZWVuIHRoZQorICAgICAgICB0d28gdGlsZWQgbGF5ZXIgaW1wbGVtZW50YXRpb25zLgorCisgICAg
ICAgIFVzZSBvZiB0aGlzIGZlYXR1cmUgaXMgZ3VhcmRlZCBiZWhpbmQgYSBydW50aW1lIGZsYWcg
YW5kIHR1cm5lZCBvZmYgZm9yCisgICAgICAgIHBhaW50IGN1bGxpbmcuIFdlIHdpbGwgZW5hYmxl
IGl0IGluIHRoZSBmdXR1cmUgb25jZSB3ZSdyZSBjb21mb3J0YWJsZQorICAgICAgICB3aXRoIHRo
ZSBwYWludCBjdWxsaW5nLgorCisgICAgICAgIFVuaXQgdGVzdDogQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdC5vcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5CisgICAgICAgICAgICAgICAgICAgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdC5vcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5CisgICAgICAgICAg
ICAgICAgICAgVGlsZWRMYXllckNocm9taXVtVGVzdC5vcGFxdWVDb250ZW50c1JlZ2lvbgorCisg
ICAgICAgIEFsbCBleGlzdGluZyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0LiogZHVwbGljYXRlZCB3
aXRoIG9wYXF1ZSBwYWludGVkCisgICAgICAgIHJlY3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bTo6b3BhcXVlQ29udGVudHNSZWdpb24pOgorICAgICAgICAoTGF5ZXJDaHJvbWl1
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFVwZGF0YWJsZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGls
ZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlVGlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6VGlsZWRMYXllckNocm9taXVtOjphZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6b3BhcXVlQ29udGVudHNSZWdpb24p
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpv
cGFxdWVDb250ZW50c1JlZ2lvbik6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRpbGluZ0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRpbGluZ0RhdGE6Om9wYXF1ZVJlZ2lvbkluTGF5ZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRpbGluZ0RhdGE6OlRpbGU6Om9wYXF1
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRpbGluZ0RhdGE6OlRpbGU6OnNldE9w
YXF1ZVJlY3QpOgorICAgICAgICAoQ0NMYXllclRpbGluZ0RhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjo6OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyQmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpzZXRVc2VQYWlu
dFRyYWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rp
bGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKERyYXdhYmxlVGlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpvcGFxdWVDb250ZW50c1JlZ2lvbik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1RpbGVkTGF5ZXJJbXBsKToKKwogMjAxMi0wMy0wOSAg
Wm9sdGFuIEhlcmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBTVkdS
ZW5kZXJpbmdDb250ZXh0IGFuZCBtb3ZlIHRoZXJlIHRoZSBjb250ZXh0IHJlbGF0ZWQgY29kZSBm
cm9tIFNWR1JlbmRlclN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMTM5ZjU1
NjMzNzU2MDY4NGJhMzhjMWRhODRlZGVlNGJlMjI5Nzk3My4uOGUwNmU1M2MyZDgyMWFjNDBiZjY5
YThhY2ZjODgyZmEzNzU1MjBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NSBAQAorMjAxMi0wMy0wNyAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIFVzZSBvcGFxdWUgcGFpbnRzIGluIENDT2NjbHVzaW9uVHJh
Y2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAx
NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ6Om9wYXF1ZUNvbnRlbnRzUmVnaW9uKToKKyAg
ICAgICAgKExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50OjpzZXRPcGFxdWVQYWlu
dFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyQWRkZWRUb09jY2x1
ZGVkUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9u
V2l0aFJvdGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyQWRkZWRUb09jY2x1ZGVkUmVn
aW9uV2l0aFRyYW5zbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyQWRkZWRUb09jY2x1
ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyQWRk
ZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJlYWR5T25TdGFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoTXVs
dGlwbGVPcGFxdWVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9jY2x1c2lvbldp
dGhPdmVybGFwcGluZ1NpYmxpbmdTdXJmYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNl
T2NjbHVzaW9uSW5TY3JlZW5TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlT2NjbHVz
aW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6
b2NjbHVzaW9uSW50ZXJhY3Rpb25XaXRoRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpsYXll
clNjaXNzb3JSZWN0T3ZlclRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuU2Npc3NvclJl
Y3RPdmVyVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpsYXllclNjaXNzb3JSZWN0T3ZlckN1bGxl
ZFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpsYXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyk6
CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5TY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6bGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OnNjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6bGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OmRhbWFnZVJlY3RPdmVyVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpkYW1hZ2VSZWN0T3ZlckN1
bGxlZFRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6ZGFtYWdlUmVjdE92ZXJOb1RpbGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
OgorICAgICAgICAoV1RGOjpURVNUKToKKyAgICAgICAgKFdURik6CisKIDIwMTItMDMtMDkgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTAxOTEsIHIxMTAyMDIsIGFuZCByMTEwMjc5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDBjZTNiYTBmYTE5NjQxNTY0MTM2YzFjYWI4ODQyN2JhYjE4OGQzNzcu
LjRhOGRkNTkxZGMwZTdlMmY1N2JkMTUzNDcyZTIxOWVhZGY0MGExYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmgKQEAgLTIyNyw2ICsyMjcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEFuaW1hdGlv
bkV2ZW50KGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmKTsKIAorICAgIHZpcnR1YWwgUmVnaW9uIG9w
YXF1ZUNvbnRlbnRzUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gUmVnaW9uKCk7IH07CisKIHByb3Rl
Y3RlZDoKICAgICBmcmllbmQgY2xhc3MgQ0NMYXllckltcGw7CiAgICAgZnJpZW5kIGNsYXNzIExh
eWVyVGlsZXJDaHJvbWl1bTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDA1
ZjFiZjQ2NDZhMDY1N2M3YzZjOTlhNTgzNmMwZjRhZWExYjNkMmIuLjAyNTlhMjNkMzg2ZGQzZDFh
YzhhOThiYzI4NGUyMzgyYzU0YzYzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cApAQCAtNzIsNyArNzIsNiBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IG1fZGlydHlSZWN0Owog
ICAgIEludFJlY3QgbV91cGRhdGVSZWN0OwotICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogICAg
IGJvb2wgbV9wYXJ0aWFsVXBkYXRlOwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBVcGRhdGFibGVU
aWxlKFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gdGV4dHVyZSkKQEAg
LTI2OCw3ICsyNjcsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGlmICh0aWxlLT5pc0RpcnR5Rm9yQ3VycmVu
dEZyYW1lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB0aWxlZExheWVyLT5w
dXNoVGlsZVByb3BlcnRpZXMoaSwgaiwgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+dGV4dHVyZUlk
KCksIHRpbGUtPm1fb3BhcXVlUmVjdCk7CisgICAgICAgIHRpbGVkTGF5ZXItPnB1c2hUaWxlUHJv
cGVydGllcyhpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSwgdGlsZS0+
b3BhcXVlUmVjdCgpKTsKICAgICB9CiAgICAgZm9yIChWZWN0b3I8VXBkYXRhYmxlVGlsZSo+Ojpj
b25zdF9pdGVyYXRvciBpdGVyID0gaW52YWxpZFRpbGVzLmJlZ2luKCk7IGl0ZXIgIT0gaW52YWxp
ZFRpbGVzLmVuZCgpOyArK2l0ZXIpCiAgICAgICAgIG1fdGlsZXItPnRha2VUaWxlKCgqaXRlcikt
PmkoKSwgKCppdGVyKS0+aigpKTsKQEAgLTUwMywxMiArNTAyLDEyIEBAIHZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQg
dG9wLCBpbnQKICAgICAgICAgICAgIEludFJlY3QgdGlsZVBhaW50ZWRSZWN0ID0gaW50ZXJzZWN0
aW9uKHRpbGVSZWN0LCBtX3BhaW50UmVjdCk7CiAgICAgICAgICAgICBJbnRSZWN0IHRpbGVQYWlu
dGVkT3BhcXVlUmVjdCA9IGludGVyc2VjdGlvbih0aWxlUmVjdCwgcGFpbnRlZE9wYXF1ZVJlY3Qp
OwogICAgICAgICAgICAgaWYgKCF0aWxlUGFpbnRlZFJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgSW50UmVjdCBwYWludEluc2lkZVRpbGVPcGFxdWVSZWN0ID0gaW50ZXJzZWN0aW9u
KHRpbGUtPm1fb3BhcXVlUmVjdCwgdGlsZVBhaW50ZWRSZWN0KTsKKyAgICAgICAgICAgICAgICBJ
bnRSZWN0IHBhaW50SW5zaWRlVGlsZU9wYXF1ZVJlY3QgPSBpbnRlcnNlY3Rpb24odGlsZS0+b3Bh
cXVlUmVjdCgpLCB0aWxlUGFpbnRlZFJlY3QpOwogICAgICAgICAgICAgICAgIGJvb2wgcGFpbnRJ
bnNpZGVUaWxlT3BhcXVlUmVjdElzTm9uT3BhcXVlID0gIXRpbGVQYWludGVkT3BhcXVlUmVjdC5j
b250YWlucyhwYWludEluc2lkZVRpbGVPcGFxdWVSZWN0KTsKLSAgICAgICAgICAgICAgICBib29s
IG9wYXF1ZVBhaW50Tm90SW5zaWRlVGlsZU9wYXF1ZVJlY3QgPSAhdGlsZVBhaW50ZWRPcGFxdWVS
ZWN0LmlzRW1wdHkoKSAmJiAhdGlsZS0+bV9vcGFxdWVSZWN0LmNvbnRhaW5zKHRpbGVQYWludGVk
T3BhcXVlUmVjdCk7CisgICAgICAgICAgICAgICAgYm9vbCBvcGFxdWVQYWludE5vdEluc2lkZVRp
bGVPcGFxdWVSZWN0ID0gIXRpbGVQYWludGVkT3BhcXVlUmVjdC5pc0VtcHR5KCkgJiYgIXRpbGUt
Pm9wYXF1ZVJlY3QoKS5jb250YWlucyh0aWxlUGFpbnRlZE9wYXF1ZVJlY3QpOwogCiAgICAgICAg
ICAgICAgICAgaWYgKHBhaW50SW5zaWRlVGlsZU9wYXF1ZVJlY3RJc05vbk9wYXF1ZSB8fCBvcGFx
dWVQYWludE5vdEluc2lkZVRpbGVPcGFxdWVSZWN0KQotICAgICAgICAgICAgICAgICAgICB0aWxl
LT5tX29wYXF1ZVJlY3QgPSB0aWxlUGFpbnRlZE9wYXF1ZVJlY3Q7CisgICAgICAgICAgICAgICAg
ICAgIHRpbGUtPnNldE9wYXF1ZVJlY3QodGlsZVBhaW50ZWRPcGFxdWVSZWN0KTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgLy8gc291cmNlUmVjdCBzdGFydHMgYXMgYSBmdWxsLXNpemVk
IHRpbGUgd2l0aCBib3JkZXIgdGV4ZWxzIGluY2x1ZGVkLgpAQCAtNTU0LDYgKzU1MywxNCBAQCB2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRleHR1cmVzKCkKICAgICB9CiB9CiAKK1Jl
Z2lvbiBUaWxlZExheWVyQ2hyb21pdW06Om9wYXF1ZUNvbnRlbnRzUmVnaW9uKCkgY29uc3QKK3sK
KyAgICBpZiAobV9za2lwc0RyYXcpCisgICAgICAgIHJldHVybiBSZWdpb24oKTsKKworICAgIHJl
dHVybiBtX3RpbGVyLT5vcGFxdWVSZWdpb25JbkxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KCkp
OworfQorCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cmVzZXRVcGRhdGVTdGF0ZSgpCiB7CiAg
ICAgLy8gUmVzZXQgbV91cGRhdGVSZWN0IGZvciBhbGwgdGlsZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IGM5MzZlNmRlYzc0MzBmNmEzNDM1NzE4NDVhMGZjM2Q5Nzc2MGZlYTAu
LjZmZjkwMWRmZGJmZjc2MmYwNDYzNjNiMzRhNDg0NTJjMDRkMTIxMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oCkBAIC02Niw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCByZXNlcnZlVGV4dHVyZXMoKTsKIAorICAgIHZpcnR1YWwgUmVnaW9uIG9wYXF1ZUNvbnRl
bnRzUmVnaW9uKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBUaWxlZExheWVyQ2hyb21pdW0o
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMmEyZDllODQ4NzRiNzMxYWYyNTg5N2Y1NTA5
OGQwMzVlODlkOWViNS4uZjFjN2I0ZWU1MTcyMjFjNDg4YTZhZmM5MzJmYjA4Y2M5Zjc5NGMzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0yMTUsNiArMjE1LDggQEAgcHVibGljOgogCiAgICAg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJJbXBsKiBsYXllckFuaW1hdGlvbkNvbnRyb2xsZXIo
KSB7IHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5nZXQoKTsgfQogCisgICAgdmly
dHVhbCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oKSBjb25zdCB7IHJldHVybiBSZWdpb24o
KTsgfTsKKwogICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBjb250ZXh0IHByZXZpb3VzbHkgdXNl
ZCB0byByZW5kZXIgdGhpcyBsYXllcgogICAgIC8vIHdhcyBsb3N0IGFuZCB0aGF0IGEgbmV3IG9u
ZSBoYXMgYmVlbiBjcmVhdGVkLiBXb24ndCBiZSBjYWxsZWQKICAgICAvLyB1bnRpbCB0aGUgbmV3
IGNvbnRleHQgaGFzIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVGlsaW5nRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVGlsaW5nRGF0YS5jcHAKaW5kZXggY2ZlZmJkMmI4MDFkMjA2OTI2ODY1YzEzNTUyODYyZjY0
NjQwMjgyNy4uMTlkMDI1MWRjMGFjZjllMzgyZWMwZjFmZGZlN2QwM2RlNmJkOTBiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRpbGluZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRhLmNwcApAQCAtMTEyLDYgKzExMiwyNCBAQCBJbnRS
ZWN0IENDTGF5ZXJUaWxpbmdEYXRhOjp0aWxlUmVjdChjb25zdCBUaWxlKiB0aWxlKSBjb25zdAog
ICAgIHJldHVybiB0aWxlUmVjdDsKIH0KIAorUmVnaW9uIENDTGF5ZXJUaWxpbmdEYXRhOjpvcGFx
dWVSZWdpb25JbkxheWVyUmVjdChjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpIGNvbnN0Cit7Cisg
ICAgUmVnaW9uIG9wYXF1ZVJlZ2lvbjsKKyAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9t
OworICAgIGxheWVyUmVjdFRvVGlsZUluZGljZXMobGF5ZXJSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b20pOworICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgeworICAgICAgICAgICAg
VGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKKyAgICAgICAgICAgIGlmICghdGlsZSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgSW50UmVjdCB0aWxlT3BhcXVlUmVj
dCA9IGludGVyc2VjdGlvbihsYXllclJlY3QsIHRpbGUtPm9wYXF1ZVJlY3QoKSk7CisgICAgICAg
ICAgICBvcGFxdWVSZWdpb24udW5pdGUodGlsZU9wYXF1ZVJlY3QpOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBvcGFxdWVSZWdpb247Cit9CisKIHZvaWQgQ0NMYXllclRpbGluZ0RhdGE6
OnNldEJvdW5kcyhjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIG1fdGlsaW5nRGF0YS5zZXRU
b3RhbFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxpbmdEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VGlsaW5nRGF0YS5oCmluZGV4IDg2OWQ0MmUxNWFjNjMwYTUzMWZiNTNkNDJkOTZkNDA3NjNmZDg2
ZWUuLjllMTg2OTVlOGMxNDIyYjZjNmM3ZmY1MzczNmNiYWE0OTk0ZmUzYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUaWxp
bmdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRpbGluZ0RhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJSZWdp
b24uaCIKICNpbmNsdWRlICJUaWxpbmdEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgpAQCAtNjksOSArNzAsMTMgQEAgcHVibGljOgog
ICAgICAgICBpbnQgaSgpIGNvbnN0IHsgcmV0dXJuIG1faTsgfQogICAgICAgICBpbnQgaigpIGNv
bnN0IHsgcmV0dXJuIG1fajsgfQogICAgICAgICB2b2lkIG1vdmVUbyhpbnQgaSwgaW50IGopIHsg
bV9pID0gaTsgbV9qID0gajsgfQorCisgICAgICAgIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX29wYXF1ZVJlY3Q7IH0KKyAgICAgICAgdm9pZCBzZXRPcGFxdWVS
ZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpIHsgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVj
dDsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIGludCBtX2k7CiAgICAgICAgIGludCBtX2o7Cisg
ICAgICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogICAgIH07CiAgICAgLy8gRGVmYXVsdCBoYXNo
IGtleSB0cmFpdHMgZm9yIGludGVnZXJzIGRpc2FsbG93IDAgYW5kIC0xIGFzIGEga2V5LCBzbwog
ICAgIC8vIHVzZSBhIGN1c3RvbSBoYXNoIHRyYWl0IHdoaWNoIGRpc2FsbG93cyAtMSBhbmQgLTIg
aW5zdGVhZC4KQEAgLTk2LDYgKzEwMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxheWVyUmVjdFRv
VGlsZUluZGljZXMoY29uc3QgSW50UmVjdCYsIGludCAmbGVmdCwgaW50ICZ0b3AsIGludCAmcmln
aHQsIGludCAmYm90dG9tKSBjb25zdDsKICAgICBJbnRSZWN0IHRpbGVSZWN0KGNvbnN0IFRpbGUq
KSBjb25zdDsKIAorICAgIFJlZ2lvbiBvcGFxdWVSZWdpb25JbkxheWVyUmVjdChjb25zdCBJbnRS
ZWN0JikgY29uc3Q7CisKICAgICB2b2lkIHJlc2V0KCk7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDg2MmVkMzk0NzEyYzRmNmM2ODU1ZjM3Mjc0NWYx
NDZmNjk2MTg5ZDMuLmIzNjBiMjBiOGY1OGYxMTZkNGI3ZmYxNDQ0ZGUzMWRmMGYwNmY5OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNTQwLDYgKzU0MCw3IEBAIHZvaWQg
Q0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJv
bWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRlcmF0b3JU
eXBlOwogCiAgICAgQ0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdChJ
bnRQb2ludCgpLCB2aWV3cG9ydFNpemUoKSkpOworICAgIG9jY2x1c2lvblRyYWNrZXIuc2V0VXNl
UGFpbnRUcmFja2luZyhmYWxzZSk7IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0byB0dXJuIG9uIHBh
aW50IHRyYWNraW5nIGZvciBwYWludCBjdWxsaW5nCiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBl
IGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CiAgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6
YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOyBpdCAhPSBlbmQ7ICsraXQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IDY1ODU0NTRmZmNiNzYwZWQ4ZDFm
NWYzZDNhNDkyYzM3N2U0MzY4YzguLmYxYzkzMzg4MjUwZjViNDI1ZTVlZWIxNmNlNjU4MDc4MWIz
MjljMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcApAQCAtNDIsNiAr
NDIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlPgogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlPjo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5T
cGFjZSkKICAgICA6IG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKHNjaXNzb3JSZWN0SW5TY3Jl
ZW5TcGFjZSkKICAgICAsIG1fc3VyZmFjZURhbWFnZUNsaWVudCgwKQorICAgICwgbV91c2VQYWlu
dFRyYWNraW5nKHRydWUpIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHBhaW50IHRyYWNraW5n
IGlzIG9uIGZvciBwYWludCBjdWxsaW5nLgogewogfQogCkBAIC00OSw2ICs1MCw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiBDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpDQ09jY2x1
c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBjb25zdCBE
YW1hZ2VDbGllbnRUeXBlKiBzdXJmYWNlRGFtYWdlQ2xpZW50KQogICAgIDogbV9zY2lzc29yUmVj
dEluU2NyZWVuU3BhY2Uoc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKQogICAgICwgbV9zdXJmYWNl
RGFtYWdlQ2xpZW50KHN1cmZhY2VEYW1hZ2VDbGllbnQpCisgICAgLCBtX3VzZVBhaW50VHJhY2tp
bmcodHJ1ZSkgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24g
Zm9yIHBhaW50IGN1bGxpbmcuCiB7CiB9CiAKQEAgLTE4NCw4ICsxODYsOSBAQCBzdGF0aWMgaW5s
aW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm0o
Y29uc3QgTGF5ZXJUeQogICAgIHJldHVybiB0cmFuc2Zvcm07CiB9CiAKKy8vIEZJWE1FOiBSZW1v
dmUgdXNlUGFpbnRUcmFja2luZyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBj
dWxsaW5nLgogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgotc3RhdGljIGlubGluZSBSZWdp
b24gY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCitzdGF0aWMgaW5saW5lIFJlZ2lv
biBjb21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXIoY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgYm9vbCB1c2VQYWludFRyYWNraW5n
KQogewogICAgIFJlZ2lvbiBvcGFxdWVSZWdpb247CiAKQEAgLTE5Niw3ICsxOTksMTQgQEAgc3Rh
dGljIGlubGluZSBSZWdpb24gY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyKGNvbnN0IExheWVy
VHlwZSogbGF5ZXIsIGNvbnN0IFQKIAogICAgIGlmIChsYXllci0+b3BhcXVlKCkpCiAgICAgICAg
IG9wYXF1ZVJlZ2lvbiA9IGVuY2xvc2VkSW50UmVjdCh1bm9jY2x1ZGVkUXVhZC5ib3VuZGluZ0Jv
eCgpKTsKLSAgICAvLyBGSVhNRTogQ2FwdHVyZSBvcGFxdWUgcGFpbnRzOiBlbHNlIG9wYXF1ZVJl
Z2lvbiA9IGxheWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbih0cmFuc2Zvcm0pOworICAgIGVsc2Ug
aWYgKHVzZVBhaW50VHJhY2tpbmcgJiYgdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKKyAgICAgICAg
b3BhcXVlUmVnaW9uID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7CisgICAgZWxzZSBp
ZiAodXNlUGFpbnRUcmFja2luZykgeworICAgICAgICBSZWdpb24gY29udGVudFJlZ2lvbiA9IGxh
eWVyLT5vcGFxdWVDb250ZW50c1JlZ2lvbigpOworICAgICAgICBWZWN0b3I8SW50UmVjdD4gY29u
dGVudFJlY3RzID0gY29udGVudFJlZ2lvbi5yZWN0cygpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvbnRlbnRSZWN0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG9wYXF1ZVJl
Z2lvbi51bml0ZShlbmNsb3NlZEludFJlY3QodHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KGNv
bnRlbnRSZWN0c1tpXSkpKSk7CisgICAgfQogICAgIHJldHVybiBvcGFxdWVSZWdpb247CiB9CiAK
QEAgLTIxNCw4ICsyMjQsOSBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZT46Om1hcmtPY2NsdWRlZEJlaGluZExheQogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlID0gY29udGVudFRvU2NyZWVuU3BhY2VU
cmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllcik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29u
dGVudFRvVGFyZ2V0U3VyZmFjZSA9IGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5
ZXJUeXBlPihsYXllcik7CiAKLSAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbi51
bml0ZShjb21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVu
dFRvU2NyZWVuU3BhY2UpKTsKLSAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldC51
bml0ZShjb21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVu
dFRvVGFyZ2V0U3VyZmFjZSkpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgbV91c2VQYWludFRyYWNr
aW5nIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCisgICAgbV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4udW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGlu
ZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlLCBtX3VzZVBhaW50
VHJhY2tpbmcpKTsKKyAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldC51bml0ZShj
b21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvVGFy
Z2V0U3VyZmFjZSwgbV91c2VQYWludFRyYWNraW5nKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSwgY29uc3QgSW50
UmVjdCYgc2Npc3NvclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVzaW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25U
cmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q09jY2x1c2lvblRyYWNrZXIuaAppbmRleCBiN2MwZTNiMjhmYzA3MzEzYWU2ZTEyMGRkOTNhZDM3
NmZiZGMwZDg3Li4xOWZjMmMxZGQwZGFjODI1NWI1NjQyODI0MzI3ODAzYjEyYWVlZTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6
CiAgICAgLy8gR2l2ZXMgYW4gdW5vY2NsdWRlZCBzdWItcmVjdCBvZiB8Y29udGVudFJlY3R8IGlu
IHRoZSBjb250ZW50IHNwYWNlIG9mIHRoZSBsYXllci4gVXNlZCB3aGVuIGNvbnNpZGVyaW5nIG9j
Y2x1c2lvbiBmb3IgYSBsYXllciB0aGF0IHBhaW50cy9kcmF3cyBzb21ldGhpbmcuCiAgICAgSW50
UmVjdCB1bm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgTGF5ZXJUeXBlKiwgY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpIGNvbnN0OwogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4g
cGFpbnQgdHJhY2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCisgICAgdm9pZCBzZXRVc2VQ
YWludFRyYWNraW5nKGJvb2wgdXNlKSB7IG1fdXNlUGFpbnRUcmFja2luZyA9IHVzZTsgfQorCiAg
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBpbiBmdXR1cmUsIHRoZXkgYXJlIHRvIG1ha2UgQ0xz
IGZvciB0cmFuc2l0aW9uaW5nIHRvIHRoaXMgZWFzaWVyLgogICAgIGNvbnN0IFJlZ2lvbiYgY3Vy
cmVudE9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKSBjb25zdDsKICAgICBjb25zdCBSZWdpb24mIGN1
cnJlbnRPY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKSBjb25zdDsKQEAgLTEwMyw2ICsxMDYsNyBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEludFJlY3QgbV9zY2lzc29yUmVjdEluU2NyZWVu
U3BhY2U7CiAgICAgY29uc3QgRGFtYWdlQ2xpZW50VHlwZSogbV9zdXJmYWNlRGFtYWdlQ2xpZW50
OworICAgIGJvb2wgbV91c2VQYWludFRyYWNraW5nOyAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hl
biBwYWludCB0cmFja2luZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KIH07CiAKIHR5cGVkZWYg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0+IENDT2NjbHVzaW9uVHJhY2tlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAK
aW5kZXggNDdkMGE3MDhjMzJjNzY1Zjg1MTE4NTZlNGUyZjBlODI3MDIxYTA4OS4uZThkMmE2YzQ1
YTlmNjZhNGI5ZWUxZjdlNjE0Mjc4ZWFhNzFlMjlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5jcHAKQEAgLTUyLDE0ICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm0zRE9i
amVjdCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQogICAgIHZvaWQg
c2V0VGV4dHVyZUlkKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZUlkKSB7IG1fdGV4dHVyZUlkID0g
dGV4dHVyZUlkOyB9CiAKLSAgICBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9vcGFxdWVSZWN0OyB9Ci0gICAgdm9pZCBzZXRPcGFxdWVSZWN0KGNvbnN0IEludFJl
Y3QmIG9wYXF1ZVJlY3QpIHsgbV9vcGFxdWVSZWN0ID0gb3BhcXVlUmVjdDsgfQotCiBwcml2YXRl
OgogICAgIERyYXdhYmxlVGlsZSgpIDogbV90ZXh0dXJlSWQoMCkgeyB9CiAKICAgICBQbGF0Zm9y
bTNET2JqZWN0IG1fdGV4dHVyZUlkOwotICAgIEludFJlY3QgbV9vcGFxdWVSZWN0OwogfTsKIAog
Q0NUaWxlZExheWVySW1wbDo6Q0NUaWxlZExheWVySW1wbChpbnQgaWQpCkBAIC0yMDMsNiArMTk5
LDE0IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6cHVzaFRpbGVQcm9wZXJ0aWVzKGludCBpLCBp
bnQgaiwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlCiAgICAgdGlsZS0+c2V0T3BhcXVlUmVjdChv
cGFxdWVSZWN0KTsKIH0KIAorUmVnaW9uIENDVGlsZWRMYXllckltcGw6Om9wYXF1ZUNvbnRlbnRz
UmVnaW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9za2lwc0RyYXcpCisgICAgICAgIHJldHVybiBS
ZWdpb24oKTsKKworICAgIHJldHVybiBtX3RpbGVyLT5vcGFxdWVSZWdpb25JbkxheWVyUmVjdCh2
aXNpYmxlTGF5ZXJSZWN0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJ
bXBsLmgKaW5kZXggN2U2MzdjZmZiNGNjN2JmN2JkYWFmOWQ2MDliZDJhMzU2MTQ5ZmYwMy4uODRm
ZTQ3NjIxNzk1YzI3NDlmMDUyYjQ2NzA0N2JkY2RiMDVmZTI1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250
ZW50c1N3aXp6bGVkKGJvb2wgY29udGVudHNTd2l6emxlZCkgeyBtX2NvbnRlbnRzU3dpenpsZWQg
PSBjb250ZW50c1N3aXp6bGVkOyB9CiAgICAgYm9vbCBjb250ZW50c1N3aXp6bGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50c1N3aXp6bGVkOyB9CiAKKyAgICB2aXJ0dWFsIFJlZ2lvbiBvcGFx
dWVDb250ZW50c1JlZ2lvbigpIGNvbnN0OworCiAgICAgdHlwZWRlZiBQcm9ncmFtQmluZGluZzxW
ZXJ0ZXhTaGFkZXJUaWxlLCBGcmFnbWVudFNoYWRlclJHQkFUZXhBbHBoYT4gUHJvZ3JhbTsKICAg
ICAvLyBTaGFkZXIgcHJvZ3JhbSB0aGF0IHN3YXBzIHJlZCBhbmQgYmx1ZSBjb21wb25lbnRzIG9m
IHRleHR1cmUuCiAgICAgLy8gVXNlZCB3aGVuIHRleHR1cmUgZm9ybWF0IGRvZXMgbm90IG1hdGNo
IG5hdGl2ZSBjb2xvciBmb3JtYXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCA3NjViNDkxYWM1NjliZWQx
NzAzNzgwMTYyMjc5NjJlZTczYTNmZmJjLi4yNmQ1MjUyM2JlMTM0YzJlZmM5NzhiMzRhMGJkNGMz
MzIwNTA5Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2Nj
bHVzaW9uVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKQEAgLTQ1LDE2ICs0NSw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewogCi12b2lkIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwg
Y29uc3QgSW50U2l6ZSYgYm91bmRzLCBib29sIG9wYXF1ZSkKLXsKLSAgICBsYXllci0+c2V0VHJh
bnNmb3JtKHRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKHN1Ymxh
eWVyVHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoYW5jaG9yKTsKLSAgICBs
YXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwotICAgIGxheWVyLT5zZXRCb3VuZHMoYm91bmRz
KTsKLSAgICBsYXllci0+c2V0T3BhcXVlKG9wYXF1ZSk7Ci19Ci0KIGNsYXNzIExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50IDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGlj
OgogICAgIExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkKQEAgLTYzLDggKzUz
LDQwIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgUmVnaW9uIG9wYXF1ZUNvbnRlbnRz
UmVnaW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpbnRlcnNlY3Rpb24obV9vcGFx
dWVQYWludFJlY3QsIHZpc2libGVMYXllclJlY3QoKSk7CisgICAgfQorCisgICAgdm9pZCBzZXRP
cGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUGFpbnRSZWN0KSB7IG1fb3BhcXVl
UGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CisKK3ByaXZhdGU6CisgICAgSW50UmVjdCBt
X29wYXF1ZVBhaW50UmVjdDsKIH07CiAKK3ZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykK
K3sKKyAgICBsYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgbGF5ZXItPnNldFN1
YmxheWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIGxheWVyLT5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICBsYXllci0+c2V0UG9zaXRpb24ocG9z
aXRpb24pOworICAgIGxheWVyLT5zZXRCb3VuZHMoYm91bmRzKTsKK30KKwordm9pZCBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUsIGJv
b2wgb3BhcXVlTGF5ZXJzKQoreworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5
ZXIsIHRyYW5zZm9ybSwgcG9zaXRpb24sIGJvdW5kcyk7CisgICAgaWYgKG9wYXF1ZUxheWVycykK
KyAgICAgICAgbGF5ZXItPnNldE9wYXF1ZShvcGFxdWUpOworICAgIGVsc2UgeworICAgICAgICBs
YXllci0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICAgICAgaWYgKG9wYXF1ZSkKKyAgICAgICAgICAg
IGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRS
ZWN0KCkpOworICAgIH0KK30KKwogLy8gQSBzdWJjbGFzcyB0byBleHBvc2UgdGhlIHRvdGFsIGN1
cnJlbnQgb2NjbHVzaW9uLgogY2xhc3MgVGVzdENDT2NjbHVzaW9uVHJhY2tlciA6IHB1YmxpYyBD
Q09jY2x1c2lvblRyYWNrZXIgewogcHVibGljOgpAQCAtMTEwLDcgKzEzMiwxNyBAQCBwcml2YXRl
OgogICAgIEZsb2F0UmVjdCBtX2RhbWFnZVJlY3Q7CiB9OwogCi1URVNUKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uKQorI2RlZmluZSBURVNUX09QQVFV
RV9BTkRfUEFJTlRFRF9PUEFRVUUoRlVMTFRFU1ROQU1FLCBTSE9SVFRFU1ROQU1FKSBcCisgICAg
VEVTVChGVUxMVEVTVE5BTUUsIG9wYXF1ZUxheWVyKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBTSE9SVFRFU1ROQU1FKHRydWUpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBU
RVNUKEZVTExURVNUTkFNRSwgb3BhcXVlUGFpbnRSZWN0KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFNIT1JUVEVTVE5BTUUoZmFsc2UpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKK3ZvaWQgbGF5ZXJB
ZGRlZFRvT2NjbHVkZWRSZWdpb24oYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAgICAgLy8gVGhpcyB0
ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgogICAgIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwpAQCAtMTE5LDggKzE1MSw4IEBA
IFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24p
CiAgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgcGFyZW50LT5hZGRDaGls
ZChsYXllcik7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1
ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlM
YXllckxpc3Q7CkBAIC0xNjcsNyArMTk5LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0
LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbikKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDI5LCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMjksIDMxLCA3MCwgNzApKSk7CiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24pCitURVNU
X09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFk
ZGVkVG9PY2NsdWRlZFJlZ2lvbiwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24pOworCit2b2lk
IGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uKGJvb2wgb3BhcXVlTGF5ZXJz
KQogewogICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVp
bmcgdXNlZC4KICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
QEAgLTE4MSw4ICsyMTUsOCBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRk
ZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uKQogICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0
ZSg5MCk7CiAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwogCi0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAg
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMjI5
LDcgKzI2Myw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2Nj
bHVkZWRSZWdpb25XaXRoUm90YXRpb24pCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwg
MzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSkpOwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tl
clRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0aW9uKQorVEVTVF9P
UEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRl
ZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24sIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9u
V2l0aFJvdGF0aW9uKTsKKwordm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFu
c2xhdGlvbihib29sIG9wYXF1ZUxheWVycykKIHsKICAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhl
IHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCiAgICAgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CkBAIC0yNDEsOCArMjc3LDggQEAgVEVTVChDQ09jY2x1
c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlv
bikKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKICAgICBsYXllclRy
YW5zZm9ybS50cmFuc2xhdGUoMjAsIDIwKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFu
c2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDMwLCAz
MCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTMwMSw3ICszMzcsOSBAQCBURVNUKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0
aW9uKQogICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRU
b09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJmYWNlKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5U
RURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdp
b25XaXRoVHJhbnNsYXRpb24sIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0
aW9uKTsKKwordm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFj
ZShib29sIG9wYXF1ZUxheWVycykKIHsKICAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0
IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXggaWRlbnRpdHlNYXRyaXg7CkBAIC0zMTcsOSArMzU1LDkgQEAgVEVTVChDQ09jY2x1c2lvblRy
YWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZSkK
ICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5z
bGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFy
ZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNp
emUoNTAwLCA1MDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgz
MCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBjaGlsZC0+c2V0TWFz
a3NUb0JvdW5kcyh0cnVlKTsKIApAQCAtNDA4LDcgKzQ0Niw5IEBAIFRFU1QoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2Up
CiAgICAgICovCiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJBZGRlZFRv
T2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrKQorVEVTVF9PUEFRVUVfQU5E
X1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVk
ZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2UsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0
aFJvdGF0ZWRTdXJmYWNlKTsKKwordm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhT
dXJmYWNlQWxyZWFkeU9uU3RhY2soYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAgICAgLy8gVGhpcyB0
ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgogICAgIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwpAQCAtNDI2LDEzICs0NjYsMTMg
QEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lv
bldpdGhTdXJmYWNlQWxyZWFkeU9uU3RhY2sKICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTAp
OwogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MTAwLCAxMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGls
ZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCBmYWxzZSk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNp
emUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAw
LCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBj
aGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7Cisg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxh
eWVycyk7CiAKICAgICAvLyB8Y2hpbGQyfCBtYWtlcyB8cGFyZW50fCdzIHN1cmZhY2UgZ2V0IGNv
bnNpZGVyZWQgYnkgQ0NPY2NsdXNpb25UcmFja2VyIGZpcnN0LCBpbnN0ZWFkIG9mIHxjaGlsZHwn
cy4gVGhpcyBleGVyY2lzZXMgZGlmZmVyZW50IGNvZGUgaW4KICAgICAvLyBsZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZSwgYXMgdGhlIHRhcmdldCBzdXJmYWNlIGhhcyBhbHJlYWR5IGJlZW4gc2Vl
bi4KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDMw
LCAzMCksIEludFNpemUoNjAsIDIwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhjaGlsZDIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoNjAsIDIwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIGNoaWxkLT5zZXRN
YXNrc1RvQm91bmRzKHRydWUpOwogCkBAIC01NzQsNyArNjE0LDkgQEAgVEVTVChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhTdXJmYWNlQWxyZWFk
eU9uU3RhY2sKICAgICAgKi8KIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXll
ckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZhY2UpCitURVNUX09Q
QVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVk
VG9PY2NsdWRlZFJlZ2lvbldpdGhTdXJmYWNlQWxyZWFkeU9uU3RhY2ssIGxheWVyQWRkZWRUb09j
Y2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJlYWR5T25TdGFjayk7CisKK3ZvaWQgbGF5ZXJBZGRl
ZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKGJvb2wgb3BhcXVlTGF5
ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owog
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKQEAgLTU5NSw5ICs2MzcsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVy
QWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRPZmZBeGlzU3VyZmFjZQogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwogICAgIGxheWVyVHJhbnNmb3JtLnRyYW5z
bGF0ZSgxMCwgMTApOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1
MDAsIDUwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBsYXllclRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzAp
LCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAw
LCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3Vu
ZHModHJ1ZSk7CiAKQEAgLTY1Niw3ICs2OTgsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRl
c3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRPZmZBeGlzU3VyZmFjZQog
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzUsIDU1LCAxLCAxKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNzUsIDU1LCAxLCAxKSkpOwog
fQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVn
aW9uV2l0aE11bHRpcGxlT3BhcXVlTGF5ZXJzKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BB
UVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRo
Um90YXRlZE9mZkF4aXNTdXJmYWNlLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3Rh
dGVkT2ZmQXhpc1N1cmZhY2UpOworCit2b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0
aE11bHRpcGxlT3BhcXVlTGF5ZXJzKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIC8vIFRoaXMg
aXMgc2ltaWxhciB0byB0aGUgcHJldmlvdXMgdGVzdCBidXQgbm93IHdlIG1ha2UgYSBmZXcgb3Bh
cXVlIGxheWVycyBpbnNpZGUgb2YgfGNoaWxkfCBzbyB0aGF0IHRoZSBvY2NsdWRlZCBwYXJ0cyBv
ZiBjaGlsZCBhcmUgbm90IGEgc2ltcGxlIHJlY3QuCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXggaWRlbnRpdHlNYXRyaXg7CkBAIC02NzQsMTAgKzcxOCwxMCBAQCBURVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3QsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aE11bHRpcGxlT3Bh
cXVlTGF5ZXJzKQogICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CiAgICAgY2hpbGRUcmFu
c2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIGZhbHNl
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRy
YW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAs
IDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA0NDApLCB0
cnVlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50
KDEwLCA0NTApLCBJbnRTaXplKDUwMCwgNjApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXpl
KDUwMCwgNTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA0NDAp
LCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgNDUwKSwgSW50U2l6
ZSg1MDAsIDYwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIGNoaWxkLT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpOwogCkBAIC03NjAsNyArODA0LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0LCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVy
cykKICAgICAgKi8KIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzdXJmYWNlT2Nj
bHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzKQorVEVTVF9PUEFRVUVfQU5EX1BB
SU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRS
ZWdpb25XaXRoTXVsdGlwbGVPcGFxdWVMYXllcnMsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9u
V2l0aE11bHRpcGxlT3BhcXVlTGF5ZXJzKTsKKwordm9pZCBzdXJmYWNlT2NjbHVzaW9uV2l0aE92
ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIC8vIFRo
aXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KICAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKQEAgLTc4MCwxMSArODI2
LDExIEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc3VyZmFjZU9jY2x1c2lvbldpdGhP
dmVybGFwcGluZ1NpYmxpbmdTdXJmYWNlcykKICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTAp
OwogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MTAwLCAxMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGls
ZDEuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgZmFsc2UpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoNTAwLCA1MDApLCB0cnVlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNo
aWxkMi5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoNTAwLCA1MDApLCBmYWxzZSk7Ci0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgx
MDAsIDEwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQxLmdldCgp
LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVl
TGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwg
Y2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwor
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxh
eWVycyk7CiAKICAgICBjaGlsZDEtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CiAgICAgY2hpbGQy
LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwpAQCAtODc4LDcgKzkyNCw5IEBAIFRFU1QoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdCwgc3VyZmFjZU9jY2x1c2lvbldpdGhPdmVybGFwcGluZ1NpYmxpbmdT
dXJmYWNlcykKICAgICAgKi8KIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzdXJm
YWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZSkKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFV
RShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3N1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdT
aWJsaW5nU3VyZmFjZXMsIHN1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3Vy
ZmFjZXMpOworCit2b2lkIHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlKGJvb2wgb3BhcXVl
TGF5ZXJzKQogewogICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBh
cmUgYmVpbmcgdXNlZC4KICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1h
dHJpeDsKQEAgLTg5OSwxMSArOTQ3LDExIEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwg
c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2UpCiAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNs
YXRlKC0yNTAsIC0yNTApOwogCiAgICAgLy8gVGhlIG93bmluZyBsYXllcnMgaGF2ZSB2ZXJ5IGRp
ZmZlcmVudCBib3VuZHMgZnJvbSB0aGUgc3VyZmFjZXMgdGhhdCB0aGV5IG93bi4KLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDEwMCwgMTAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hp
bGQxLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgtMTAsIC0xMCksIElu
dFNpemUoNTEwLCA1MTApLCB0cnVlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGNoaWxkMi5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSwgZmFsc2UpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoLTEwLCAtMTAp
LCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEu
Z2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoMTAsIDEw
KSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUs
IG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIu
Z2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoMTAsIDEw
KSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUs
IG9wYXF1ZUxheWVycyk7CiAKICAgICAvLyBNYWtlIHRoZW0gYm90aCByZW5kZXIgc3VyZmFjZXMK
ICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CkBAIC0xMDEwLDcgKzEwNTgsOSBAQCBURVNU
KENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlKQog
ICAgICAqLwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHN1cmZhY2VPY2NsdXNp
b25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3JtcykKK1RFU1RfT1BBUVVFX0FORF9QQUlO
VEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3N1cmZhY2VPY2NsdXNpb25JblNjcmVl
blNwYWNlLCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZSk7CisKK3ZvaWQgc3VyZmFjZU9j
Y2x1c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zKGJvb2wgb3BhcXVlTGF5ZXJz
KQogewogICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVp
bmcgdXNlZC4KICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
QEAgLTEwMzYsMTEgKzEwODYsMTEgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzdXJm
YWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9ybXMpCiAgICAgY2hpbGQy
VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAogICAgIC8vIFRoZSBvd25pbmcgbGF5
ZXJzIGhhdmUgdmVyeSBkaWZmZXJlbnQgYm91bmRzIGZyb20gdGhlIHN1cmZhY2VzIHRoYXQgdGhl
eSBvd24uCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwgY2hpbGQxVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMjApLCBJbnRTaXplKDEwLCAxMCks
IGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMS5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBv
aW50KC0xMCwgLTIwKSwgSW50U2l6ZSg1MTAsIDUyMCksIHRydWUpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGlsZDJUcmFuc2Zvcm0sIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoMTAs
IDEwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZs
b2F0UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7CisgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhjaGlsZDEuZ2V0KCksIGNoaWxkMVRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwg
MjApLCBJbnRTaXplKDEwLCAxMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0yMCksIEludFNp
emUoNTEwLCA1MjApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGlsZDJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMjAs
IDQwKSwgSW50U2l6ZSgxMCwgMTApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRT
aXplKDUxMCwgNTEwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIC8vIE1ha2UgdGhlbSBi
b3RoIHJlbmRlciBzdXJmYWNlcwogICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKQEAgLTEx
MzUsNyArMTE4NSw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc3VyZmFjZU9jY2x1
c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zKQogICAgICAqLwogfQogCi1URVNU
KENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIG9jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMp
CitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9z
dXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9ybXMsIHN1cmZhY2VP
Y2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3Jtcyk7CisKK3ZvaWQgb2NjbHVz
aW9uSW50ZXJhY3Rpb25XaXRoRmlsdGVycyhib29sIG9wYXF1ZUxheWVycykKIHsKICAgICAvLyBU
aGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCiAgICAg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CkBAIC0xMTUzLDEwICsx
MjA1LDEwIEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgb2NjbHVzaW9uSW50ZXJhY3Rp
b25XaXRoRmlsdGVycykKICAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOwogICAgIGxheWVy
VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBm
YWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhibHVyTGF5ZXIuZ2V0KCks
IGxheWVyVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQ
b2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhvcGFxdWVMYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
NTAwLCA1MDApLCB0cnVlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKG9wYWNp
dHlMYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGJsdXJMYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0
UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Cisg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhvcGFxdWVMYXllci5nZXQoKSwgbGF5ZXJU
cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9w
YXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhvcGFjaXR5TGF5
ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAw
LCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgewogICAgICAgICBGaWx0ZXJPcGVy
YXRpb25zIGZpbHRlcnM7CkBAIC0xMjM5LDcgKzEyOTEsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3QsIG9jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMpCiAgICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkp
OwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyU2Npc3NvclJlY3RPdmVy
VGlsZSkKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0X29jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMsIG9jY2x1c2lvbkludGVyYWN0aW9u
V2l0aEZpbHRlcnMpOworCit2b2lkIGxheWVyU2Npc3NvclJlY3RPdmVyVGlsZShib29sIG9wYXF1
ZUxheWVycykKIHsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJp
eDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7CkBAIC0xMjU0LDkgKzEzMDgsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3Qs
IGxheWVyU2Npc3NvclJlY3RPdmVyVGlsZSkKICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgyMDAsIDIwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFy
ZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwg
ZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAw
LCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTMwMiw3ICsxMzU2LDkgQEAgVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllclNjaXNzb3JSZWN0T3ZlclRpbGUpCiAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsK
IH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzY3JlZW5TY2lzc29yUmVjdE92ZXJU
aWxlKQorVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRl
c3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlLCBsYXllclNjaXNzb3JSZWN0T3ZlclRpbGUpOwor
Cit2b2lkIHNjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAg
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTMx
Nyw5ICsxMzczLDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzY3JlZW5TY2lzc29y
UmVjdE92ZXJUaWxlKQogICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAg
IGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNl
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwg
dHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVl
TGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUs
IG9wYXF1ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
ZHVtbXlMYXllckxpc3Q7CkBAIC0xMzY3LDcgKzE0MjMsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3QsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUpCiAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKIH0KIAotVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpCitU
RVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3Jl
ZW5TY2lzc29yUmVjdE92ZXJUaWxlLCBzY3JlZW5TY2lzc29yUmVjdE92ZXJUaWxlKTsKKwordm9p
ZCBsYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAg
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTM4
Miw5ICsxNDQwLDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllclNjaXNzb3JS
ZWN0T3ZlckN1bGxlZFRpbGUpCiAgICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7
CiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwg
ZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAy
MDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsK
KyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBv
cGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwg
dHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTE0MjUsNyArMTQ4Myw5IEBAIFRFU1QoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKQogICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRy
YWNrZXJUZXN0LCBzY3JlZW5TY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKQorVEVTVF9PUEFRVUVf
QU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVj
dE92ZXJDdWxsZWRUaWxlLCBsYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOworCit2b2lk
IHNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAg
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTQ0
MCw5ICsxNTAwLDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBzY3JlZW5TY2lzc29y
UmVjdE92ZXJDdWxsZWRUaWxlKQogICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMp
OwogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCks
IGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwg
MjAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwg
b3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCks
IHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gZHVtbXlMYXllckxpc3Q7CkBAIC0xNDgyLDcgKzE1NDIsOSBAQCBURVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3QsIHNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpCiAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwogfQogCi1URVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3QsIGxheWVyU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzKQorVEVTVF9PUEFR
VUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc2NyZWVuU2Npc3Nv
clJlY3RPdmVyQ3VsbGVkVGlsZSwgc2NyZWVuU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSk7CisK
K3ZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMp
CiB7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpA
QCAtMTQ5Nyw5ICsxNTU5LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllclNj
aXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcykKICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgyMDAsIDIwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFy
ZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwg
ZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAw
LCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTU0NCw3ICsxNjA2LDkgQEAgVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0LCBsYXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcykK
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEw
MCwgMTAwKSkpOwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIHNjcmVlblNjaXNz
b3JSZWN0T3ZlclBhcnRpYWxUaWxlcykKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShD
Q09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzLCBs
YXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyk7CisKK3ZvaWQgc2NyZWVuU2Npc3NvclJl
Y3RPdmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE1NTksOSArMTYyMyw5IEBA
IFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Npc3NvclJlY3RPdmVyUGFydGlh
bFRpbGVzKQogICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAgIGxheWVy
LT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJz
KTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1
ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlM
YXllckxpc3Q7CkBAIC0xNjA1LDcgKzE2NjksOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tlclRl
c3QsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcykKICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwogfQogCi1U
RVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGxheWVyU2Npc3NvclJlY3RPdmVyTm9UaWxlcykK
K1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3Nj
cmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcywgc2NyZWVuU2Npc3NvclJlY3RPdmVyUGFy
dGlhbFRpbGVzKTsKKwordm9pZCBsYXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMoYm9vbCBvcGFx
dWVMYXllcnMpCiB7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRy
aXg7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOwpAQCAtMTYyMCw5ICsxNjg2LDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0
LCBsYXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpCiAgICAgcGFyZW50TGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7CiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFy
ZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTE2NjcsNyArMTczMyw5IEBAIFRF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKQog
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CiB9CiAKLVRFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Npc3NvclJlY3RPdmVyTm9UaWxlcykKK1RF
U1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVy
U2Npc3NvclJlY3RPdmVyTm9UaWxlcywgbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKTsKKwor
dm9pZCBzY3JlZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQogewog
ICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE2
ODIsOSArMTc1MCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgc2NyZWVuU2Npc3Nv
clJlY3RPdmVyTm9UaWxlcykKICAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsK
ICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBm
YWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIw
MCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwor
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9w
YXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0
cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTcyOCw3ICsxNzk2LDkgQEAgVEVTVChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0LCBzY3JlZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzKQogICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKQorVEVTVF9PUEFR
VUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc2NyZWVuU2Npc3Nv
clJlY3RPdmVyTm9UaWxlcywgc2NyZWVuU2Npc3NvclJlY3RPdmVyTm9UaWxlcyk7CisKK3ZvaWQg
bGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKGJvb2wgb3BhcXVlTGF5ZXJzKQogewog
ICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE3
NDMsOSArMTgxMyw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29y
UmVjdEZvckxheWVyT2ZmT3JpZ2luKQogICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRl
cnMpOwogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDEwMCwgMTAwKSwgSW50U2l6
ZSgyMDAsIDIwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFy
ZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwg
ZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAwLCAxMDApLCBJbnRTaXpl
KDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTE3NzAsNyArMTg0MCw5IEBAIFRF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgbGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3Jp
Z2luKQogICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tl
clRlc3QsIGRhbWFnZVJlY3RPdmVyVGlsZSkKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFV
RShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdp
biwgbGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKTsKKwordm9pZCBkYW1hZ2VSZWN0
T3ZlclRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCiB7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTc4NSw5ICsxODU3LDkgQEAgVEVTVChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0LCBkYW1hZ2VSZWN0T3ZlclRpbGUpCiAgICAgcGFyZW50TGF5ZXIt
PnNldEZpbHRlcnMoZmlsdGVycyk7CiAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZh
bHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKIAogICAgIFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwogICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKQEAgLTE4MTksNyArMTg5
MSw3IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJUaWxlKQog
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKSkpOwogICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwogICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgy
MDAsIDAsIDEwMCwgMTAwKSkpOwogICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwpAQCAtMTgzMSw3
ICsxOTAzLDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBkYW1hZ2VSZWN0T3ZlclRp
bGUpCiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKIH0KIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBkYW1hZ2VSZWN0
T3ZlckN1bGxlZFRpbGUpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3ZlclRpbGUsIGRhbWFnZVJlY3RPdmVyVGlsZSk7CisK
K3ZvaWQgZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQogewogICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTE4NDYs
OSArMTkyMCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJD
dWxsZWRUaWxlKQogICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAgIGxh
eWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlKTsK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1
ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5
ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9w
YXF1ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVt
bXlMYXllckxpc3Q7CkBAIC0xODg5LDcgKzE5NjMsOSBAQCBURVNUKENDT2NjbHVzaW9uVHJhY2tl
clRlc3QsIGRhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSkKICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpLmlzRW1wdHkoKSk7CiB9CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFt
YWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMpCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3ZlckN1bGxlZFRpbGUsIGRhbWFnZVJl
Y3RPdmVyQ3VsbGVkVGlsZSk7CisKK3ZvaWQgZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMoYm9v
bCBvcGFxdWVMYXllcnMpCiB7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOwpAQCAtMTkwNCw5ICsxOTgwLDkgQEAgVEVTVChDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0LCBkYW1hZ2VSZWN0T3ZlclBhcnRpYWxUaWxlcykKICAgICBwYXJlbnRMYXllci0+c2V0
RmlsdGVycyhmaWx0ZXJzKTsKICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2Up
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50
TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMw
MCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCiAgICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwpAQCAtMTk1MSw3ICsyMDI3LDkg
QEAgVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBkYW1hZ2VSZWN0T3ZlclBhcnRpYWxUaWxl
cykKICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAs
IDEwMCwgMTAwKSkpOwogfQogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIGRhbWFnZVJl
Y3RPdmVyTm9UaWxlcykKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lv
blRyYWNrZXJUZXN0X2RhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzLCBkYW1hZ2VSZWN0T3ZlclBh
cnRpYWxUaWxlcyk7CisKK3ZvaWQgZGFtYWdlUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVlTGF5
ZXJzKQogewogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owog
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKQEAgLTE5NjYsOSArMjA0NCw5IEBAIFRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgZGFt
YWdlUmVjdE92ZXJOb1RpbGVzKQogICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMp
OwogICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCks
IGZhbHNlKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwg
MjAwKSwgdHJ1ZSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwg
b3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCks
IHRydWUsIG9wYXF1ZUxheWVycyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gZHVtbXlMYXllckxpc3Q7CkBAIC0yMDEzLDQgKzIwOTEsMTIyIEBAIFRFU1QoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdCwgZGFtYWdlUmVjdE92ZXJOb1RpbGVzKQogICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEw
MCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CiB9CiAKK1RFU1RfT1BBUVVFX0FORF9QQUlO
VEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2RhbWFnZVJlY3RPdmVyTm9UaWxlcywg
ZGFtYWdlUmVjdE92ZXJOb1RpbGVzKTsKKworVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBv
cGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5KQoreworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwor
ICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworCisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0
ZXJzOworICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RSkpOworICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworCisgICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMjAwLCAyMDApLCBmYWxzZSwgZmFsc2UpOworCisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVTaXpl
ID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+
c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7
CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKworICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBh
cmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVT
aXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOworCisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAs
IDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKworICAgIC8vIE9jY2x1ZGVkIHNpbmNlIGl0cyBvdXRzaWRlIHRoZSBzdXJmYWNlIGJvdW5k
cy4KKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgLy8gVGVzdCB3aXRob3V0IGFueSBzY2lz
c29ycy4KKyAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBvY2NsdXNpb24udXNlRGVm
YXVsdExheWVyU2Npc3NvclJlY3QoKTsKKworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllci5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkuaXNFbXB0eSgpKTsKKyAgICBF
WFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5z
aXplKCkpOworfQorCitURVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIG9wYXF1ZUNvbnRlbnRz
UmVnaW9uTm9uRW1wdHkpCit7CisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50
LT5hZGRDaGlsZChsYXllcik7CisKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCBm
YWxzZSwgZmFsc2UpOworCisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRl
clN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1
bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworCisgICAg
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1v
bjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFy
ZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKworICAgIHsK
KyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7CisgICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAs
IDEwMCkpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIg
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBsYXllci0+c2V0
T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoMjAsIDIwLCAxODAsIDE4MCkpOworCisgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkp
OworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTIwLCAxMjAsIDE4MCwgMTgwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNp
emUoKSk7CisKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOworICAgICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoMTUwLCAx
NTAsIDEwMCwgMTAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyNTAsIDI1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAx
MDApKSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggMGRk
YWVjYTQyYzA3YTM0OGFkNzA3YzdiY2FmMDA0ZjEwN2RlNmZhYy4uMjUyMzIzMGUwMDVjYjkxZTE1
NGQ5MTljYzdlOWM5NjVmMGY5NDEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC05NTcsNCArOTU3LDY0
IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lv
bkFuZFNjYWxpbmcpCiAgICAgRVhQRUNUX0VRKDktMSwgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiB9CiAKK1RFU1QoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgb3BhcXVlQ29udGVudHNSZWdpb24pCit7CisgICAgT3duUHRyPFRleHR1cmVNYW5h
Z2VyPiB0ZXh0dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoNCoxMDI0KjEwMjQs
IDIqMTAyNCoxMDI0LCAxMDI0KTsKKyAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSh0ZXh0dXJlTWFuYWdl
ci5nZXQoKSkpOworCisgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGlu
dmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGlsZXMgaW4gdmFyaW91cyB3YXlzLgorCisg
ICAgSW50UmVjdCBvcGFxdWVQYWludFJlY3Q7CisgICAgUmVnaW9uIG9wYXF1ZUNvbnRlbnRzOwor
ICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKKworICAgIEludFJlY3QgY29udGVudEJvdW5kcyA9IElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApOworICAgIEludFJlY3QgdmlzaWJsZUJvdW5kcyA9IEludFJl
Y3QoMCwgMCwgMTAwLCAxNTApOworCisgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRz
LnNpemUoKSk7CisgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUJvdW5kcyk7
CisgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEpOworCisgICAgLy8gSWYgdGhlIGxheWVyIGRv
ZXNuJ3QgcGFpbnQgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIG9wYXF1ZUNvbnRlbnRzUmVnaW9u
IHNob3VsZCBiZSBlbXB0eS4KKyAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7CisgICAgbGF5ZXItPmludmFsaWRh
dGVSZWN0KGNvbnRlbnRCb3VuZHMpOworICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVu
dEJvdW5kcywgbm9PY2NsdXNpb24pOworICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPm9wYXF1
ZUNvbnRlbnRzUmVnaW9uKCk7CisgICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGVudHMuaXNFbXB0
eSgpKTsKKworICAgIC8vIG9wYXF1ZUNvbnRlbnRzUmVnaW9uIHNob3VsZCBtYXRjaCB0aGUgdmlz
aWJsZSBwYXJ0IG9mIHdoYXQgaXMgcGFpbnRlZCBvcGFxdWUuCisgICAgb3BhcXVlUGFpbnRSZWN0
ID0gSW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOworICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKKyAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7CisgICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CisgICAgb3BhcXVlQ29udGVudHMgPSBs
YXllci0+b3BhcXVlQ29udGVudHNSZWdpb24oKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChpbnRlcnNl
Y3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29udGVudHMuYm91
bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMoKS5zaXplKCkp
OworCisgICAgLy8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBz
YW1lIHN0dWZmIHNob3VsZCBiZSBvcGFxdWUuCisgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOworICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOworICAgIG9wYXF1ZUNvbnRl
bnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7CisgICAgRVhQRUNUX0VRX1JFQ1Qo
aW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcyksIG9wYXF1ZUNvbnRl
bnRzLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9wYXF1ZUNvbnRlbnRzLnJlY3RzKCku
c2l6ZSgpKTsKKworICAgIC8vIElmIHdlIHJlcGFpbnQgYSBub24tb3BhcXVlIHBhcnQgb2YgdGhl
IHRpbGUsIHRoZW4gaXQgc2hvdWxkbid0IGxvc2UgaXRzIG9wYXF1ZS1uZXNzLiBBbmQgb3RoZXIg
dGlsZXMgc2hvdWxkCisgICAgLy8gbm90IGJlIGFmZmVjdGVkLgorICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKKyAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxLCAxKSk7CisgICAgbGF5ZXItPnBy
ZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzLCBub09jY2x1c2lvbik7CisgICAgb3BhcXVlQ29u
dGVudHMgPSBsYXllci0+b3BhcXVlQ29udGVudHNSZWdpb24oKTsKKyAgICBFWFBFQ1RfRVFfUkVD
VChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwgb3BhcXVlQ29u
dGVudHMuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb3BhcXVlQ29udGVudHMucmVjdHMo
KS5zaXplKCkpOworCisgICAgLy8gSWYgd2UgcmVwYWludCBhbiBvcGFxdWUgcGFydCBvZiB0aGUg
dGlsZSwgdGhlbiBpdCBzaG91bGQgbG9zZSBpdHMgb3BhcXVlLW5lc3MuIEJ1dCBvdGhlciB0aWxl
cyBzaG91bGQgc3RpbGwKKyAgICAvLyBub3QgYmUgYWZmZWN0ZWQuCisgICAgbGF5ZXItPmZha2VM
YXllclRleHR1cmVVcGRhdGVyKCktPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOworICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChJbnRSZWN0KDEwLCAxMCwgMSwgMSkpOworICAgIGxheWVy
LT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcywgbm9PY2NsdXNpb24pOworICAgIG9wYXF1
ZUNvbnRlbnRzID0gbGF5ZXItPm9wYXF1ZUNvbnRlbnRzUmVnaW9uKCk7CisgICAgRVhQRUNUX0VR
X1JFQ1QoaW50ZXJzZWN0aW9uKEludFJlY3QoMTAsIDEwMCwgOTAsIDEwMCksIHZpc2libGVCb3Vu
ZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvcGFxdWVD
b250ZW50cy5yZWN0cygpLnNpemUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>