<?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>72009</bug_id>
          
          <creation_ts>2011-11-10 02:02:46 -0800</creation_ts>
          <short_desc>Remove virtual toPathData() method from all graphics elements</short_desc>
          <delta_ts>2011-11-10 03:44:23 -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>SVG</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>
          <dependson>71780</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>499733</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-10 02:02:46 -0800</bug_when>
    <thetext>In bug 71780, SVGLengthContext was introduced, to allow to resolve SVGLengths against arbitary viewports.
SVGLength::value(), which needs a SVGLengthContext, is still used all over svg/ - that should be changed, as rendering/ should resolve these lengths, as HTML does it using Length &amp; RenderStyles for CSS.

As first step, move the #1 client of the SVGLength::value() methods - toPathData() out of svg/ into rendering/svg/SVGPathData as free-function, replacing the virtual toPathData() function from SVGStyledTransformableElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499739</commentid>
    <comment_count>1</comment_count>
      <attachid>114457</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-10 02:16:39 -0800</bug_when>
    <thetext>Created attachment 114457
Patch

Inspired by Anttis&amp;Andreas work, I also want to devirtualize something ;-)
The actual goal is to move all length resolution into rendering/, instead of doing it in svg/ dom. This is a first step towards it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499742</commentid>
    <comment_count>2</comment_count>
      <attachid>114457</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 02:24:01 -0800</bug_when>
    <thetext>Comment on attachment 114457
Patch

Attachment 114457 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10404265</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499743</commentid>
    <comment_count>3</comment_count>
      <attachid>114457</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-10 02:30:08 -0800</bug_when>
    <thetext>Comment on attachment 114457
Patch

Attachment 114457 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10354321</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499747</commentid>
    <comment_count>4</comment_count>
      <attachid>114459</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-10 02:35:19 -0800</bug_when>
    <thetext>Created attachment 114459
Patch v2

Fix cr/efl builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499755</commentid>
    <comment_count>5</comment_count>
      <attachid>114459</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-10 02:46:25 -0800</bug_when>
    <thetext>Comment on attachment 114459
Patch v2

Attachment 114459 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10364017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499762</commentid>
    <comment_count>6</comment_count>
      <attachid>114459</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-11-10 03:11:46 -0800</bug_when>
    <thetext>Comment on attachment 114459
Patch v2

r=me with the following comments

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:-1360
&gt; -		50B42158146976960087E604 /* WebKitCSSShaderValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 50B42157146976960087E604 /* WebKitCSSShaderValue.h */; };

This shouldn&apos;t be removed.

And fix Qt build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499763</commentid>
    <comment_count>7</comment_count>
      <attachid>114459</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 03:12:55 -0800</bug_when>
    <thetext>Comment on attachment 114459
Patch v2

Attachment 114459 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10411015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499769</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-11-10 03:44:23 -0800</bug_when>
    <thetext>Landed cr build fix in r99836. Turns out I had to add SVGPathData.* in two places in the gypi file, very confusing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114457</attachid>
            <date>2011-11-10 02:16:39 -0800</date>
            <delta_ts>2011-11-10 02:35:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>KillToPathData.diff</filename>
            <type>text/plain</type>
            <size>33184</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODI4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMTEtMTAgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHZpcnR1
