<?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>78073</bug_id>
          
          <creation_ts>2012-02-07 20:58:52 -0800</creation_ts>
          <short_desc>[Chromium] Fix opaque tracking for box shadows and non-composited child elements</short_desc>
          <delta_ts>2012-02-10 11:44:02 -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>
          
          
          <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>reed</cc>
    
    <cc>reveman</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tony</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>551756</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-07 20:58:52 -0800</bug_when>
    <thetext>[Chromium] Fix opaque tracking for box shadows/filters and non-composited child elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551793</commentid>
    <comment_count>1</comment_count>
      <attachid>126000</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-07 22:10:16 -0800</bug_when>
    <thetext>Created attachment 126000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551796</commentid>
    <comment_count>2</comment_count>
      <attachid>126000</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-07 22:16:45 -0800</bug_when>
    <thetext>Comment on attachment 126000
Patch

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

Are the box shadow tracking and the transform fixes really part of the same patch, or can this be broken into two patches? It&apos;s kinda big

&gt; LayoutTests/compositing/culling/scrolled-within-boxshadow.html:1
&gt; +&lt;html&gt;

&lt;!DOCTYPE html&gt; before this to trigger standards (instead of quirks) mode, please

&gt; LayoutTests/compositing/culling/scrolled-within-boxshadow.html:36
&gt; +    layoutTestController.waitUntilDone();

please also add layoutTestController.dumpAsText(true) since the render tree isn&apos;t useful and will probably make the test results incompatible across platforms

&gt; LayoutTests/compositing/culling/translated-boxshadow.html:1
&gt; +&lt;html&gt;

same comments as for earlier test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551799</commentid>
    <comment_count>3</comment_count>
      <attachid>126003</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-07 22:21:57 -0800</bug_when>
    <thetext>Created attachment 126003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551800</commentid>
    <comment_count>4</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-07 22:27:06 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 126000 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126000&amp;action=review
&gt; 
&gt; Are the box shadow tracking and the transform fixes really part of the same patch, or can this be broken into two patches? It&apos;s kinda big

A box shadow gives both a filter and a transform.  The shadow part is drawn with a filter, and the solid background is drawn with a transform.

&gt; &gt; LayoutTests/compositing/culling/scrolled-within-boxshadow.html:1
&gt; &gt; +&lt;html&gt;
&gt; 
&gt; &lt;!DOCTYPE html&gt; before this to trigger standards (instead of quirks) mode, please

k.

&gt; &gt; LayoutTests/compositing/culling/scrolled-within-boxshadow.html:36
&gt; &gt; +    layoutTestController.waitUntilDone();
&gt; 
&gt; please also add layoutTestController.dumpAsText(true) since the render tree isn&apos;t useful and will probably make the test results incompatible across platforms

k. 

&gt; &gt; LayoutTests/compositing/culling/translated-boxshadow.html:1
&gt; &gt; +&lt;html&gt;
&gt; 
&gt; same comments as for earlier test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551806</commentid>
    <comment_count>5</comment_count>
      <attachid>126006</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-07 22:33:56 -0800</bug_when>
    <thetext>Created attachment 126006
Patch

- added DOCTYPE tag and dumpAsText(true) to layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552149</commentid>
    <comment_count>6</comment_count>
      <attachid>126006</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-08 08:39:56 -0800</bug_when>
    <thetext>Comment on attachment 126006
Patch

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

Looks OK to me, but I&apos;ll leave for James.

&gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:255
&gt; +    canvasToTargetTransform.setAll(transform.a(), transform.c(), transform.e(), transform.b(), transform.d(), transform.f(), 0, 0, 1);

Nit:  I think you can use AffineTransform&apos;s SkMatrix cast operator here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552168</commentid>
    <comment_count>7</comment_count>
      <attachid>126092</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-08 08:56:57 -0800</bug_when>
    <thetext>Created attachment 126092
Patch

- use AffineTransform::SKMatrix()
- little beefier unit tests to cover transforms in the GraphicsContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552212</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-08 09:41:40 -0800</bug_when>
    <thetext>It was pointed out there is some skia code in here now that&apos;s not guarded by USE(SKIA). I&apos;m told on #chromium that we&apos;re using skia on all platforms as of m18 unless huge problems are found with mac, which is unlikely now. Is it okay to do this then or do I need to make sure things are guarded?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552333</commentid>
    <comment_count>9</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-08 11:40:01 -0800</bug_when>
    <thetext>Support for non-skia platforms is not needed in trunk, so going to leave this as it is for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552338</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-08 11:43:30 -0800</bug_when>
    <thetext>All you, Stephen. I don&apos;t have any more substantive comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552473</commentid>
    <comment_count>11</comment_count>
      <attachid>126092</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-02-08 14:06:10 -0800</bug_when>
    <thetext>Comment on attachment 126092
Patch

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

Looks good.  r=me

&gt; Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp:146
&gt; +    if (paint.getLooper())
&gt; +        return false;
&gt; +    if (paint.getImageFilter())
&gt; +        return false;
&gt; +    if (paint.getMaskFilter())
&gt; +        return false;
&gt; +    SkColorFilter* colorFilter = paint.getColorFilter();
&gt; +    if (colorFilter &amp;&amp; !(colorFilter-&gt;getFlags() &amp; SkColorFilter::kAlphaUnchanged_Flag))
&gt; +        return false;

You might want to sync with Justin Novosad.  He&apos;s been implementing a similar function for the deferred canvas case.  It&apos;s in isPaintOpaque() in SkDeferredCanvas.cpp.  His version errs on the side of transparent, that is, it only returns true if he&apos;s certain that the paint is opaque.  If those semantics work for you, it would be cool to unify these two functions as a public API in skia in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552476</commentid>
    <comment_count>12</comment_count>
      <attachid>126092</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-02-08 14:08:19 -0800</bug_when>
    <thetext>Comment on attachment 126092
Patch

Thanks, that sounds like a perfect match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552567</commentid>
    <comment_count>13</comment_count>
      <attachid>126092</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 15:48:33 -0800</bug_when>
    <thetext>Comment on attachment 126092
Patch

Clearing flags on attachment: 126092

Committed r107143: &lt;http://trac.webkit.org/changeset/107143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552568</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 15:48:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554257</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-10 11:44:02 -0800</bug_when>
    <thetext>Could this have caused the compositing/rubberbanding tests to need a new baseline?

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=platform%2Fchromium%2Fcompositing%2Frubberbanding%2Ftransform-overhang-nw.html%2Cplatform%2Fchromium%2Fcompositing%2Frubberbanding%2Ftransform-overhang-sw.html%2Cplatform%2Fchromium%2Fcompositing%2Frubberbanding%2Ftransform-overhang-n.html%2Cplatform%2Fchromium%2Fcompositing%2Frubberbanding%2Ftransform-overhang-ne.html%2Cplatform%2Fchromium%2Fcompositing%2Frubberbanding%2Ftransform-overhang-size-change.html%2Cplatform%2Fchromium%2Fcompositing%2Frubberbanding%2Ftransform-overhang-w.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126000</attachid>
            <date>2012-02-07 22:10:16 -0800</date>
            <delta_ts>2012-02-07 22:21:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78073-20120208011013.patch</filename>
            <type>text/plain</type>
            <size>33365</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNjE1ZTViODkxNmJm
YWZmZjk3MzMzMWNlZjdmNDA5ODYyNGRiNS4uNTViYWNjNTY1NmU4YTEwZjNkZDFiNTQyY2M0NDY4
OGRkM2JiYmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gRml4
IG9wYXF1ZSB0cmFja2luZyBmb3IgYm94IHNoYWRvd3MgYW5kIG5vbi1jb21wb3NpdGVkIGNoaWxk
IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBjb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3cuaHRt
bAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRv
dy5odG1sCisKKyAgICAgICAgVW5pdCB0ZXN0czogUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3Bw
CisKKyAgICAgICAgV2hlbiBwYWludGluZyBhIGJveCBzaGFkb3csIGEgZmlsdGVyIGlzIGFwcGxp
ZWQgdG8gdGhlIHNraWEgY2FudmFzLCB0aGF0IGNhbiBtYWtlCisgICAgICAgIHBpeGVscyBwYWlu
dGVkIHdpdGggYW4gb3BhcXVlIGNvbG9yIGVuZCB1cCBub24tb3BhcXVlLiBTbyBjb25zaWRlciBp
bWFnZS9tYXNrL2NvbG9yCisgICAgICAgIGZpbHRlcnMgd2hlbiBkZWNpZGluZyBpZiBhIHBhaW50
IGlzIG9wYXF1ZS4KKworICAgICAgICBBbHNvIHdoZW4gcGFpbnRpbmcgdGhlIGJhY2tncm91bmQg
b2YgYW4gZWxlbWVudCB3aXRoIGEgYm94IHNoYWRvdywgdGhlIGJhY2tncm91bmQgaXMKKyAgICAg
ICAgcGFpbnRlZCB3aXRoIGEgdHJhbnNmb3JtIG9uIHRoZSBza2lhIGNhbnZhcyBiYXNlZCBvbiB0
aGUgc2l6ZSBvZiB0aGUgYm94IHNoYWRvdy4gVGhpcworICAgICAgICB0cmFuc2Zvcm0gbmVlZHMg
dG8gYmUgY29uc2lkZXJlZCB3aGVuIHRyYWNraW5nIGFuIG9wYXF1ZSBwYWludC4KKworICAgICAg
ICBIb3dldmVyLCB3aGVuIGEgbGF5ZXIncyBjb250ZW50UmVjdCBwb3NpdGlvbiBpcyBub24temVy
bywgd2UgdHJhbnNsYXRlIHRoZSBHcmFwaGljc0NvbnRleHQKKyAgICAgICAgdG8gcHV0IHRoZSBj
b250ZW50UmVjdCBhdCAwLDAgaW4gdGhlIHNraWEgY2FudmFzLiBGb3IgdHJhY2tpbmcgb3BhcXVl
IHJlZ2lvbnMgaW4gdGhlIHJlc3VsdGluZworICAgICAgICBsYXllciwgd2UgbmVlZCB0byB1bnRv
IHRoaXMgdHJhbnNsYXRpb24uIFNjYWxpbmcgY2FuIGFsc28gb2NjdXIgd2hpY2ggd2UgbXVzdCB1
bmRvLiBTbyB3ZSBwYXNzCisgICAgICAgIHRoZSB0cmFuc2Zvcm0gaW4gdG8gUGxhdGZvcm1Db250
ZXh0U2tpYSB0byBnbyBmcm9tIHRoZSBTa0NhbnZhcyBiYWNrIHRvIHRoZSBsYXllcidzIGNvbnRl
bnQKKyAgICAgICAgY29vcmRpbmF0ZSBzcGFjZS4gT3BhcXVlIHBhaW50cyBjYW4gdGhlbiBiZSB0
cmFja2VkIGluIHRoZSBsYXllcidzIGNvbnRlbnQgc3BhY2UgcmF0aGVyIHRoYW4KKyAgICAgICAg
aW4gdGhlIHNraWEgY2FudmFzIHNwYWNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVU
b1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25T
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50SXNPcGFxdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdp
b25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25T
a2lhOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6Om1hcmtS
ZWN0QXNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6bWFya1Jl
Y3RBc05vbk9wYXF1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVS
ZWdpb25Ta2lhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE9wYXF1ZVJlZ2lvblNr
aWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tp
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UG9pbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRpZERyYXdCb3VuZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoK
KyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Db250ZXh0U2tpYTo6c2V0T3BhcXVlUmVnaW9uVHJhbnNmb3JtKToKKwogMjAxMi0wMi0wNyAg
TWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBy
ZWR1bmRhbnQgY2hlY2tzIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggYmJkMzAxNjRhMDFhNzgzZmM4ODI4NjY3YWM5NGUxNjgwNGVi
ZmRhNC4uM2NhODZkMDBhMDViMzNhMzYyMmE3NTk1YzhkMjBkYWE1Mjc3ZDMwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0wNyAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZpeCBvcGFx
dWUgdHJhY2tpbmcgZm9yIGJveCBzaGFkb3dzIGFuZCBub24tY29tcG9zaXRlZCBjaGlsZCBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzgw
NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDItMDcgIEhhbnMgV2VubmJvcmcgIDxoYW5z
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bTogcmVtb3ZlIFdlYlNwZWVjaElucHV0
UmVzdWx0OjpzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggMGQ5N2U1MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhkODZhMWU4
OC4uMDBhM2U0NjNiODU5MzFiMDRlYmMwNWEwMTllY2Q5NDRhNmI1ZjQ0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICAgICAgYm9yZGVyVGV4ZWxzID8g
UGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6
UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIGNhbnZh
c1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKICAgICBjYW52YXNQYWludGVyLnNraWFD
b250ZXh0KCktPnNldFRyYWNrT3BhcXVlUmVnaW9uKCFsYXllcklzT3BhcXVlKTsKLSAgICBwYWlu
dENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRz
U2NhbGUpOworICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCAqY2Fu
dmFzUGFpbnRlci5za2lhQ29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiAK
ICAgICBpZiAoIWxheWVySXNPcGFxdWUpCiAgICAgICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0g
Y2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRj
NmJkN2Y1MzgyYjUyYjBlZWZiYTEwMzE2NmZjMDhmZS4uZWExOTMwMzY1NWNhMjM1ZmMyN2E0MDZj
NmVlOTZkYTQzMGQ5MWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1D
b250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDUsNyArNDYsNyBAQCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Q2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxh
dGZvcm1Db250ZXh0U2tpYSYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtY29u
dGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CkBAIC02Miw2ICs2MywxMCBA
QCB2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbgogICAgICAgICAgICAgc2NhbGVkQ29udGVudFJlY3Qg
PSBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVHJhbnNm
b3JtIHRyYWNrZWQgb3BhcXVlIHBhaW50cyBiYWNrIHRvIG91ciBsYXllcidzIGNvbnRlbnQgc3Bh
Y2UuCisgICAgICAgIEFTU0VSVChjb250ZXh0LmdldENUTSgpLmlzSW52ZXJ0aWJsZSgpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9ybShjb250ZXh0Lmdl
dENUTSgpLmludmVyc2UoKSk7CisKICAgICAgICAgbV9wYWludGVyLT5wYWludChjb250ZXh0LCBz
Y2FsZWRDb250ZW50UmVjdCk7CiAKICAgICAgICAgaWYgKGNvbnRlbnRzU2NhbGUgIT0gMS4wKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MTVmNjk4NjUz
M2JiODVkNjllN2NmNjQ3ODJiMjZhZjExMTM1YWMuLmQ0OTEzNDhlZTdjZDkwMDAyNTIwMjczM2Ez
NTUwN2MxZDU3M2MxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOworY2xhc3MgUGxhdGZvcm1D
b250ZXh0U2tpYTsKIAogLy8gQmFzZSBjbGFzcyBmb3IgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciBhbmQKIC8vIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgdGhhdCBy
ZWR1Y2VzIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbgpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6
CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBQbGF0
Zm9ybUNvbnRleHRTa2lhJiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50UmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwZDk3NGZhNjNhNDQ1
N2Q5ZWFjN2M4Yjg3M2Y3ZTkxYTRkMjY4NDNiLi4zNWNkMzVhZDNjMDQ2MTZlNTNkNGExYmMxZTVj
ZjhlYmVlMjhlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UgogICAgIHBsYXRmb3JtQ29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsKICAgICBwbGF0
Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24oIW1fbGF5ZXJJc09wYXF1ZSk7CiAgICAg
R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBw
YWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUp
OworICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQsIGNv
bnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7
CiAKICAgICBpZiAoIW1fbGF5ZXJJc09wYXF1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCmluZGV4IDc0
MTQ1ZjFjOTI3MzkxZDk4Y2QwNTJlNTQyNjMwNzI2NmU1OGJlYjkuLjk3ZDJlNDlkOTExNmE2NDk1
ZDJhZTRkMGE5NGM1ZjkyZjE1MGRhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKIAogI2luY2x1ZGUgIlNr
Q2FudmFzLmgiCisjaW5jbHVkZSAiU2tDb2xvckZpbHRlci5oIgogI2luY2x1ZGUgIlNrU2hhZGVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNCwxMCArMTM1LDE5IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBwYWludElzT3BhcXVlKGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0Jp
dG1hcCogYml0bWFwID0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChiaXRtYXAgJiYg
IWJpdG1hcC0+aXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChwYWlu
dC5nZXRMb29wZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChwYWludC5nZXRJ
bWFnZUZpbHRlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50LmdldE1h
c2tGaWx0ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFNrQ29sb3JGaWx0ZXIqIGNv
bG9yRmlsdGVyID0gcGFpbnQuZ2V0Q29sb3JGaWx0ZXIoKTsKKyAgICBpZiAoY29sb3JGaWx0ZXIg
JiYgIShjb2xvckZpbHRlci0+Z2V0RmxhZ3MoKSAmIFNrQ29sb3JGaWx0ZXI6OmtBbHBoYVVuY2hh
bmdlZF9GbGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4
dFNraWEqIGNvbnRleHQsIGNvbnN0IFNrUmVjdCYgZmlsbFJlY3QsIGNvbnN0IFNrUGFpbnQmIHBh
aW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWRE
cmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWlu
dCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXApCiB7CiAgICAgLy8gQW55IHN0cm9raW5n
IG1heSBwdXQgYWxwaGEgaW4gcGl4ZWxzIGV2ZW4gaWYgdGhlIGZpbGxpbmcgcGFydCBkb2VzIG5v
dC4KICAgICBpZiAocGFpbnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50OjprRmlsbF9TdHlsZSkgewpA
QCAtMTQ5LDIxICsxNTksMjEgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChj
b25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBTa1IKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBTa1JlY3Qgc3Ryb2tlUmVjdDsKICAgICAgICAgICAgIHN0cm9rZVJl
Y3QgPSBwYWludC5jb21wdXRlRmFzdEJvdW5kcyhmaWxsUmVjdCwgJnN0cm9rZVJlY3QpOwotICAg
ICAgICAgICAgZGlkRHJhdyhjb250ZXh0LCBzdHJva2VSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxs
c0JvdW5kcyk7CisgICAgICAgICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgc3Ryb2tl
UmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmlsbHNCb3VuZHMpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgYm9vbCBjaGVja0ZpbGxPbmx5ID0gdHJ1ZTsKICAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNP
cGFxdWUocGFpbnQsIGJpdG1hcCwgY2hlY2tGaWxsT25seSk7CiAgICAgYm9vbCBmaWxsc0JvdW5k
cyA9IHBhaW50LmdldFN0eWxlKCkgIT0gU2tQYWludDo6a1N0cm9rZV9TdHlsZTsKLSAgICBkaWRE
cmF3KGNvbnRleHQsIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CisgICAg
ZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxs
c0JvdW5kcyk7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgU2tQYXRoJiBwYXRoLCBjb25zdCBT
a1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0sIGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAg
U2tSZWN0IHJlY3Q7CiAgICAgaWYgKHBhdGguaXNSZWN0KCZyZWN0KSkgewotICAgICAgICBkaWRE
cmF3UmVjdChjb250ZXh0LCByZWN0LCBwYWludCwgMCk7CisgICAgICAgIGRpZERyYXdSZWN0KGNv
bnRleHQsIHRyYW5zZm9ybSwgcmVjdCwgcGFpbnQsIDApOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xNzQsMTEgKzE4NCwxMSBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQ
YXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IFNrUAogICAgICAg
ICBkaWREcmF3VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUpOwogICAgIGVsc2UgewogICAgICAgICBy
ZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMocGF0aC5nZXRCb3VuZHMoKSwgJnJlY3QpOwot
ICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRz
KTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFx
dWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlk
RHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBTa0NhbnZhczo6
UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRzW10sIGNv
bnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRz
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNv
bnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGlmICgh
bnVtUG9pbnRzKQogICAgICAgICByZXR1cm47CkBAIC0yMDMsMTEgKzIxMywxMSBAQCB2b2lkIE9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSog
Y29udGV4dCwgU2tDYW52YQogICAgICAgICBkaWREcmF3VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUp
OwogICAgIGVsc2UgewogICAgICAgICByZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMocmVj
dCwgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4
dCwgY29uc3QgU2tSZWN0JiBib3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBi
b3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGJvb2wgb3BhcXVlID0gcGFpbnRJ
c09wYXF1ZShwYWludCk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IGZhbHNlOwpAQCAtMjE3LDE2
ICsyMjcsMzcgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdAogICAgIGVsc2UgewogICAgICAgICBT
a1JlY3QgcmVjdDsKICAgICAgICAgcmVjdCA9IHBhaW50LmNvbXB1dGVGYXN0Qm91bmRzKGJvdW5k
cywgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhdyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25z
dCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBi
b29sIGZpbGxzQm91bmRzKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBs
YXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdz
T3BhcXVlLCBib29sIGZpbGxzQm91bmRzKQogeworICAgIFNrUmVjdCB0YXJnZXRSZWN0ID0gcmVj
dDsKKworICAgIGlmIChjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcFR5cGUoKSAhPSBTa0NhbnZh
czo6a1JlY3RfQ2xpcFR5cGUpCisgICAgICAgIGZpbGxzQm91bmRzID0gZmFsc2U7CisgICAgZWxz
ZSB7CisgICAgICAgIC8vIEFwcGx5IHRoZSBjdXJyZW50IGNsaXAuCisgICAgICAgIFNrSVJlY3Qg
ZGV2aWNlQ2xpcDsKKyAgICAgICAgY29udGV4dC0+Y2FudmFzKCktPmdldENsaXBEZXZpY2VCb3Vu
ZHMoJmRldmljZUNsaXApOworICAgICAgICBpZiAoIXRhcmdldFJlY3QuaW50ZXJzZWN0KFNrSW50
VG9TY2FsYXIoZGV2aWNlQ2xpcC5mTGVmdCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mVG9w
KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZSaWdodCksIFNrSW50VG9TY2FsYXIoZGV2aWNl
Q2xpcC5mQm90dG9tKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQXBw
bHkgdGhlIHRyYW5zZm9ybXMuIFRoZSBtYXBwaW5nIG9mIEFmZmluZVRyYW5zZm9ybSA8LT4gU2tN
YXRyaXggY29tZXMgZnJvbSBHcmFwaGljc0NvbnRleHQ6OmdldENUTSgpLgorICAgIFNrTWF0cml4
IGNhbnZhc1RyYW5zZm9ybSA9IGNvbnRleHQtPmNhbnZhcygpLT5nZXRUb3RhbE1hdHJpeCgpOwor
ICAgIGlmICghY2FudmFzVHJhbnNmb3JtLm1hcFJlY3QoJnRhcmdldFJlY3QpKQorICAgICAgICBm
aWxsc0JvdW5kcyA9IGZhbHNlOworICAgIFNrTWF0cml4IGNhbnZhc1RvVGFyZ2V0VHJhbnNmb3Jt
OworICAgIGNhbnZhc1RvVGFyZ2V0VHJhbnNmb3JtLnNldEFsbCh0cmFuc2Zvcm0uYSgpLCB0cmFu
c2Zvcm0uYygpLCB0cmFuc2Zvcm0uZSgpLCB0cmFuc2Zvcm0uYigpLCB0cmFuc2Zvcm0uZCgpLCB0
cmFuc2Zvcm0uZigpLCAwLCAwLCAxKTsKKyAgICBpZiAoIWNhbnZhc1RvVGFyZ2V0VHJhbnNmb3Jt
Lm1hcFJlY3QoJnRhcmdldFJlY3QpKQorICAgICAgICBmaWxsc0JvdW5kcyA9IGZhbHNlOworCiAg
ICAgaWYgKGZpbGxzQm91bmRzICYmIHhmZXJtb2RlSXNPcGFxdWUocGFpbnQsIGRyYXdzT3BhcXVl
KSkKLSAgICAgICAgbWFya1JlY3RBc09wYXF1ZShjb250ZXh0LCByZWN0KTsKLSAgICBlbHNlIGlm
IChTa1JlY3Q6OkludGVyc2VjdHMocmVjdCwgbV9vcGFxdWVSZWN0KSAmJiAheGZlcm1vZGVQcmVz
ZXJ2ZXNPcGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKSkKLSAgICAgICAgbWFya1JlY3RBc05vbk9w
YXF1ZShyZWN0KTsKKyAgICAgICAgbWFya1JlY3RBc09wYXF1ZShjb250ZXh0LCB0cmFuc2Zvcm0s
IHRhcmdldFJlY3QpOworICAgIGVsc2UgaWYgKCF4ZmVybW9kZVByZXNlcnZlc09wYXF1ZShwYWlu
dCwgZHJhd3NPcGFxdWUpKQorICAgICAgICBtYXJrUmVjdEFzTm9uT3BhcXVlKHRyYW5zZm9ybSwg
dGFyZ2V0UmVjdCk7CiB9CiAKIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1VuYm91bmRl
ZChjb25zdCBTa1BhaW50JiBwYWludCwgYm9vbCBkcmF3c09wYXF1ZSkKQEAgLTIzNywyOSArMjY4
LDE5IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1VuYm91bmRlZChjb25zdCBTa1Bh
aW50JiBwYWludCwgYm9vbCBkcmF3c09wYXF1ZSkKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6bWFya1JlY3RBc09wYXF1ZShjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250
ZXh0LCBjb25zdCBTa1JlY3QmIHBhaW50UmVjdCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6bWFy
a1JlY3RBc09wYXF1ZShjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiByZWN0KQogewogICAgIC8v
IFdlIHdhbnQgdG8ga2VlcCB0cmFjayBvZiBhbiBvcGFxdWUgcmVnaW9uIGJ1dCBib3VuZCBpdHMg
Y29tcGxleGl0eSBhdCBhIGNvbnN0YW50IHNpemUuCiAgICAgLy8gV2Uga2VlcCB0cmFjayBvZiB0
aGUgbGFyZ2VzdCByZWN0YW5nbGUgc2VlbiBieSBhcmVhLiBJZiB3ZSBjYW4gYWRkIHRoZSBuZXcg
cmVjdCB0byB0aGlzCiAgICAgLy8gcmVjdGFuZ2xlIHRoZW4gd2UgZG8gdGhhdCwgYXMgdGhhdCBp
cyB0aGUgY2hlYXBlc3Qgd2F5IHRvIGluY3JlYXNlIHRoZSBhcmVhIHJldHVybmVkCiAgICAgLy8g
d2l0aG91dCBpbmNyZWFzaW5nIHRoZSBjb21wbGV4aXR5LgogCi0gICAgaWYgKHBhaW50UmVjdC5p
c0VtcHR5KCkpCisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCFjb250ZXh0LT5jbGlwcGVkVG9JbWFnZSgpLmlzT3BhcXVlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBpZiAoY29udGV4dC0+Y2FudmFzKCktPmdldENsaXBUeXBlKCkgIT0gU2tDYW52YXM6
OmtSZWN0X0NsaXBUeXBlKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG1fb3BhcXVlUmVjdC5j
b250YWlucyhwYWludFJlY3QpKQorICAgIGlmIChtX29wYXF1ZVJlY3QuY29udGFpbnMocmVjdCkp
CiAgICAgICAgIHJldHVybjsKLQotICAgIC8vIEFwcGx5IHRoZSBjdXJyZW50IGNsaXAuCi0gICAg
U2tJUmVjdCBkZXZpY2VDbGlwOwotICAgIGNvbnRleHQtPmNhbnZhcygpLT5nZXRDbGlwRGV2aWNl
Qm91bmRzKCZkZXZpY2VDbGlwKTsKLSAgICBTa1JlY3QgcmVjdCA9IHBhaW50UmVjdDsKLSAgICBp
ZiAoIXJlY3QuaW50ZXJzZWN0KFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mTGVmdCksIFNrSW50
VG9TY2FsYXIoZGV2aWNlQ2xpcC5mVG9wKSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZSaWdo
dCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mQm90dG9tKSkpCi0gICAgICAgIHJldHVybjsK
LQogICAgIGlmIChyZWN0LmNvbnRhaW5zKG1fb3BhcXVlUmVjdCkpIHsKICAgICAgICAgbV9vcGFx
dWVSZWN0ID0gcmVjdDsKICAgICAgICAgcmV0dXJuOwpAQCAtMjgzLDExICszMDQsMTMgQEAgdm9p
ZCBPcGFxdWVSZWdpb25Ta2lhOjptYXJrUmVjdEFzT3BhcXVlKGNvbnN0IFBsYXRmb3JtQ29udGV4
dFNraWEqIGNvbnRleHQsIGNvbnMKICAgICAgICAgbV9vcGFxdWVSZWN0ID0gcmVjdDsKIH0KIAot
dm9pZCBPcGFxdWVSZWdpb25Ta2lhOjptYXJrUmVjdEFzTm9uT3BhcXVlKGNvbnN0IFNrUmVjdCYg
cmVjdCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6bWFya1JlY3RBc05vbk9wYXF1ZShjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiByZWN0KQogewogICAgIC8v
IFdlIHdhbnQgdG8ga2VlcCBhcyBtdWNoIG9mIHRoZSBjdXJyZW50IG9wYXF1ZSByZWN0YW5nbGUg
YXMgd2UgY2FuLCBzbyBmaW5kIHRoZSBvbmUgbGFyZ2VzdAogICAgIC8vIHJlY3RhbmdsZSBpbnNp
ZGUgbV9vcGFxdWVSZWN0IHRoYXQgZG9lcyBub3QgaW50ZXJzZWN0IHdpdGggfHJlY3R8LgogCisg
ICAgaWYgKCFTa1JlY3Q6OkludGVyc2VjdHMocmVjdCwgbV9vcGFxdWVSZWN0KSkKKyAgICAgICAg
cmV0dXJuOwogICAgIGlmIChyZWN0LmNvbnRhaW5zKG1fb3BhcXVlUmVjdCkpIHsKICAgICAgICAg
bV9vcGFxdWVSZWN0LnNldEVtcHR5KCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmgK
aW5kZXggOTNmMmM1YTFiMWQ0MmVmNjQ2ZDY0YjU0YWVmYjJjNmU3NTgwZjkwMC4uM2IxODRmNzM0
NGM4ZWUyNjFhYzY5ZGE1M2MxZDU1Mjc4MmIzZDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmgKQEAgLTQw
LDYgKzQwLDcgQEAKICNpbmNsdWRlICJTa1JlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgUGxhdGZvcm1Db250ZXh0U2tpYTsKIAogLy8g
VGhpcyBjbGFzcyBpcyBhbiBlbmNhcHN1bGF0aW9uIG9mIGZ1bmN0aW9uYWxpdHkgZm9yIFBsYXRm
b3JtQ29udGV4dFNraWEsIGFuZCBpdHMgbWV0aG9kcyBhcmUgbWlycm9yZWQKQEAgLTUyLDE2ICs1
MywxNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIHJlc3VsdGluZyBvcGFxdWUgcmVnaW9uIGFzIGEg
c2luZ2xlIHJlY3QuCiAgICAgSW50UmVjdCBhc1JlY3QoKSBjb25zdDsKIAotICAgIHZvaWQgZGlk
RHJhd1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUmVjdCYsIGNvbnN0
IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCopOwotICAgIHZvaWQgZGlkRHJhd1BhdGgoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUGF0aCYsIGNvbnN0IFNrUGFpbnQmKTsKLSAg
ICB2b2lkIGRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIFNrQ2FudmFz
OjpQb2ludE1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWlu
dCYpOwotICAgIHZvaWQgZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSos
IGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdSZWN0KGNv
bnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBT
a1JlY3QmLCBjb25zdCBTa1BhaW50JiwgY29uc3QgU2tCaXRtYXAqKTsKKyAgICB2b2lkIGRpZERy
YXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBTa1BhdGgmLCBjb25zdCBTa1BhaW50Jik7CisgICAgdm9pZCBkaWREcmF3UG9pbnRz
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBTa0Nh
bnZhczo6UG9pbnRNb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50W10sIGNvbnN0IFNr
UGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdCb3VuZGVkKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNr
aWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50
Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNr
aWEqLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50JiwgYm9vbCBkcmF3c09wYXF1ZSwgYm9v
bCBmaWxsc0JvdW5kcyk7CisgICAgdm9pZCBkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNr
aWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50
JiwgYm9vbCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcyk7CiAgICAgdm9pZCBkaWREcmF3
VW5ib3VuZGVkKGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVlKTsKLSAgICB2b2lkIG1h
cmtSZWN0QXNPcGFxdWUoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUmVjdCYp
OwotICAgIHZvaWQgbWFya1JlY3RBc05vbk9wYXF1ZShjb25zdCBTa1JlY3QmKTsKKyAgICB2b2lk
IG1hcmtSZWN0QXNPcGFxdWUoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYpOworICAgIHZvaWQgbWFya1JlY3RBc05vbk9wYXF1
ZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmKTsKIAogICAgIFNrUmVjdCBt
X29wYXF1ZVJlY3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKaW5kZXggMzMwNjJjYWNh
OTJmOWE0YjM2YmZmYTk5OTcwYWUwNzQ0YWE4ZWQ2MC4uYzMyM2EwZDdlZmZiM2RjNmQ5MTM4ZDgx
ZTk3MTE5Y2NkYmUxM2Y2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCkBAIC0zMiw3ICsz
Miw2IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAKLSNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0QuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgpAQCAtNjA5
LDI1ICs2MDgsMjUgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzZXRHcmFwaGljc0NvbnRl
eHQzRChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tp
YTo6ZGlkRHJhd1JlY3QoY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCwg
Y29uc3QgU2tCaXRtYXAqIGJpdG1hcCkKIHsKICAgICBpZiAobV90cmFja09wYXF1ZVJlZ2lvbikK
LSAgICAgICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1JlY3QodGhpcywgcmVjdCwgcGFpbnQsIGJp
dG1hcCk7CisgICAgICAgIG1fb3BhcXVlUmVnaW9uLmRpZERyYXdSZWN0KHRoaXMsIG1fb3BhcXVl
UmVnaW9uVHJhbnNmb3JtLCByZWN0LCBwYWludCwgYml0bWFwKTsKIH0KIAogdm9pZCBQbGF0Zm9y
bUNvbnRleHRTa2lhOjpkaWREcmF3UGF0aChjb25zdCBTa1BhdGgmIHBhdGgsIGNvbnN0IFNrUGFp
bnQmIHBhaW50KQogewogICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKQotICAgICAgICBtX29w
YXF1ZVJlZ2lvbi5kaWREcmF3UGF0aCh0aGlzLCBwYXRoLCBwYWludCk7CisgICAgICAgIG1fb3Bh
cXVlUmVnaW9uLmRpZERyYXdQYXRoKHRoaXMsIG1fb3BhcXVlUmVnaW9uVHJhbnNmb3JtLCBwYXRo
LCBwYWludCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6ZGlkRHJhd1BvaW50cyhT
a0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQgcG9p
bnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGlmIChtX3RyYWNrT3BhcXVlUmVn
aW9uKQotICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3UG9pbnRzKHRoaXMsIG1vZGUsIG51
bVBvaW50cywgcG9pbnRzLCBwYWludCk7CisgICAgICAgIG1fb3BhcXVlUmVnaW9uLmRpZERyYXdQ
b2ludHModGhpcywgbV9vcGFxdWVSZWdpb25UcmFuc2Zvcm0sIG1vZGUsIG51bVBvaW50cywgcG9p
bnRzLCBwYWludCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6ZGlkRHJhd0JvdW5k
ZWQoY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBpZiAo
bV90cmFja09wYXF1ZVJlZ2lvbikKLSAgICAgICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd0JvdW5k
ZWQodGhpcywgcmVjdCwgcGFpbnQpOworICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3Qm91
bmRlZCh0aGlzLCBtX29wYXF1ZVJlZ2lvblRyYW5zZm9ybSwgcmVjdCwgcGFpbnQpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCmluZGV4IDEyYmRmNzk1
YzY3MTkxZmVhZjJmYWEyOWNlOTJhZGVmY2M4NDFmY2MuLmIzMDY0NTBjYjFkOGRjOWZhY2U0NzNm
M2M5MjQzZTg3ODNjYzQ2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaWZuZGVmIFBsYXRmb3JtQ29udGV4dFNraWFfaAogI2RlZmluZSBQbGF0Zm9ybUNvbnRl
eHRTa2lhX2gKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vbmNvcHlhYmxlLmgiCiAjaW5jbHVkZSAiT3BhcXVl
UmVnaW9uU2tpYS5oIgpAQCAtMTkyLDYgKzE5Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERl
ZmVycmVkKGJvb2wgZGVmZXJyZWQpIHsgbV9kZWZlcnJlZCA9IGRlZmVycmVkOyB9CiAKICAgICB2
b2lkIHNldFRyYWNrT3BhcXVlUmVnaW9uKGJvb2wgdHJhY2spIHsgbV90cmFja09wYXF1ZVJlZ2lv
biA9IHRyYWNrOyB9CisgICAgLy8gQSB0cmFuc2Zvcm0gYXBwbGllZCB0byBhbGwgdHJhY2tlZCBv
cGFxdWUgcGFpbnRzLiBUaGlzIGlzIGFwcGxpZWQgYXQgdGhlIHRpbWUgdGhlIHBhaW50aW5nIGlz
IGRvbmUuCisgICAgdm9pZCBzZXRPcGFxdWVSZWdpb25UcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB0cmFuc2Zvcm0pIHsgbV9vcGFxdWVSZWdpb25UcmFuc2Zvcm0gPSB0cmFuc2Zvcm07
IH0KIAogICAgIC8vIFRoaXMgd2lsbCBiZSBhbiBlbXB0eSByZWdpb24gdW5sZXNzIHRyYWNraW5n
IGlzIGVuYWJsZWQuCiAgICAgY29uc3QgT3BhcXVlUmVnaW9uU2tpYSYgb3BhcXVlUmVnaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWdpb247IH0KQEAgLTIyOSw2ICsyMzIsNyBAQCBwcml2
YXRlOgogICAgIC8vIFRyYWNrcyB0aGUgcmVnaW9uIHBhaW50ZWQgb3BhcXVlIHZpYSB0aGUgR3Jh
cGhpY3NDb250ZXh0LgogICAgIE9wYXF1ZVJlZ2lvblNraWEgbV9vcGFxdWVSZWdpb247CiAgICAg
Ym9vbCBtX3RyYWNrT3BhcXVlUmVnaW9uOworICAgIEFmZmluZVRyYW5zZm9ybSBtX29wYXF1ZVJl
Z2lvblRyYW5zZm9ybTsKIAogICAgIC8vIFN0b3JlcyBpbWFnZSBzaXplcyBmb3IgYSBoaW50IHRv
IGNvbXB1dGUgaW1hZ2UgcmVzYW1wbGluZyBtb2Rlcy4KICAgICAvLyBWYWx1ZXMgYXJlIHVzZWQg
aW4gSW1hZ2VTa2lhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAppbmRleCBkYzFjZjI5OTM5MzFmMmM0NjAy
OGI4N2RiN2E3ZTgyMTQyM2FjYjU1Li42NzQ3ZGYzZDk2NWJjMzBmMTVmMDgxM2QzZWY4Y2I1OGQ1
NGI4ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3Jt
Q29udGV4dFNraWFUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Bs
YXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcApAQCAtNTQ4LDQgKzU0OCw1NCBAQCBURVNUKFBsYXRm
b3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZU92YWxUZXN0KQogICAgIEVYUEVDVF9QSVhF
TFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkp
OwogfQogCitURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCBsYXllclRyYW5zZm9ybVRyYW5z
bGF0ZU9wYXF1ZVRlc3QpCit7CisgICAgU2tCaXRtYXAgYml0bWFwOworICAgIGJpdG1hcC5zZXRD
b25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCA0MDAsIDQwMCk7CisgICAgYml0bWFw
LmFsbG9jUGl4ZWxzKCk7CisgICAgYml0bWFwLmVyYXNlQ29sb3IoMCk7CisgICAgU2tDYW52YXMg
Y2FudmFzKGJpdG1hcCk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKDEwLCAxMCk7CisKKyAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRm
b3JtQ29udGV4dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFxdWVS
ZWdpb24odHJ1ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9y
bSh0cmFuc2Zvcm0pOworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRl
eHQpOworCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworCisgICAg
Y29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjAsIDIwLCA5MCwgOTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCku
YXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCB0cmFuc2Zvcm0uaW52
ZXJzZSgpLm1hcFJlY3QocGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKSk7
CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24o
KS5hc1JlY3QoKSk7Cit9CisKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIGxheWVyVHJh
bnNmb3JtU2NhbGVPcGFxdWVUZXN0KQoreworICAgIFNrQml0bWFwIGJpdG1hcDsKKyAgICBiaXRt
YXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgNDAwLCA0MDApOworICAg
IGJpdG1hcC5hbGxvY1BpeGVscygpOworICAgIGJpdG1hcC5lcmFzZUNvbG9yKDApOworICAgIFNr
Q2FudmFzIGNhbnZhcyhiaXRtYXApOworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Cisg
ICAgdHJhbnNmb3JtLnNjYWxlKDIpOworCisgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9y
bUNvbnRleHQoJmNhbnZhcyk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVn
aW9uKHRydWUpOworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRPcGFxdWVSZWdpb25UcmFuc2Zvcm0o
dHJhbnNmb3JtKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCgmcGxhdGZvcm1Db250ZXh0
KTsKKworICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKworICAgIGNv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSwgb3BhcXVlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDQwLCA0MCwgMjAsIDIwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgdHJhbnNmb3JtLmludmVy
c2UoKS5tYXBSZWN0KHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSkpOwor
CisgICAgY29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCku
YXNSZWN0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVmMWI4YzQxNjlkNmE0NDU3
OWY5MzJhMjYyODQyM2IwNTRlYjEyYmQuLjQ5YTYyMDc0NWNhYzc5MDIyODQzNzg4NmQ2YzhjZGI3
YzM1N2VmYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMi0wNyAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZpeCBvcGFxdWUg
dHJhY2tpbmcgZm9yIGJveCBzaGFkb3dzIGFuZCBub24tY29tcG9zaXRlZCBjaGlsZCBlbGVtZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbXBv
c2l0aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy1leHBlY3RlZC5wbmc6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNo
YWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcv
c2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3Np
dGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnBuZzogQWRkZWQuCisg
ICAgICAgICogY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRvdy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1i
b3hzaGFkb3cuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMDcgIEp1bGllbiBDaGFmZnJhaXggIDxq
Y2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhp
bi1ib3hzaGFkb3ctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGlu
Zy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjEx
NzM3MjhmM2UyNGZiMmMyMjU5NjIyNWQ5MjAwMmFhMmQwZjA1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAzNTc0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEEl
QFdzJGxIYG9rPG19P29UbjBsKwp6R217a0t3NnNLbldDSjR1R3ZreWI2SHt8ak9Pd1IzQnFJWko8
SFZwSU8lOS04OWlBP1pBcio3cC1yMU9VSjQ0REwKemFGUzUrO2x7P29kK0VEWWVveCMhRllsZkBV
eExhNjw8MmB6aj1OYWhab0xrKnV+YDAjb0JNfj48NDJHRWAoRSRqCnpWXyt5KjdSfUdWQFdFZXMw
fFBANjZFfWxgOHAoe2B1ant0KXkqQSleejNaUk42bGNaKTw7TkMkaFlrMjFwRmd9LQp6eXtZYD10
T0hUKXJJRks5VzYhOz12fGJhUCZHPXpuRkhwcn02VGl6QVo7I3pBeUFWOygrUmRDVGQrbD9QLVAr
fWsKeml+aUw4dEJkSjd7JldZPT19bWgxaFZsJm0lYGFRezl5YW0rWTsjdD1PI1dIc3o1ZF5Ld19K
YFdTYjNUJGAqIVR5CnpZbkxDXnszIWVOP2R5LVB3X28wVlNZeDRne0J6WnxCVE48aGp9X2tPLUNh
NUJlZmY5KC18aFhNa0dLQ2x7UCRnNQp6akMtfXRqdz9yeypRQ2J3byZFXmFHWDEqI3tDSW8me2RX
Nmg7YHlFKiZhe2s3ViUhckNibG1kNGY4WUhwdGdHMm8KentjQjUmUjltOT95S1UqTSt2b0EhbzVe
aCtAd3pKUntRZEx5X3NpfEN0Tlopc194fTMmI1R5eFJ0bGpfYj52Znk2Cno8KEtjO29aVmZ6e2Nh
YHV6aCY4U2ZfYyh3bz9tflNEQTh0ckZHWXRUQDgkVzJLZm5HMm5tazgteVpPdktUWSl7cwp6O2B6
MVA0X005TipGUWRleTk3cj17SzJ4bms5V3cjeyVfRVo1c1NGcHpKQSg2X3ZGMTdlSGlaQz5FOSgp
KTR7JjMKekBGUUR4P0RlPFk1ekMpYDVvMmNqcGx6WU17QjNna0UzUzB+UHJEVlApM3o+VmAwI297
Km9YWmVwNk4wO18jYGtnCno5QU9hfldzQztHWGk2QigxKjVyT0cjOEJLZzMoK3NJQzg8OFF3T0F1
N2ZLektKWWF2IyNQNn1peSgrR1heP0gzdgp6Ymt+K1cmYTsxZUtTX2IxamBlcnVlKDc9fT9zZGhI
MzZTUWEmdTVlU0A4OHxlUC1EbkBTNjZRRHxKbFVuQHdmZioKekpCfFJHY0EwK3khfX51IWpePCVH
dT5MX3wtSmdwUWRNeVdAPlEkZEg9WCkjYDBjO0h9LUBQMnY4b0xpX2psRipQCno/cSVadDRYb0VK
WlhfSGBKeXNnfnw2bHoyISZPbSE/VmxlJHtxZ0RQKlZFNmhwRmg5O0pne2tZXy04P3MtfDFhQAp6
P2stXjF2b2RxZXg2NV9hNGopVXRlfGg9dGEoPzsjLTBDJWR3X0p9WG5Bb2txPmk/WXQtb3BtfHBD
QTlKdSNnOX4Kekd4eUJYJm9YN0cofG0wNDQlcGA5ZTNKUDhMKmMoNCNtJUwhRkZ5RllHcEVePD1k
amg5PVRCPip7RXQ4VkAlUFcpCno5V3dvPTNuaiV+WWQzdClsVW59UGJYbnlyYCF7eEhGN0p7NXpC
QEMkbVVhM3JpdyRqdzVsQWlUISYkWWdBTVg5Rgp6Mig2ajM/ZmwwYV9FT2dIOWNtQ1k2NUNlJkQo
cmE5Xmd3S3p6UnttUUNlNkU9VWRLcEFGZmpadlUjR2AzK0F5VEIKY2JeT01AYjN6JlNsYWh+JWZn
TCNwUGdnJmVieHNMUTAwPHhhd2czUEMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNo
YWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9s
bGVkLXdpdGhpbi1ib3hzaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1NmYzYzQ5Yjcy
ZGNkMWQ1OTI5NTY5Y2Q2NzI2ODg5ZmIwZDE0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3ctZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgyMCwyMCkgc2l6
ZSA1MDJ4NTAyCisgIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB6STogMTIwIHtESVZ9IGF0ICgy
MCwyMCkgc2l6ZSA1MDJ4NTAyIFtiZ2NvbG9yPSMwMDk5MDBdIFtib3JkZXI6ICgxcHggc29saWQg
IzAwMDAwMDAwKV0KK2xheWVyIGF0ICgyMSwyMSkgc2l6ZSA1MDB4NTAwIHNjcm9sbFkgMzAwIHNj
cm9sbEhlaWdodCAxMDAwCisgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxLDEpIHNpemUgNTAweDUw
MAorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNTAweDEwMDAgW2JnY29sb3I9
IzAwREQwMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvc2Ny
b2xsZWQtd2l0aGluLWJveHNoYWRvdy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3Vs
bGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNjOTE2OTFj
NmM1YTIyMDMxZTk1YzkwYWZhYWJlMjI1MTc2MWRiOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy5odG1s
CkBAIC0wLDAgKzEsNTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisuY29tcCB7CisgIC13
ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDBweCk7Cit9Citib2R5IHsKKyAgbWFyZ2luOjA7
CisgIHBhZGRpbmc6MDsKK30KKy5zaGFkb3cgeworICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgbGVm
dDoyMHB4OyByaWdodDoyMHB4OworICB3aWR0aDo1MDBweDsKKyAgaGVpZ2h0OjUwMHB4OworICB0
b3A6MHB4OyBib3R0b206MjBweDsKKyAgei1pbmRleDoxMjA7CisgIG1hcmdpbi10b3A6MjBweDsK
KyAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisgIC13ZWJraXQtYm94LXNoYWRvdzog
MCAwIDZweCAjMDkwOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkwOworfQorI3Njcm9sbCB7Cisg
IG92ZXJmbG93LXk6IGhpZGRlbjsgLyogc2Nyb2xsYWJsZSBidXQgbm8gc2Nyb2xsYmFycyB2aXNp
YmxlLiAqLworICB3aWR0aDo1MDBweDsKKyAgaGVpZ2h0OiA1MDBweDsKK30KKy5zY3JvbGxDb250
ZW50IHsKKyAgd2lkdGg6MTAwJTsKKyAgaGVpZ2h0OiAxMDAwcHg7IC8qIG1ha2UgdGhlIGNvbnRh
aW5lciBzY3JvbGxhYmxlICovCisgIGJhY2tncm91bmQtY29sb3I6ICMwZDA7Cit9Cis8L3N0eWxl
PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICB9CisKKyAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGwnKS5zY3JvbGxUb3Ag
Kz0gMzAwOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgIH0sIDApOyB9OworPC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPCEtLSBJZiBjdWxsZWQgaW5jb3JyZWN0bHksIHRo
ZSB0b3AvbGVmdCBlZGdlcyBvdXRzaWRlIG9mIHRoZSBzaGFkb3dlZCBib3ggZW5kIHVwIGJlaW5n
IGN1bGxlZCBpbnN0ZWFkIG9mIHBhaW50ZWQvZHJhd24gcHJvcGVybHkuIC0tPgorPGRpdiBjbGFz
cz0iY29tcCBzaGFkb3ciPgorICA8ZGl2IGlkPSJzY3JvbGwiPgorICAgIDxkaXYgY2xhc3M9InNj
cm9sbENvbnRlbnQiPgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xh
dGVkLWJveHNoYWRvdy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxs
aW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTA2ODc2
N2YzNTVhMTk1ZjVmZTk3NGYyNjAwZmI1NDAzOWFjZjYxCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCAzNTY1CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdz
JGxIYG9rPG19P29UIXYoJAp6IzhsJVhWLXhjPEJTWF9mR1ljfl8zeVVQOSNOQFBPdiRRbTA2Tn49
cXBEbHJnKXFBPSloRSZYWGQma2w1TnJhZH4KejtCNyVhMG5IXiEtLUR4SDlRYEppVyQpPnc1JE5E
QCE/cip4VHtyWj9iVXV4XyM9bj4rK35iSXl4OEhXJVlieXFaCnozcDNaKkdCNnlsPz4pZjgoN356
MCZAaDghI0BxWWZ2UmBsREpHXjF0Pi1XeDxBYEliMWVVQS16OXZsMyNpPlglbgp6RzNCMDYjT249
dXVRI25aVTFeKSZVWWYxVFY3SXdZPTZLP3FXMF9MUkA5d3pHQyZoajUhSmA5Rj9PKnJJQHFoaHQK
emhmTXRXXn5heDkjUHByc3AhNTJaKy1KclFeflN4SU8/KkNeb1dKfWheP1R+UFhNY0N4X3FGYjJv
eFYkRiE/d0Z1CnpHaV96aHdMaWM3YFRYUGFLPU5VWWgySFZjUm9qaip7biZHP0BKe2RVJTMxbTQr
c2w5TlVqTzt9PyFSfjZ6QUtBeQp6dWghWGQ8KjQrVSlZIWgkQUFmJU5eWjRvVUA2K0crPi1ZTn5V
dy0mIUw2cU9MMiF7RkJQNWdkbSo2LWZFY204fCUKekpoXj9rX3VDUzBeek1FZWBFY3Y8WDgmaTBj
KDNpNmNtNEQwcElASlVkPUF1SHxMXnp0YXcrYkgqU311SipQcCN5CnpWfEAzXzx2cjJteDk2NVck
bHZ2NXstbjJwNTRSbnhzO1I3NUs5Z2FgdUgofj4xNl44Wm5VYC1BVFBeYj1NZXA5UAp6eXY5LXNg
RlZaKj8rcGJRPFBWbnBQM0ImY2VWJUZsYEJ2I1FyTHBhJGw2OXVudGsxRj54Y1liMT5WeGVTNHxN
aEoKekM5SGtEdENzUWdtTzF5NTYmVVFBRSpJVWhEX2dQZDBxP3laTmhoWDd6U1VyO2stNWI2UHlG
NTxSJndLJnl3b3ROCnppfG1YdjhnISNVTUBJUU9ucnVkcyYxa1kyJT5fZD03d2szTWFJQTJTVE9y
JHJlJChFfDdKYip9RzE7eHxSP2hUWgp6NFF3M3h8TmJ0KShhQGhAfEYtPEdVKXNVakY9NyNxRSYy
e3lATHNrI3lNNmNWQD4hZT50OVJlTWQreEZnQDh1blQKei0/SGwhZXFfcypzPXM+bVpfUiU+WDJ1
VktjZ315YEZMazxBVjg8T2BRITRRZSk5YndZPyoqU2ZfISU9Nmw9N1NOCnowfj8wQTg7JWBoPEpM
MT9feGppT2BZUEZMbXk0fENAQl5FSV43ezdzX1NlKHs4Kk5zMHohdjdecU5yPDZ8Rlc/QAp6aTFt
SEVXJlhGQCV3NnJYK3c7eHV8Sig2MWBGOFQjPCRJNGNiO3J+TXt7N0NERXp3cHY+OzNjSnpfdyZl
LX1BM0UKemZ2WHVtRWJNdV9MJVJJNz5JN2dMXiFtQCY/fEg5bmIjRmZaZD11fEExREA5Iz0xdTwk
WXtnRTAzflcjQ2ttKX5OCnpDQEo8QHlXeERFKWJoOGMlUE1FPmYzcHdSbncwOyhKMlNsJip5eSNg
KDNUantVSyUrKUhUSy09TzZ4VTt2dWFzQwp6LTI3Vj1TfkYrY2BId201ckw2Zk1yWDclS09PKEJx
Y3deUDg+eCVRWjg/dFpnSk1yUTdXdTh9RF9uITRPdk45Wn4Kc2ZCWl5gIU5EaGlrPkxvNyplSFh7
Sz17WTN3eHt5dFBOfEJTITJUUDlyPm1kS0k7VnN0MEl7Z2FtO2U5KAoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy90cmFu
c2xhdGVkLWJveHNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9j
dWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGNi
M2M1ZGZjMDlmYjlhM2JmYzU5MWE2OThkNzE5M2JhY2U2MjhlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRvdy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMjAsMjApIHNp
emUgNTAyeDUwMgorICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkgekk6IDEyMCB7RElWfSBhdCAo
MjAsMjApIHNpemUgNTAyeDUwMiBbYmdjb2xvcj0jMDA5OTAwXSBbYm9yZGVyOiAoMXB4IHNvbGlk
ICMwMDAwMDAwMCldCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5n
L3RyYW5zbGF0ZWQtYm94c2hhZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxs
aW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMwNWJlZTBjYzlmNGE4
N2QxMTE2MTEzN2FlZWZmYWI5MmMyYzFhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1ib3hzaGFkb3cuaHRtbApAQCAtMCwwICsx
LDMwIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLmNvbXAgeworICAtd2Via2l0LXRyYW5z
Zm9ybTogdHJhbnNsYXRlWigwcHgpOworfQorYm9keSB7CisgIG1hcmdpbjowOworICBwYWRkaW5n
OjA7Cit9Cisuc2hhZG93IHsKKyAgcG9zaXRpb246YWJzb2x1dGU7CisgIGxlZnQ6MjBweDsgcmln
aHQ6MjBweDsKKyAgd2lkdGg6NTAwcHg7CisgIGhlaWdodDo1MDBweDsKKyAgdG9wOjBweDsgYm90
dG9tOjIwcHg7CisgIHotaW5kZXg6MTIwOworICBtYXJnaW4tdG9wOjIwcHg7CisgIGJvcmRlcjog
MXB4IHNvbGlkIHRyYW5zcGFyZW50OworICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggIzA5
MDsKKyAgYmFja2dyb3VuZC1jb2xvcjogIzA5MDsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxi
b2R5PgorPCEtLSBJZiBjdWxsZWQgaW5jb3JyZWN0bHksIHRoZSB0b3AvbGVmdCBlZGdlcyBvdXRz
aWRlIG9mIHRoZSBzaGFkb3dlZCBib3ggZW5kIHVwIGJlaW5nIGN1bGxlZCBpbnN0ZWFkIG9mIHBh
aW50ZWQvZHJhd24gcHJvcGVybHkuIC0tPgorPGRpdiBjbGFzcz0iY29tcCBzaGFkb3ciPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126003</attachid>
            <date>2012-02-07 22:21:57 -0800</date>
            <delta_ts>2012-02-07 22:33:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78073-20120208012156.patch</filename>
            <type>text/plain</type>
            <size>32992</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNjE1ZTViODkxNmJm