YWwgdG9QYXRoRGF0YSgpIG1ldGhvZCBmcm9tIGFsbCBncmFwaGljcyBlbGVtZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBidWcgNzE3ODAsIFNW
R0xlbmd0aENvbnRleHQgd2FzIGludHJvZHVjZWQsIHRvIGFsbG93IHRvIHJlc29sdmUgU1ZHTGVu
Z3RocyBhZ2FpbnN0IGFyYml0YXJ5IHZpZXdwb3J0cy4KKyAgICAgICAgU1ZHTGVuZ3RoOjp2YWx1
ZSgpLCB3aGljaCBuZWVkcyBhIFNWR0xlbmd0aENvbnRleHQsIGlzIHN0aWxsIHVzZWQgYWxsIG92
ZXIgc3ZnLyAtIHRoYXQgc2hvdWxkIGJlIGNoYW5nZWQsIGFzIHJlbmRlcmluZy8KKyAgICAgICAg
c2hvdWxkIHJlc29sdmUgdGhlc2UgbGVuZ3RocywgYXMgSFRNTCBkb2VzIGl0IHVzaW5nIExlbmd0
aCAmIFJlbmRlclN0eWxlcyBmb3IgQ1NTLgorCisgICAgICAgIEFzIGZpcnN0IHN0ZXAsIG1vdmUg
dGhlICMxIGNsaWVudCBvZiB0aGUgU1ZHTGVuZ3RoOjp2YWx1ZSgpIG1ldGhvZHMgLSB0b1BhdGhE
YXRhKCkgb3V0IG9mIHN2Zy8gaW50byByZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhCisgICAgICAg
IGFzIGZyZWUtZnVuY3Rpb24sIHJlcGxhY2luZyB0aGUgdmlydHVhbCB0b1BhdGhEYXRhKCkgZnVu
Y3Rpb24gZnJvbSBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC4KKworICAgICAgICBEb2Vz
bid0IGFmZmVjdCBhbnkgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIHJl
bmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuKiB0byBidWlsZC4KKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQWxsSW5PbmUuY3BwOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUGF0aDo6
bGF5b3V0KTogVXNlICJ1cGRhdGVQYXRoRnJvbUdyYXBoaWNzRWxlbWVudChlbGVtZW50LCBtX3Bh
dGgpIiBpbnN0ZWFkIG9mICJlbGVtZW50LT50b1BhdGhEYXRhKG1fcGF0aCkiLCBhdm9pZGluZyBh
IHZpcnR1YWwgY2FsbC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHRQYXRoOjpsYXlvdXRQYXRoKTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUGF0aEZyb21DaXJjbGVFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnVwZGF0ZVBhdGhGcm9tRWxsaXBzZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6dXBkYXRlUGF0aEZyb21MaW5lRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVQ
YXRoRnJvbVBhdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBhdGhGcm9tUG9s
eWdvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUGF0aEZyb21Qb2x5bGluZUVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUGF0aEZyb21SZWN0RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjp1cGRhdGVQYXRoRnJvbUdyYXBoaWNzRWxlbWVudCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQ6OmFuaW1hdGlvblBhdGgpOiBVc2UgdXBkYXRlUGF0aEZyb21HcmFwaGljc0Vs
ZW1lbnQgaW5zdGVhZCBvZiB0b1BhdGhEYXRhLgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVt
ZW50LmNwcDogUmVtb3ZlIHRvUGF0aERhdGEoKSB2aXJ0dWFsIG1ldGhvZC4KKyAgICAgICAgKiBz
dmcvU1ZHQ2lyY2xlRWxlbWVudC5oOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDogRGl0
dG8uCisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDogRGl0dG8uCisgICAgICAgICog
c3ZnL1NWR0xpbmVFbGVtZW50Lmg6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVu
dC5jcHA6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5oOiBEaXR0by4KKyAg
ICAgICAgKiBzdmcvU1ZHUG9seWdvbkVsZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBzdmcv
U1ZHUG9seWdvbkVsZW1lbnQuaDogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR1BvbHlsaW5lRWxl
bWVudC5jcHA6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdQb2x5bGluZUVsZW1lbnQuaDogRGl0
dG8uCisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDogRGl0dG8uCisgICAgICAgICog
c3ZnL1NWR1JlY3RFbGVtZW50Lmg6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6dG9DbGlwUGF0aCk6IFVzZSB1cGRhdGVQYXRoRnJvbUdyYXBoaWNzRWxl
bWVudCBpbnN0ZWFkIG9mIHRvUGF0aERhdGEuCisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50Lmg6IFJlbW92ZSB0b1BhdGhEYXRhKCkgdmlydHVhbCBtZXRob2QuCisK
IDIwMTEtMTEtMTAgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEZpeCBwcm9ncmVzcyBsb2FkIHJlcG9ydGluZyBmb3IgTUhUTUwgZG9jdW1lbnRzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2MzMsNiArMTYzMyw3IEBAIElGIChF
TkFCTEVfU1ZHKQogICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCiAg
ICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKICAgICAgICAgcmVuZGVy
aW5nL3N2Zy9TVkdNYXJrZXJMYXlvdXRJbmZvLmNwcAorICAgICAgICByZW5kZXJpbmcvc3ZnL1NW
R1BhdGhEYXRhLmNwcAogICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3Bw
CiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKICAgICAgICAg
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzM0Niw2ICszMzQ2LDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdNYXJrZXJMYXlvdXRJbmZvLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdNYXJrZXJMYXlvdXRJbmZvLmggXAor
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC00NzY0LDYgKzQ3NjQsOCBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHTWFy
a2VyRGF0YS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR01hcmtlckxheW91dElu
Zm8uY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR01hcmtlckxheW91dEluZm8u
aCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAnLAorICAgICAg
ICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuaCcsCiAgICAgICAgICAgICAncmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJTdXBwb3J0LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5Mjg0LDYgKzM5
Mjg0LDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHUGF0aERhdGEuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1Bh
dGhEYXRhLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHUmVuZGVyU3VwcG9ydC5jcHAiCiAJCQkJPgogCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTk4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzNTcs
NyArMTM1Nyw2IEBACiAJCTUwMUJBQUE5MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFBQTgxMzk1
MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZs
b3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi87IH07CiAJ
CTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTRFMTNDRjEwNkIw
MDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLzsgfTsKLQkJNTBCNDIxNTgxNDY5NzY5
NjAwODdFNjA0IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEI0MjE1NzE0Njk3Njk2MDA4N0U2MDQgLyogV2Vi
S2l0Q1NTU2hhZGVyVmFsdWUuaCAqLzsgfTsKIAkJNTBFNTY2RDYxMzlFMzhDNTAwMjE0NDMzIC8q
IENTU1dyYXBTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICov
OyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAw
NEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2
ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CkBAIC0xNzE3LDYgKzE3
MTYsNyBAQAogCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87
IH07CiAJCTcxMzQ0OTZEMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzQ0OTZCMTQ2
OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCAqLzsgfTsKIAkJNzEzNDQ5NkUx
NDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzQ0OTZDMTQ2OTQxQjMwMDcyMDMxMiAvKiBT
VkdMZW5ndGhDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTUzNzlGRjE0NkJE
OUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuaCAqLzsgfTsKIAkJNzFGQjk2N0IxMzgzRDY0NjAw
QUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRkI5NjdBMTM4M0Q2NDYw
MEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2MjZFMDIwRUYw
MjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZh
c3RQYXRoLmNwcCAqLzsgfTsKIAkJNzUwRDAyOTMxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklu
cHV0U3BlZWNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5jcHAgKi87
IH07CkBAIC04OTIyLDYgKzg5MjIsOCBAQAogCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyog
SlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MTM0NDk2QjE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhDb250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFCMzAwNzIwMzEyIC8q
IFNWR0xlbmd0aENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
TGVuZ3RoQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTUzNzlGRTE0
NkJEOUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHUGF0aERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MTUzNzlGRjE0NkJEOUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzFGQjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYXN0UGF0aC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAv
KiBSZW5kZXJJbnB1dFNwZWVjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJJbnB1dFNwZWVjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMzk3MCw2ICsxMzk3Miw4IEBACiAJCQkJNDM2NzA4QUYxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNW
R01hcmtlckRhdGEuaCAqLywKIAkJCQk0MzY3MDhCMDEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHTWFy
a2VyTGF5b3V0SW5mby5jcHAgKi8sCiAJCQkJNDM2NzA4QjExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNW
R01hcmtlckxheW91dEluZm8uaCAqLywKKwkJCQk3MTUzNzlGRTE0NkJEOUQ2MDA4QkQ2MTUgLyog
U1ZHUGF0aERhdGEuY3BwICovLAorCQkJCTcxNTM3OUZGMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQ
YXRoRGF0YS5oICovLAogCQkJCTQzNjcwOEIyMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJT
dXBwb3J0LmNwcCAqLywKIAkJCQk0MzY3MDhCMzEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVuZGVy
U3VwcG9ydC5oICovLAogCQkJCTQzNjcwOEI0MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcCAqLywKQEAgLTI0NjQwLDYgKzI0NjQ0LDcgQEAKIAkJCQk5NzZGMzZFQjE0
Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc0RDJEQTUxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MTUzN0EwMTE0NkJEOUQ3MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJTVkdJbmxpbmVGbG93Qm94LmNwcCIKICNpbmNs
dWRlICJTVkdJbmxpbmVUZXh0Qm94LmNwcCIKICNpbmNsdWRlICJTVkdNYXJrZXJMYXlvdXRJbmZv
LmNwcCIKKyNpbmNsdWRlICJTVkdQYXRoRGF0YS5jcHAiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAiCiAjaW5jbHVkZSAi
U1ZHUmVzb3VyY2VzLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdQYXRoLmNwcAkocmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29s
b3IuaCIKKyNpbmNsdWRlICJTVkdQYXRoRGF0YS5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBv
cnQuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5oIgpAQCAtMTE3LDcgKzExOCw3IEBAIHZvaWQgUmVuZGVyU1ZHUGF0
aDo6bGF5b3V0KCkKICAgICBib29sIG5lZWRzUGF0aFVwZGF0ZSA9IG1fbmVlZHNQYXRoVXBkYXRl
OwogICAgIGlmIChuZWVkc1BhdGhVcGRhdGUpIHsKICAgICAgICAgbV9wYXRoLmNsZWFyKCk7Ci0g
ICAgICAgIGVsZW1lbnQtPnRvUGF0aERhdGEobV9wYXRoKTsKKyAgICAgICAgdXBkYXRlUGF0aEZy
b21HcmFwaGljc0VsZW1lbnQoZWxlbWVudCwgbV9wYXRoKTsKICAgICAgICAgbV9uZWVkc1BhdGhV
cGRhdGUgPSBmYWxzZTsKICAgICAgICAgdXBkYXRlQ2FjaGVkQm91bmRhcmllc0luUGFyZW50cyA9
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0UGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlNWR0lu
bGluZVRleHRCb3guaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1BhdGhE
YXRhLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdSb290SW5s
aW5lQm94LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dFBhdGhFbGVtZW50LmgiCkBAIC01MSw3ICs1Miw4
IEBAIFBhdGggUmVuZGVyU1ZHVGV4dFBhdGg6OmxheW91dFBhdGgoKSBjb24KICAgICBTVkdQYXRo
RWxlbWVudCogcGF0aEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdQYXRoRWxlbWVudCo+KHRhcmdl
dEVsZW1lbnQpOwogICAgIAogICAgIFBhdGggcGF0aERhdGE7Ci0gICAgcGF0aEVsZW1lbnQtPnRv
UGF0aERhdGEocGF0aERhdGEpOworICAgIHVwZGF0ZVBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHBh
dGhFbGVtZW50LCBwYXRoRGF0YSk7CisKICAgICAvLyBTcGVjOiAgVGhlIHRyYW5zZm9ybSBhdHRy
aWJ1dGUgb24gdGhlIHJlZmVyZW5jZWQgJ3BhdGgnIGVsZW1lbnQgcmVwcmVzZW50cyBhCiAgICAg
Ly8gc3VwcGxlbWVudGFsIHRyYW5zZm9ybWF0aW9uIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHVz
ZXIgY29vcmRpbmF0ZSBzeXN0ZW0gZm9yCiAgICAgLy8gdGhlIGN1cnJlbnQgJ3RleHQnIGVsZW1l
bnQsIGluY2x1ZGluZyBhbnkgYWRqdXN0bWVudHMgdG8gdGhlIGN1cnJlbnQgdXNlciBjb29yZGlu
YXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERh
dGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhEYXRhLmgiCisKKyNpZiBFTkFC
TEUoU1ZHKQorI2luY2x1ZGUgIlNWR0NpcmNsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdFbGxp
cHNlRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0xpbmVFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZH
UGF0aEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgorI2luY2x1
ZGUgIlNWR1BvbHlnb25FbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHUG9seWxpbmVFbGVtZW50Lmgi
CisjaW5jbHVkZSAiU1ZHUmVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIHVwZGF0ZVBhdGhGcm9tQ2lyY2xl
RWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50LCBQYXRoJiBwYXRoKQoreworICAgIEFTU0VSVChl
bGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpjaXJjbGVUYWcpKTsKKyAgICBTVkdDaXJjbGVF
bGVtZW50KiBjaXJjbGUgPSBzdGF0aWNfY2FzdDxTVkdDaXJjbGVFbGVtZW50Kj4oZWxlbWVudCk7
CisKKyAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoZWxlbWVudCk7CisgICAgZmxv
YXQgciA9IGNpcmNsZS0+cigpLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgIGlmIChyID4gMCkK
KyAgICAgICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChjaXJjbGUtPmN4KCkudmFsdWUobGVu
Z3RoQ29udGV4dCkgLSByLCBjaXJjbGUtPmN5KCkudmFsdWUobGVuZ3RoQ29udGV4dCkgLSByLCBy
ICogMiwgciAqIDIpKTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlUGF0aEZyb21FbGxpcHNlRWxl
bWVudChTVkdFbGVtZW50KiBlbGVtZW50LCBQYXRoJiBwYXRoKQoreworICAgIEFTU0VSVChlbGVt
ZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjplbGxpcHNlVGFnKSk7CisgICAgU1ZHRWxsaXBzZUVs
ZW1lbnQqIGVsbGlwc2UgPSBzdGF0aWNfY2FzdDxTVkdFbGxpcHNlRWxlbWVudCo+KGVsZW1lbnQp
OworCisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGVsZW1lbnQpOworICAgIGZs
b2F0IHJ4ID0gZWxsaXBzZS0+cngoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICBpZiAocngg
PD0gMCkKKyAgICAgICAgcmV0dXJuOworICAgIGZsb2F0IHJ5ID0gZWxsaXBzZS0+cnkoKS52YWx1
ZShsZW5ndGhDb250ZXh0KTsKKyAgICBpZiAocnkgPD0gMCkKKyAgICAgICAgcmV0dXJuOworICAg
IHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QoZWxsaXBzZS0+Y3goKS52YWx1ZShsZW5ndGhDb250
ZXh0KSAtIHJ4LCBlbGxpcHNlLT5jeSgpLnZhbHVlKGxlbmd0aENvbnRleHQpIC0gcnksIHJ4ICog
MiwgcnkgKiAyKSk7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZVBhdGhGcm9tTGluZUVsZW1lbnQo
U1ZHRWxlbWVudCogZWxlbWVudCwgUGF0aCYgcGF0aCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+
aGFzVGFnTmFtZShTVkdOYW1lczo6bGluZVRhZykpOworICAgIFNWR0xpbmVFbGVtZW50KiBsaW5l
ID0gc3RhdGljX2Nhc3Q8U1ZHTGluZUVsZW1lbnQqPihlbGVtZW50KTsKKworICAgIFNWR0xlbmd0
aENvbnRleHQgbGVuZ3RoQ29udGV4dChlbGVtZW50KTsKKyAgICBwYXRoLm1vdmVUbyhGbG9hdFBv
aW50KGxpbmUtPngxKCkudmFsdWUobGVuZ3RoQ29udGV4dCksIGxpbmUtPnkxKCkudmFsdWUobGVu
Z3RoQ29udGV4dCkpKTsKKyAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGxpbmUtPngyKCku
dmFsdWUobGVuZ3RoQ29udGV4dCksIGxpbmUtPnkyKCkudmFsdWUobGVuZ3RoQ29udGV4dCkpKTsK
K30KKworc3RhdGljIHZvaWQgdXBkYXRlUGF0aEZyb21QYXRoRWxlbWVudChTVkdFbGVtZW50KiBl
bGVtZW50LCBQYXRoJiBwYXRoKQoreworICAgIEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpwYXRoVGFnKSk7CisgICAgU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKS0+YnVp
bGRQYXRoRnJvbUJ5dGVTdHJlYW0oc3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihlbGVtZW50
KS0+cGF0aEJ5dGVTdHJlYW0oKSwgcGF0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZVBhdGhG
cm9tUG9seWdvbkVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCwgUGF0aCYgcGF0aCkKK3sKKyAg
ICBBU1NFUlQoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cG9seWdvblRhZykpOworICAg
IFNWR1BvbHlnb25FbGVtZW50KiBwb2x5Z29uID0gc3RhdGljX2Nhc3Q8U1ZHUG9seWdvbkVsZW1l
bnQqPihlbGVtZW50KTsKKworICAgIFNWR1BvaW50TGlzdCYgcG9pbnRzID0gcG9seWdvbi0+cG9p
bnRMaXN0KCk7CisgICAgaWYgKHBvaW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhdGgubW92ZVRvKHBvaW50cy5maXJzdCgpKTsKKworICAgIHVuc2lnbmVkIHNpemUgPSBw
b2ludHMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50cy5hdChpKSk7CisKKyAgICBwYXRoLmNsb3NlU3Vi
cGF0aCgpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVQYXRoRnJvbVBvbHlsaW5lRWxlbWVudChT
VkdFbGVtZW50KiBlbGVtZW50LCBQYXRoJiBwYXRoKQoreworICAgIEFTU0VSVChlbGVtZW50LT5o
YXNUYWdOYW1lKFNWR05hbWVzOjpwb2x5bGluZVRhZykpOworICAgIFNWR1BvbHlsaW5lRWxlbWVu
dCogcG9seWxpbmUgPSBzdGF0aWNfY2FzdDxTVkdQb2x5bGluZUVsZW1lbnQqPihlbGVtZW50KTsK
KworICAgIFNWR1BvaW50TGlzdCYgcG9pbnRzID0gcG9seWxpbmUtPnBvaW50TGlzdCgpOworICAg
IGlmIChwb2ludHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYXRoLm1vdmVU
byhwb2ludHMuZmlyc3QoKSk7CisKKyAgICB1bnNpZ25lZCBzaXplID0gcG9pbnRzLnNpemUoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBwYXRoLmFk
ZExpbmVUbyhwb2ludHMuYXQoaSkpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVQYXRoRnJvbVJl
Y3RFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQsIFBhdGgmIHBhdGgpCit7CisgICAgQVNTRVJU
KGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnJlY3RUYWcpKTsKKyAgICBTVkdSZWN0RWxl
bWVudCogcmVjdCA9IHN0YXRpY19jYXN0PFNWR1JlY3RFbGVtZW50Kj4oZWxlbWVudCk7CisKKyAg
ICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoZWxlbWVudCk7CisgICAgZmxvYXQgd2lk
dGggPSByZWN0LT53aWR0aCgpLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgIGlmICh3aWR0aCA8
PSAwKQorICAgICAgICByZXR1cm47CisgICAgZmxvYXQgaGVpZ2h0ID0gcmVjdC0+aGVpZ2h0KCku
dmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAgaWYgKGhlaWdodCA8PSAwKQorICAgICAgICByZXR1
cm47CisgICAgZmxvYXQgeCA9IHJlY3QtPngoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICBm
bG9hdCB5ID0gcmVjdC0+eSgpLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgIGJvb2wgaGFzUngg
PSByZWN0LT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJ4QXR0cik7CisgICAgYm9vbCBoYXNSeSA9
IHJlY3QtPmhhc0F0dHJpYnV0ZShTVkdOYW1lczo6cnlBdHRyKTsKKyAgICBpZiAoaGFzUnggfHwg
aGFzUnkpIHsKKyAgICAgICAgZmxvYXQgcnggPSByZWN0LT5yeCgpLnZhbHVlKGxlbmd0aENvbnRl
eHQpOworICAgICAgICBmbG9hdCByeSA9IHJlY3QtPnJ5KCkudmFsdWUobGVuZ3RoQ29udGV4dCk7
CisgICAgICAgIGlmICghaGFzUngpCisgICAgICAgICAgICByeCA9IHJ5OworICAgICAgICBlbHNl
IGlmICghaGFzUnkpCisgICAgICAgICAgICByeSA9IHJ4OworICAgICAgICBwYXRoLmFkZFJvdW5k
ZWRSZWN0KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSwgRmxvYXRTaXplKHJ4LCByeSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcGF0aC5hZGRSZWN0KEZsb2F0UmVjdCh4
LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Cit9CisKK3ZvaWQgdXBkYXRlUGF0aEZyb21HcmFwaGljc0Vs
ZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCwgUGF0aCYgcGF0aCkKK3sKKyAgICBBU1NFUlQoZWxl
bWVudCk7CisgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKKworICAgIHR5cGVkZWYgdm9pZCAo
KlBhdGhVcGRhdGVGdW5jdGlvbikoU1ZHRWxlbWVudCosIFBhdGgmKTsKKyAgICBzdGF0aWMgSGFz
aE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgUGF0aFVwZGF0ZUZ1bmN0aW9uPiogbWFwID0gMDsKKyAg
ICBpZiAoIW1hcCkgeworICAgICAgICBtYXAgPSBuZXcgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBs
KiwgUGF0aFVwZGF0ZUZ1bmN0aW9uPjsKKyAgICAgICAgbWFwLT5zZXQoU1ZHTmFtZXM6OmNpcmNs
ZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksIHVwZGF0ZVBhdGhGcm9tQ2lyY2xlRWxlbWVudCk7Cisg
ICAgICAgIG1hcC0+c2V0KFNWR05hbWVzOjplbGxpcHNlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwg
dXBkYXRlUGF0aEZyb21FbGxpcHNlRWxlbWVudCk7CisgICAgICAgIG1hcC0+c2V0KFNWR05hbWVz
OjpsaW5lVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgdXBkYXRlUGF0aEZyb21MaW5lRWxlbWVudCk7
CisgICAgICAgIG1hcC0+c2V0KFNWR05hbWVzOjpwYXRoVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwg
dXBkYXRlUGF0aEZyb21QYXRoRWxlbWVudCk7CisgICAgICAgIG1hcC0+c2V0KFNWR05hbWVzOjpw
b2x5Z29uVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgdXBkYXRlUGF0aEZyb21Qb2x5Z29uRWxlbWVu
dCk7CisgICAgICAgIG1hcC0+c2V0KFNWR05hbWVzOjpwb2x5bGluZVRhZy5sb2NhbE5hbWUoKS5p
bXBsKCksIHVwZGF0ZVBhdGhGcm9tUG9seWxpbmVFbGVtZW50KTsKKyAgICAgICAgbWFwLT5zZXQo
U1ZHTmFtZXM6OnJlY3RUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCB1cGRhdGVQYXRoRnJvbVJlY3RF
bGVtZW50KTsKKyAgICB9CisKKyAgICBpZiAoUGF0aFVwZGF0ZUZ1bmN0aW9uIHBhdGhVcGRhdGVG
dW5jdGlvbiA9IG1hcC0+Z2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSkpCisgICAgICAg
ICgqcGF0aFVwZGF0ZUZ1bmN0aW9uKShlbGVtZW50LCBwYXRoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgU1ZHUGF0aERhdGFfaAorI2RlZmluZSBT
VkdQYXRoRGF0YV9oCisKKyNpZiBFTkFCTEUoU1ZHKQorbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTVkdFbGVtZW50OworY2xhc3MgUGF0aDsKKwordm9pZCB1cGRhdGVQYXRoRnJvbUdyYXBo
aWNzRWxlbWVudChTVkdFbGVtZW50KiwgUGF0aCYpOworCit9OworCisjZW5kaWYgLy8gRU5BQkxF
KFNWRykKKyNlbmRpZiAvLyBTVkdQYXRoRGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDk5NTc0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlNWR01QYXRoRWxlbWVudC5oIgogI2luY2x1
ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiU1ZHUGF0aERhdGEuaCIKICNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1BhdGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgpA
QCAtMTMyLDcgKzEzMyw3IEBAIFBhdGggU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFuaW1hdGlv
blAKICAgICAgICAgICAgIFNWR1BhdGhFbGVtZW50KiBwYXRoRWxlbWVudCA9IG1QYXRoLT5wYXRo
RWxlbWVudCgpOwogICAgICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICAgICAgaWYgKHBhdGhF
bGVtZW50KQotICAgICAgICAgICAgICAgIHBhdGhFbGVtZW50LT50b1BhdGhEYXRhKHBhdGgpOwor
ICAgICAgICAgICAgICAgIHVwZGF0ZVBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHBhdGhFbGVtZW50
LCBwYXRoKTsKICAgICAgICAgICAgIHJldHVybiBwYXRoOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gOTk1NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNywxOCArMTM3LDYgQEAgdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR0NpcmNsZUVs
ZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKLXsKLSAgICBBU1NFUlQocGF0aC5p
c0VtcHR5KCkpOwotCi0gICAgZmxvYXQgcmFkaXVzID0gcigpLnZhbHVlKHRoaXMpOwotCi0gICAg
aWYgKHJhZGl1cyA8PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwYXRoLmFkZEVsbGlwc2Uo
RmxvYXRSZWN0KGN4KCkudmFsdWUodGhpcykgLSByYWRpdXMsIGN5KCkudmFsdWUodGhpcykgLSBy
YWRpdXMsIHJhZGl1cyAqIDIsIHJhZGl1cyAqIDIpKTsKLX0KLQogYm9vbCBTVkdDaXJjbGVFbGVt
ZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKIHsKICAgICByZXR1cm4gY3goKS5p
c1JlbGF0aXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkocmV2
aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRJRVMoU1ZHQ2lyY2xlRWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxp
cHNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMjEgKzE0MSw2IEBAIHZv
aWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW4KIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQotCi12b2lkIFNWR0VsbGlwc2VFbGVtZW50Ojp0b1BhdGhEYXRhKFBhdGgm
IHBhdGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKLQotICAgIGZsb2F0
IHJhZGl1c1ggPSByeCgpLnZhbHVlKHRoaXMpOwotICAgIGlmIChyYWRpdXNYIDw9IDApCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGZsb2F0IHJhZGl1c1kgPSByeSgpLnZhbHVlKHRoaXMpOwotICAg
IGlmIChyYWRpdXNZIDw9IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIHBhdGguYWRkRWxsaXBz
ZShGbG9hdFJlY3QoY3goKS52YWx1ZSh0aGlzKSAtIHJhZGl1c1gsIGN5KCkudmFsdWUodGhpcykg
LSByYWRpdXNZLCByYWRpdXNYICogMiwgcmFkaXVzWSAqIDIpKTsKLX0KICAKIGJvb2wgU1ZHRWxs
aXBzZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogewpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlzaW9uIDk5NTc0KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDggKzQ4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYp
IGNvbnN0OwotCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dDsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdFbGxpcHNlRWxl
bWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkocmV2aXNpb24g
OTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDIsMTQgKzE0Miw2IEBAIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTVkdMaW5l
RWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAotewotICAgIEFTU0VSVChwYXRo
LmlzRW1wdHkoKSk7Ci0KLSAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KHgxKCkudmFsdWUodGhp
cyksIHkxKCkudmFsdWUodGhpcykpKTsKLSAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KHgy
KCkudmFsdWUodGhpcyksIHkyKCkudmFsdWUodGhpcykpKTsKLX0KLQogYm9vbCBTVkdMaW5lRWxl
bWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHgxKCku
aXNSZWxhdGl2ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkocmV2aXNp
b24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsOCArNDgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdG9Q
YXRoRGF0YShQYXRoJikgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJz
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcAkocmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsMTQgKzMyNyw2IEBAIFNWR1BhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmKiBTVkdQYXRoRWwKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBTVkdQ
YXRoRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAotewotICAgIEFTU0VSVChw
YXRoLmlzRW1wdHkoKSk7Ci0KLSAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNW
R1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7Ci0gICAgZmFjdG9yeS0+YnVpbGRQYXRoRnJvbUJ5
dGVTdHJlYW0obV9wYXRoQnl0ZVN0cmVhbS5nZXQoKSwgcGF0aCk7Ci19Ci0KIHZvaWQgU1ZHUGF0
aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hhbmdlZChTVkdQYXRoU2VnUm9sZSByb2xlKQogewogICAg
IFNWR1BhdGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNl
bGYoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA5OTU3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05Miw3ICs5Miw2IEBAIHB1YmxpYzoKIAogICAgIFNWR1BhdGhCeXRlU3RyZWFtKiBwYXRo
Qnl0ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCk7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKICAgICB2b2lkIHBhdGhT
ZWdMaXN0Q2hhbmdlZChTVkdQYXRoU2VnUm9sZSk7CiAKICAgICBzdGF0aWMgY29uc3QgU1ZHUHJv
cGVydHlJbmZvKiBkUHJvcGVydHlJbmZvKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9seWdvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
b2x5Z29uRWxlbWVudC5jcHAJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BvbHlnb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsNiBAQAog
I2luY2x1ZGUgIlNWR1BvbHlnb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAot
I2luY2x1ZGUgIlBhdGguaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgU1ZHUG9s
eWdvbkVsZW1lbnQ6OlNWR1BvbHlnb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTM5LDIzICszNyw2IEBAIFBhc3NSZWZQdHI8U1ZH
UG9seWdvbkVsZW1lbnQ+IFNWR1BvbHlnb24KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1Bv
bHlnb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHUG9seWdvbkVs
ZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKLXsKLSAgICBBU1NFUlQocGF0aC5p
c0VtcHR5KCkpOwotCi0gICAgU1ZHUG9pbnRMaXN0JiBwb2ludHMgPSBwb2ludExpc3QoKTsKLSAg
ICBpZiAocG9pbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcGF0aC5tb3Zl
VG8ocG9pbnRzLmZpcnN0KCkpOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IHBvaW50cy5zaXplKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcGF0aC5h
ZGRMaW5lVG8ocG9pbnRzLmF0KGkpKTsKLQotICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7Ci19Ci0K
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9seWdvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9s
eWdvbkVsZW1lbnQuaAkocmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9seWdvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgU1ZHUG9seWdvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9seWxpbmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9seWxpbmVFbGVtZW50LmNwcAkocmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQs
NiBAQAogI2luY2x1ZGUgIlNWR1BvbHlsaW5lRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAKLSNpbmNsdWRlICJQYXRoLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5l
IFNWR1BvbHlsaW5lRWxlbWVudDo6U1ZHUG9seWxpbmVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTM5LDIxICszNyw2IEBAIFBhc3NS
ZWZQdHI8U1ZHUG9seWxpbmVFbGVtZW50PiBTVkdQb2x5bGkKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNWR1BvbHlsaW5lRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIFNW
R1BvbHlsaW5lRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAotewotICAgIEFT
U0VSVChwYXRoLmlzRW1wdHkoKSk7Ci0KLSAgICBTVkdQb2ludExpc3QmIHBvaW50cyA9IHBvaW50
TGlzdCgpOwotICAgIGlmIChwb2ludHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBwYXRoLm1vdmVUbyhwb2ludHMuZmlyc3QoKSk7Ci0KLSAgICB1bnNpZ25lZCBzaXplID0gcG9p
bnRzLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXQoaSkpOwotfQotCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuaAko
cmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDYgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFNWR1BvbHlsaW5lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
LQotICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNw
cAkocmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMzkgKzE1NSw2IEBAIHZvaWQgU1ZHUmVjdEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
dm9pZCBTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAotewotICAg
IEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7Ci0KLSAgICBmbG9hdCB3aWR0aFZhbHVlID0gd2lkdGgo
KS52YWx1ZSh0aGlzKTsKLSAgICBpZiAod2lkdGhWYWx1ZSA8PSAwKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBmbG9hdCBoZWlnaHRWYWx1ZSA9IGhlaWdodCgpLnZhbHVlKHRoaXMpOwotICAgIGlm
IChoZWlnaHRWYWx1ZSA8PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdCB4VmFsdWUg
PSB4KCkudmFsdWUodGhpcyk7Ci0gICAgZmxvYXQgeVZhbHVlID0geSgpLnZhbHVlKHRoaXMpOwot
Ci0gICAgRmxvYXRSZWN0IHJlY3QoeFZhbHVlLCB5VmFsdWUsIHdpZHRoVmFsdWUsIGhlaWdodFZh
bHVlKTsKLQotICAgIGJvb2wgaGFzUnggPSBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJ4QXR0cik7
Ci0gICAgYm9vbCBoYXNSeSA9IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6cnlBdHRyKTsKLSAgICBp
ZiAoaGFzUnggfHwgaGFzUnkpIHsKLSAgICAgICAgZmxvYXQgcnhWYWx1ZSA9IHJ4KCkudmFsdWUo
dGhpcyk7Ci0gICAgICAgIGZsb2F0IHJ5VmFsdWUgPSByeSgpLnZhbHVlKHRoaXMpOwotICAgICAg
ICBpZiAoIWhhc1J4KQotICAgICAgICAgICAgcnhWYWx1ZSA9IHJ5VmFsdWU7Ci0gICAgICAgIGVs
c2UgaWYgKCFoYXNSeSkKLSAgICAgICAgICAgIHJ5VmFsdWUgPSByeFZhbHVlOwotICAgICAgICBw
YXRoLmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZShyeFZhbHVlLCByeVZhbHVlKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwYXRoLmFkZFJlY3QocmVjdCk7Ci19Ci0KIGJv
b2wgU1ZHUmVjdEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogewogICAg
IHJldHVybiB4KCkuaXNSZWxhdGl2ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuaAkocmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUSUVTKFNWR1JlY3RFbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5OTU3
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBSZW5kZXJPYmplY3QqIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtCiAKIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnRvQ2xpcFBhdGgoUGF0aCYgcGF0aCkKIHsKLSAgICB0b1BhdGhEYXRhKHBhdGgpOworICAg
IHVwZGF0ZVBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHRoaXMsIHBhdGgpOwogICAgIC8vIEZJWE1F
OiBIb3cgZG8gd2Uga25vdyB0aGUgZWxlbWVudCBoYXMgZG9uZSBhIGxheW91dD8KICAgICBwYXRo
LnRyYW5zZm9ybShhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHJldmlz
aW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRmxvYXRSZWN0IGdldEJCb3goU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFsbG93U3R5bGVV
cGRhdGUpOwogCiAgICAgLy8gImJhc2UgY2xhc3MiIG1ldGhvZHMgZm9yIGFsbCB0aGUgZWxlbWVu
dHMgd2hpY2ggcmVuZGVyIGFzIHBhdGhzCi0gICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0
aCYpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBhdGgmKTsKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogCg==
</data>
<flag name="commit-queue"
          id="113106"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114459</attachid>
            <date>2011-11-10 02:35:19 -0800</date>
            <delta_ts>2011-11-10 03:12:55 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>KillToPathData-v2.diff</filename>
            <type>text/plain</type>
            <size>33364</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODI4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMTEtMTAgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHZpcnR1