YWZmZjk3MzMzMWNlZjdmNDA5ODYyNGRiNS4uNTViYWNjNTY1NmU4YTEwZjNkZDFiNTQyY2M0NDY4
OGRkM2JiYmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gRml4
IG9wYXF1ZSB0cmFja2luZyBmb3IgYm94IHNoYWRvd3MgYW5kIG5vbi1jb21wb3NpdGVkIGNoaWxk
IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBjb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3cuaHRt
bAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRv
dy5odG1sCisKKyAgICAgICAgVW5pdCB0ZXN0czogUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3Bw
CisKKyAgICAgICAgV2hlbiBwYWludGluZyBhIGJveCBzaGFkb3csIGEgZmlsdGVyIGlzIGFwcGxp
ZWQgdG8gdGhlIHNraWEgY2FudmFzLCB0aGF0IGNhbiBtYWtlCisgICAgICAgIHBpeGVscyBwYWlu
dGVkIHdpdGggYW4gb3BhcXVlIGNvbG9yIGVuZCB1cCBub24tb3BhcXVlLiBTbyBjb25zaWRlciBp
bWFnZS9tYXNrL2NvbG9yCisgICAgICAgIGZpbHRlcnMgd2hlbiBkZWNpZGluZyBpZiBhIHBhaW50
IGlzIG9wYXF1ZS4KKworICAgICAgICBBbHNvIHdoZW4gcGFpbnRpbmcgdGhlIGJhY2tncm91bmQg
b2YgYW4gZWxlbWVudCB3aXRoIGEgYm94IHNoYWRvdywgdGhlIGJhY2tncm91bmQgaXMKKyAgICAg
ICAgcGFpbnRlZCB3aXRoIGEgdHJhbnNmb3JtIG9uIHRoZSBza2lhIGNhbnZhcyBiYXNlZCBvbiB0
aGUgc2l6ZSBvZiB0aGUgYm94IHNoYWRvdy4gVGhpcworICAgICAgICB0cmFuc2Zvcm0gbmVlZHMg
dG8gYmUgY29uc2lkZXJlZCB3aGVuIHRyYWNraW5nIGFuIG9wYXF1ZSBwYWludC4KKworICAgICAg
ICBIb3dldmVyLCB3aGVuIGEgbGF5ZXIncyBjb250ZW50UmVjdCBwb3NpdGlvbiBpcyBub24temVy
bywgd2UgdHJhbnNsYXRlIHRoZSBHcmFwaGljc0NvbnRleHQKKyAgICAgICAgdG8gcHV0IHRoZSBj
b250ZW50UmVjdCBhdCAwLDAgaW4gdGhlIHNraWEgY2FudmFzLiBGb3IgdHJhY2tpbmcgb3BhcXVl
IHJlZ2lvbnMgaW4gdGhlIHJlc3VsdGluZworICAgICAgICBsYXllciwgd2UgbmVlZCB0byB1bnRv
IHRoaXMgdHJhbnNsYXRpb24uIFNjYWxpbmcgY2FuIGFsc28gb2NjdXIgd2hpY2ggd2UgbXVzdCB1
bmRvLiBTbyB3ZSBwYXNzCisgICAgICAgIHRoZSB0cmFuc2Zvcm0gaW4gdG8gUGxhdGZvcm1Db250
ZXh0U2tpYSB0byBnbyBmcm9tIHRoZSBTa0NhbnZhcyBiYWNrIHRvIHRoZSBsYXllcidzIGNvbnRl
bnQKKyAgICAgICAgY29vcmRpbmF0ZSBzcGFjZS4gT3BhcXVlIHBhaW50cyBjYW4gdGhlbiBiZSB0
cmFja2VkIGluIHRoZSBsYXllcidzIGNvbnRlbnQgc3BhY2UgcmF0aGVyIHRoYW4KKyAgICAgICAg
aW4gdGhlIHNraWEgY2FudmFzIHNwYWNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVU
b1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25T
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50SXNPcGFxdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdp
b25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25T
a2lhOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6Om1hcmtS
ZWN0QXNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6bWFya1Jl
Y3RBc05vbk9wYXF1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVS
ZWdpb25Ta2lhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE9wYXF1ZVJlZ2lvblNr
aWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tp
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UG9pbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRpZERyYXdCb3VuZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoK
KyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Db250ZXh0U2tpYTo6c2V0T3BhcXVlUmVnaW9uVHJhbnNmb3JtKToKKwogMjAxMi0wMi0wNyAg
TWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBy
ZWR1bmRhbnQgY2hlY2tzIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggYmJkMzAxNjRhMDFhNzgzZmM4ODI4NjY3YWM5NGUxNjgwNGVi
ZmRhNC4uM2NhODZkMDBhMDViMzNhMzYyMmE3NTk1YzhkMjBkYWE1Mjc3ZDMwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0wNyAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZpeCBvcGFx
dWUgdHJhY2tpbmcgZm9yIGJveCBzaGFkb3dzIGFuZCBub24tY29tcG9zaXRlZCBjaGlsZCBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzgw
NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDItMDcgIEhhbnMgV2VubmJvcmcgIDxoYW5z
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bTogcmVtb3ZlIFdlYlNwZWVjaElucHV0
UmVzdWx0OjpzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggMGQ5N2U1MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhkODZhMWU4
OC4uMDBhM2U0NjNiODU5MzFiMDRlYmMwNWEwMTllY2Q5NDRhNmI1ZjQ0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICAgICAgYm9yZGVyVGV4ZWxzID8g
UGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6
UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIGNhbnZh
c1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKICAgICBjYW52YXNQYWludGVyLnNraWFD
b250ZXh0KCktPnNldFRyYWNrT3BhcXVlUmVnaW9uKCFsYXllcklzT3BhcXVlKTsKLSAgICBwYWlu
dENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRz
U2NhbGUpOworICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCAqY2Fu
dmFzUGFpbnRlci5za2lhQ29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiAK
ICAgICBpZiAoIWxheWVySXNPcGFxdWUpCiAgICAgICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0g
Y2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRj
NmJkN2Y1MzgyYjUyYjBlZWZiYTEwMzE2NmZjMDhmZS4uZWExOTMwMzY1NWNhMjM1ZmMyN2E0MDZj
NmVlOTZkYTQzMGQ5MWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1D
b250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDUsNyArNDYsNyBAQCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Q2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxh
dGZvcm1Db250ZXh0U2tpYSYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtY29u
dGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CkBAIC02Miw2ICs2MywxMCBA
QCB2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbgogICAgICAgICAgICAgc2NhbGVkQ29udGVudFJlY3Qg
PSBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVHJhbnNm
b3JtIHRyYWNrZWQgb3BhcXVlIHBhaW50cyBiYWNrIHRvIG91ciBsYXllcidzIGNvbnRlbnQgc3Bh
Y2UuCisgICAgICAgIEFTU0VSVChjb250ZXh0LmdldENUTSgpLmlzSW52ZXJ0aWJsZSgpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9ybShjb250ZXh0Lmdl
dENUTSgpLmludmVyc2UoKSk7CisKICAgICAgICAgbV9wYWludGVyLT5wYWludChjb250ZXh0LCBz
Y2FsZWRDb250ZW50UmVjdCk7CiAKICAgICAgICAgaWYgKGNvbnRlbnRzU2NhbGUgIT0gMS4wKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MTVmNjk4NjUz
M2JiODVkNjllN2NmNjQ3ODJiMjZhZjExMTM1YWMuLmQ0OTEzNDhlZTdjZDkwMDAyNTIwMjczM2Ez
NTUwN2MxZDU3M2MxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOworY2xhc3MgUGxhdGZvcm1D
b250ZXh0U2tpYTsKIAogLy8gQmFzZSBjbGFzcyBmb3IgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciBhbmQKIC8vIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgdGhhdCBy
ZWR1Y2VzIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbgpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6
CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBQbGF0
Zm9ybUNvbnRleHRTa2lhJiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50UmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwZDk3NGZhNjNhNDQ1
N2Q5ZWFjN2M4Yjg3M2Y3ZTkxYTRkMjY4NDNiLi4zNWNkMzVhZDNjMDQ2MTZlNTNkNGExYmMxZTVj
ZjhlYmVlMjhlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UgogICAgIHBsYXRmb3JtQ29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsKICAgICBwbGF0
Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24oIW1fbGF5ZXJJc09wYXF1ZSk7CiAgICAg
R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBw
YWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUp
OworICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQsIGNv
bnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7
CiAKICAgICBpZiAoIW1fbGF5ZXJJc09wYXF1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCmluZGV4IDc0
MTQ1ZjFjOTI3MzkxZDk4Y2QwNTJlNTQyNjMwNzI2NmU1OGJlYjkuLjRiZGE5MjNmZmYyYTcxYWNh
NjA0MzE1MWZkNDA0YjVkYWNlNmE3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKIAogI2luY2x1ZGUgIlNr
Q2FudmFzLmgiCisjaW5jbHVkZSAiU2tDb2xvckZpbHRlci5oIgogI2luY2x1ZGUgIlNrU2hhZGVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNCwxMCArMTM1LDE5IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBwYWludElzT3BhcXVlKGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0Jp
dG1hcCogYml0bWFwID0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChiaXRtYXAgJiYg
IWJpdG1hcC0+aXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChwYWlu
dC5nZXRMb29wZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChwYWludC5nZXRJ
bWFnZUZpbHRlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50LmdldE1h
c2tGaWx0ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFNrQ29sb3JGaWx0ZXIqIGNv
bG9yRmlsdGVyID0gcGFpbnQuZ2V0Q29sb3JGaWx0ZXIoKTsKKyAgICBpZiAoY29sb3JGaWx0ZXIg
JiYgIShjb2xvckZpbHRlci0+Z2V0RmxhZ3MoKSAmIFNrQ29sb3JGaWx0ZXI6OmtBbHBoYVVuY2hh
bmdlZF9GbGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4
dFNraWEqIGNvbnRleHQsIGNvbnN0IFNrUmVjdCYgZmlsbFJlY3QsIGNvbnN0IFNrUGFpbnQmIHBh
aW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWRE
cmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWlu
dCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXApCiB7CiAgICAgLy8gQW55IHN0cm9raW5n
IG1heSBwdXQgYWxwaGEgaW4gcGl4ZWxzIGV2ZW4gaWYgdGhlIGZpbGxpbmcgcGFydCBkb2VzIG5v
dC4KICAgICBpZiAocGFpbnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50OjprRmlsbF9TdHlsZSkgewpA
QCAtMTQ5LDIxICsxNTksMjEgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChj
b25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBTa1IKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBTa1JlY3Qgc3Ryb2tlUmVjdDsKICAgICAgICAgICAgIHN0cm9rZVJl
Y3QgPSBwYWludC5jb21wdXRlRmFzdEJvdW5kcyhmaWxsUmVjdCwgJnN0cm9rZVJlY3QpOwotICAg
ICAgICAgICAgZGlkRHJhdyhjb250ZXh0LCBzdHJva2VSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxs
c0JvdW5kcyk7CisgICAgICAgICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgc3Ryb2tl
UmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmlsbHNCb3VuZHMpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgYm9vbCBjaGVja0ZpbGxPbmx5ID0gdHJ1ZTsKICAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNP
cGFxdWUocGFpbnQsIGJpdG1hcCwgY2hlY2tGaWxsT25seSk7CiAgICAgYm9vbCBmaWxsc0JvdW5k
cyA9IHBhaW50LmdldFN0eWxlKCkgIT0gU2tQYWludDo6a1N0cm9rZV9TdHlsZTsKLSAgICBkaWRE
cmF3KGNvbnRleHQsIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CisgICAg
ZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxs
c0JvdW5kcyk7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgU2tQYXRoJiBwYXRoLCBjb25zdCBT
a1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0sIGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAg
U2tSZWN0IHJlY3Q7CiAgICAgaWYgKHBhdGguaXNSZWN0KCZyZWN0KSkgewotICAgICAgICBkaWRE
cmF3UmVjdChjb250ZXh0LCByZWN0LCBwYWludCwgMCk7CisgICAgICAgIGRpZERyYXdSZWN0KGNv
bnRleHQsIHRyYW5zZm9ybSwgcmVjdCwgcGFpbnQsIDApOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xNzQsMTEgKzE4NCwxMSBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQ
YXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IFNrUAogICAgICAg
ICBkaWREcmF3VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUpOwogICAgIGVsc2UgewogICAgICAgICBy
ZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMocGF0aC5nZXRCb3VuZHMoKSwgJnJlY3QpOwot
ICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRz
KTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFx
dWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlk
RHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBTa0NhbnZhczo6
UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRzW10sIGNv
bnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRz
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNv
bnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGlmICgh
bnVtUG9pbnRzKQogICAgICAgICByZXR1cm47CkBAIC0yMDMsMTEgKzIxMywxMSBAQCB2b2lkIE9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSog
Y29udGV4dCwgU2tDYW52YQogICAgICAgICBkaWREcmF3VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUp
OwogICAgIGVsc2UgewogICAgICAgICByZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMocmVj
dCwgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4
dCwgY29uc3QgU2tSZWN0JiBib3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBi
b3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGJvb2wgb3BhcXVlID0gcGFpbnRJ
c09wYXF1ZShwYWludCk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IGZhbHNlOwpAQCAtMjE3LDE2
ICsyMjcsMzkgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdAogICAgIGVsc2UgewogICAgICAgICBT
a1JlY3QgcmVjdDsKICAgICAgICAgcmVjdCA9IHBhaW50LmNvbXB1dGVGYXN0Qm91bmRzKGJvdW5k
cywgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhdyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25z
dCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBi
b29sIGZpbGxzQm91bmRzKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBs
YXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdz
T3BhcXVlLCBib29sIGZpbGxzQm91bmRzKQogeworICAgIFNrUmVjdCB0YXJnZXRSZWN0ID0gcmVj
dDsKKworICAgIC8vIEFwcGx5IHRoZSBjdXJyZW50IGNsaXAuCisgICAgaWYgKGNvbnRleHQtPmNh
bnZhcygpLT5nZXRDbGlwVHlwZSgpICE9IFNrQ2FudmFzOjprUmVjdF9DbGlwVHlwZSkKKyAgICAg
ICAgZmlsbHNCb3VuZHMgPSBmYWxzZTsKKyAgICBlbHNlIHsKKyAgICAgICAgU2tJUmVjdCBkZXZp
Y2VDbGlwOworICAgICAgICBjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcERldmljZUJvdW5kcygm
ZGV2aWNlQ2xpcCk7CisgICAgICAgIGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoU2tJbnRUb1Nj
YWxhcihkZXZpY2VDbGlwLmZMZWZ0KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZUb3ApLCBT
a0ludFRvU2NhbGFyKGRldmljZUNsaXAuZlJpZ2h0KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlw
LmZCb3R0b20pKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFjb250ZXh0
LT5jbGlwcGVkVG9JbWFnZSgpLmlzT3BhcXVlKCkpCisgICAgICAgIGZpbGxzQm91bmRzID0gZmFs
c2U7CisKKyAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3Jtcy4gVGhlIG1hcHBpbmcgb2YgQWZmaW5l
VHJhbnNmb3JtIDwtPiBTa01hdHJpeCBjb21lcyBmcm9tIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RN
KCkuCisgICAgU2tNYXRyaXggY2FudmFzVHJhbnNmb3JtID0gY29udGV4dC0+Y2FudmFzKCktPmdl
dFRvdGFsTWF0cml4KCk7CisgICAgaWYgKCFjYW52YXNUcmFuc2Zvcm0ubWFwUmVjdCgmdGFyZ2V0
UmVjdCkpCisgICAgICAgIGZpbGxzQm91bmRzID0gZmFsc2U7CisgICAgU2tNYXRyaXggY2FudmFz
VG9UYXJnZXRUcmFuc2Zvcm07CisgICAgY2FudmFzVG9UYXJnZXRUcmFuc2Zvcm0uc2V0QWxsKHRy
YW5zZm9ybS5hKCksIHRyYW5zZm9ybS5jKCksIHRyYW5zZm9ybS5lKCksIHRyYW5zZm9ybS5iKCks
IHRyYW5zZm9ybS5kKCksIHRyYW5zZm9ybS5mKCksIDAsIDAsIDEpOworICAgIGlmICghY2FudmFz
VG9UYXJnZXRUcmFuc2Zvcm0ubWFwUmVjdCgmdGFyZ2V0UmVjdCkpCisgICAgICAgIGZpbGxzQm91
bmRzID0gZmFsc2U7CisKICAgICBpZiAoZmlsbHNCb3VuZHMgJiYgeGZlcm1vZGVJc09wYXF1ZShw
YWludCwgZHJhd3NPcGFxdWUpKQotICAgICAgICBtYXJrUmVjdEFzT3BhcXVlKGNvbnRleHQsIHJl
Y3QpOwotICAgIGVsc2UgaWYgKFNrUmVjdDo6SW50ZXJzZWN0cyhyZWN0LCBtX29wYXF1ZVJlY3Qp
ICYmICF4ZmVybW9kZVByZXNlcnZlc09wYXF1ZShwYWludCwgZHJhd3NPcGFxdWUpKQotICAgICAg
ICBtYXJrUmVjdEFzTm9uT3BhcXVlKHJlY3QpOworICAgICAgICBtYXJrUmVjdEFzT3BhcXVlKHRh
cmdldFJlY3QpOworICAgIGVsc2UgaWYgKCF4ZmVybW9kZVByZXNlcnZlc09wYXF1ZShwYWludCwg
ZHJhd3NPcGFxdWUpKQorICAgICAgICBtYXJrUmVjdEFzTm9uT3BhcXVlKHRhcmdldFJlY3QpOwog
fQogCiB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQYWlu
dCYgcGFpbnQsIGJvb2wgZHJhd3NPcGFxdWUpCkBAIC0yMzcsMjkgKzI3MCwxNyBAQCB2b2lkIE9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQYWludCYgcGFpbnQsIGJv
b2wgZHJhd3NPcGFxdWUpCiAgICAgfQogfQogCi12b2lkIE9wYXF1ZVJlZ2lvblNraWE6Om1hcmtS
ZWN0QXNPcGFxdWUoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgU2tS
ZWN0JiBwYWludFJlY3QpCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6Om1hcmtSZWN0QXNPcGFxdWUo
Y29uc3QgU2tSZWN0JiByZWN0KQogewogICAgIC8vIFdlIHdhbnQgdG8ga2VlcCB0cmFjayBvZiBh
biBvcGFxdWUgcmVnaW9uIGJ1dCBib3VuZCBpdHMgY29tcGxleGl0eSBhdCBhIGNvbnN0YW50IHNp
emUuCiAgICAgLy8gV2Uga2VlcCB0cmFjayBvZiB0aGUgbGFyZ2VzdCByZWN0YW5nbGUgc2VlbiBi
eSBhcmVhLiBJZiB3ZSBjYW4gYWRkIHRoZSBuZXcgcmVjdCB0byB0aGlzCiAgICAgLy8gcmVjdGFu
Z2xlIHRoZW4gd2UgZG8gdGhhdCwgYXMgdGhhdCBpcyB0aGUgY2hlYXBlc3Qgd2F5IHRvIGluY3Jl
YXNlIHRoZSBhcmVhIHJldHVybmVkCiAgICAgLy8gd2l0aG91dCBpbmNyZWFzaW5nIHRoZSBjb21w
bGV4aXR5LgogCi0gICAgaWYgKHBhaW50UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsK
LSAgICBpZiAoIWNvbnRleHQtPmNsaXBwZWRUb0ltYWdlKCkuaXNPcGFxdWUoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGlmIChjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcFR5cGUoKSAhPSBTa0Nh
bnZhczo6a1JlY3RfQ2xpcFR5cGUpCisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKG1fb3BhcXVlUmVjdC5jb250YWlucyhwYWludFJlY3QpKQorICAgIGlm
IChtX29wYXF1ZVJlY3QuY29udGFpbnMocmVjdCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIC8v
IEFwcGx5IHRoZSBjdXJyZW50IGNsaXAuCi0gICAgU2tJUmVjdCBkZXZpY2VDbGlwOwotICAgIGNv
bnRleHQtPmNhbnZhcygpLT5nZXRDbGlwRGV2aWNlQm91bmRzKCZkZXZpY2VDbGlwKTsKLSAgICBT
a1JlY3QgcmVjdCA9IHBhaW50UmVjdDsKLSAgICBpZiAoIXJlY3QuaW50ZXJzZWN0KFNrSW50VG9T
Y2FsYXIoZGV2aWNlQ2xpcC5mTGVmdCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mVG9wKSwg
U2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZSaWdodCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xp
cC5mQm90dG9tKSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChyZWN0LmNvbnRhaW5zKG1f
b3BhcXVlUmVjdCkpIHsKICAgICAgICAgbV9vcGFxdWVSZWN0ID0gcmVjdDsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjg4LDYgKzMwOSw4IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6bWFya1JlY3RB
c05vbk9wYXF1ZShjb25zdCBTa1JlY3QmIHJlY3QpCiAgICAgLy8gV2Ugd2FudCB0byBrZWVwIGFz
IG11Y2ggb2YgdGhlIGN1cnJlbnQgb3BhcXVlIHJlY3RhbmdsZSBhcyB3ZSBjYW4sIHNvIGZpbmQg
dGhlIG9uZSBsYXJnZXN0CiAgICAgLy8gcmVjdGFuZ2xlIGluc2lkZSBtX29wYXF1ZVJlY3QgdGhh
dCBkb2VzIG5vdCBpbnRlcnNlY3Qgd2l0aCB8cmVjdHwuCiAKKyAgICBpZiAoIVNrUmVjdDo6SW50
ZXJzZWN0cyhyZWN0LCBtX29wYXF1ZVJlY3QpKQorICAgICAgICByZXR1cm47CiAgICAgaWYgKHJl
Y3QuY29udGFpbnMobV9vcGFxdWVSZWN0KSkgewogICAgICAgICBtX29wYXF1ZVJlY3Quc2V0RW1w
dHkoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAppbmRleCA5M2YyYzVhMWIxZDQy
ZWY2NDZkNjRiNTRhZWZiMmM2ZTc1ODBmOTAwLi40NWIwNjkwMDQyYTY5OGE0Y2EwMDNkM2U4NTBl
ZThkNGMzNjc5OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgIlNrUmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBZmZpbmVUcmFuc2Zv
cm07CiBjbGFzcyBQbGF0Zm9ybUNvbnRleHRTa2lhOwogCiAvLyBUaGlzIGNsYXNzIGlzIGFuIGVu
Y2Fwc3VsYXRpb24gb2YgZnVuY3Rpb25hbGl0eSBmb3IgUGxhdGZvcm1Db250ZXh0U2tpYSwgYW5k
IGl0cyBtZXRob2RzIGFyZSBtaXJyb3JlZApAQCAtNTIsMTUgKzUzLDE1IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGUgcmVzdWx0aW5nIG9wYXF1ZSByZWdpb24gYXMgYSBzaW5nbGUgcmVjdC4KICAgICBJ
bnRSZWN0IGFzUmVjdCgpIGNvbnN0OwogCi0gICAgdm9pZCBkaWREcmF3UmVjdChjb25zdCBQbGF0
Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0IFNr
Qml0bWFwKik7Ci0gICAgdm9pZCBkaWREcmF3UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lh
KiwgY29uc3QgU2tQYXRoJiwgY29uc3QgU2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd1BvaW50
cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgU2tDYW52YXM6OlBvaW50TW9kZSwgaW50IG51
bVBvaW50cywgY29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1BhaW50Jik7Ci0gICAgdm9pZCBkaWRE
cmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tSZWN0JiwgY29u
c3QgU2tQYWludCYpOworICAgIHZvaWQgZGlkRHJhd1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0
U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFp
bnQmLCBjb25zdCBTa0JpdG1hcCopOworICAgIHZvaWQgZGlkRHJhd1BhdGgoY29uc3QgUGxhdGZv
cm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUGF0aCYsIGNv
bnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250
ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIFNrQ2FudmFzOjpQb2ludE1vZGUsIGlu
dCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOworICAgIHZvaWQg
ZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUmVjdCYs
IGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKTsKKyAg
ICB2b2lkIGRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVl
LCBib29sIGZpbGxzQm91bmRzKTsKICAgICB2b2lkIGRpZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQ
YWludCYsIGJvb2wgZHJhd3NPcGFxdWUpOwotICAgIHZvaWQgbWFya1JlY3RBc09wYXF1ZShjb25z
dCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tSZWN0Jik7CisgICAgdm9pZCBtYXJrUmVj
dEFzT3BhcXVlKGNvbnN0IFNrUmVjdCYpOwogICAgIHZvaWQgbWFya1JlY3RBc05vbk9wYXF1ZShj
b25zdCBTa1JlY3QmKTsKIAogICAgIFNrUmVjdCBtX29wYXF1ZVJlY3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRl
eHRTa2lhLmNwcAppbmRleCAzMzA2MmNhY2E5MmY5YTRiMzZiZmZhOTk5NzBhZTA3NDRhYThlZDYw
Li5jMzIzYTBkN2VmZmIzZGM2ZDkxMzhkODFlOTcxMTljY2RiZTEzZjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1D
b250ZXh0U2tpYS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dFNraWEuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCkBAIC02MDksMjUgKzYwOCwyNSBAQCB2b2lkIFBsYXRmb3JtQ29u
dGV4dFNraWE6OnNldEdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KQogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UmVjdChjb25zdCBTa1JlY3QmIHJl
Y3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQogewogICAg
IGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKQotICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3
UmVjdCh0aGlzLCByZWN0LCBwYWludCwgYml0bWFwKTsKKyAgICAgICAgbV9vcGFxdWVSZWdpb24u
ZGlkRHJhd1JlY3QodGhpcywgbV9vcGFxdWVSZWdpb25UcmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBi
aXRtYXApOwogfQogCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRpZERyYXdQYXRoKGNvbnN0
IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgaWYgKG1fdHJhY2tP
cGFxdWVSZWdpb24pCi0gICAgICAgIG1fb3BhcXVlUmVnaW9uLmRpZERyYXdQYXRoKHRoaXMsIHBh
dGgsIHBhaW50KTsKKyAgICAgICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1BhdGgodGhpcywgbV9v
cGFxdWVSZWdpb25UcmFuc2Zvcm0sIHBhdGgsIHBhaW50KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNv
bnRleHRTa2lhOjpkaWREcmF3UG9pbnRzKFNrQ2FudmFzOjpQb2ludE1vZGUgbW9kZSwgaW50IG51
bVBvaW50cywgY29uc3QgU2tQb2ludCBwb2ludHNbXSwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7
CiAgICAgaWYgKG1fdHJhY2tPcGFxdWVSZWdpb24pCi0gICAgICAgIG1fb3BhcXVlUmVnaW9uLmRp
ZERyYXdQb2ludHModGhpcywgbW9kZSwgbnVtUG9pbnRzLCBwb2ludHMsIHBhaW50KTsKKyAgICAg
ICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1BvaW50cyh0aGlzLCBtX29wYXF1ZVJlZ2lvblRyYW5z
Zm9ybSwgbW9kZSwgbnVtUG9pbnRzLCBwb2ludHMsIHBhaW50KTsKIH0KIAogdm9pZCBQbGF0Zm9y
bUNvbnRleHRTa2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNr
UGFpbnQmIHBhaW50KQogewogICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKQotICAgICAgICBt
X29wYXF1ZVJlZ2lvbi5kaWREcmF3Qm91bmRlZCh0aGlzLCByZWN0LCBwYWludCk7CisgICAgICAg
IG1fb3BhcXVlUmVnaW9uLmRpZERyYXdCb3VuZGVkKHRoaXMsIG1fb3BhcXVlUmVnaW9uVHJhbnNm
b3JtLCByZWN0LCBwYWludCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0
U2tpYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNv
bnRleHRTa2lhLmgKaW5kZXggMTJiZGY3OTVjNjcxOTFmZWFmMmZhYTI5Y2U5MmFkZWZjYzg0MWZj
Yy4uYjMwNjQ1MGNiMWQ4ZGM5ZmFjZTQ3M2YzYzkyNDNlODc4M2NjNDY1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNv
bnRleHRTa2lhLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgUGxhdGZvcm1Db250ZXh0U2tp
YV9oCiAjZGVmaW5lIFBsYXRmb3JtQ29udGV4dFNraWFfaAogCisjaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm9uY29w
eWFibGUuaCIKICNpbmNsdWRlICJPcGFxdWVSZWdpb25Ta2lhLmgiCkBAIC0xOTIsNiArMTkzLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVmZXJyZWQoYm9vbCBkZWZlcnJlZCkgeyBtX2RlZmVy
cmVkID0gZGVmZXJyZWQ7IH0KIAogICAgIHZvaWQgc2V0VHJhY2tPcGFxdWVSZWdpb24oYm9vbCB0
cmFjaykgeyBtX3RyYWNrT3BhcXVlUmVnaW9uID0gdHJhY2s7IH0KKyAgICAvLyBBIHRyYW5zZm9y
bSBhcHBsaWVkIHRvIGFsbCB0cmFja2VkIG9wYXF1ZSBwYWludHMuIFRoaXMgaXMgYXBwbGllZCBh
dCB0aGUgdGltZSB0aGUgcGFpbnRpbmcgaXMgZG9uZS4KKyAgICB2b2lkIHNldE9wYXF1ZVJlZ2lv
blRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgeyBtX29wYXF1ZVJl
Z2lvblRyYW5zZm9ybSA9IHRyYW5zZm9ybTsgfQogCiAgICAgLy8gVGhpcyB3aWxsIGJlIGFuIGVt
cHR5IHJlZ2lvbiB1bmxlc3MgdHJhY2tpbmcgaXMgZW5hYmxlZC4KICAgICBjb25zdCBPcGFxdWVS
ZWdpb25Ta2lhJiBvcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZVJlZ2lvbjsg
fQpAQCAtMjI5LDYgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gVHJhY2tzIHRoZSByZWdpb24g
cGFpbnRlZCBvcGFxdWUgdmlhIHRoZSBHcmFwaGljc0NvbnRleHQuCiAgICAgT3BhcXVlUmVnaW9u
U2tpYSBtX29wYXF1ZVJlZ2lvbjsKICAgICBib29sIG1fdHJhY2tPcGFxdWVSZWdpb247CisgICAg
QWZmaW5lVHJhbnNmb3JtIG1fb3BhcXVlUmVnaW9uVHJhbnNmb3JtOwogCiAgICAgLy8gU3RvcmVz
IGltYWdlIHNpemVzIGZvciBhIGhpbnQgdG8gY29tcHV0ZSBpbWFnZSByZXNhbXBsaW5nIG1vZGVz
LgogICAgIC8vIFZhbHVlcyBhcmUgdXNlZCBpbiBJbWFnZVNraWEuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3Bw
CmluZGV4IGRjMWNmMjk5MzkzMWYyYzQ2MDI4Yjg3ZGI3YTdlODIxNDIzYWNiNTUuLjY3NDdkZjNk
OTY1YmMzMGYxNWYwODEzZDNlZjhjYjU4ZDU0YjhmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwCkBAIC01
NDgsNCArNTQ4LDU0IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVl
T3ZhbFRlc3QpCiAgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4
dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CiB9CiAKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tp
YVRlc3QsIGxheWVyVHJhbnNmb3JtVHJhbnNsYXRlT3BhcXVlVGVzdCkKK3sKKyAgICBTa0JpdG1h
cCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25m
aWcsIDQwMCwgNDAwKTsKKyAgICBiaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRtYXAuZXJh
c2VDb2xvcigwKTsKKyAgICBTa0NhbnZhcyBjYW52YXMoYml0bWFwKTsKKyAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKKworICAg
IFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KCZjYW52YXMpOworICAgIHBsYXRm
b3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKKyAgICBwbGF0Zm9ybUNvbnRl
eHQuc2V0T3BhcXVlUmVnaW9uVHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgR3JhcGhpY3NDb250
ZXh0IGNvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7CisKKyAgICBDb2xvciBvcGFxdWUoMS4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7CisKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwg
MTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNl
T3Zlcik7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDkwLCA5MCksIHBsYXRm
b3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19N
QVRDSChiaXRtYXAsIHRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUmVjdChwbGF0Zm9ybUNvbnRleHQu
b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpKTsKKworICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0
UmVjdCgxMCwgMTAsIDkwLCA5MCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxh
dGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKK30KKworVEVTVChQbGF0Zm9y
bUNvbnRleHRTa2lhVGVzdCwgbGF5ZXJUcmFuc2Zvcm1TY2FsZU9wYXF1ZVRlc3QpCit7CisgICAg
U2tCaXRtYXAgYml0bWFwOworICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4
ODhfQ29uZmlnLCA0MDAsIDQwMCk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgYml0
bWFwLmVyYXNlQ29sb3IoMCk7CisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7CisgICAgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMik7CisKKyAgICBQ
bGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9y
bUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0
LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIEdyYXBoaWNzQ29udGV4
dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAu
MGYsIDAuMGYsIDEuMGYpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMjAsIDIw
LCAxMCwgMTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92
ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDAsIDQwLCAyMCwgMjApLCBwbGF0Zm9y
bUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFU
Q0goYml0bWFwLCB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGxhdGZvcm1Db250ZXh0Lm9w
YXF1ZVJlZ2lvbigpLmFzUmVjdCgpKSk7CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdChGbG9hdFJl
Y3QoMjAsIDIwLCAxMCwgMTApKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRm
b3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZWYxYjhjNDE2OWQ2YTQ0NTc5ZjkzMmEyNjI4NDIzYjA1NGViMTJiZC4uNDlhNjIw
NzQ1Y2FjNzkwMjI4NDM3ODg2ZDZjOGNkYjdjMzU3ZWZiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTAyLTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gRml4IG9wYXF1ZSB0cmFja2luZyBmb3IgYm94IHNoYWRvd3MgYW5kIG5v
bi1jb21wb3NpdGVkIGNoaWxkIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03ODA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY29tcG9zaXRpbmcvY3VsbGluZy9zY3JvbGxlZC13aXRoaW4t
Ym94c2hhZG93LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvY3Vs
bGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogY29tcG9zaXRpbmcvY3VsbGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1ib3hzaGFk
b3ctZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9jdWxsaW5nL3Ry
YW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9z
aXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRvdy5odG1sOiBBZGRlZC4KKwogMjAxMi0w
Mi0wNyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy1leHBlY3RlZC5wbmcgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3ctZXhw
ZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMTE3MzcyOGYzZTI0ZmIyYzIyNTk2MjI1ZDkyMDAyYWEy
ZDBmMDUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM1NzQKemNtZUFTQE4/KG9sSHlgdVZCcSFp
YTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuMGwrCnpHbXtrS3c2c0tu
V0NKNHVHdmt5YjZIe3xqT093UjNCcUlaSjxIVnBJTyU5LTg5aUE/WkFyKjdwLXIxT1VKNDRETAp6
YUZTNSs7bHs/b2QrRURZZW94IyFGWWxmQFV4TGE2PDwyYHpqPU5haFpvTGsqdX5gMCNvQk1+Pjw0
MkdFYChFJGoKelZfK3kqN1J9R1ZAV0VlczB8UEA2NkV9bGA4cCh7YHVqe3QpeSpBKV56M1pSTjZs
Y1opPDtOQyRoWWsyMXBGZ30tCnp5e1lgPXRPSFQpcklGSzlXNiE7PXZ8YmFQJkc9em5GSHByfTZU
aXpBWjsjekF5QVY7KCtSZENUZCtsP1AtUCt9awp6aX5pTDh0QmRKN3smV1k9PX1taDFoVmwmbSVg
YVF7OXlhbStZOyN0PU8jV0hzejVkXkt3X0pgV1NiM1QkYCohVHkKelluTENeezMhZU4/ZHktUHdf
bzBWU1l4NGd7QnpafEJUTjxoan1fa08tQ2E1QmVmZjkoLXxoWE1rR0tDbHtQJGc1CnpqQy19dGp3
P3J7KlFDYndvJkVeYUdYMSoje0NJbyZ7ZFc2aDtgeUUqJmF7azdWJSFyQ2JsbWQ0ZjhZSHB0Z0cy
bwp6e2NCNSZSOW05P3lLVSpNK3ZvQSFvNV5oK0B3ekpSe1FkTHlfc2l8Q3ROWilzX3h9MyYjVHl4
UnRsal9iPnZmeTYKejwoS2M7b1pWZnp7Y2FgdXpoJjhTZl9jKHdvP21+U0RBOHRyRkdZdFRAOCRX
Mktmbkcybm1rOC15Wk92S1RZKXtzCno7YHoxUDRfTTlOKkZRZGV5OTdyPXtLMnhuazlXdyN7JV9F
WjVzU0ZwekpBKDZfdkYxN2VIaVpDPkU5KCkpNHsmMwp6QEZRRHg/RGU8WTV6QylgNW8yY2pwbHpZ
TXtCM2drRTNTMH5QckRWUCkzej5WYDAjb3sqb1haZXA2TjA7XyNga2cKejlBT2F+V3NDO0dYaTZC
KDEqNXJPRyM4QktnMygrc0lDODw4UXdPQXU3Zkt6S0pZYXYjI1A2fWl5KCtHWF4/SDN2Cnpia34r
VyZhOzFlS1NfYjFqYGVydWUoNz19P3NkaEgzNlNRYSZ1NWVTQDg4fGVQLURuQFM2NlFEfEpsVW5A
d2ZmKgp6SkJ8UkdjQTAreSF9fnUhal48JUd1PkxffC1KZ3BRZE15V0A+USRkSD1YKSNgMGM7SH0t
QFAydjhvTGlfamxGKlAKej9xJVp0NFhvRUpaWF9IYEp5c2d+fDZsejIhJk9tIT9WbGUke3FnRFAq
VkU2aHBGaDk7Smd7a1lfLTg/cy18MWFACno/ay1eMXZvZHFleDY1X2E0ailVdGV8aD10YSg/OyMt
MEMlZHdfSn1YbkFva3E+aT9ZdC1vcG18cENBOUp1I2c5fgp6R3h5Qlgmb1g3Ryh8bTA0NCVwYDll
M0pQOEwqYyg0I20lTCFGRnlGWUdwRV48PWRqaDk9VEI+KntFdDhWQCVQVykKejlXd289M25qJX5Z
ZDN0KWxVbn1QYlhueXJgIXt4SEY3Sns1ekJAQyRtVWEzcml3JGp3NWxBaVQhJiRZZ0FNWDlGCnoy
KDZqMz9mbDBhX0VPZ0g5Y21DWTY1Q2UmRChyYTleZ3dLenpSe21RQ2U2RT1VZEtwQUZmalp2VSNH
YDMrQXlUQgpjYl5PTUBiM3omU2xhaH4lZmdMI3BQZ2cmZWJ4c0xRMDA8eGF3ZzNQQwoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3Vs
bGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjU2ZjNjNDliNzJkY2QxZDU5Mjk1NjljZDY3MjY4ODlmYjBkMTRmOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xs
ZWQtd2l0aGluLWJveHNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgw
LDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICgwLDApIHNpemUgODAw
eDYwMAorbGF5ZXIgYXQgKDIwLDIwKSBzaXplIDUwMng1MDIKKyAgUmVuZGVyQmxvY2sgKHBvc2l0
aW9uZWQpIHpJOiAxMjAge0RJVn0gYXQgKDIwLDIwKSBzaXplIDUwMng1MDIgW2JnY29sb3I9IzAw
OTkwMF0gW2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMDAwMDApXQorbGF5ZXIgYXQgKDIxLDIxKSBz
aXplIDUwMHg1MDAgc2Nyb2xsWSAzMDAgc2Nyb2xsSGVpZ2h0IDEwMDAKKyAgUmVuZGVyQmxvY2sg
e0RJVn0gYXQgKDEsMSkgc2l6ZSA1MDB4NTAwCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSA1MDB4MTAwMCBbYmdjb2xvcj0jMDBERDAwXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvY3VsbGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93Lmh0bWwgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3cu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iY2M5MTY5MWM2YzVhMjIwMzFlOTVjOTBhZmFhYmUyMjUxNzYxZGI5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9zY3Jv
bGxlZC13aXRoaW4tYm94c2hhZG93Lmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKy5jb21wIHsKKyAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMHB4
KTsKK30KK2JvZHkgeworICBtYXJnaW46MDsKKyAgcGFkZGluZzowOworfQorLnNoYWRvdyB7Cisg
IHBvc2l0aW9uOmFic29sdXRlOworICBsZWZ0OjIwcHg7IHJpZ2h0OjIwcHg7CisgIHdpZHRoOjUw
MHB4OworICBoZWlnaHQ6NTAwcHg7CisgIHRvcDowcHg7IGJvdHRvbToyMHB4OworICB6LWluZGV4
OjEyMDsKKyAgbWFyZ2luLXRvcDoyMHB4OworICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVu
dDsKKyAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgNnB4ICMwOTA7CisgIGJhY2tncm91bmQtY29s
b3I6ICMwOTA7Cit9Cisjc2Nyb2xsIHsKKyAgb3ZlcmZsb3cteTogaGlkZGVuOyAvKiBzY3JvbGxh
YmxlIGJ1dCBubyBzY3JvbGxiYXJzIHZpc2libGUuICovCisgIHdpZHRoOjUwMHB4OworICBoZWln
aHQ6IDUwMHB4OworfQorLnNjcm9sbENvbnRlbnQgeworICB3aWR0aDoxMDAlOworICBoZWlnaHQ6
IDEwMDBweDsgLyogbWFrZSB0aGUgY29udGFpbmVyIHNjcm9sbGFibGUgKi8KKyAgYmFja2dyb3Vu
ZC1jb2xvcjogIzBkMDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICB3aW5kb3cub25sb2FkID0gZnVu
Y3Rpb24oKSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Njcm9sbCcpLnNjcm9sbFRvcCArPSAzMDA7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgIH0KKyAgfSwgMCk7IH07Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8IS0t
IElmIGN1bGxlZCBpbmNvcnJlY3RseSwgdGhlIHRvcC9sZWZ0IGVkZ2VzIG91dHNpZGUgb2YgdGhl
IHNoYWRvd2VkIGJveCBlbmQgdXAgYmVpbmcgY3VsbGVkIGluc3RlYWQgb2YgcGFpbnRlZC9kcmF3
biBwcm9wZXJseS4gLS0+Cis8ZGl2IGNsYXNzPSJjb21wIHNoYWRvdyI+CisgIDxkaXYgaWQ9InNj
cm9sbCI+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+CisgICAgPC9kaXY+CisgIDwv
ZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnBuZyBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1ib3hzaGFkb3ctZXhwZWN0
ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhhMDY4NzY3ZjM1NWExOTVmNWZlOTc0ZjI2MDBmYjU0MDM5YWNm
NjEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM1NjUKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5
fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1QhdigkCnojOGwlWFYteGM8QlNY
X2ZHWWN+XzN5VVA5I05AUE92JFFtMDZOfj1xcERscmcpcUE9KWhFJlhYZCZrbDVOcmFkfgp6O0I3
JWEwbkheIS0tRHhIOVFgSmlXJCk+dzUkTkRAIT9yKnhUe3JaP2JVdXhfIz1uPisrfmJJeXg4SFcl
WWJ5cVoKejNwM1oqR0I2eWw/PilmOCg3fnowJkBoOCEjQHFZZnZSYGxESkdeMXQ+LVd4PEFgSWIx
ZVVBLXo5dmwzI2k+WCVuCnpHM0IwNiNPbj11dVEjblpVMV4pJlVZZjFUVjdJd1k9Nks/cVcwX0xS
QDl3ekdDJmhqNSFKYDlGP08qcklAcWhodAp6aGZNdFdefmF4OSNQcHJzcCE1MlorLUpyUV5+U3hJ
Tz8qQ15vV0p9aF4/VH5QWE1jQ3hfcUZiMm94ViRGIT93RnUKekdpX3pod0xpYzdgVFhQYUs9TlVZ
aDJIVmNSb2pqKntuJkc/QEp7ZFUlMzFtNCtzbDlOVWpPO30/IVJ+NnpBS0F5Cnp1aCFYZDwqNCtV
KVkhaCRBQWYlTl5aNG9VQDYrRys+LVlOflV3LSYhTDZxT0wyIXtGQlA1Z2RtKjYtZkVjbTh8JQp6
SmheP2tfdUNTMF56TUVlYEVjdjxYOCZpMGMoM2k2Y200RDBwSUBKVWQ9QXVIfExeenRhdytiSCpT
fXVKKlBwI3kKelZ8QDNfPHZyMm14OTY1VyRsdnY1ey1uMnA1NFJueHM7Ujc1SzlnYWB1SCh+PjE2
XjhablVgLUFUUF5iPU1lcDlQCnp5djktc2BGVloqPytwYlE8UFZucFAzQiZjZVYlRmxgQnYjUXJM
cGEkbDY5dW50azFGPnhjWWIxPlZ4ZVM0fE1oSgp6QzlIa0R0Q3NRZ21PMXk1NiZVUUFFKklVaERf
Z1BkMHE/eVpOaGhYN3pTVXI7ay01YjZQeUY1PFImd0smeXdvdE4Keml8bVh2OGchI1VNQElRT25y
dWRzJjFrWTIlPl9kPTd3azNNYUlBMlNUT3IkcmUkKEV8N0piKn1HMTt4fFI/aFRaCno0UXczeHxO
YnQpKGFAaEB8Ri08R1Upc1VqRj03I3FFJjJ7eUBMc2sjeU02Y1ZAPiFlPnQ5UmVNZCt4RmdAOHVu
VAp6LT9IbCFlcV9zKnM9cz5tWl9SJT5YMnVWS2NnfXlgRkxrPEFWODxPYFEhNFFlKTlid1k/KipT
Zl8hJT02bD03U04KejB+PzBBODslYGg8SkwxP194amlPYFlQRkxteTR8Q0BCXkVJXjd7N3NfU2Uo
ezgqTnMweiF2N15xTnI8NnxGVz9ACnppMW1IRVcmWEZAJXc2clgrdzt4dXxKKDYxYEY4VCM8JEk0
Y2I7cn5Ne3s3Q0RFendwdj47M2NKel93JmUtfUEzRQp6ZnZYdW1FYk11X0wlUkk3Pkk3Z0xeIW1A
Jj98SDluYiNGZlpkPXV8QTFEQDkjPTF1PCRZe2dFMDN+VyNDa20pfk4KekNASjxAeVd4REUpYmg4
YyVQTUU+ZjNwd1JudzA7KEoyU2wmKnl5I2AoM1Rqe1VLJSspSFRLLT1PNnhVO3Z1YXNDCnotMjdW
PVN+RitjYEh3bTVyTDZmTXJYNyVLT08oQnFjd15QOD54JVFaOD90WmdKTXJRN1d1OH1EX24hNE92
TjlafgpzZkJaXmAhTkRoaWs+TG83KmVIWHtLPXtZM3d4e3l0UE58QlMhMlRQOXI+bWRLSTtWc3Qw
SXtnYW07ZTkoCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1ib3hzaGFkb3ctZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkY2IzYzVkZmMwOWZiOWEzYmZjNTkxYTY5OGQ3MTkzYmFj
ZTYyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5n
L3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYw
MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKK2xheWVyIGF0ICgyMCwyMCkgc2l6ZSA1MDJ4NTAyCisgIFJlbmRlckJsb2NrIChwb3Np
dGlvbmVkKSB6STogMTIwIHtESVZ9IGF0ICgyMCwyMCkgc2l6ZSA1MDJ4NTAyIFtiZ2NvbG9yPSMw
MDk5MDBdIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMDAwKV0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1ib3hzaGFkb3cuaHRtbCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1ib3hzaGFkb3cuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYzA1YmVlMGNjOWY0YTg3ZDExMTYxMTM3YWVlZmZhYjkyYzJjMWExCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVk
LWJveHNoYWRvdy5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+
CisuY29tcCB7CisgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDBweCk7Cit9Citib2R5
IHsKKyAgbWFyZ2luOjA7CisgIHBhZGRpbmc6MDsKK30KKy5zaGFkb3cgeworICBwb3NpdGlvbjph
YnNvbHV0ZTsKKyAgbGVmdDoyMHB4OyByaWdodDoyMHB4OworICB3aWR0aDo1MDBweDsKKyAgaGVp
Z2h0OjUwMHB4OworICB0b3A6MHB4OyBib3R0b206MjBweDsKKyAgei1pbmRleDoxMjA7CisgIG1h
cmdpbi10b3A6MjBweDsKKyAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisgIC13ZWJr
aXQtYm94LXNoYWRvdzogMCAwIDZweCAjMDkwOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkwOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHk+Cis8IS0tIElmIGN1bGxlZCBpbmNvcnJlY3Rs
eSwgdGhlIHRvcC9sZWZ0IGVkZ2VzIG91dHNpZGUgb2YgdGhlIHNoYWRvd2VkIGJveCBlbmQgdXAg
YmVpbmcgY3VsbGVkIGluc3RlYWQgb2YgcGFpbnRlZC9kcmF3biBwcm9wZXJseS4gLS0+Cis8ZGl2
IGNsYXNzPSJjb21wIHNoYWRvdyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126006</attachid>
            <date>2012-02-07 22:33:56 -0800</date>
            <delta_ts>2012-02-08 08:56:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78073-20120208013354.patch</filename>
            <type>text/plain</type>
            <size>32372</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNjE1ZTViODkxNmJm
YWZmZjk3MzMzMWNlZjdmNDA5ODYyNGRiNS4uNTViYWNjNTY1NmU4YTEwZjNkZDFiNTQyY2M0NDY4
OGRkM2JiYmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gRml4
IG9wYXF1ZSB0cmFja2luZyBmb3IgYm94IHNoYWRvd3MgYW5kIG5vbi1jb21wb3NpdGVkIGNoaWxk
IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBjb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3cuaHRt
bAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRv
dy5odG1sCisKKyAgICAgICAgVW5pdCB0ZXN0czogUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3Bw
CisKKyAgICAgICAgV2hlbiBwYWludGluZyBhIGJveCBzaGFkb3csIGEgZmlsdGVyIGlzIGFwcGxp
ZWQgdG8gdGhlIHNraWEgY2FudmFzLCB0aGF0IGNhbiBtYWtlCisgICAgICAgIHBpeGVscyBwYWlu
dGVkIHdpdGggYW4gb3BhcXVlIGNvbG9yIGVuZCB1cCBub24tb3BhcXVlLiBTbyBjb25zaWRlciBp
bWFnZS9tYXNrL2NvbG9yCisgICAgICAgIGZpbHRlcnMgd2hlbiBkZWNpZGluZyBpZiBhIHBhaW50
IGlzIG9wYXF1ZS4KKworICAgICAgICBBbHNvIHdoZW4gcGFpbnRpbmcgdGhlIGJhY2tncm91bmQg
b2YgYW4gZWxlbWVudCB3aXRoIGEgYm94IHNoYWRvdywgdGhlIGJhY2tncm91bmQgaXMKKyAgICAg
ICAgcGFpbnRlZCB3aXRoIGEgdHJhbnNmb3JtIG9uIHRoZSBza2lhIGNhbnZhcyBiYXNlZCBvbiB0
aGUgc2l6ZSBvZiB0aGUgYm94IHNoYWRvdy4gVGhpcworICAgICAgICB0cmFuc2Zvcm0gbmVlZHMg
dG8gYmUgY29uc2lkZXJlZCB3aGVuIHRyYWNraW5nIGFuIG9wYXF1ZSBwYWludC4KKworICAgICAg
ICBIb3dldmVyLCB3aGVuIGEgbGF5ZXIncyBjb250ZW50UmVjdCBwb3NpdGlvbiBpcyBub24temVy
bywgd2UgdHJhbnNsYXRlIHRoZSBHcmFwaGljc0NvbnRleHQKKyAgICAgICAgdG8gcHV0IHRoZSBj
b250ZW50UmVjdCBhdCAwLDAgaW4gdGhlIHNraWEgY2FudmFzLiBGb3IgdHJhY2tpbmcgb3BhcXVl
IHJlZ2lvbnMgaW4gdGhlIHJlc3VsdGluZworICAgICAgICBsYXllciwgd2UgbmVlZCB0byB1bnRv
IHRoaXMgdHJhbnNsYXRpb24uIFNjYWxpbmcgY2FuIGFsc28gb2NjdXIgd2hpY2ggd2UgbXVzdCB1
bmRvLiBTbyB3ZSBwYXNzCisgICAgICAgIHRoZSB0cmFuc2Zvcm0gaW4gdG8gUGxhdGZvcm1Db250
ZXh0U2tpYSB0byBnbyBmcm9tIHRoZSBTa0NhbnZhcyBiYWNrIHRvIHRoZSBsYXllcidzIGNvbnRl
bnQKKyAgICAgICAgY29vcmRpbmF0ZSBzcGFjZS4gT3BhcXVlIHBhaW50cyBjYW4gdGhlbiBiZSB0
cmFja2VkIGluIHRoZSBsYXllcidzIGNvbnRlbnQgc3BhY2UgcmF0aGVyIHRoYW4KKyAgICAgICAg
aW4gdGhlIHNraWEgY2FudmFzIHNwYWNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVU
b1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25T
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50SXNPcGFxdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdp
b25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25T
a2lhOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6Om1hcmtS
ZWN0QXNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6bWFya1Jl
Y3RBc05vbk9wYXF1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVS
ZWdpb25Ta2lhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE9wYXF1ZVJlZ2lvblNr
aWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tp
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UG9pbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRpZERyYXdCb3VuZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoK
KyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Db250ZXh0U2tpYTo6c2V0T3BhcXVlUmVnaW9uVHJhbnNmb3JtKToKKwogMjAxMi0wMi0wNyAg
TWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBy
ZWR1bmRhbnQgY2hlY2tzIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggYmJkMzAxNjRhMDFhNzgzZmM4ODI4NjY3YWM5NGUxNjgwNGVi
ZmRhNC4uM2NhODZkMDBhMDViMzNhMzYyMmE3NTk1YzhkMjBkYWE1Mjc3ZDMwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0wNyAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZpeCBvcGFx
dWUgdHJhY2tpbmcgZm9yIGJveCBzaGFkb3dzIGFuZCBub24tY29tcG9zaXRlZCBjaGlsZCBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzgw
NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDItMDcgIEhhbnMgV2VubmJvcmcgIDxoYW5z
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bTogcmVtb3ZlIFdlYlNwZWVjaElucHV0
UmVzdWx0OjpzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggMGQ5N2U1MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhkODZhMWU4
OC4uMDBhM2U0NjNiODU5MzFiMDRlYmMwNWEwMTllY2Q5NDRhNmI1ZjQ0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICAgICAgYm9yZGVyVGV4ZWxzID8g
UGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6
UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIGNhbnZh
c1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKICAgICBjYW52YXNQYWludGVyLnNraWFD
b250ZXh0KCktPnNldFRyYWNrT3BhcXVlUmVnaW9uKCFsYXllcklzT3BhcXVlKTsKLSAgICBwYWlu
dENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRz
U2NhbGUpOworICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCAqY2Fu
dmFzUGFpbnRlci5za2lhQ29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiAK
ICAgICBpZiAoIWxheWVySXNPcGFxdWUpCiAgICAgICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0g
Y2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRj
NmJkN2Y1MzgyYjUyYjBlZWZiYTEwMzE2NmZjMDhmZS4uZWExOTMwMzY1NWNhMjM1ZmMyN2E0MDZj
NmVlOTZkYTQzMGQ5MWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1D
b250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDUsNyArNDYsNyBAQCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Q2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxh
dGZvcm1Db250ZXh0U2tpYSYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtY29u
dGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CkBAIC02Miw2ICs2MywxMCBA
QCB2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbgogICAgICAgICAgICAgc2NhbGVkQ29udGVudFJlY3Qg
PSBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVHJhbnNm
b3JtIHRyYWNrZWQgb3BhcXVlIHBhaW50cyBiYWNrIHRvIG91ciBsYXllcidzIGNvbnRlbnQgc3Bh
Y2UuCisgICAgICAgIEFTU0VSVChjb250ZXh0LmdldENUTSgpLmlzSW52ZXJ0aWJsZSgpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9ybShjb250ZXh0Lmdl
dENUTSgpLmludmVyc2UoKSk7CisKICAgICAgICAgbV9wYWludGVyLT5wYWludChjb250ZXh0LCBz
Y2FsZWRDb250ZW50UmVjdCk7CiAKICAgICAgICAgaWYgKGNvbnRlbnRzU2NhbGUgIT0gMS4wKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MTVmNjk4NjUz
M2JiODVkNjllN2NmNjQ3ODJiMjZhZjExMTM1YWMuLmQ0OTEzNDhlZTdjZDkwMDAyNTIwMjczM2Ez
NTUwN2MxZDU3M2MxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOworY2xhc3MgUGxhdGZvcm1D
b250ZXh0U2tpYTsKIAogLy8gQmFzZSBjbGFzcyBmb3IgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciBhbmQKIC8vIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgdGhhdCBy
ZWR1Y2VzIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbgpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6
CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBQbGF0
Zm9ybUNvbnRleHRTa2lhJiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50UmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwZDk3NGZhNjNhNDQ1
N2Q5ZWFjN2M4Yjg3M2Y3ZTkxYTRkMjY4NDNiLi4zNWNkMzVhZDNjMDQ2MTZlNTNkNGExYmMxZTVj
ZjhlYmVlMjhlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UgogICAgIHBsYXRmb3JtQ29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsKICAgICBwbGF0
Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24oIW1fbGF5ZXJJc09wYXF1ZSk7CiAgICAg
R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBw
YWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUp
OworICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQsIGNv
bnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7
CiAKICAgICBpZiAoIW1fbGF5ZXJJc09wYXF1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCmluZGV4IDc0
MTQ1ZjFjOTI3MzkxZDk4Y2QwNTJlNTQyNjMwNzI2NmU1OGJlYjkuLjRiZGE5MjNmZmYyYTcxYWNh
NjA0MzE1MWZkNDA0YjVkYWNlNmE3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKIAogI2luY2x1ZGUgIlNr
Q2FudmFzLmgiCisjaW5jbHVkZSAiU2tDb2xvckZpbHRlci5oIgogI2luY2x1ZGUgIlNrU2hhZGVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNCwxMCArMTM1LDE5IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBwYWludElzT3BhcXVlKGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0Jp
dG1hcCogYml0bWFwID0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChiaXRtYXAgJiYg
IWJpdG1hcC0+aXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChwYWlu
dC5nZXRMb29wZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChwYWludC5nZXRJ
bWFnZUZpbHRlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50LmdldE1h
c2tGaWx0ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFNrQ29sb3JGaWx0ZXIqIGNv
bG9yRmlsdGVyID0gcGFpbnQuZ2V0Q29sb3JGaWx0ZXIoKTsKKyAgICBpZiAoY29sb3JGaWx0ZXIg
JiYgIShjb2xvckZpbHRlci0+Z2V0RmxhZ3MoKSAmIFNrQ29sb3JGaWx0ZXI6OmtBbHBoYVVuY2hh
bmdlZF9GbGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4
dFNraWEqIGNvbnRleHQsIGNvbnN0IFNrUmVjdCYgZmlsbFJlY3QsIGNvbnN0IFNrUGFpbnQmIHBh
aW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWRE
cmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWlu
dCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXApCiB7CiAgICAgLy8gQW55IHN0cm9raW5n
IG1heSBwdXQgYWxwaGEgaW4gcGl4ZWxzIGV2ZW4gaWYgdGhlIGZpbGxpbmcgcGFydCBkb2VzIG5v
dC4KICAgICBpZiAocGFpbnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50OjprRmlsbF9TdHlsZSkgewpA
QCAtMTQ5LDIxICsxNTksMjEgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChj
b25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBTa1IKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBTa1JlY3Qgc3Ryb2tlUmVjdDsKICAgICAgICAgICAgIHN0cm9rZVJl
Y3QgPSBwYWludC5jb21wdXRlRmFzdEJvdW5kcyhmaWxsUmVjdCwgJnN0cm9rZVJlY3QpOwotICAg
ICAgICAgICAgZGlkRHJhdyhjb250ZXh0LCBzdHJva2VSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxs
c0JvdW5kcyk7CisgICAgICAgICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgc3Ryb2tl
UmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmlsbHNCb3VuZHMpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgYm9vbCBjaGVja0ZpbGxPbmx5ID0gdHJ1ZTsKICAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNP
cGFxdWUocGFpbnQsIGJpdG1hcCwgY2hlY2tGaWxsT25seSk7CiAgICAgYm9vbCBmaWxsc0JvdW5k
cyA9IHBhaW50LmdldFN0eWxlKCkgIT0gU2tQYWludDo6a1N0cm9rZV9TdHlsZTsKLSAgICBkaWRE
cmF3KGNvbnRleHQsIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CisgICAg
ZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxs
c0JvdW5kcyk7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgU2tQYXRoJiBwYXRoLCBjb25zdCBT
a1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0sIGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAg
U2tSZWN0IHJlY3Q7CiAgICAgaWYgKHBhdGguaXNSZWN0KCZyZWN0KSkgewotICAgICAgICBkaWRE
cmF3UmVjdChjb250ZXh0LCByZWN0LCBwYWludCwgMCk7CisgICAgICAgIGRpZERyYXdSZWN0KGNv
bnRleHQsIHRyYW5zZm9ybSwgcmVjdCwgcGFpbnQsIDApOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xNzQsMTEgKzE4NCwxMSBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQ
YXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IFNrUAogICAgICAg
ICBkaWREcmF3VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUpOwogICAgIGVsc2UgewogICAgICAgICBy
ZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMocGF0aC5nZXRCb3VuZHMoKSwgJnJlY3QpOwot
ICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRz
KTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFx
dWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlk
RHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBTa0NhbnZhczo6
UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRzW10sIGNv
bnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRz
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNv
bnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGlmICgh
bnVtUG9pbnRzKQogICAgICAgICByZXR1cm47CkBAIC0yMDMsMTEgKzIxMywxMSBAQCB2b2lkIE9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSog
Y29udGV4dCwgU2tDYW52YQogICAgICAgICBkaWREcmF3VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUp
OwogICAgIGVsc2UgewogICAgICAgICByZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMocmVj
dCwgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4
dCwgY29uc3QgU2tSZWN0JiBib3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBi
b3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGJvb2wgb3BhcXVlID0gcGFpbnRJ
c09wYXF1ZShwYWludCk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IGZhbHNlOwpAQCAtMjE3LDE2
ICsyMjcsMzkgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdAogICAgIGVsc2UgewogICAgICAgICBT
a1JlY3QgcmVjdDsKICAgICAgICAgcmVjdCA9IHBhaW50LmNvbXB1dGVGYXN0Qm91bmRzKGJvdW5k
cywgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhdyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25z
dCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBi
b29sIGZpbGxzQm91bmRzKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBs
YXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdz
T3BhcXVlLCBib29sIGZpbGxzQm91bmRzKQogeworICAgIFNrUmVjdCB0YXJnZXRSZWN0ID0gcmVj
dDsKKworICAgIC8vIEFwcGx5IHRoZSBjdXJyZW50IGNsaXAuCisgICAgaWYgKGNvbnRleHQtPmNh
bnZhcygpLT5nZXRDbGlwVHlwZSgpICE9IFNrQ2FudmFzOjprUmVjdF9DbGlwVHlwZSkKKyAgICAg
ICAgZmlsbHNCb3VuZHMgPSBmYWxzZTsKKyAgICBlbHNlIHsKKyAgICAgICAgU2tJUmVjdCBkZXZp
Y2VDbGlwOworICAgICAgICBjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcERldmljZUJvdW5kcygm
ZGV2aWNlQ2xpcCk7CisgICAgICAgIGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoU2tJbnRUb1Nj
YWxhcihkZXZpY2VDbGlwLmZMZWZ0KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZUb3ApLCBT
a0ludFRvU2NhbGFyKGRldmljZUNsaXAuZlJpZ2h0KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlw
LmZCb3R0b20pKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFjb250ZXh0
LT5jbGlwcGVkVG9JbWFnZSgpLmlzT3BhcXVlKCkpCisgICAgICAgIGZpbGxzQm91bmRzID0gZmFs
c2U7CisKKyAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3Jtcy4gVGhlIG1hcHBpbmcgb2YgQWZmaW5l
VHJhbnNmb3JtIDwtPiBTa01hdHJpeCBjb21lcyBmcm9tIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RN
KCkuCisgICAgU2tNYXRyaXggY2FudmFzVHJhbnNmb3JtID0gY29udGV4dC0+Y2FudmFzKCktPmdl
dFRvdGFsTWF0cml4KCk7CisgICAgaWYgKCFjYW52YXNUcmFuc2Zvcm0ubWFwUmVjdCgmdGFyZ2V0
UmVjdCkpCisgICAgICAgIGZpbGxzQm91bmRzID0gZmFsc2U7CisgICAgU2tNYXRyaXggY2FudmFz
VG9UYXJnZXRUcmFuc2Zvcm07CisgICAgY2FudmFzVG9UYXJnZXRUcmFuc2Zvcm0uc2V0QWxsKHRy
YW5zZm9ybS5hKCksIHRyYW5zZm9ybS5jKCksIHRyYW5zZm9ybS5lKCksIHRyYW5zZm9ybS5iKCks
IHRyYW5zZm9ybS5kKCksIHRyYW5zZm9ybS5mKCksIDAsIDAsIDEpOworICAgIGlmICghY2FudmFz
VG9UYXJnZXRUcmFuc2Zvcm0ubWFwUmVjdCgmdGFyZ2V0UmVjdCkpCisgICAgICAgIGZpbGxzQm91
bmRzID0gZmFsc2U7CisKICAgICBpZiAoZmlsbHNCb3VuZHMgJiYgeGZlcm1vZGVJc09wYXF1ZShw
YWludCwgZHJhd3NPcGFxdWUpKQotICAgICAgICBtYXJrUmVjdEFzT3BhcXVlKGNvbnRleHQsIHJl
Y3QpOwotICAgIGVsc2UgaWYgKFNrUmVjdDo6SW50ZXJzZWN0cyhyZWN0LCBtX29wYXF1ZVJlY3Qp
ICYmICF4ZmVybW9kZVByZXNlcnZlc09wYXF1ZShwYWludCwgZHJhd3NPcGFxdWUpKQotICAgICAg
ICBtYXJrUmVjdEFzTm9uT3BhcXVlKHJlY3QpOworICAgICAgICBtYXJrUmVjdEFzT3BhcXVlKHRh
cmdldFJlY3QpOworICAgIGVsc2UgaWYgKCF4ZmVybW9kZVByZXNlcnZlc09wYXF1ZShwYWludCwg
ZHJhd3NPcGFxdWUpKQorICAgICAgICBtYXJrUmVjdEFzTm9uT3BhcXVlKHRhcmdldFJlY3QpOwog
fQogCiB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQYWlu
dCYgcGFpbnQsIGJvb2wgZHJhd3NPcGFxdWUpCkBAIC0yMzcsMjkgKzI3MCwxNyBAQCB2b2lkIE9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQYWludCYgcGFpbnQsIGJv
b2wgZHJhd3NPcGFxdWUpCiAgICAgfQogfQogCi12b2lkIE9wYXF1ZVJlZ2lvblNraWE6Om1hcmtS
ZWN0QXNPcGFxdWUoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgU2tS
ZWN0JiBwYWludFJlY3QpCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6Om1hcmtSZWN0QXNPcGFxdWUo
Y29uc3QgU2tSZWN0JiByZWN0KQogewogICAgIC8vIFdlIHdhbnQgdG8ga2VlcCB0cmFjayBvZiBh
biBvcGFxdWUgcmVnaW9uIGJ1dCBib3VuZCBpdHMgY29tcGxleGl0eSBhdCBhIGNvbnN0YW50IHNp
emUuCiAgICAgLy8gV2Uga2VlcCB0cmFjayBvZiB0aGUgbGFyZ2VzdCByZWN0YW5nbGUgc2VlbiBi
eSBhcmVhLiBJZiB3ZSBjYW4gYWRkIHRoZSBuZXcgcmVjdCB0byB0aGlzCiAgICAgLy8gcmVjdGFu
Z2xlIHRoZW4gd2UgZG8gdGhhdCwgYXMgdGhhdCBpcyB0aGUgY2hlYXBlc3Qgd2F5IHRvIGluY3Jl
YXNlIHRoZSBhcmVhIHJldHVybmVkCiAgICAgLy8gd2l0aG91dCBpbmNyZWFzaW5nIHRoZSBjb21w
bGV4aXR5LgogCi0gICAgaWYgKHBhaW50UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsK
LSAgICBpZiAoIWNvbnRleHQtPmNsaXBwZWRUb0ltYWdlKCkuaXNPcGFxdWUoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGlmIChjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcFR5cGUoKSAhPSBTa0Nh
bnZhczo6a1JlY3RfQ2xpcFR5cGUpCisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKG1fb3BhcXVlUmVjdC5jb250YWlucyhwYWludFJlY3QpKQorICAgIGlm
IChtX29wYXF1ZVJlY3QuY29udGFpbnMocmVjdCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIC8v
IEFwcGx5IHRoZSBjdXJyZW50IGNsaXAuCi0gICAgU2tJUmVjdCBkZXZpY2VDbGlwOwotICAgIGNv
bnRleHQtPmNhbnZhcygpLT5nZXRDbGlwRGV2aWNlQm91bmRzKCZkZXZpY2VDbGlwKTsKLSAgICBT
a1JlY3QgcmVjdCA9IHBhaW50UmVjdDsKLSAgICBpZiAoIXJlY3QuaW50ZXJzZWN0KFNrSW50VG9T
Y2FsYXIoZGV2aWNlQ2xpcC5mTGVmdCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mVG9wKSwg
U2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZSaWdodCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xp
cC5mQm90dG9tKSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChyZWN0LmNvbnRhaW5zKG1f
b3BhcXVlUmVjdCkpIHsKICAgICAgICAgbV9vcGFxdWVSZWN0ID0gcmVjdDsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjg4LDYgKzMwOSw4IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6bWFya1JlY3RB
c05vbk9wYXF1ZShjb25zdCBTa1JlY3QmIHJlY3QpCiAgICAgLy8gV2Ugd2FudCB0byBrZWVwIGFz
IG11Y2ggb2YgdGhlIGN1cnJlbnQgb3BhcXVlIHJlY3RhbmdsZSBhcyB3ZSBjYW4sIHNvIGZpbmQg
dGhlIG9uZSBsYXJnZXN0CiAgICAgLy8gcmVjdGFuZ2xlIGluc2lkZSBtX29wYXF1ZVJlY3QgdGhh
dCBkb2VzIG5vdCBpbnRlcnNlY3Qgd2l0aCB8cmVjdHwuCiAKKyAgICBpZiAoIVNrUmVjdDo6SW50
ZXJzZWN0cyhyZWN0LCBtX29wYXF1ZVJlY3QpKQorICAgICAgICByZXR1cm47CiAgICAgaWYgKHJl
Y3QuY29udGFpbnMobV9vcGFxdWVSZWN0KSkgewogICAgICAgICBtX29wYXF1ZVJlY3Quc2V0RW1w
dHkoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAppbmRleCA5M2YyYzVhMWIxZDQy
ZWY2NDZkNjRiNTRhZWZiMmM2ZTc1ODBmOTAwLi40NWIwNjkwMDQyYTY5OGE0Y2EwMDNkM2U4NTBl
ZThkNGMzNjc5OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgIlNrUmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBZmZpbmVUcmFuc2Zv
cm07CiBjbGFzcyBQbGF0Zm9ybUNvbnRleHRTa2lhOwogCiAvLyBUaGlzIGNsYXNzIGlzIGFuIGVu
Y2Fwc3VsYXRpb24gb2YgZnVuY3Rpb25hbGl0eSBmb3IgUGxhdGZvcm1Db250ZXh0U2tpYSwgYW5k
IGl0cyBtZXRob2RzIGFyZSBtaXJyb3JlZApAQCAtNTIsMTUgKzUzLDE1IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGUgcmVzdWx0aW5nIG9wYXF1ZSByZWdpb24gYXMgYSBzaW5nbGUgcmVjdC4KICAgICBJ
bnRSZWN0IGFzUmVjdCgpIGNvbnN0OwogCi0gICAgdm9pZCBkaWREcmF3UmVjdChjb25zdCBQbGF0
Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0IFNr
Qml0bWFwKik7Ci0gICAgdm9pZCBkaWREcmF3UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lh
KiwgY29uc3QgU2tQYXRoJiwgY29uc3QgU2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd1BvaW50
cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgU2tDYW52YXM6OlBvaW50TW9kZSwgaW50IG51
bVBvaW50cywgY29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1BhaW50Jik7Ci0gICAgdm9pZCBkaWRE
cmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tSZWN0JiwgY29u
c3QgU2tQYWludCYpOworICAgIHZvaWQgZGlkRHJhd1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0
U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFp
bnQmLCBjb25zdCBTa0JpdG1hcCopOworICAgIHZvaWQgZGlkRHJhd1BhdGgoY29uc3QgUGxhdGZv
cm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUGF0aCYsIGNv
bnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250
ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIFNrQ2FudmFzOjpQb2ludE1vZGUsIGlu
dCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOworICAgIHZvaWQg
ZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUmVjdCYs
IGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKTsKKyAg
ICB2b2lkIGRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVl
LCBib29sIGZpbGxzQm91bmRzKTsKICAgICB2b2lkIGRpZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQ
YWludCYsIGJvb2wgZHJhd3NPcGFxdWUpOwotICAgIHZvaWQgbWFya1JlY3RBc09wYXF1ZShjb25z
dCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tSZWN0Jik7CisgICAgdm9pZCBtYXJrUmVj
dEFzT3BhcXVlKGNvbnN0IFNrUmVjdCYpOwogICAgIHZvaWQgbWFya1JlY3RBc05vbk9wYXF1ZShj
b25zdCBTa1JlY3QmKTsKIAogICAgIFNrUmVjdCBtX29wYXF1ZVJlY3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRl
eHRTa2lhLmNwcAppbmRleCAzMzA2MmNhY2E5MmY5YTRiMzZiZmZhOTk5NzBhZTA3NDRhYThlZDYw
Li5jMzIzYTBkN2VmZmIzZGM2ZDkxMzhkODFlOTcxMTljY2RiZTEzZjZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1D
b250ZXh0U2tpYS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtQ29u
dGV4dFNraWEuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCkBAIC02MDksMjUgKzYwOCwyNSBAQCB2b2lkIFBsYXRmb3JtQ29u
dGV4dFNraWE6OnNldEdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
KQogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UmVjdChjb25zdCBTa1JlY3QmIHJl
Y3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQogewogICAg
IGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKQotICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3
UmVjdCh0aGlzLCByZWN0LCBwYWludCwgYml0bWFwKTsKKyAgICAgICAgbV9vcGFxdWVSZWdpb24u
ZGlkRHJhd1JlY3QodGhpcywgbV9vcGFxdWVSZWdpb25UcmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBi
aXRtYXApOwogfQogCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRpZERyYXdQYXRoKGNvbnN0
IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgaWYgKG1fdHJhY2tP
cGFxdWVSZWdpb24pCi0gICAgICAgIG1fb3BhcXVlUmVnaW9uLmRpZERyYXdQYXRoKHRoaXMsIHBh
dGgsIHBhaW50KTsKKyAgICAgICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1BhdGgodGhpcywgbV9v
cGFxdWVSZWdpb25UcmFuc2Zvcm0sIHBhdGgsIHBhaW50KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNv
bnRleHRTa2lhOjpkaWREcmF3UG9pbnRzKFNrQ2FudmFzOjpQb2ludE1vZGUgbW9kZSwgaW50IG51
bVBvaW50cywgY29uc3QgU2tQb2ludCBwb2ludHNbXSwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7
CiAgICAgaWYgKG1fdHJhY2tPcGFxdWVSZWdpb24pCi0gICAgICAgIG1fb3BhcXVlUmVnaW9uLmRp
ZERyYXdQb2ludHModGhpcywgbW9kZSwgbnVtUG9pbnRzLCBwb2ludHMsIHBhaW50KTsKKyAgICAg
ICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1BvaW50cyh0aGlzLCBtX29wYXF1ZVJlZ2lvblRyYW5z
Zm9ybSwgbW9kZSwgbnVtUG9pbnRzLCBwb2ludHMsIHBhaW50KTsKIH0KIAogdm9pZCBQbGF0Zm9y
bUNvbnRleHRTa2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNr
UGFpbnQmIHBhaW50KQogewogICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKQotICAgICAgICBt
X29wYXF1ZVJlZ2lvbi5kaWREcmF3Qm91bmRlZCh0aGlzLCByZWN0LCBwYWludCk7CisgICAgICAg
IG1fb3BhcXVlUmVnaW9uLmRpZERyYXdCb3VuZGVkKHRoaXMsIG1fb3BhcXVlUmVnaW9uVHJhbnNm
b3JtLCByZWN0LCBwYWludCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0
U2tpYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNv
bnRleHRTa2lhLmgKaW5kZXggMTJiZGY3OTVjNjcxOTFmZWFmMmZhYTI5Y2U5MmFkZWZjYzg0MWZj
Yy4uYjMwNjQ1MGNiMWQ4ZGM5ZmFjZTQ3M2YzYzkyNDNlODc4M2NjNDY1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNv
bnRleHRTa2lhLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgUGxhdGZvcm1Db250ZXh0U2tp
YV9oCiAjZGVmaW5lIFBsYXRmb3JtQ29udGV4dFNraWFfaAogCisjaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm9uY29w
eWFibGUuaCIKICNpbmNsdWRlICJPcGFxdWVSZWdpb25Ta2lhLmgiCkBAIC0xOTIsNiArMTkzLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVmZXJyZWQoYm9vbCBkZWZlcnJlZCkgeyBtX2RlZmVy
cmVkID0gZGVmZXJyZWQ7IH0KIAogICAgIHZvaWQgc2V0VHJhY2tPcGFxdWVSZWdpb24oYm9vbCB0
cmFjaykgeyBtX3RyYWNrT3BhcXVlUmVnaW9uID0gdHJhY2s7IH0KKyAgICAvLyBBIHRyYW5zZm9y
bSBhcHBsaWVkIHRvIGFsbCB0cmFja2VkIG9wYXF1ZSBwYWludHMuIFRoaXMgaXMgYXBwbGllZCBh
dCB0aGUgdGltZSB0aGUgcGFpbnRpbmcgaXMgZG9uZS4KKyAgICB2b2lkIHNldE9wYXF1ZVJlZ2lv
blRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgeyBtX29wYXF1ZVJl
Z2lvblRyYW5zZm9ybSA9IHRyYW5zZm9ybTsgfQogCiAgICAgLy8gVGhpcyB3aWxsIGJlIGFuIGVt
cHR5IHJlZ2lvbiB1bmxlc3MgdHJhY2tpbmcgaXMgZW5hYmxlZC4KICAgICBjb25zdCBPcGFxdWVS
ZWdpb25Ta2lhJiBvcGFxdWVSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX29wYXF1ZVJlZ2lvbjsg
fQpAQCAtMjI5LDYgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gVHJhY2tzIHRoZSByZWdpb24g
cGFpbnRlZCBvcGFxdWUgdmlhIHRoZSBHcmFwaGljc0NvbnRleHQuCiAgICAgT3BhcXVlUmVnaW9u
U2tpYSBtX29wYXF1ZVJlZ2lvbjsKICAgICBib29sIG1fdHJhY2tPcGFxdWVSZWdpb247CisgICAg
QWZmaW5lVHJhbnNmb3JtIG1fb3BhcXVlUmVnaW9uVHJhbnNmb3JtOwogCiAgICAgLy8gU3RvcmVz
IGltYWdlIHNpemVzIGZvciBhIGhpbnQgdG8gY29tcHV0ZSBpbWFnZSByZXNhbXBsaW5nIG1vZGVz
LgogICAgIC8vIFZhbHVlcyBhcmUgdXNlZCBpbiBJbWFnZVNraWEuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3Bw
CmluZGV4IGRjMWNmMjk5MzkzMWYyYzQ2MDI4Yjg3ZGI3YTdlODIxNDIzYWNiNTUuLjY3NDdkZjNk
OTY1YmMzMGYxNWYwODEzZDNlZjhjYjU4ZDU0YjhmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwCkBAIC01
NDgsNCArNTQ4LDU0IEBAIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVl
T3ZhbFRlc3QpCiAgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4
dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CiB9CiAKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tp
YVRlc3QsIGxheWVyVHJhbnNmb3JtVHJhbnNsYXRlT3BhcXVlVGVzdCkKK3sKKyAgICBTa0JpdG1h
cCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25m
aWcsIDQwMCwgNDAwKTsKKyAgICBiaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRtYXAuZXJh
c2VDb2xvcigwKTsKKyAgICBTa0NhbnZhcyBjYW52YXMoYml0bWFwKTsKKyAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKKworICAg
IFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KCZjYW52YXMpOworICAgIHBsYXRm
b3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKKyAgICBwbGF0Zm9ybUNvbnRl
eHQuc2V0T3BhcXVlUmVnaW9uVHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgR3JhcGhpY3NDb250
ZXh0IGNvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7CisKKyAgICBDb2xvciBvcGFxdWUoMS4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7CisKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwg
MTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNl
T3Zlcik7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDkwLCA5MCksIHBsYXRm
b3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19N
QVRDSChiaXRtYXAsIHRyYW5zZm9ybS5pbnZlcnNlKCkubWFwUmVjdChwbGF0Zm9ybUNvbnRleHQu
b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpKTsKKworICAgIGNvbnRleHQuY2xlYXJSZWN0KEZsb2F0
UmVjdCgxMCwgMTAsIDkwLCA5MCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgcGxh
dGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKK30KKworVEVTVChQbGF0Zm9y
bUNvbnRleHRTa2lhVGVzdCwgbGF5ZXJUcmFuc2Zvcm1TY2FsZU9wYXF1ZVRlc3QpCit7CisgICAg
U2tCaXRtYXAgYml0bWFwOworICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4
ODhfQ29uZmlnLCA0MDAsIDQwMCk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgYml0
bWFwLmVyYXNlQ29sb3IoMCk7CisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7CisgICAgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0uc2NhbGUoMik7CisKKyAgICBQ
bGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9y
bUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0
LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIEdyYXBoaWNzQ29udGV4
dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAu
MGYsIDAuMGYsIDEuMGYpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMjAsIDIw
LCAxMCwgMTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92
ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDAsIDQwLCAyMCwgMjApLCBwbGF0Zm9y
bUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFU
Q0goYml0bWFwLCB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGxhdGZvcm1Db250ZXh0Lm9w
YXF1ZVJlZ2lvbigpLmFzUmVjdCgpKSk7CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdChGbG9hdFJl
Y3QoMjAsIDIwLCAxMCwgMTApKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRm
b3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZWYxYjhjNDE2OWQ2YTQ0NTc5ZjkzMmEyNjI4NDIzYjA1NGViMTJiZC4uNDlhNjIw
NzQ1Y2FjNzkwMjI4NDM3ODg2ZDZjOGNkYjdjMzU3ZWZiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTAyLTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gRml4IG9wYXF1ZSB0cmFja2luZyBmb3IgYm94IHNoYWRvd3MgYW5kIG5v
bi1jb21wb3NpdGVkIGNoaWxkIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03ODA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY29tcG9zaXRpbmcvY3VsbGluZy9zY3JvbGxlZC13aXRoaW4t
Ym94c2hhZG93LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvY3Vs
bGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogY29tcG9zaXRpbmcvY3VsbGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1ib3hzaGFk
b3ctZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9jdWxsaW5nL3Ry
YW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9z
aXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRvdy5odG1sOiBBZGRlZC4KKwogMjAxMi0w
Mi0wNyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy1leHBlY3RlZC5wbmcgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3ctZXhw
ZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMTE3MzcyOGYzZTI0ZmIyYzIyNTk2MjI1ZDkyMDAyYWEy
ZDBmMDUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM1NzQKemNtZUFTQE4/KG9sSHlgdVZCcSFp
YTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuMGwrCnpHbXtrS3c2c0tu
V0NKNHVHdmt5YjZIe3xqT093UjNCcUlaSjxIVnBJTyU5LTg5aUE/WkFyKjdwLXIxT1VKNDRETAp6
YUZTNSs7bHs/b2QrRURZZW94IyFGWWxmQFV4TGE2PDwyYHpqPU5haFpvTGsqdX5gMCNvQk1+Pjw0
MkdFYChFJGoKelZfK3kqN1J9R1ZAV0VlczB8UEA2NkV9bGA4cCh7YHVqe3QpeSpBKV56M1pSTjZs
Y1opPDtOQyRoWWsyMXBGZ30tCnp5e1lgPXRPSFQpcklGSzlXNiE7PXZ8YmFQJkc9em5GSHByfTZU
aXpBWjsjekF5QVY7KCtSZENUZCtsP1AtUCt9awp6aX5pTDh0QmRKN3smV1k9PX1taDFoVmwmbSVg
YVF7OXlhbStZOyN0PU8jV0hzejVkXkt3X0pgV1NiM1QkYCohVHkKelluTENeezMhZU4/ZHktUHdf
bzBWU1l4NGd7QnpafEJUTjxoan1fa08tQ2E1QmVmZjkoLXxoWE1rR0tDbHtQJGc1CnpqQy19dGp3
P3J7KlFDYndvJkVeYUdYMSoje0NJbyZ7ZFc2aDtgeUUqJmF7azdWJSFyQ2JsbWQ0ZjhZSHB0Z0cy
bwp6e2NCNSZSOW05P3lLVSpNK3ZvQSFvNV5oK0B3ekpSe1FkTHlfc2l8Q3ROWilzX3h9MyYjVHl4
UnRsal9iPnZmeTYKejwoS2M7b1pWZnp7Y2FgdXpoJjhTZl9jKHdvP21+U0RBOHRyRkdZdFRAOCRX
Mktmbkcybm1rOC15Wk92S1RZKXtzCno7YHoxUDRfTTlOKkZRZGV5OTdyPXtLMnhuazlXdyN7JV9F
WjVzU0ZwekpBKDZfdkYxN2VIaVpDPkU5KCkpNHsmMwp6QEZRRHg/RGU8WTV6QylgNW8yY2pwbHpZ
TXtCM2drRTNTMH5QckRWUCkzej5WYDAjb3sqb1haZXA2TjA7XyNga2cKejlBT2F+V3NDO0dYaTZC
KDEqNXJPRyM4QktnMygrc0lDODw4UXdPQXU3Zkt6S0pZYXYjI1A2fWl5KCtHWF4/SDN2Cnpia34r
VyZhOzFlS1NfYjFqYGVydWUoNz19P3NkaEgzNlNRYSZ1NWVTQDg4fGVQLURuQFM2NlFEfEpsVW5A
d2ZmKgp6SkJ8UkdjQTAreSF9fnUhal48JUd1PkxffC1KZ3BRZE15V0A+USRkSD1YKSNgMGM7SH0t
QFAydjhvTGlfamxGKlAKej9xJVp0NFhvRUpaWF9IYEp5c2d+fDZsejIhJk9tIT9WbGUke3FnRFAq
VkU2aHBGaDk7Smd7a1lfLTg/cy18MWFACno/ay1eMXZvZHFleDY1X2E0ailVdGV8aD10YSg/OyMt
MEMlZHdfSn1YbkFva3E+aT9ZdC1vcG18cENBOUp1I2c5fgp6R3h5Qlgmb1g3Ryh8bTA0NCVwYDll
M0pQOEwqYyg0I20lTCFGRnlGWUdwRV48PWRqaDk9VEI+KntFdDhWQCVQVykKejlXd289M25qJX5Z
ZDN0KWxVbn1QYlhueXJgIXt4SEY3Sns1ekJAQyRtVWEzcml3JGp3NWxBaVQhJiRZZ0FNWDlGCnoy
KDZqMz9mbDBhX0VPZ0g5Y21DWTY1Q2UmRChyYTleZ3dLenpSe21RQ2U2RT1VZEtwQUZmalp2VSNH
YDMrQXlUQgpjYl5PTUBiM3omU2xhaH4lZmdMI3BQZ2cmZWJ4c0xRMDA8eGF3ZzNQQwoKbGl0ZXJh
bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3Vs
bGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xs
ZWQtd2l0aGluLWJveHNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hz
aGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0
aGluLWJveHNoYWRvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyMDIwNGVmYzBjMGIyMzU2ZjgxMzJhOGUx
MzA5YTJiMDU5ZTg2NzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3cuaHRtbApAQCAtMCwwICsxLDU5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisuY29tcCB7CisgIC13
ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDBweCk7Cit9Citib2R5IHsKKyAgbWFyZ2luOjA7
CisgIHBhZGRpbmc6MDsKK30KKy5zaGFkb3cgeworICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgbGVm
dDoyMHB4OyByaWdodDoyMHB4OworICB3aWR0aDo1MDBweDsKKyAgaGVpZ2h0OjUwMHB4OworICB0
b3A6MHB4OyBib3R0b206MjBweDsKKyAgei1pbmRleDoxMjA7CisgIG1hcmdpbi10b3A6MjBweDsK
KyAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CisgIC13ZWJraXQtYm94LXNoYWRvdzog
MCAwIDZweCAjMDkwOworICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDkwOworfQorI3Njcm9sbCB7Cisg
IG92ZXJmbG93LXk6IGhpZGRlbjsgLyogc2Nyb2xsYWJsZSBidXQgbm8gc2Nyb2xsYmFycyB2aXNp
YmxlLiAqLworICB3aWR0aDo1MDBweDsKKyAgaGVpZ2h0OiA1MDBweDsKK30KKy5zY3JvbGxDb250
ZW50IHsKKyAgd2lkdGg6MTAwJTsKKyAgaGVpZ2h0OiAxMDAwcHg7IC8qIG1ha2UgdGhlIGNvbnRh
aW5lciBzY3JvbGxhYmxlICovCisgIGJhY2tncm91bmQtY29sb3I6ICMwZDA7Cit9Cis8L3N0eWxl
PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVl
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICB3
aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9sbCcpLnNjcm9sbFRvcCArPSAzMDA7CisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgfSwgMCk7IH07Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKworPGJvZHk+Cis8IS0tIElmIGN1bGxlZCBpbmNvcnJlY3RseSwgdGhlIHRvcC9sZWZ0IGVk
Z2VzIG91dHNpZGUgb2YgdGhlIHNoYWRvd2VkIGJveCBlbmQgdXAgYmVpbmcgY3VsbGVkIGluc3Rl
YWQgb2YgcGFpbnRlZC9kcmF3biBwcm9wZXJseS4gLS0+Cis8ZGl2IGNsYXNzPSJjb21wIHNoYWRv
dyI+CisgIDxkaXYgaWQ9InNjcm9sbCI+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsQ29udGVudCI+
CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93
LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRl
ZC1ib3hzaGFkb3ctZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhMDY4NzY3ZjM1NWExOTVmNWZl
OTc0ZjI2MDBmYjU0MDM5YWNmNjEKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDM1NjUKemNtZUFT
QE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1Qh
digkCnojOGwlWFYteGM8QlNYX2ZHWWN+XzN5VVA5I05AUE92JFFtMDZOfj1xcERscmcpcUE9KWhF
JlhYZCZrbDVOcmFkfgp6O0I3JWEwbkheIS0tRHhIOVFgSmlXJCk+dzUkTkRAIT9yKnhUe3JaP2JV
dXhfIz1uPisrfmJJeXg4SFclWWJ5cVoKejNwM1oqR0I2eWw/PilmOCg3fnowJkBoOCEjQHFZZnZS
YGxESkdeMXQ+LVd4PEFgSWIxZVVBLXo5dmwzI2k+WCVuCnpHM0IwNiNPbj11dVEjblpVMV4pJlVZ
ZjFUVjdJd1k9Nks/cVcwX0xSQDl3ekdDJmhqNSFKYDlGP08qcklAcWhodAp6aGZNdFdefmF4OSNQ
cHJzcCE1MlorLUpyUV5+U3hJTz8qQ15vV0p9aF4/VH5QWE1jQ3hfcUZiMm94ViRGIT93RnUKekdp
X3pod0xpYzdgVFhQYUs9TlVZaDJIVmNSb2pqKntuJkc/QEp7ZFUlMzFtNCtzbDlOVWpPO30/IVJ+
NnpBS0F5Cnp1aCFYZDwqNCtVKVkhaCRBQWYlTl5aNG9VQDYrRys+LVlOflV3LSYhTDZxT0wyIXtG
QlA1Z2RtKjYtZkVjbTh8JQp6SmheP2tfdUNTMF56TUVlYEVjdjxYOCZpMGMoM2k2Y200RDBwSUBK
VWQ9QXVIfExeenRhdytiSCpTfXVKKlBwI3kKelZ8QDNfPHZyMm14OTY1VyRsdnY1ey1uMnA1NFJu
eHM7Ujc1SzlnYWB1SCh+PjE2XjhablVgLUFUUF5iPU1lcDlQCnp5djktc2BGVloqPytwYlE8UFZu
cFAzQiZjZVYlRmxgQnYjUXJMcGEkbDY5dW50azFGPnhjWWIxPlZ4ZVM0fE1oSgp6QzlIa0R0Q3NR
Z21PMXk1NiZVUUFFKklVaERfZ1BkMHE/eVpOaGhYN3pTVXI7ay01YjZQeUY1PFImd0smeXdvdE4K
eml8bVh2OGchI1VNQElRT25ydWRzJjFrWTIlPl9kPTd3azNNYUlBMlNUT3IkcmUkKEV8N0piKn1H
MTt4fFI/aFRaCno0UXczeHxOYnQpKGFAaEB8Ri08R1Upc1VqRj03I3FFJjJ7eUBMc2sjeU02Y1ZA
PiFlPnQ5UmVNZCt4RmdAOHVuVAp6LT9IbCFlcV9zKnM9cz5tWl9SJT5YMnVWS2NnfXlgRkxrPEFW
ODxPYFEhNFFlKTlid1k/KipTZl8hJT02bD03U04KejB+PzBBODslYGg8SkwxP194amlPYFlQRkxt
eTR8Q0BCXkVJXjd7N3NfU2UoezgqTnMweiF2N15xTnI8NnxGVz9ACnppMW1IRVcmWEZAJXc2clgr
dzt4dXxKKDYxYEY4VCM8JEk0Y2I7cn5Ne3s3Q0RFendwdj47M2NKel93JmUtfUEzRQp6ZnZYdW1F
Yk11X0wlUkk3Pkk3Z0xeIW1AJj98SDluYiNGZlpkPXV8QTFEQDkjPTF1PCRZe2dFMDN+VyNDa20p
fk4KekNASjxAeVd4REUpYmg4YyVQTUU+ZjNwd1JudzA7KEoyU2wmKnl5I2AoM1Rqe1VLJSspSFRL
LT1PNnhVO3Z1YXNDCnotMjdWPVN+RitjYEh3bTVyTDZmTXJYNyVLT08oQnFjd15QOD54JVFaOD90
WmdKTXJRN1d1OH1EX24hNE92TjlafgpzZkJaXmAhTkRoaWs+TG83KmVIWHtLPXtZM3d4e3l0UE58
QlMhMlRQOXI+bWRLSTtWc3QwSXtnYW07ZTkoCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hh
ZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNs
YXRlZC1ib3hzaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5Njky
N2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcv
dHJhbnNsYXRlZC1ib3hzaGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxp
bmcvdHJhbnNsYXRlZC1ib3hzaGFkb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTE0MWY1M2MyYTNhMjg5
NDc5MDA2MTJhYmFiMWE3YzUwNDhkMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRvdy5odG1sCkBAIC0wLDAgKzEs
MzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy5jb21wIHsK
KyAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMHB4KTsKK30KK2JvZHkgeworICBtYXJn
aW46MDsKKyAgcGFkZGluZzowOworfQorLnNoYWRvdyB7CisgIHBvc2l0aW9uOmFic29sdXRlOwor
ICBsZWZ0OjIwcHg7IHJpZ2h0OjIwcHg7CisgIHdpZHRoOjUwMHB4OworICBoZWlnaHQ6NTAwcHg7
CisgIHRvcDowcHg7IGJvdHRvbToyMHB4OworICB6LWluZGV4OjEyMDsKKyAgbWFyZ2luLXRvcDoy
MHB4OworICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKKyAgLXdlYmtpdC1ib3gtc2hh
ZG93OiAwIDAgNnB4ICMwOTA7CisgIGJhY2tncm91bmQtY29sb3I6ICMwOTA7Cit9Cis8L3N0eWxl
PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVl
KTsKKyAgfQorPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPCEtLSBJZiBjdWxsZWQgaW5j
b3JyZWN0bHksIHRoZSB0b3AvbGVmdCBlZGdlcyBvdXRzaWRlIG9mIHRoZSBzaGFkb3dlZCBib3gg
ZW5kIHVwIGJlaW5nIGN1bGxlZCBpbnN0ZWFkIG9mIHBhaW50ZWQvZHJhd24gcHJvcGVybHkuIC0t
PgorPGRpdiBjbGFzcz0iY29tcCBzaGFkb3ciPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126092</attachid>
            <date>2012-02-08 08:56:57 -0800</date>
            <delta_ts>2012-02-08 15:48:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78073-20120208115656.patch</filename>
            <type>text/plain</type>
            <size>32739</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNjE1ZTViODkxNmJm