YWwgdG9QYXRoRGF0YSgpIG1ldGhvZCBmcm9tIGFsbCBncmFwaGljcyBlbGVtZW50cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwMDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBidWcgNzE3ODAsIFNW
R0xlbmd0aENvbnRleHQgd2FzIGludHJvZHVjZWQsIHRvIGFsbG93IHRvIHJlc29sdmUgU1ZHTGVu
Z3RocyBhZ2FpbnN0IGFyYml0YXJ5IHZpZXdwb3J0cy4KKyAgICAgICAgU1ZHTGVuZ3RoOjp2YWx1
ZSgpLCB3aGljaCBuZWVkcyBhIFNWR0xlbmd0aENvbnRleHQsIGlzIHN0aWxsIHVzZWQgYWxsIG92
ZXIgc3ZnLyAtIHRoYXQgc2hvdWxkIGJlIGNoYW5nZWQsIGFzIHJlbmRlcmluZy8KKyAgICAgICAg
c2hvdWxkIHJlc29sdmUgdGhlc2UgbGVuZ3RocywgYXMgSFRNTCBkb2VzIGl0IHVzaW5nIExlbmd0
aCAmIFJlbmRlclN0eWxlcyBmb3IgQ1NTLgorCisgICAgICAgIEFzIGZpcnN0IHN0ZXAsIG1vdmUg
dGhlICMxIGNsaWVudCBvZiB0aGUgU1ZHTGVuZ3RoOjp2YWx1ZSgpIG1ldGhvZHMgLSB0b1BhdGhE
YXRhKCkgb3V0IG9mIHN2Zy8gaW50byByZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhCisgICAgICAg
IGFzIGZyZWUtZnVuY3Rpb24sIHJlcGxhY2luZyB0aGUgdmlydHVhbCB0b1BhdGhEYXRhKCkgZnVu
Y3Rpb24gZnJvbSBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC4KKworICAgICAgICBEb2Vz
bid0IGFmZmVjdCBhbnkgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIHJl
bmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuKiB0byBidWlsZC4KKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQWxsSW5PbmUuY3BwOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUGF0aDo6
bGF5b3V0KTogVXNlICJ1cGRhdGVQYXRoRnJvbUdyYXBoaWNzRWxlbWVudChlbGVtZW50LCBtX3Bh
dGgpIiBpbnN0ZWFkIG9mICJlbGVtZW50LT50b1BhdGhEYXRhKG1fcGF0aCkiLCBhdm9pZGluZyBh
IHZpcnR1YWwgY2FsbC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHRQYXRoOjpsYXlvdXRQYXRoKTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUGF0aEZyb21DaXJjbGVFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnVwZGF0ZVBhdGhGcm9tRWxsaXBzZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6dXBkYXRlUGF0aEZyb21MaW5lRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVQ
YXRoRnJvbVBhdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBhdGhGcm9tUG9s
eWdvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUGF0aEZyb21Qb2x5bGluZUVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUGF0aEZyb21SZWN0RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjp1cGRhdGVQYXRoRnJvbUdyYXBoaWNzRWxlbWVudCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQ6OmFuaW1hdGlvblBhdGgpOiBVc2UgdXBkYXRlUGF0aEZyb21HcmFwaGljc0Vs
ZW1lbnQgaW5zdGVhZCBvZiB0b1BhdGhEYXRhLgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVt
ZW50LmNwcDogUmVtb3ZlIHRvUGF0aERhdGEoKSB2aXJ0dWFsIG1ldGhvZC4KKyAgICAgICAgKiBz
dmcvU1ZHQ2lyY2xlRWxlbWVudC5oOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDogRGl0
dG8uCisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDogRGl0dG8uCisgICAgICAgICog
c3ZnL1NWR0xpbmVFbGVtZW50Lmg6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVu
dC5jcHA6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5oOiBEaXR0by4KKyAg
ICAgICAgKiBzdmcvU1ZHUG9seWdvbkVsZW1lbnQuY3BwOiBEaXR0by4KKyAgICAgICAgKiBzdmcv
U1ZHUG9seWdvbkVsZW1lbnQuaDogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR1BvbHlsaW5lRWxl
bWVudC5jcHA6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdQb2x5bGluZUVsZW1lbnQuaDogRGl0
dG8uCisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDogRGl0dG8uCisgICAgICAgICog
c3ZnL1NWR1JlY3RFbGVtZW50Lmg6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6dG9DbGlwUGF0aCk6IFVzZSB1cGRhdGVQYXRoRnJvbUdyYXBoaWNzRWxl
bWVudCBpbnN0ZWFkIG9mIHRvUGF0aERhdGEuCisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50Lmg6IFJlbW92ZSB0b1BhdGhEYXRhKCkgdmlydHVhbCBtZXRob2QuCisK
IDIwMTEtMTEtMTAgIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEZpeCBwcm9ncmVzcyBsb2FkIHJlcG9ydGluZyBmb3IgTUhUTUwgZG9jdW1lbnRzLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2MzMsNiArMTYzMyw3IEBAIElGIChF
TkFCTEVfU1ZHKQogICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCiAg
ICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKICAgICAgICAgcmVuZGVy
aW5nL3N2Zy9TVkdNYXJrZXJMYXlvdXRJbmZvLmNwcAorICAgICAgICByZW5kZXJpbmcvc3ZnL1NW
R1BhdGhEYXRhLmNwcAogICAgICAgICByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3Bw
CiAgICAgICAgIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKICAgICAgICAg
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzM0Niw2ICszMzQ2LDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdNYXJrZXJMYXlvdXRJbmZvLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdNYXJrZXJMYXlvdXRJbmZvLmggXAor
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmggXAogCVNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkp
CkBAIC00NzY0LDYgKzQ3NjQsOCBAQAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHTWFy
a2VyRGF0YS5oJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR01hcmtlckxheW91dElu
Zm8uY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvc3ZnL1NWR01hcmtlckxheW91dEluZm8u
aCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAnLAorICAgICAg
ICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuaCcsCiAgICAgICAgICAgICAncmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJTdXBwb3J0LmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5Mjg0LDYgKzM5
Mjg0LDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHUGF0aERhdGEuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxyZW5kZXJpbmdcc3ZnXFNWR1Bh
dGhEYXRhLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHJlbmRlcmluZ1xzdmdcU1ZHUmVuZGVyU3VwcG9ydC5jcHAiCiAJCQkJPgogCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTk4MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzNTcs
NyArMTM1Nyw2IEBACiAJCTUwMUJBQUE5MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAxQkFBQTgxMzk1
MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTA4Q0NBNEYxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZs
b3dUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi87IH07CiAJ
CTUwOENDQTUwMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwOENDQTRFMTNDRjEwNkIw
MDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmNwcCAqLzsgfTsKLQkJNTBCNDIxNTgxNDY5NzY5
NjAwODdFNjA0IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEI0MjE1NzE0Njk3Njk2MDA4N0U2MDQgLyogV2Vi
S2l0Q1NTU2hhZGVyVmFsdWUuaCAqLzsgfTsKIAkJNTBFNTY2RDYxMzlFMzhDNTAwMjE0NDMzIC8q
IENTU1dyYXBTaGFwZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTAxQkFBQjExMzk1MTE0QjAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuY3BwICov
OyB9OwogCQk1MTAxODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAw
NEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2
ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CkBAIC0xNzE3LDYgKzE3
MTYsNyBAQAogCQk2RUU4QTc3MzEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87
IH07CiAJCTcxMzQ0OTZEMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzQ0OTZCMTQ2
OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCAqLzsgfTsKIAkJNzEzNDQ5NkUx
NDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzQ0OTZDMTQ2OTQxQjMwMDcyMDMxMiAvKiBT
VkdMZW5ndGhDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTUzNzlGRjE0NkJE
OUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuaCAqLzsgfTsKIAkJNzFGQjk2N0IxMzgzRDY0NjAw
QUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRkI5NjdBMTM4M0Q2NDYw
MEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI2MjZFMDIwRUYw
MjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZh
c3RQYXRoLmNwcCAqLzsgfTsKIAkJNzUwRDAyOTMxMUQwRTdGMzAwQkQxQjI3IC8qIFJlbmRlcklu
cHV0U3BlZWNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAvKiBSZW5kZXJJbnB1dFNwZWVjaC5jcHAgKi87
IH07CkBAIC04OTIyLDYgKzg5MjIsOCBAQAogCQk2RUU4QTc3MTEwRjgwM0YzMDA1QTRBMjQgLyog
SlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTV2ViR0xDb250ZXh0QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MTM0NDk2QjE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhDb250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFCMzAwNzIwMzEyIC8q
IFNWR0xlbmd0aENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
TGVuZ3RoQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTUzNzlGRTE0
NkJEOUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHUGF0aERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MTUzNzlGRjE0NkJEOUQ2MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzFGQjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYXN0UGF0aC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1MEQwMjkxMTFEMEU3RjMwMEJEMUIyNyAv
KiBSZW5kZXJJbnB1dFNwZWVjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJJbnB1dFNwZWVjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMzk3MCw2ICsxMzk3Miw4IEBACiAJCQkJNDM2NzA4QUYxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNW
R01hcmtlckRhdGEuaCAqLywKIAkJCQk0MzY3MDhCMDEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHTWFy
a2VyTGF5b3V0SW5mby5jcHAgKi8sCiAJCQkJNDM2NzA4QjExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFNW
R01hcmtlckxheW91dEluZm8uaCAqLywKKwkJCQk3MTUzNzlGRTE0NkJEOUQ2MDA4QkQ2MTUgLyog
U1ZHUGF0aERhdGEuY3BwICovLAorCQkJCTcxNTM3OUZGMTQ2QkQ5RDYwMDhCRDYxNSAvKiBTVkdQ
YXRoRGF0YS5oICovLAogCQkJCTQzNjcwOEIyMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJT
dXBwb3J0LmNwcCAqLywKIAkJCQk0MzY3MDhCMzEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVuZGVy
U3VwcG9ydC5oICovLAogCQkJCTQzNjcwOEI0MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcCAqLywKQEAgLTI0NjQwLDYgKzI0NjQ0LDcgQEAKIAkJCQk5NzZGMzZFQjE0
Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc0RDJEQTUxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MTUzN0EwMTE0NkJEOUQ3MDA4QkQ2MTUgLyogU1ZHUGF0aERhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJTVkdJbmxpbmVGbG93Qm94LmNwcCIKICNpbmNs
dWRlICJTVkdJbmxpbmVUZXh0Qm94LmNwcCIKICNpbmNsdWRlICJTVkdNYXJrZXJMYXlvdXRJbmZv
LmNwcCIKKyNpbmNsdWRlICJTVkdQYXRoRGF0YS5jcHAiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAiCiAjaW5jbHVkZSAi
U1ZHUmVzb3VyY2VzLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdQYXRoLmNwcAkocmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29s
b3IuaCIKKyNpbmNsdWRlICJTVkdQYXRoRGF0YS5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN1cHBv
cnQuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXMuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5oIgpAQCAtMTE3LDcgKzExOCw3IEBAIHZvaWQgUmVuZGVyU1ZHUGF0
aDo6bGF5b3V0KCkKICAgICBib29sIG5lZWRzUGF0aFVwZGF0ZSA9IG1fbmVlZHNQYXRoVXBkYXRl
OwogICAgIGlmIChuZWVkc1BhdGhVcGRhdGUpIHsKICAgICAgICAgbV9wYXRoLmNsZWFyKCk7Ci0g
ICAgICAgIGVsZW1lbnQtPnRvUGF0aERhdGEobV9wYXRoKTsKKyAgICAgICAgdXBkYXRlUGF0aEZy
b21HcmFwaGljc0VsZW1lbnQoZWxlbWVudCwgbV9wYXRoKTsKICAgICAgICAgbV9uZWVkc1BhdGhV
cGRhdGUgPSBmYWxzZTsKICAgICAgICAgdXBkYXRlQ2FjaGVkQm91bmRhcmllc0luUGFyZW50cyA9
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0UGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlNWR0lu
bGluZVRleHRCb3guaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2luY2x1ZGUgIlNWR1BhdGhE
YXRhLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdSb290SW5s
aW5lQm94LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dFBhdGhFbGVtZW50LmgiCkBAIC01MSw3ICs1Miw4
IEBAIFBhdGggUmVuZGVyU1ZHVGV4dFBhdGg6OmxheW91dFBhdGgoKSBjb24KICAgICBTVkdQYXRo
RWxlbWVudCogcGF0aEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdQYXRoRWxlbWVudCo+KHRhcmdl
dEVsZW1lbnQpOwogICAgIAogICAgIFBhdGggcGF0aERhdGE7Ci0gICAgcGF0aEVsZW1lbnQtPnRv
UGF0aERhdGEocGF0aERhdGEpOworICAgIHVwZGF0ZVBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHBh
dGhFbGVtZW50LCBwYXRoRGF0YSk7CisKICAgICAvLyBTcGVjOiAgVGhlIHRyYW5zZm9ybSBhdHRy
aWJ1dGUgb24gdGhlIHJlZmVyZW5jZWQgJ3BhdGgnIGVsZW1lbnQgcmVwcmVzZW50cyBhCiAgICAg
Ly8gc3VwcGxlbWVudGFsIHRyYW5zZm9ybWF0aW9uIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHVz
ZXIgY29vcmRpbmF0ZSBzeXN0ZW0gZm9yCiAgICAgLy8gdGhlIGN1cnJlbnQgJ3RleHQnIGVsZW1l
bnQsIGluY2x1ZGluZyBhbnkgYWRqdXN0bWVudHMgdG8gdGhlIGN1cnJlbnQgdXNlciBjb29yZGlu
YXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERh
dGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNWR1BhdGhEYXRhLmgiCisKKyNpZiBFTkFC
TEUoU1ZHKQorI2luY2x1ZGUgIlNWR0NpcmNsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdFbGxp
cHNlRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0xpbmVFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKKyNpbmNsdWRlICJTVkdQYXRoRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1BhdGhQ
YXJzZXJGYWN0b3J5LmgiCisjaW5jbHVkZSAiU1ZHUG9seWdvbkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTVkdQb2x5bGluZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdSZWN0RWxlbWVudC5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZv
aWQgdXBkYXRlUGF0aEZyb21DaXJjbGVFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQsIFBhdGgm
IHBhdGgpCit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmNpcmNs
ZVRhZykpOworICAgIFNWR0NpcmNsZUVsZW1lbnQqIGNpcmNsZSA9IHN0YXRpY19jYXN0PFNWR0Np
cmNsZUVsZW1lbnQqPihlbGVtZW50KTsKKworICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29u
dGV4dChlbGVtZW50KTsKKyAgICBmbG9hdCByID0gY2lyY2xlLT5yKCkudmFsdWUobGVuZ3RoQ29u
dGV4dCk7CisgICAgaWYgKHIgPiAwKQorICAgICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0
KGNpcmNsZS0+Y3goKS52YWx1ZShsZW5ndGhDb250ZXh0KSAtIHIsIGNpcmNsZS0+Y3koKS52YWx1
ZShsZW5ndGhDb250ZXh0KSAtIHIsIHIgKiAyLCByICogMikpOworfQorCitzdGF0aWMgdm9pZCB1
cGRhdGVQYXRoRnJvbUVsbGlwc2VFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQsIFBhdGgmIHBh
dGgpCit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmVsbGlwc2VU
YWcpKTsKKyAgICBTVkdFbGxpcHNlRWxlbWVudCogZWxsaXBzZSA9IHN0YXRpY19jYXN0PFNWR0Vs
bGlwc2VFbGVtZW50Kj4oZWxlbWVudCk7CisKKyAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENv
bnRleHQoZWxlbWVudCk7CisgICAgZmxvYXQgcnggPSBlbGxpcHNlLT5yeCgpLnZhbHVlKGxlbmd0
aENvbnRleHQpOworICAgIGlmIChyeCA8PSAwKQorICAgICAgICByZXR1cm47CisgICAgZmxvYXQg
cnkgPSBlbGxpcHNlLT5yeSgpLnZhbHVlKGxlbmd0aENvbnRleHQpOworICAgIGlmIChyeSA8PSAw
KQorICAgICAgICByZXR1cm47CisgICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChlbGxpcHNl
LT5jeCgpLnZhbHVlKGxlbmd0aENvbnRleHQpIC0gcngsIGVsbGlwc2UtPmN5KCkudmFsdWUobGVu
Z3RoQ29udGV4dCkgLSByeSwgcnggKiAyLCByeSAqIDIpKTsKK30KKworc3RhdGljIHZvaWQgdXBk
YXRlUGF0aEZyb21MaW5lRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50LCBQYXRoJiBwYXRoKQor
eworICAgIEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lVGFnKSk7Cisg
ICAgU1ZHTGluZUVsZW1lbnQqIGxpbmUgPSBzdGF0aWNfY2FzdDxTVkdMaW5lRWxlbWVudCo+KGVs
ZW1lbnQpOworCisgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGVsZW1lbnQpOwor
ICAgIHBhdGgubW92ZVRvKEZsb2F0UG9pbnQobGluZS0+eDEoKS52YWx1ZShsZW5ndGhDb250ZXh0
KSwgbGluZS0+eTEoKS52YWx1ZShsZW5ndGhDb250ZXh0KSkpOworICAgIHBhdGguYWRkTGluZVRv
KEZsb2F0UG9pbnQobGluZS0+eDIoKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGluZS0+eTIoKS52
YWx1ZShsZW5ndGhDb250ZXh0KSkpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVQYXRoRnJvbVBh
dGhFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQsIFBhdGgmIHBhdGgpCit7CisgICAgQVNTRVJU
KGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcpKTsKKyAgICBTVkdQYXRoUGFy
c2VyRmFjdG9yeTo6c2VsZigpLT5idWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShzdGF0aWNfY2FzdDxT
VkdQYXRoRWxlbWVudCo+KGVsZW1lbnQpLT5wYXRoQnl0ZVN0cmVhbSgpLCBwYXRoKTsKK30KKwor
c3RhdGljIHZvaWQgdXBkYXRlUGF0aEZyb21Qb2x5Z29uRWxlbWVudChTVkdFbGVtZW50KiBlbGVt
ZW50LCBQYXRoJiBwYXRoKQoreworICAgIEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpwb2x5Z29uVGFnKSk7CisgICAgU1ZHUG9seWdvbkVsZW1lbnQqIHBvbHlnb24gPSBzdGF0
aWNfY2FzdDxTVkdQb2x5Z29uRWxlbWVudCo+KGVsZW1lbnQpOworCisgICAgU1ZHUG9pbnRMaXN0
JiBwb2ludHMgPSBwb2x5Z29uLT5wb2ludExpc3QoKTsKKyAgICBpZiAocG9pbnRzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGF0aC5tb3ZlVG8ocG9pbnRzLmZpcnN0KCkpOwor
CisgICAgdW5zaWduZWQgc2l6ZSA9IHBvaW50cy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgcGF0aC5hZGRMaW5lVG8ocG9pbnRzLmF0KGkp
KTsKKworICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZVBh
dGhGcm9tUG9seWxpbmVFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQsIFBhdGgmIHBhdGgpCit7
CisgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlsaW5lVGFnKSk7
CisgICAgU1ZHUG9seWxpbmVFbGVtZW50KiBwb2x5bGluZSA9IHN0YXRpY19jYXN0PFNWR1BvbHls
aW5lRWxlbWVudCo+KGVsZW1lbnQpOworCisgICAgU1ZHUG9pbnRMaXN0JiBwb2ludHMgPSBwb2x5
bGluZS0+cG9pbnRMaXN0KCk7CisgICAgaWYgKHBvaW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHBhdGgubW92ZVRvKHBvaW50cy5maXJzdCgpKTsKKworICAgIHVuc2lnbmVk
IHNpemUgPSBwb2ludHMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50cy5hdChpKSk7Cit9CisKK3N0YXRp
YyB2b2lkIHVwZGF0ZVBhdGhGcm9tUmVjdEVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCwgUGF0
aCYgcGF0aCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cmVj
dFRhZykpOworICAgIFNWR1JlY3RFbGVtZW50KiByZWN0ID0gc3RhdGljX2Nhc3Q8U1ZHUmVjdEVs
ZW1lbnQqPihlbGVtZW50KTsKKworICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChl
bGVtZW50KTsKKyAgICBmbG9hdCB3aWR0aCA9IHJlY3QtPndpZHRoKCkudmFsdWUobGVuZ3RoQ29u
dGV4dCk7CisgICAgaWYgKHdpZHRoIDw9IDApCisgICAgICAgIHJldHVybjsKKyAgICBmbG9hdCBo
ZWlnaHQgPSByZWN0LT5oZWlnaHQoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICBpZiAoaGVp
Z2h0IDw9IDApCisgICAgICAgIHJldHVybjsKKyAgICBmbG9hdCB4ID0gcmVjdC0+eCgpLnZhbHVl
KGxlbmd0aENvbnRleHQpOworICAgIGZsb2F0IHkgPSByZWN0LT55KCkudmFsdWUobGVuZ3RoQ29u
dGV4dCk7CisgICAgYm9vbCBoYXNSeCA9IHJlY3QtPmhhc0F0dHJpYnV0ZShTVkdOYW1lczo6cnhB
dHRyKTsKKyAgICBib29sIGhhc1J5ID0gcmVjdC0+aGFzQXR0cmlidXRlKFNWR05hbWVzOjpyeUF0
dHIpOworICAgIGlmIChoYXNSeCB8fCBoYXNSeSkgeworICAgICAgICBmbG9hdCByeCA9IHJlY3Qt
PnJ4KCkudmFsdWUobGVuZ3RoQ29udGV4dCk7CisgICAgICAgIGZsb2F0IHJ5ID0gcmVjdC0+cnko
KS52YWx1ZShsZW5ndGhDb250ZXh0KTsKKyAgICAgICAgaWYgKCFoYXNSeCkKKyAgICAgICAgICAg
IHJ4ID0gcnk7CisgICAgICAgIGVsc2UgaWYgKCFoYXNSeSkKKyAgICAgICAgICAgIHJ5ID0gcng7
CisgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWln
aHQpLCBGbG9hdFNpemUocngsIHJ5KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBw
YXRoLmFkZFJlY3QoRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKK30KKwordm9pZCB1
cGRhdGVQYXRoRnJvbUdyYXBoaWNzRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50LCBQYXRoJiBw
YXRoKQoreworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkp
OworCisgICAgdHlwZWRlZiB2b2lkICgqUGF0aFVwZGF0ZUZ1bmN0aW9uKShTVkdFbGVtZW50Kiwg
UGF0aCYpOworICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBQYXRoVXBkYXRl
RnVuY3Rpb24+KiBtYXAgPSAwOworICAgIGlmICghbWFwKSB7CisgICAgICAgIG1hcCA9IG5ldyBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBQYXRoVXBkYXRlRnVuY3Rpb24+OworICAgICAgICBt
YXAtPnNldChTVkdOYW1lczo6Y2lyY2xlVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgdXBkYXRlUGF0
aEZyb21DaXJjbGVFbGVtZW50KTsKKyAgICAgICAgbWFwLT5zZXQoU1ZHTmFtZXM6OmVsbGlwc2VU
YWcubG9jYWxOYW1lKCkuaW1wbCgpLCB1cGRhdGVQYXRoRnJvbUVsbGlwc2VFbGVtZW50KTsKKyAg
ICAgICAgbWFwLT5zZXQoU1ZHTmFtZXM6OmxpbmVUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCB1cGRh
dGVQYXRoRnJvbUxpbmVFbGVtZW50KTsKKyAgICAgICAgbWFwLT5zZXQoU1ZHTmFtZXM6OnBhdGhU
YWcubG9jYWxOYW1lKCkuaW1wbCgpLCB1cGRhdGVQYXRoRnJvbVBhdGhFbGVtZW50KTsKKyAgICAg
ICAgbWFwLT5zZXQoU1ZHTmFtZXM6OnBvbHlnb25UYWcubG9jYWxOYW1lKCkuaW1wbCgpLCB1cGRh
dGVQYXRoRnJvbVBvbHlnb25FbGVtZW50KTsKKyAgICAgICAgbWFwLT5zZXQoU1ZHTmFtZXM6OnBv
bHlsaW5lVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgdXBkYXRlUGF0aEZyb21Qb2x5bGluZUVsZW1l
bnQpOworICAgICAgICBtYXAtPnNldChTVkdOYW1lczo6cmVjdFRhZy5sb2NhbE5hbWUoKS5pbXBs
KCksIHVwZGF0ZVBhdGhGcm9tUmVjdEVsZW1lbnQpOworICAgIH0KKworICAgIGlmIChQYXRoVXBk
YXRlRnVuY3Rpb24gcGF0aFVwZGF0ZUZ1bmN0aW9uID0gbWFwLT5nZXQoZWxlbWVudC0+bG9jYWxO
YW1lKCkuaW1wbCgpKSkKKyAgICAgICAgKCpwYXRoVXBkYXRlRnVuY3Rpb24pKGVsZW1lbnQsIHBh
dGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBT
VkdQYXRoRGF0YV9oCisjZGVmaW5lIFNWR1BhdGhEYXRhX2gKKworI2lmIEVOQUJMRShTVkcpCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBQYXRoOworCit2
b2lkIHVwZGF0ZVBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KFNWR0VsZW1lbnQqLCBQYXRoJik7CisK
K307CisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQorI2VuZGlmIC8vIFNWR1BhdGhEYXRhX2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAko
cmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiU1ZH
TVBhdGhFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJz
ZXJVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTVkdQYXRoRGF0YS5oIgogI2luY2x1ZGUgIlNWR1Bh
dGhFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFBhcnNlckZhY3RvcnkuaCIKICNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm1MaXN0LmgiCkBAIC0xMzIsNyArMTMzLDcgQEAgUGF0aCBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6YW5pbWF0aW9uUAogICAgICAgICAgICAgU1ZHUGF0aEVsZW1lbnQqIHBh
dGhFbGVtZW50ID0gbVBhdGgtPnBhdGhFbGVtZW50KCk7CiAgICAgICAgICAgICBQYXRoIHBhdGg7
CiAgICAgICAgICAgICBpZiAocGF0aEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcGF0aEVsZW1l
bnQtPnRvUGF0aERhdGEocGF0aCk7CisgICAgICAgICAgICAgICAgdXBkYXRlUGF0aEZyb21HcmFw
aGljc0VsZW1lbnQocGF0aEVsZW1lbnQsIHBhdGgpOwogICAgICAgICAgICAgcmV0dXJuIHBhdGg7
CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA5OTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDE4ICsxMzcsNiBAQCB2b2lkIFNWR0Np
cmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25z
dAotewotICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7Ci0KLSAgICBmbG9hdCByYWRpdXMgPSBy
KCkudmFsdWUodGhpcyk7Ci0KLSAgICBpZiAocmFkaXVzIDw9IDApCi0gICAgICAgIHJldHVybjsK
LQotICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QoY3goKS52YWx1ZSh0aGlzKSAtIHJhZGl1
cywgY3koKS52YWx1ZSh0aGlzKSAtIHJhZGl1cywgcmFkaXVzICogMiwgcmFkaXVzICogMikpOwot
fQotCiBib29sIFNWR0NpcmNsZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dAogewogICAgIHJldHVybiBjeCgpLmlzUmVsYXRpdmUoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiA5OTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDYgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwotCiAgICAg
dmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIAogICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDaXJjbGVFbGVtZW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5OTU3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MSwyMSArMTQxLDYgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbgogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9Ci0KLXZvaWQgU1ZHRWxsaXBzZUVs
ZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKLXsKLSAgICBBU1NFUlQocGF0aC5p
c0VtcHR5KCkpOwotCi0gICAgZmxvYXQgcmFkaXVzWCA9IHJ4KCkudmFsdWUodGhpcyk7Ci0gICAg
aWYgKHJhZGl1c1ggPD0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZmxvYXQgcmFkaXVzWSA9
IHJ5KCkudmFsdWUodGhpcyk7Ci0gICAgaWYgKHJhZGl1c1kgPD0gMCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChjeCgpLnZhbHVlKHRoaXMpIC0gcmFk
aXVzWCwgY3koKS52YWx1ZSh0aGlzKSAtIHJhZGl1c1ksIHJhZGl1c1ggKiAyLCByYWRpdXNZICog
MikpOwotfQogIAogYm9vbCBTVkdFbGxpcHNlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAko
cmV2aXNpb24gOTk1NzQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR0VsbGlwc2VFbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5OTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxNCArMTQyLDYgQEAgdm9pZCBT
VkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIFNWR0xpbmVFbGVtZW50Ojp0b1BhdGhEYXRhKFBhdGgmIHBhdGgpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKLQotICAgIHBhdGgubW92ZVRvKEZs
b2F0UG9pbnQoeDEoKS52YWx1ZSh0aGlzKSwgeTEoKS52YWx1ZSh0aGlzKSkpOwotICAgIHBhdGgu
YWRkTGluZVRvKEZsb2F0UG9pbnQoeDIoKS52YWx1ZSh0aGlzKSwgeTIoKS52YWx1ZSh0aGlzKSkp
OwotfQotCiBib29sIFNWR0xpbmVFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3QKIHsKICAgICByZXR1cm4geDEoKS5pc1JlbGF0aXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lRWxlbWVudC5oCShyZXZpc2lvbiA5OTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw2IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
IAotICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKLQogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5OTU3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNywxNCAr
MzI3LDYgQEAgU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbAogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIFNWR1BhdGhFbGVtZW50Ojp0b1BhdGhEYXRhKFBhdGgmIHBhdGgp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKLQotICAgIFNWR1BhdGhQYXJz
ZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICBm
YWN0b3J5LT5idWlsZFBhdGhGcm9tQnl0ZVN0cmVhbShtX3BhdGhCeXRlU3RyZWFtLmdldCgpLCBw
YXRoKTsKLX0KLQogdm9pZCBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1Bh
dGhTZWdSb2xlIHJvbGUpCiB7CiAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3RvcnkgPSBT
VkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmgJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDYgQEAgcHVibGljOgogCiAgICAg
U1ZHUGF0aEJ5dGVTdHJlYW0qIHBhdGhCeXRlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9wYXRo
Qnl0ZVN0cmVhbS5nZXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYp
IGNvbnN0OwogICAgIHZvaWQgcGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1BhdGhTZWdSb2xlKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIGRQcm9wZXJ0eUluZm8oKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcAkocmV2aXNpb24gOTk1NzQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seWdvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw4ICsyNCw2IEBACiAjaW5jbHVkZSAiU1ZHUG9seWdvbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogCi0jaW5jbHVkZSAiUGF0aC5oIgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGlubGluZSBTVkdQb2x5Z29uRWxlbWVudDo6U1ZHUG9seWdvbkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMzksMjMg
KzM3LDYgQEAgUGFzc1JlZlB0cjxTVkdQb2x5Z29uRWxlbWVudD4gU1ZHUG9seWdvbgogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU1ZHUG9seWdvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAotdm9pZCBTVkdQb2x5Z29uRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25z
dAotewotICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7Ci0KLSAgICBTVkdQb2ludExpc3QmIHBv
aW50cyA9IHBvaW50TGlzdCgpOwotICAgIGlmIChwb2ludHMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBwYXRoLm1vdmVUbyhwb2ludHMuZmlyc3QoKSk7Ci0KLSAgICB1bnNpZ25l
ZCBzaXplID0gcG9pbnRzLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHMuYXQoaSkpOwotCi0gICAgcGF0
aC5jbG9zZVN1YnBhdGgoKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5oCShyZXZpc2lvbiA5OTU3NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw4ICszMiw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTVkdQb2x5Z29uRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCB0
b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA5
OTU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw2IEBACiAjaW5jbHVkZSAiU1ZHUG9seWxpbmVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAotI2luY2x1ZGUgIlBhdGguaCIKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBpbmxpbmUgU1ZHUG9seWxpbmVFbGVtZW50OjpTVkdQb2x5bGluZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpA
QCAtMzksMjEgKzM3LDYgQEAgUGFzc1JlZlB0cjxTVkdQb2x5bGluZUVsZW1lbnQ+IFNWR1BvbHls
aQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUG9seWxpbmVFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHUG9seWxpbmVFbGVtZW50Ojp0b1BhdGhEYXRhKFBhdGgm
IHBhdGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKLQotICAgIFNWR1Bv
aW50TGlzdCYgcG9pbnRzID0gcG9pbnRMaXN0KCk7Ci0gICAgaWYgKHBvaW50cy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHBhdGgubW92ZVRvKHBvaW50cy5maXJzdCgpKTsKLQot
ICAgIHVuc2lnbmVkIHNpemUgPSBwb2ludHMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50cy5hdChpKSk7
Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seWxpbmVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BvbHlsaW5lRWxlbWVudC5oCShyZXZpc2lvbiA5OTU3NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU1ZHUG9seWxpbmVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0
aCYpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5OTU3NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSwzOSArMTU1
LDYgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFNWR1JlY3RFbGVtZW50Ojp0b1BhdGhEYXRhKFBh
dGgmIHBhdGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKLQotICAgIGZs
b2F0IHdpZHRoVmFsdWUgPSB3aWR0aCgpLnZhbHVlKHRoaXMpOwotICAgIGlmICh3aWR0aFZhbHVl
IDw9IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0IGhlaWdodFZhbHVlID0gaGVpZ2h0
KCkudmFsdWUodGhpcyk7Ci0gICAgaWYgKGhlaWdodFZhbHVlIDw9IDApCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZsb2F0IHhWYWx1ZSA9IHgoKS52YWx1ZSh0aGlzKTsKLSAgICBmbG9hdCB5VmFs
dWUgPSB5KCkudmFsdWUodGhpcyk7Ci0KLSAgICBGbG9hdFJlY3QgcmVjdCh4VmFsdWUsIHlWYWx1
ZSwgd2lkdGhWYWx1ZSwgaGVpZ2h0VmFsdWUpOwotCi0gICAgYm9vbCBoYXNSeCA9IGhhc0F0dHJp
YnV0ZShTVkdOYW1lczo6cnhBdHRyKTsKLSAgICBib29sIGhhc1J5ID0gaGFzQXR0cmlidXRlKFNW
R05hbWVzOjpyeUF0dHIpOwotICAgIGlmIChoYXNSeCB8fCBoYXNSeSkgewotICAgICAgICBmbG9h
dCByeFZhbHVlID0gcngoKS52YWx1ZSh0aGlzKTsKLSAgICAgICAgZmxvYXQgcnlWYWx1ZSA9IHJ5
KCkudmFsdWUodGhpcyk7Ci0gICAgICAgIGlmICghaGFzUngpCi0gICAgICAgICAgICByeFZhbHVl
ID0gcnlWYWx1ZTsKLSAgICAgICAgZWxzZSBpZiAoIWhhc1J5KQotICAgICAgICAgICAgcnlWYWx1
ZSA9IHJ4VmFsdWU7Ci0gICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgRmxvYXRTaXpl
KHJ4VmFsdWUsIHJ5VmFsdWUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHBhdGgu
YWRkUmVjdChyZWN0KTsKLX0KLQogYm9vbCBTVkdSZWN0RWxlbWVudDo6c2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHgoKS5pc1JlbGF0aXZlKCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShyZXZpc2lvbiA5OTU3NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCw2
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsK
LQogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKICAg
ICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudElu
c3RhbmNlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdQYXRoRGF0YS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0OCw3ICsxNDksNyBAQCBSZW5kZXJPYmpl
Y3QqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtCiAKIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OnRvQ2xpcFBhdGgoUGF0aCYgcGF0aCkKIHsKLSAgICB0b1BhdGhEYXRhKHBh
dGgpOworICAgIHVwZGF0ZVBhdGhGcm9tR3JhcGhpY3NFbGVtZW50KHRoaXMsIHBhdGgpOwogICAg
IC8vIEZJWE1FOiBIb3cgZG8gd2Uga25vdyB0aGUgZWxlbWVudCBoYXMgZG9uZSBhIGxheW91dD8K
ICAgICBwYXRoLnRyYW5zZm9ybShhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
LmgJKHJldmlzaW9uIDk5NTc0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFs
bG93U3R5bGVVcGRhdGUpOwogCiAgICAgLy8gImJhc2UgY2xhc3MiIG1ldGhvZHMgZm9yIGFsbCB0
aGUgZWxlbWVudHMgd2hpY2ggcmVuZGVyIGFzIHBhdGhzCi0gICAgdmlydHVhbCB2b2lkIHRvUGF0
aERhdGEoUGF0aCYpIGNvbnN0IHsgfQogICAgIHZpcnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBhdGgm
KTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogCg==
</data>
<flag name="review"
          id="113108"
          type_id="1"
          status="+"
          setter="zherczeg"
    />
    <flag name="commit-queue"
          id="113114"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>