YWZmZjk3MzMzMWNlZjdmNDA5ODYyNGRiNS4uNTViYWNjNTY1NmU4YTEwZjNkZDFiNTQyY2M0NDY4
OGRkM2JiYmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTA3ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gRml4
IG9wYXF1ZSB0cmFja2luZyBmb3IgYm94IHNoYWRvd3MgYW5kIG5vbi1jb21wb3NpdGVkIGNoaWxk
IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODA3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzOiBjb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3cuaHRt
bAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRv
dy5odG1sCisKKyAgICAgICAgVW5pdCB0ZXN0czogUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3Bw
CisKKyAgICAgICAgV2hlbiBwYWludGluZyBhIGJveCBzaGFkb3csIGEgZmlsdGVyIGlzIGFwcGxp
ZWQgdG8gdGhlIHNraWEgY2FudmFzLCB0aGF0IGNhbiBtYWtlCisgICAgICAgIHBpeGVscyBwYWlu
dGVkIHdpdGggYW4gb3BhcXVlIGNvbG9yIGVuZCB1cCBub24tb3BhcXVlLiBTbyBjb25zaWRlciBp
bWFnZS9tYXNrL2NvbG9yCisgICAgICAgIGZpbHRlcnMgd2hlbiBkZWNpZGluZyBpZiBhIHBhaW50
IGlzIG9wYXF1ZS4KKworICAgICAgICBBbHNvIHdoZW4gcGFpbnRpbmcgdGhlIGJhY2tncm91bmQg
b2YgYW4gZWxlbWVudCB3aXRoIGEgYm94IHNoYWRvdywgdGhlIGJhY2tncm91bmQgaXMKKyAgICAg
ICAgcGFpbnRlZCB3aXRoIGEgdHJhbnNmb3JtIG9uIHRoZSBza2lhIGNhbnZhcyBiYXNlZCBvbiB0
aGUgc2l6ZSBvZiB0aGUgYm94IHNoYWRvdy4gVGhpcworICAgICAgICB0cmFuc2Zvcm0gbmVlZHMg
dG8gYmUgY29uc2lkZXJlZCB3aGVuIHRyYWNraW5nIGFuIG9wYXF1ZSBwYWludC4KKworICAgICAg
ICBIb3dldmVyLCB3aGVuIGEgbGF5ZXIncyBjb250ZW50UmVjdCBwb3NpdGlvbiBpcyBub24temVy
bywgd2UgdHJhbnNsYXRlIHRoZSBHcmFwaGljc0NvbnRleHQKKyAgICAgICAgdG8gcHV0IHRoZSBj
b250ZW50UmVjdCBhdCAwLDAgaW4gdGhlIHNraWEgY2FudmFzLiBGb3IgdHJhY2tpbmcgb3BhcXVl
IHJlZ2lvbnMgaW4gdGhlIHJlc3VsdGluZworICAgICAgICBsYXllciwgd2UgbmVlZCB0byB1bnRv
IHRoaXMgdHJhbnNsYXRpb24uIFNjYWxpbmcgY2FuIGFsc28gb2NjdXIgd2hpY2ggd2UgbXVzdCB1
bmRvLiBTbyB3ZSBwYXNzCisgICAgICAgIHRoZSB0cmFuc2Zvcm0gaW4gdG8gUGxhdGZvcm1Db250
ZXh0U2tpYSB0byBnbyBmcm9tIHRoZSBTa0NhbnZhcyBiYWNrIHRvIHRoZSBsYXllcidzIGNvbnRl
bnQKKyAgICAgICAgY29vcmRpbmF0ZSBzcGFjZS4gT3BhcXVlIHBhaW50cyBjYW4gdGhlbiBiZSB0
cmFja2VkIGluIHRoZSBsYXllcidzIGNvbnRlbnQgc3BhY2UgcmF0aGVyIHRoYW4KKyAgICAgICAg
aW4gdGhlIHNraWEgY2FudmFzIHNwYWNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVU
b1VwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25T
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50SXNPcGFxdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdp
b25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25T
a2lhOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6Om1hcmtS
ZWN0QXNPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6bWFya1Jl
Y3RBc05vbk9wYXF1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVS
ZWdpb25Ta2lhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE9wYXF1ZVJlZ2lvblNr
aWEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tp
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UG9pbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRpZERyYXdCb3VuZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoK
KyAgICAgICAgKFBsYXRmb3JtQ29udGV4dFNraWEpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1Db250ZXh0U2tpYTo6c2V0T3BhcXVlUmVnaW9uVHJhbnNmb3JtKToKKwogMjAxMi0wMi0wNyAg
TWF0dGhldyBEZWxhbmV5ICA8bWRlbGFuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBy
ZWR1bmRhbnQgY2hlY2tzIGluIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggYmJkMzAxNjRhMDFhNzgzZmM4ODI4NjY3YWM5NGUxNjgwNGVi
ZmRhNC4uM2NhODZkMDBhMDViMzNhMzYyMmE3NTk1YzhkMjBkYWE1Mjc3ZDMwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMi0wNyAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZpeCBvcGFx
dWUgdHJhY2tpbmcgZm9yIGJveCBzaGFkb3dzIGFuZCBub24tY29tcG9zaXRlZCBjaGlsZCBlbGVt
ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzgw
NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRl
c3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDItMDcgIEhhbnMgV2VubmJvcmcgIDxoYW5z
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bTogcmVtb3ZlIFdlYlNwZWVjaElucHV0
UmVzdWx0OjpzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKaW5kZXggMGQ5N2U1MmFlZGUwZjk4MGFkYTE1ZGUwYTE0YTFkMjhkODZhMWU4
OC4uMDBhM2U0NjNiODU5MzFiMDRlYmMwNWEwMTllY2Q5NDRhNmI1ZjQ0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAgICAgICAgYm9yZGVyVGV4ZWxzID8g
UGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6
UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIGNhbnZh
c1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKICAgICBjYW52YXNQYWludGVyLnNraWFD
b250ZXh0KCktPnNldFRyYWNrT3BhcXVlUmVnaW9uKCFsYXllcklzT3BhcXVlKTsKLSAgICBwYWlu
dENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRz
U2NhbGUpOworICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCAqY2Fu
dmFzUGFpbnRlci5za2lhQ29udGV4dCgpLCBjb250ZW50UmVjdCwgY29udGVudHNTY2FsZSk7CiAK
ICAgICBpZiAoIWxheWVySXNPcGFxdWUpCiAgICAgICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0g
Y2FudmFzUGFpbnRlci5za2lhQ29udGV4dCgpLT5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggNWZhNjc4NTRj
NmJkN2Y1MzgyYjUyYjBlZWZiYTEwMzE2NmZjMDhmZS4uZWExOTMwMzY1NWNhMjM1ZmMyN2E0MDZj
NmVlOTZkYTQzMGQ5MWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1D
b250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDUsNyArNDYsNyBAQCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Q2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKQordm9pZCBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxh
dGZvcm1Db250ZXh0U2tpYSYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtY29u
dGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CkBAIC02Miw2ICs2MywxMCBA
QCB2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbgogICAgICAgICAgICAgc2NhbGVkQ29udGVudFJlY3Qg
PSBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVHJhbnNm
b3JtIHRyYWNrZWQgb3BhcXVlIHBhaW50cyBiYWNrIHRvIG91ciBsYXllcidzIGNvbnRlbnQgc3Bh
Y2UuCisgICAgICAgIEFTU0VSVChjb250ZXh0LmdldENUTSgpLmlzSW52ZXJ0aWJsZSgpKTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0LnNldE9wYXF1ZVJlZ2lvblRyYW5zZm9ybShjb250ZXh0Lmdl
dENUTSgpLmludmVyc2UoKSk7CisKICAgICAgICAgbV9wYWludGVyLT5wYWludChjb250ZXh0LCBz
Y2FsZWRDb250ZW50UmVjdCk7CiAKICAgICAgICAgaWYgKGNvbnRlbnRzU2NhbGUgIT0gMS4wKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MTVmNjk4NjUz
M2JiODVkNjllN2NmNjQ3ODJiMjZhZjExMTM1YWMuLmQ0OTEzNDhlZTdjZDkwMDAyNTIwMjczM2Ez
NTUwN2MxZDU3M2MxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOworY2xhc3MgUGxhdGZvcm1D
b250ZXh0U2tpYTsKIAogLy8gQmFzZSBjbGFzcyBmb3IgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciBhbmQKIC8vIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgdGhhdCBy
ZWR1Y2VzIGNvZGUgZHVwbGljYXRpb24gYmV0d2VlbgpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6
CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBQbGF0
Zm9ybUNvbnRleHRTa2lhJiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGZsb2F0IGNvbnRl
bnRzU2NhbGUpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50UmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwZDk3NGZhNjNhNDQ1
N2Q5ZWFjN2M4Yjg3M2Y3ZTkxYTRkMjY4NDNiLi4zNWNkMzVhZDNjMDQ2MTZlNTNkNGExYmMxZTVj
ZjhlYmVlMjhlYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UgogICAgIHBsYXRmb3JtQ29udGV4dC5zZXREZWZlcnJlZCh0cnVlKTsKICAgICBwbGF0
Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24oIW1fbGF5ZXJJc09wYXF1ZSk7CiAgICAg
R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBw
YWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUp
OworICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBwbGF0Zm9ybUNvbnRleHQsIGNv
bnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7
CiAKICAgICBpZiAoIW1fbGF5ZXJJc09wYXF1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCmluZGV4IDc0
MTQ1ZjFjOTI3MzkxZDk4Y2QwNTJlNTQyNjMwNzI2NmU1OGJlYjkuLjMwYjhhMzgwNWI4ODUzZjQy
ZGE0ZjBhMjU1YjhmOGRjNTQ4ZjNkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKIAogI2luY2x1ZGUgIlNr
Q2FudmFzLmgiCisjaW5jbHVkZSAiU2tDb2xvckZpbHRlci5oIgogI2luY2x1ZGUgIlNrU2hhZGVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNCwxMCArMTM1LDE5IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBwYWludElzT3BhcXVlKGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0Jp
dG1hcCogYml0bWFwID0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChiaXRtYXAgJiYg
IWJpdG1hcC0+aXNPcGFxdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChwYWlu
dC5nZXRMb29wZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChwYWludC5nZXRJ
bWFnZUZpbHRlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKHBhaW50LmdldE1h
c2tGaWx0ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFNrQ29sb3JGaWx0ZXIqIGNv
bG9yRmlsdGVyID0gcGFpbnQuZ2V0Q29sb3JGaWx0ZXIoKTsKKyAgICBpZiAoY29sb3JGaWx0ZXIg
JiYgIShjb2xvckZpbHRlci0+Z2V0RmxhZ3MoKSAmIFNrQ29sb3JGaWx0ZXI6OmtBbHBoYVVuY2hh
bmdlZF9GbGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4
dFNraWEqIGNvbnRleHQsIGNvbnN0IFNrUmVjdCYgZmlsbFJlY3QsIGNvbnN0IFNrUGFpbnQmIHBh
aW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWRE
cmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWlu
dCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXApCiB7CiAgICAgLy8gQW55IHN0cm9raW5n
IG1heSBwdXQgYWxwaGEgaW4gcGl4ZWxzIGV2ZW4gaWYgdGhlIGZpbGxpbmcgcGFydCBkb2VzIG5v
dC4KICAgICBpZiAocGFpbnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50OjprRmlsbF9TdHlsZSkgewpA
QCAtMTQ5LDIxICsxNTksMjEgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChj
b25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBTa1IKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBTa1JlY3Qgc3Ryb2tlUmVjdDsKICAgICAgICAgICAgIHN0cm9rZVJl
Y3QgPSBwYWludC5jb21wdXRlRmFzdEJvdW5kcyhmaWxsUmVjdCwgJnN0cm9rZVJlY3QpOwotICAg
ICAgICAgICAgZGlkRHJhdyhjb250ZXh0LCBzdHJva2VSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxs
c0JvdW5kcyk7CisgICAgICAgICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgc3Ryb2tl
UmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmlsbHNCb3VuZHMpOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgYm9vbCBjaGVja0ZpbGxPbmx5ID0gdHJ1ZTsKICAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNP
cGFxdWUocGFpbnQsIGJpdG1hcCwgY2hlY2tGaWxsT25seSk7CiAgICAgYm9vbCBmaWxsc0JvdW5k
cyA9IHBhaW50LmdldFN0eWxlKCkgIT0gU2tQYWludDo6a1N0cm9rZV9TdHlsZTsKLSAgICBkaWRE
cmF3KGNvbnRleHQsIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CisgICAg
ZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxs
c0JvdW5kcyk7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgU2tQYXRoJiBwYXRoLCBjb25zdCBT
a1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3Qg
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0sIGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAg
U2tSZWN0IHJlY3Q7CiAgICAgaWYgKHBhdGguaXNSZWN0KCZyZWN0KSkgewotICAgICAgICBkaWRE
cmF3UmVjdChjb250ZXh0LCByZWN0LCBwYWludCwgMCk7CisgICAgICAgIGRpZERyYXdSZWN0KGNv
bnRleHQsIHRyYW5zZm9ybSwgcmVjdCwgcGFpbnQsIDApOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xNzQsMTEgKzE4NCwxMSBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQ
YXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IFNrUAogICAgICAg
ICBkaWREcmF3VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUpOwogICAgIGVsc2UgewogICAgICAgICBy
ZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMocGF0aC5nZXRCb3VuZHMoKSwgJnJlY3QpOwot
ICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRz
KTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFx
dWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlk
RHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBTa0NhbnZhczo6
UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRzW10sIGNv
bnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRz
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNv
bnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGlmICgh
bnVtUG9pbnRzKQogICAgICAgICByZXR1cm47CkBAIC0yMDMsMTEgKzIxMywxMSBAQCB2b2lkIE9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSog
Y29udGV4dCwgU2tDYW52YQogICAgICAgICBkaWREcmF3VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUp
OwogICAgIGVsc2UgewogICAgICAgICByZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMocmVj
dCwgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4
dCwgY29uc3QgU2tSZWN0JiBib3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFx
dWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBi
b3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGJvb2wgb3BhcXVlID0gcGFpbnRJ
c09wYXF1ZShwYWludCk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IGZhbHNlOwpAQCAtMjE3LDE2
ICsyMjcsMzggQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdAogICAgIGVsc2UgewogICAgICAgICBT
a1JlY3QgcmVjdDsKICAgICAgICAgcmVjdCA9IHBhaW50LmNvbXB1dGVGYXN0Qm91bmRzKGJvdW5k
cywgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNvbnRleHQsIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhdyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25z
dCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBi
b29sIGZpbGxzQm91bmRzKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBs
YXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdz
T3BhcXVlLCBib29sIGZpbGxzQm91bmRzKQogeworICAgIFNrUmVjdCB0YXJnZXRSZWN0ID0gcmVj
dDsKKworICAgIC8vIEFwcGx5IHRoZSBjdXJyZW50IGNsaXAuCisgICAgaWYgKGNvbnRleHQtPmNh
bnZhcygpLT5nZXRDbGlwVHlwZSgpICE9IFNrQ2FudmFzOjprUmVjdF9DbGlwVHlwZSkKKyAgICAg
ICAgZmlsbHNCb3VuZHMgPSBmYWxzZTsKKyAgICBlbHNlIHsKKyAgICAgICAgU2tJUmVjdCBkZXZp
Y2VDbGlwOworICAgICAgICBjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcERldmljZUJvdW5kcygm
ZGV2aWNlQ2xpcCk7CisgICAgICAgIGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoU2tJbnRUb1Nj
YWxhcihkZXZpY2VDbGlwLmZMZWZ0KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZUb3ApLCBT
a0ludFRvU2NhbGFyKGRldmljZUNsaXAuZlJpZ2h0KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlw
LmZCb3R0b20pKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFjb250ZXh0
LT5jbGlwcGVkVG9JbWFnZSgpLmlzT3BhcXVlKCkpCisgICAgICAgIGZpbGxzQm91bmRzID0gZmFs
c2U7CisKKyAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3Jtcy4KKyAgICBTa01hdHJpeCBjYW52YXNU
cmFuc2Zvcm0gPSBjb250ZXh0LT5jYW52YXMoKS0+Z2V0VG90YWxNYXRyaXgoKTsKKyAgICBpZiAo
IWNhbnZhc1RyYW5zZm9ybS5tYXBSZWN0KCZ0YXJnZXRSZWN0KSkKKyAgICAgICAgZmlsbHNCb3Vu
ZHMgPSBmYWxzZTsKKyAgICBTa01hdHJpeCBjYW52YXNUb1RhcmdldFRyYW5zZm9ybSA9IHRyYW5z
Zm9ybTsKKyAgICBpZiAoIWNhbnZhc1RvVGFyZ2V0VHJhbnNmb3JtLm1hcFJlY3QoJnRhcmdldFJl
Y3QpKQorICAgICAgICBmaWxsc0JvdW5kcyA9IGZhbHNlOworCiAgICAgaWYgKGZpbGxzQm91bmRz
ICYmIHhmZXJtb2RlSXNPcGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKSkKLSAgICAgICAgbWFya1Jl
Y3RBc09wYXF1ZShjb250ZXh0LCByZWN0KTsKLSAgICBlbHNlIGlmIChTa1JlY3Q6OkludGVyc2Vj
dHMocmVjdCwgbV9vcGFxdWVSZWN0KSAmJiAheGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWUocGFpbnQs
IGRyYXdzT3BhcXVlKSkKLSAgICAgICAgbWFya1JlY3RBc05vbk9wYXF1ZShyZWN0KTsKKyAgICAg
ICAgbWFya1JlY3RBc09wYXF1ZSh0YXJnZXRSZWN0KTsKKyAgICBlbHNlIGlmIChTa1JlY3Q6Oklu
dGVyc2VjdHModGFyZ2V0UmVjdCwgbV9vcGFxdWVSZWN0KSAmJiAheGZlcm1vZGVQcmVzZXJ2ZXNP
cGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKSkKKyAgICAgICAgbWFya1JlY3RBc05vbk9wYXF1ZSh0
YXJnZXRSZWN0KTsKIH0KIAogdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3VW5ib3VuZGVk
KGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlKQpAQCAtMjM3LDI5ICsyNjks
MTcgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3VW5ib3VuZGVkKGNvbnN0IFNrUGFp
bnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlKQogICAgIH0KIH0KIAotdm9pZCBPcGFxdWVSZWdp
b25Ta2lhOjptYXJrUmVjdEFzT3BhcXVlKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRl
eHQsIGNvbnN0IFNrUmVjdCYgcGFpbnRSZWN0KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjptYXJr
UmVjdEFzT3BhcXVlKGNvbnN0IFNrUmVjdCYgcmVjdCkKIHsKICAgICAvLyBXZSB3YW50IHRvIGtl
ZXAgdHJhY2sgb2YgYW4gb3BhcXVlIHJlZ2lvbiBidXQgYm91bmQgaXRzIGNvbXBsZXhpdHkgYXQg
YSBjb25zdGFudCBzaXplLgogICAgIC8vIFdlIGtlZXAgdHJhY2sgb2YgdGhlIGxhcmdlc3QgcmVj
dGFuZ2xlIHNlZW4gYnkgYXJlYS4gSWYgd2UgY2FuIGFkZCB0aGUgbmV3IHJlY3QgdG8gdGhpcwog
ICAgIC8vIHJlY3RhbmdsZSB0aGVuIHdlIGRvIHRoYXQsIGFzIHRoYXQgaXMgdGhlIGNoZWFwZXN0
IHdheSB0byBpbmNyZWFzZSB0aGUgYXJlYSByZXR1cm5lZAogICAgIC8vIHdpdGhvdXQgaW5jcmVh
c2luZyB0aGUgY29tcGxleGl0eS4KIAotICAgIGlmIChwYWludFJlY3QuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKCFjb250ZXh0LT5jbGlwcGVkVG9JbWFnZSgpLmlzT3BhcXVl
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoY29udGV4dC0+Y2FudmFzKCktPmdldENsaXBU
eXBlKCkgIT0gU2tDYW52YXM6OmtSZWN0X0NsaXBUeXBlKQorICAgIGlmIChyZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX29wYXF1ZVJlY3QuY29udGFpbnMocGFpbnRS
ZWN0KSkKKyAgICBpZiAobV9vcGFxdWVSZWN0LmNvbnRhaW5zKHJlY3QpKQogICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBBcHBseSB0aGUgY3VycmVudCBjbGlwLgotICAgIFNrSVJlY3QgZGV2aWNl
Q2xpcDsKLSAgICBjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcERldmljZUJvdW5kcygmZGV2aWNl
Q2xpcCk7Ci0gICAgU2tSZWN0IHJlY3QgPSBwYWludFJlY3Q7Ci0gICAgaWYgKCFyZWN0LmludGVy
c2VjdChTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZkxlZnQpLCBTa0ludFRvU2NhbGFyKGRldmlj
ZUNsaXAuZlRvcCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mUmlnaHQpLCBTa0ludFRvU2Nh
bGFyKGRldmljZUNsaXAuZkJvdHRvbSkpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAocmVj
dC5jb250YWlucyhtX29wYXF1ZVJlY3QpKSB7CiAgICAgICAgIG1fb3BhcXVlUmVjdCA9IHJlY3Q7
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmgKaW5kZXggOTNmMmM1YTFiMWQ0MmVmNjQ2
ZDY0YjU0YWVmYjJjNmU3NTgwZjkwMC4uNDViMDY5MDA0MmE2OThhNGNhMDAzZDNlODUwZWU4ZDRj
MzY3OTk2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9PcGFxdWVSZWdpb25Ta2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJT
a1JlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwog
Y2xhc3MgUGxhdGZvcm1Db250ZXh0U2tpYTsKIAogLy8gVGhpcyBjbGFzcyBpcyBhbiBlbmNhcHN1
bGF0aW9uIG9mIGZ1bmN0aW9uYWxpdHkgZm9yIFBsYXRmb3JtQ29udGV4dFNraWEsIGFuZCBpdHMg
bWV0aG9kcyBhcmUgbWlycm9yZWQKQEAgLTUyLDE1ICs1MywxNSBAQCBwdWJsaWM6CiAgICAgLy8g
VGhlIHJlc3VsdGluZyBvcGFxdWUgcmVnaW9uIGFzIGEgc2luZ2xlIHJlY3QuCiAgICAgSW50UmVj
dCBhc1JlY3QoKSBjb25zdDsKIAotICAgIHZvaWQgZGlkRHJhd1JlY3QoY29uc3QgUGxhdGZvcm1D
b250ZXh0U2tpYSosIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1h
cCopOwotICAgIHZvaWQgZGlkRHJhd1BhdGgoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNv
bnN0IFNrUGF0aCYsIGNvbnN0IFNrUGFpbnQmKTsKLSAgICB2b2lkIGRpZERyYXdQb2ludHMoY29u
c3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Qb2lu
dHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd0Jv
dW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNr
UGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEq
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jiwg
Y29uc3QgU2tCaXRtYXAqKTsKKyAgICB2b2lkIGRpZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29u
dGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1BhdGgmLCBjb25zdCBT
a1BhaW50Jik7CisgICAgdm9pZCBkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNr
aWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBTa0NhbnZhczo6UG9pbnRNb2RlLCBpbnQgbnVt
UG9pbnRzLCBjb25zdCBTa1BvaW50W10sIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERy
YXdCb3VuZGVkKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1JlY3QmLCBjb25z
dCBTa1BhaW50JiwgYm9vbCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcyk7CisgICAgdm9p
ZCBkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50JiwgYm9vbCBkcmF3c09wYXF1ZSwgYm9v
bCBmaWxsc0JvdW5kcyk7CiAgICAgdm9pZCBkaWREcmF3VW5ib3VuZGVkKGNvbnN0IFNrUGFpbnQm
LCBib29sIGRyYXdzT3BhcXVlKTsKLSAgICB2b2lkIG1hcmtSZWN0QXNPcGFxdWUoY29uc3QgUGxh
dGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUmVjdCYpOworICAgIHZvaWQgbWFya1JlY3RBc09w
YXF1ZShjb25zdCBTa1JlY3QmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNOb25PcGFxdWUoY29uc3Qg
U2tSZWN0Jik7CiAKICAgICBTa1JlY3QgbV9vcGFxdWVSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tp
YS5jcHAKaW5kZXggMzMwNjJjYWNhOTJmOWE0YjM2YmZmYTk5OTcwYWUwNzQ0YWE4ZWQ2MC4uYzMy
M2EwZDdlZmZiM2RjNmQ5MTM4ZDgxZTk3MTE5Y2NkYmUxM2Y2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRT
a2lhLmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJFeHRlbnNp
b25zM0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgpAQCAtNjA5LDI1ICs2MDgsMjUgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRT
a2lhOjpzZXRHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHZv
aWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6ZGlkRHJhd1JlY3QoY29uc3QgU2tSZWN0JiByZWN0LCBj
b25zdCBTa1BhaW50JiBwYWludCwgY29uc3QgU2tCaXRtYXAqIGJpdG1hcCkKIHsKICAgICBpZiAo
bV90cmFja09wYXF1ZVJlZ2lvbikKLSAgICAgICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1JlY3Qo
dGhpcywgcmVjdCwgcGFpbnQsIGJpdG1hcCk7CisgICAgICAgIG1fb3BhcXVlUmVnaW9uLmRpZERy
YXdSZWN0KHRoaXMsIG1fb3BhcXVlUmVnaW9uVHJhbnNmb3JtLCByZWN0LCBwYWludCwgYml0bWFw
KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkaWREcmF3UGF0aChjb25zdCBTa1Bh
dGgmIHBhdGgsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGlmIChtX3RyYWNrT3BhcXVl
UmVnaW9uKQotICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3UGF0aCh0aGlzLCBwYXRoLCBw
YWludCk7CisgICAgICAgIG1fb3BhcXVlUmVnaW9uLmRpZERyYXdQYXRoKHRoaXMsIG1fb3BhcXVl
UmVnaW9uVHJhbnNmb3JtLCBwYXRoLCBwYWludCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1Db250ZXh0
U2tpYTo6ZGlkRHJhd1BvaW50cyhTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2lu
dHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAg
IGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKQotICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3
UG9pbnRzKHRoaXMsIG1vZGUsIG51bVBvaW50cywgcG9pbnRzLCBwYWludCk7CisgICAgICAgIG1f
b3BhcXVlUmVnaW9uLmRpZERyYXdQb2ludHModGhpcywgbV9vcGFxdWVSZWdpb25UcmFuc2Zvcm0s
IG1vZGUsIG51bVBvaW50cywgcG9pbnRzLCBwYWludCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1Db250
ZXh0U2tpYTo6ZGlkRHJhd0JvdW5kZWQoY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50
JiBwYWludCkKIHsKICAgICBpZiAobV90cmFja09wYXF1ZVJlZ2lvbikKLSAgICAgICAgbV9vcGFx
dWVSZWdpb24uZGlkRHJhd0JvdW5kZWQodGhpcywgcmVjdCwgcGFpbnQpOworICAgICAgICBtX29w
YXF1ZVJlZ2lvbi5kaWREcmF3Qm91bmRlZCh0aGlzLCBtX29wYXF1ZVJlZ2lvblRyYW5zZm9ybSwg
cmVjdCwgcGFpbnQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0
U2tpYS5oCmluZGV4IDEyYmRmNzk1YzY3MTkxZmVhZjJmYWEyOWNlOTJhZGVmY2M4NDFmY2MuLmIz
MDY0NTBjYjFkOGRjOWZhY2U0NzNmM2M5MjQzZTg3ODNjYzQ2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0
U2tpYS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIFBsYXRmb3JtQ29udGV4dFNraWFfaAog
I2RlZmluZSBQbGF0Zm9ybUNvbnRleHRTa2lhX2gKIAorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vbmNvcHlhYmxl
LmgiCiAjaW5jbHVkZSAiT3BhcXVlUmVnaW9uU2tpYS5oIgpAQCAtMTkyLDYgKzE5Myw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldERlZmVycmVkKGJvb2wgZGVmZXJyZWQpIHsgbV9kZWZlcnJlZCA9
IGRlZmVycmVkOyB9CiAKICAgICB2b2lkIHNldFRyYWNrT3BhcXVlUmVnaW9uKGJvb2wgdHJhY2sp
IHsgbV90cmFja09wYXF1ZVJlZ2lvbiA9IHRyYWNrOyB9CisgICAgLy8gQSB0cmFuc2Zvcm0gYXBw
bGllZCB0byBhbGwgdHJhY2tlZCBvcGFxdWUgcGFpbnRzLiBUaGlzIGlzIGFwcGxpZWQgYXQgdGhl
IHRpbWUgdGhlIHBhaW50aW5nIGlzIGRvbmUuCisgICAgdm9pZCBzZXRPcGFxdWVSZWdpb25UcmFu
c2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIHsgbV9vcGFxdWVSZWdpb25U
cmFuc2Zvcm0gPSB0cmFuc2Zvcm07IH0KIAogICAgIC8vIFRoaXMgd2lsbCBiZSBhbiBlbXB0eSBy
ZWdpb24gdW5sZXNzIHRyYWNraW5nIGlzIGVuYWJsZWQuCiAgICAgY29uc3QgT3BhcXVlUmVnaW9u
U2tpYSYgb3BhcXVlUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcGFxdWVSZWdpb247IH0KQEAg
LTIyOSw2ICsyMzIsNyBAQCBwcml2YXRlOgogICAgIC8vIFRyYWNrcyB0aGUgcmVnaW9uIHBhaW50
ZWQgb3BhcXVlIHZpYSB0aGUgR3JhcGhpY3NDb250ZXh0LgogICAgIE9wYXF1ZVJlZ2lvblNraWEg
bV9vcGFxdWVSZWdpb247CiAgICAgYm9vbCBtX3RyYWNrT3BhcXVlUmVnaW9uOworICAgIEFmZmlu
ZVRyYW5zZm9ybSBtX29wYXF1ZVJlZ2lvblRyYW5zZm9ybTsKIAogICAgIC8vIFN0b3JlcyBpbWFn
ZSBzaXplcyBmb3IgYSBoaW50IHRvIGNvbXB1dGUgaW1hZ2UgcmVzYW1wbGluZyBtb2Rlcy4KICAg
ICAvLyBWYWx1ZXMgYXJlIHVzZWQgaW4gSW1hZ2VTa2lhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAppbmRl
eCBkYzFjZjI5OTM5MzFmMmM0NjAyOGI4N2RiN2E3ZTgyMTQyM2FjYjU1Li45MjRiNDJkMjhiZTgx
NzAyNWU0OGRiZDA2OWNlNjg5ODc0MjQ2MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcApAQCAtNTQ4LDQg
KzU0OCw3MyBAQCBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZU92YWxU
ZXN0KQogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3Bh
cXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogfQogCitURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0
LCBsYXllclRyYW5zZm9ybVRyYW5zbGF0ZU9wYXF1ZVRlc3QpCit7CisgICAgU2tCaXRtYXAgYml0
bWFwOworICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCA0
MDAsIDQwMCk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgYml0bWFwLmVyYXNlQ29s
b3IoMCk7CisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybTsKKyAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDEwLCAxMCk7CisKKyAgICBQbGF0
Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9ybUNv
bnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1ZSk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNl
dE9wYXF1ZVJlZ2lvblRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgIEdyYXBoaWNzQ29udGV4dCBj
b250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAuMGYs
IDAuMGYsIDEuMGYpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5
MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIp
OworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCA5MCwgOTApLCBwbGF0Zm9ybUNv
bnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0go
Yml0bWFwLCB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGxhdGZvcm1Db250ZXh0Lm9wYXF1
ZVJlZ2lvbigpLmFzUmVjdCgpKSk7CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3Qo
MTAsIDEwLCA5MCwgOTApKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3Jt
Q29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBjb250ZXh0LnRyYW5zbGF0
ZSgzMCwgMzApOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwg
OTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwor
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA5MCwgOTApLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0
bWFwLCB0cmFuc2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QocGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJl
Z2lvbigpLmFzUmVjdCgpKSk7CisKKyAgICBjb250ZXh0LmNsZWFyUmVjdChGbG9hdFJlY3QoMTAs
IDEwLCA5MCwgOTApKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIHBsYXRmb3JtQ29u
dGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7Cit9CisKK1RFU1QoUGxhdGZvcm1Db250ZXh0
U2tpYVRlc3QsIGxheWVyVHJhbnNmb3JtU2NhbGVPcGFxdWVUZXN0KQoreworICAgIFNrQml0bWFw
IGJpdG1hcDsKKyAgICBiaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZp
ZywgNDAwLCA0MDApOworICAgIGJpdG1hcC5hbGxvY1BpeGVscygpOworICAgIGJpdG1hcC5lcmFz
ZUNvbG9yKDApOworICAgIFNrQ2FudmFzIGNhbnZhcyhiaXRtYXApOworICAgIEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm07CisgICAgdHJhbnNmb3JtLnNjYWxlKDIpOworCisgICAgUGxhdGZvcm1D
b250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoJmNhbnZhcyk7CisgICAgcGxhdGZvcm1Db250ZXh0
LnNldFRyYWNrT3BhcXVlUmVnaW9uKHRydWUpOworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRPcGFx
dWVSZWdpb25UcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4
dCgmcGxhdGZvcm1Db250ZXh0KTsKKworICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBm
LCAxLjBmKTsKKworICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEw
KSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQwLCA0MCwgMjAsIDIwKSwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1h
cCwgdHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdp
b24oKS5hc1JlY3QoKSkpOworCisgICAgY29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDIwLCAy
MCwgMTAsIDEwKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgY29udGV4dC5zY2FsZShGbG9hdFNp
emUoMiwgMSkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIDEwKTsKKworICAgIGNvbnRleHQu
ZmlsbFJlY3QoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDgwLCA2MCwgNDAsIDIwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgp
KTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgdHJhbnNmb3JtLmludmVyc2UoKS5t
YXBSZWN0KHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSkpOworCisgICAg
Y29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDIwLCAyMCwgMTAsIDEwKSk7CisgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVmMWI4YzQxNjlkNmE0NDU3OWY5MzJh
MjYyODQyM2IwNTRlYjEyYmQuLjQ5YTYyMDc0NWNhYzc5MDIyODQzNzg4NmQ2YzhjZGI3YzM1N2Vm
YjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMi0wNyAgRGFuYSBKYW5zZW5zICA8ZGFu
YWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEZpeCBvcGFxdWUgdHJhY2tp
bmcgZm9yIGJveCBzaGFkb3dzIGFuZCBub24tY29tcG9zaXRlZCBjaGlsZCBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbXBvc2l0aW5n
L2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy1leHBlY3RlZC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xs
ZWQtd2l0aGluLWJveHNoYWRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9j
dWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAg
ICogY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRvdy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1ib3hzaGFk
b3cuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMDcgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZy
YWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hz
aGFkb3ctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9zY3Jv
bGxlZC13aXRoaW4tYm94c2hhZG93LWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjExNzM3Mjhm
M2UyNGZiMmMyMjU5NjIyNWQ5MjAwMmFhMmQwZjA1CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAz
NTc0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxI
YG9rPG19P29UbjBsKwp6R217a0t3NnNLbldDSjR1R3ZreWI2SHt8ak9Pd1IzQnFJWko8SFZwSU8l
OS04OWlBP1pBcio3cC1yMU9VSjQ0REwKemFGUzUrO2x7P29kK0VEWWVveCMhRllsZkBVeExhNjw8
MmB6aj1OYWhab0xrKnV+YDAjb0JNfj48NDJHRWAoRSRqCnpWXyt5KjdSfUdWQFdFZXMwfFBANjZF
fWxgOHAoe2B1ant0KXkqQSleejNaUk42bGNaKTw7TkMkaFlrMjFwRmd9LQp6eXtZYD10T0hUKXJJ
Rks5VzYhOz12fGJhUCZHPXpuRkhwcn02VGl6QVo7I3pBeUFWOygrUmRDVGQrbD9QLVArfWsKeml+
aUw4dEJkSjd7JldZPT19bWgxaFZsJm0lYGFRezl5YW0rWTsjdD1PI1dIc3o1ZF5Ld19KYFdTYjNU
JGAqIVR5CnpZbkxDXnszIWVOP2R5LVB3X28wVlNZeDRne0J6WnxCVE48aGp9X2tPLUNhNUJlZmY5
KC18aFhNa0dLQ2x7UCRnNQp6akMtfXRqdz9yeypRQ2J3byZFXmFHWDEqI3tDSW8me2RXNmg7YHlF
KiZhe2s3ViUhckNibG1kNGY4WUhwdGdHMm8KentjQjUmUjltOT95S1UqTSt2b0EhbzVeaCtAd3pK
UntRZEx5X3NpfEN0Tlopc194fTMmI1R5eFJ0bGpfYj52Znk2Cno8KEtjO29aVmZ6e2NhYHV6aCY4
U2ZfYyh3bz9tflNEQTh0ckZHWXRUQDgkVzJLZm5HMm5tazgteVpPdktUWSl7cwp6O2B6MVA0X005
TipGUWRleTk3cj17SzJ4bms5V3cjeyVfRVo1c1NGcHpKQSg2X3ZGMTdlSGlaQz5FOSgpKTR7JjMK
ekBGUUR4P0RlPFk1ekMpYDVvMmNqcGx6WU17QjNna0UzUzB+UHJEVlApM3o+VmAwI297Km9YWmVw
Nk4wO18jYGtnCno5QU9hfldzQztHWGk2QigxKjVyT0cjOEJLZzMoK3NJQzg8OFF3T0F1N2ZLektK
WWF2IyNQNn1peSgrR1heP0gzdgp6Ymt+K1cmYTsxZUtTX2IxamBlcnVlKDc9fT9zZGhIMzZTUWEm
dTVlU0A4OHxlUC1EbkBTNjZRRHxKbFVuQHdmZioKekpCfFJHY0EwK3khfX51IWpePCVHdT5MX3wt
SmdwUWRNeVdAPlEkZEg9WCkjYDBjO0h9LUBQMnY4b0xpX2psRipQCno/cSVadDRYb0VKWlhfSGBK
eXNnfnw2bHoyISZPbSE/VmxlJHtxZ0RQKlZFNmhwRmg5O0pne2tZXy04P3MtfDFhQAp6P2stXjF2
b2RxZXg2NV9hNGopVXRlfGg9dGEoPzsjLTBDJWR3X0p9WG5Bb2txPmk/WXQtb3BtfHBDQTlKdSNn
OX4Kekd4eUJYJm9YN0cofG0wNDQlcGA5ZTNKUDhMKmMoNCNtJUwhRkZ5RllHcEVePD1kamg5PVRC
Pip7RXQ4VkAlUFcpCno5V3dvPTNuaiV+WWQzdClsVW59UGJYbnlyYCF7eEhGN0p7NXpCQEMkbVVh
M3JpdyRqdzVsQWlUISYkWWdBTVg5Rgp6Mig2ajM/ZmwwYV9FT2dIOWNtQ1k2NUNlJkQocmE5Xmd3
S3p6UnttUUNlNkU9VWRLcEFGZmpadlUjR2AzK0F5VEIKY2JeT01AYjN6JlNsYWh+JWZnTCNwUGdn
JmVieHNMUTAwPHhhd2czUEMKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvc2Nyb2xsZWQtd2l0aGluLWJveHNoYWRvdy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdp
dGhpbi1ib3hzaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5Njky
N2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3ctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3Vs
bGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hhZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9jdWxsaW5nL3Njcm9sbGVkLXdpdGhpbi1ib3hzaGFkb3cuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MjAyMDRlZmMwYzBiMjM1NmY4MTMyYThlMTMwOWEyYjA1OWU4NjczCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy9zY3JvbGxlZC13aXRoaW4tYm94c2hh
ZG93Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHN0eWxlPgorLmNvbXAgeworICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwcHgp
OworfQorYm9keSB7CisgIG1hcmdpbjowOworICBwYWRkaW5nOjA7Cit9Cisuc2hhZG93IHsKKyAg
cG9zaXRpb246YWJzb2x1dGU7CisgIGxlZnQ6MjBweDsgcmlnaHQ6MjBweDsKKyAgd2lkdGg6NTAw
cHg7CisgIGhlaWdodDo1MDBweDsKKyAgdG9wOjBweDsgYm90dG9tOjIwcHg7CisgIHotaW5kZXg6
MTIwOworICBtYXJnaW4tdG9wOjIwcHg7CisgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50
OworICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCA2cHggIzA5MDsKKyAgYmFja2dyb3VuZC1jb2xv
cjogIzA5MDsKK30KKyNzY3JvbGwgeworICBvdmVyZmxvdy15OiBoaWRkZW47IC8qIHNjcm9sbGFi
bGUgYnV0IG5vIHNjcm9sbGJhcnMgdmlzaWJsZS4gKi8KKyAgd2lkdGg6NTAwcHg7CisgIGhlaWdo
dDogNTAwcHg7Cit9Cisuc2Nyb2xsQ29udGVudCB7CisgIHdpZHRoOjEwMCU7CisgIGhlaWdodDog
MTAwMHB4OyAvKiBtYWtlIHRoZSBjb250YWluZXIgc2Nyb2xsYWJsZSAqLworICBiYWNrZ3JvdW5k
LWNvbG9yOiAjMGQwOworfQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICB9CisKKyAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGwn
KS5zY3JvbGxUb3AgKz0gMzAwOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgIH0s
IDApOyB9OworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPCEtLSBJZiBjdWxsZWQgaW5j
b3JyZWN0bHksIHRoZSB0b3AvbGVmdCBlZGdlcyBvdXRzaWRlIG9mIHRoZSBzaGFkb3dlZCBib3gg
ZW5kIHVwIGJlaW5nIGN1bGxlZCBpbnN0ZWFkIG9mIHBhaW50ZWQvZHJhd24gcHJvcGVybHkuIC0t
PgorPGRpdiBjbGFzcz0iY29tcCBzaGFkb3ciPgorICA8ZGl2IGlkPSJzY3JvbGwiPgorICAgIDxk
aXYgY2xhc3M9InNjcm9sbENvbnRlbnQiPgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3Vs
bGluZy90cmFuc2xhdGVkLWJveHNoYWRvdy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44YTA2ODc2N2YzNTVhMTk1ZjVmZTk3NGYyNjAwZmI1NDAzOWFjZjYxCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAzNTY1CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAq
Wik9aF5obEElQFdzJGxIYG9rPG19P29UIXYoJAp6IzhsJVhWLXhjPEJTWF9mR1ljfl8zeVVQOSNO
QFBPdiRRbTA2Tn49cXBEbHJnKXFBPSloRSZYWGQma2w1TnJhZH4KejtCNyVhMG5IXiEtLUR4SDlR
YEppVyQpPnc1JE5EQCE/cip4VHtyWj9iVXV4XyM9bj4rK35iSXl4OEhXJVlieXFaCnozcDNaKkdC
NnlsPz4pZjgoN356MCZAaDghI0BxWWZ2UmBsREpHXjF0Pi1XeDxBYEliMWVVQS16OXZsMyNpPlgl
bgp6RzNCMDYjT249dXVRI25aVTFeKSZVWWYxVFY3SXdZPTZLP3FXMF9MUkA5d3pHQyZoajUhSmA5
Rj9PKnJJQHFoaHQKemhmTXRXXn5heDkjUHByc3AhNTJaKy1KclFeflN4SU8/KkNeb1dKfWheP1R+
UFhNY0N4X3FGYjJveFYkRiE/d0Z1CnpHaV96aHdMaWM3YFRYUGFLPU5VWWgySFZjUm9qaip7biZH
P0BKe2RVJTMxbTQrc2w5TlVqTzt9PyFSfjZ6QUtBeQp6dWghWGQ8KjQrVSlZIWgkQUFmJU5eWjRv
VUA2K0crPi1ZTn5Vdy0mIUw2cU9MMiF7RkJQNWdkbSo2LWZFY204fCUKekpoXj9rX3VDUzBeek1F
ZWBFY3Y8WDgmaTBjKDNpNmNtNEQwcElASlVkPUF1SHxMXnp0YXcrYkgqU311SipQcCN5CnpWfEAz
Xzx2cjJteDk2NVckbHZ2NXstbjJwNTRSbnhzO1I3NUs5Z2FgdUgofj4xNl44Wm5VYC1BVFBeYj1N
ZXA5UAp6eXY5LXNgRlZaKj8rcGJRPFBWbnBQM0ImY2VWJUZsYEJ2I1FyTHBhJGw2OXVudGsxRj54
Y1liMT5WeGVTNHxNaEoKekM5SGtEdENzUWdtTzF5NTYmVVFBRSpJVWhEX2dQZDBxP3laTmhoWDd6
U1VyO2stNWI2UHlGNTxSJndLJnl3b3ROCnppfG1YdjhnISNVTUBJUU9ucnVkcyYxa1kyJT5fZD03
d2szTWFJQTJTVE9yJHJlJChFfDdKYip9RzE7eHxSP2hUWgp6NFF3M3h8TmJ0KShhQGhAfEYtPEdV
KXNVakY9NyNxRSYye3lATHNrI3lNNmNWQD4hZT50OVJlTWQreEZnQDh1blQKei0/SGwhZXFfcypz
PXM+bVpfUiU+WDJ1VktjZ315YEZMazxBVjg8T2BRITRRZSk5YndZPyoqU2ZfISU9Nmw9N1NOCnow
fj8wQTg7JWBoPEpMMT9feGppT2BZUEZMbXk0fENAQl5FSV43ezdzX1NlKHs4Kk5zMHohdjdecU5y
PDZ8Rlc/QAp6aTFtSEVXJlhGQCV3NnJYK3c7eHV8Sig2MWBGOFQjPCRJNGNiO3J+TXt7N0NERXp3
cHY+OzNjSnpfdyZlLX1BM0UKemZ2WHVtRWJNdV9MJVJJNz5JN2dMXiFtQCY/fEg5bmIjRmZaZD11
fEExREA5Iz0xdTwkWXtnRTAzflcjQ2ttKX5OCnpDQEo8QHlXeERFKWJoOGMlUE1FPmYzcHdSbncw
OyhKMlNsJip5eSNgKDNUantVSyUrKUhUSy09TzZ4VTt2dWFzQwp6LTI3Vj1TfkYrY2BId201ckw2
Zk1yWDclS09PKEJxY3deUDg+eCVRWjg/dFpnSk1yUTdXdTh9RF9uITRPdk45Wn4Kc2ZCWl5gIU5E
aGlrPkxvNyplSFh7Sz17WTN3eHt5dFBOfEJTITJUUDlyPm1kS0k7VnN0MEl7Z2FtO2U5KAoKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
Y3VsbGluZy90cmFuc2xhdGVkLWJveHNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvY3VsbGluZy90cmFuc2xhdGVkLWJv
eHNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93Lmh0bWwgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9jdWxsaW5nL3RyYW5zbGF0ZWQtYm94c2hhZG93Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWUxNDFmNTNjMmEzYTI4OTQ3OTAwNjEyYWJhYjFhN2M1MDQ4ZDEzNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2N1bGxpbmcvdHJhbnNsYXRlZC1i
b3hzaGFkb3cuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c3R5bGU+CisuY29tcCB7CisgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVa
KDBweCk7Cit9Citib2R5IHsKKyAgbWFyZ2luOjA7CisgIHBhZGRpbmc6MDsKK30KKy5zaGFkb3cg
eworICBwb3NpdGlvbjphYnNvbHV0ZTsKKyAgbGVmdDoyMHB4OyByaWdodDoyMHB4OworICB3aWR0
aDo1MDBweDsKKyAgaGVpZ2h0OjUwMHB4OworICB0b3A6MHB4OyBib3R0b206MjBweDsKKyAgei1p
bmRleDoxMjA7CisgIG1hcmdpbi10b3A6MjBweDsKKyAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNw
YXJlbnQ7CisgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDZweCAjMDkwOworICBiYWNrZ3JvdW5k
LWNvbG9yOiAjMDkwOworfQorPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgIH0KKzwvc2NyaXB0PgorPC9oZWFkPgorCis8
Ym9keT4KKzwhLS0gSWYgY3VsbGVkIGluY29ycmVjdGx5LCB0aGUgdG9wL2xlZnQgZWRnZXMgb3V0
c2lkZSBvZiB0aGUgc2hhZG93ZWQgYm94IGVuZCB1cCBiZWluZyBjdWxsZWQgaW5zdGVhZCBvZiBw
YWludGVkL2RyYXduIHByb3Blcmx5LiAtLT4KKzxkaXYgY2xhc3M9ImNvbXAgc2hhZG93Ij48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>