<?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>64075</bug_id>
          
          <creation_ts>2011-07-07 01:56:46 -0700</creation_ts>
          <short_desc>Move remaining enums out of SVG*Element classes</short_desc>
          <delta_ts>2011-07-07 07:51:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>433353</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-07 01:56:46 -0700</bug_when>
    <thetext>Move remaining enums out of SVG*Element classes. This is a preparation patch for bug 63797.
Also move the SVGPropertyTraits template specializations for enum types before the class definition in the header, otherwhise we can&apos;t use SVGPropertyTraits&lt;FooType&gt;::fromString/toString in the DECLARE_ANIMATED* macros, which is needed soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433361</commentid>
    <comment_count>1</comment_count>
      <attachid>99960</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-07 02:20:39 -0700</bug_when>
    <thetext>Created attachment 99960
Patch

Splitted up from bug 63797.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433390</commentid>
    <comment_count>2</comment_count>
      <attachid>99960</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-07 04:39:57 -0700</bug_when>
    <thetext>Comment on attachment 99960
Patch

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

r=me. Not sure if you should remove the comment about forward declaration or add it to all elements. Up to you:

&gt; Source/WebCore/svg/SVGTextContentElement.h:75
&gt; +    // Forward declare these enums in the w3c naming scheme, for IDL generation

I wounder why you did not add this comment on the other enums like for SVGMarker or SVGGradient?!?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433427</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-07 07:18:28 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 99960 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99960&amp;action=review
&gt; 
&gt; r=me. Not sure if you should remove the comment about forward declaration or add it to all elements. Up to you:
&gt; 
&gt; &gt; Source/WebCore/svg/SVGTextContentElement.h:75
&gt; &gt; +    // Forward declare these enums in the w3c naming scheme, for IDL generation
&gt; 
&gt; I wounder why you did not add this comment on the other enums like for SVGMarker or SVGGradient?!?
Just forgot it. Fixed.

Landed in r90560.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99960</attachid>
            <date>2011-07-07 02:20:39 -0700</date>
            <delta_ts>2011-07-07 04:39:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>PrepAnimVal.diff</filename>
            <type>text/plain</type>
            <size>59025</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNTQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMDctMDcgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgTW92ZSByZW1haW5p
bmcgZW51bXMgb3V0IG9mIFNWRypFbGVtZW50IGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSByZW1haW5pbmcgZW51bXMgb3V0IG9mIFNW
RypFbGVtZW50IGNsYXNzZXMuIFRoaXMgaXMgYSBwcmVwYXJhdGlvbiBwYXRjaCBmb3IgYnVnIDYz
Nzk3LgorICAgICAgICBBbHNvIG1vdmUgdGhlIFNWR1Byb3BlcnR5VHJhaXRzIHRlbXBsYXRlIHNw
ZWNpYWxpemF0aW9ucyBmb3IgZW51bSB0eXBlcyBiZWZvcmUgdGhlIGNsYXNzCisgICAgICAgIGRl
ZmluaXRpb24gaW4gdGhlIGhlYWRlciwgb3RoZXJ3aGlzZSB3ZSBjYW4ndCB1c2UgU1ZHUHJvcGVy
dHlUcmFpdHM8Rm9vVHlwZT46OmZyb21TdHJpbmcvdG9TdHJpbmcKKyAgICAgICAgaW4gdGhlIERF
Q0xBUkVfQU5JTUFURUQqIG1hY3Jvcywgd2hpY2ggaXMgbmVlZGVkIHNvb24uCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLCBqdXN0IHJlZmFjdG9yaW5nLgorCisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQ6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlTWFya2VyOjptYXJrZXJUcmFuc2Zvcm1hdGlvbik6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXI6Om1hcmtlclVuaXRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHRQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHRQ
YXRoOjpSZW5kZXJTVkdUZXh0UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0
UGF0aDo6ZXhhY3RBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dFBh
dGg6OnN0cmV0Y2hNZXRob2QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlQ29tbW9uR3JhZGllbnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1RleHRDaHVua0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dENodW5rQnVpbGRlcjo6YWRkVGV4dENodW5rKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1RleHRMYXlvdXRFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEVu
Z2luZTo6cGFyZW50RGVmaW5lc1RleHRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dExheW91dEVuZ2luZTo6YmVnaW5UZXh0UGF0aExheW91dCk6CisgICAgICAgICogc3ZnL0dyYWRp
ZW50QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRBdHRyaWJ1dGVzOjpH
cmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRBdHRyaWJ1dGVz
OjpzcHJlYWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRBdHRyaWJ1dGVzOjpz
ZXRTcHJlYWRNZXRob2QpOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVU
dXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpTVkdHcmFkaWVudEVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50
OjpTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6OnNldE9yaWVudFRvQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50
OjpzZXRPcmllbnRUb0FuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6
OnN5bmNocm9uaXplT3JpZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVt
ZW50OjpvcmllbnRUeXBlQW5pbWF0ZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250ZW50RWxlbWVudCk6Cisg
ICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50
OjpTVkdUZXh0UGF0aEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
aDoKKwogMjAxMS0wNy0wNyAgT2xlZyBSb21hc2hpbiAgPHJvbWF4YUBnbWFpbC5jb20+CiAKICAg
ICAgICAgRml4IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjb21waWxhdGlvbi4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzgsMTUgKzI3OCwxNSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OmFkZFN0
b3BzCiAgICAgICAgIGdyYWRpZW50RGF0YS0+Z3JhZGllbnQtPmFkZENvbG9yU3RvcCgqaXQpOwog
fQogCi1HcmFkaWVudFNwcmVhZE1ldGhvZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpwbGF0
Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFk
TWV0aG9kVHlwZSBtZXRob2QpIGNvbnN0CitHcmFkaWVudFNwcmVhZE1ldGhvZCBSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50OjpwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKFNWR1NwcmVh
ZE1ldGhvZFR5cGUgbWV0aG9kKSBjb25zdAogewogICAgIHN3aXRjaCAobWV0aG9kKSB7Ci0gICAg
Y2FzZSBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR19TUFJFQURNRVRIT0RfVU5LTk9XTjoKLSAgICBj
YXNlIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQ6CisgICAgY2FzZSBT
VkdTcHJlYWRNZXRob2RVbmtub3duOgorICAgIGNhc2UgU1ZHU3ByZWFkTWV0aG9kUGFkOgogICAg
ICAgICByZXR1cm4gU3ByZWFkTWV0aG9kUGFkOwotICAgIGNhc2UgU1ZHR3JhZGllbnRFbGVtZW50
OjpTVkdfU1BSRUFETUVUSE9EX1JFRkxFQ1Q6CisgICAgY2FzZSBTVkdTcHJlYWRNZXRob2RSZWZs
ZWN0OgogICAgICAgICByZXR1cm4gU3ByZWFkTWV0aG9kUmVmbGVjdDsKLSAgICBjYXNlIFNWR0dy
YWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9SRVBFQVQ6CisgICAgY2FzZSBTVkdTcHJl
YWRNZXRob2RSZXBlYXQ6CiAgICAgICAgIHJldHVybiBTcHJlYWRNZXRob2RSZXBlYXQ7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGNvbGxl
Y3RHcmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50KikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSosIFNWR0dyYWRpZW50RWxlbWVudCop
IGNvbnN0ID0gMDsKIAotICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHBsYXRmb3JtU3ByZWFkTWV0
aG9kRnJvbVNWR1R5cGUoU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdTcHJlYWRNZXRob2RUeXBlKSBj
b25zdDsKKyAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBwbGF0Zm9ybVNwcmVhZE1ldGhvZEZyb21T
VkdUeXBlKFNWR1NwcmVhZE1ldGhvZFR5cGUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGJvb2wg
bV9zaG91bGRDb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcg
QEAgZmxvYXQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFuZ2xlKCkgYwogICAgIEFTU0VSVCht
YXJrZXIpOwogCiAgICAgZmxvYXQgYW5nbGUgPSAtMTsKLSAgICBpZiAobWFya2VyLT5vcmllbnRU
eXBlKCkgPT0gU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUl9PUklFTlRfQU5HTEUpCisgICAg
aWYgKG1hcmtlci0+b3JpZW50VHlwZSgpID09IFNWR01hcmtlck9yaWVudEFuZ2xlKQogICAgICAg
ICBhbmdsZSA9IG1hcmtlci0+b3JpZW50QW5nbGUoKS52YWx1ZSgpOwogCiAgICAgcmV0dXJuIGFu
Z2xlOwpAQCAtMTE4LDcgKzExOCw3IEBAIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlcjoKICAgICBBU1NFUlQobWFya2VyKTsKIAogICAgIGZsb2F0IG1hcmtlckFuZ2xlID0g
YW5nbGUoKTsKLSAgICBib29sIHVzZVN0cm9rZVdpZHRoID0gKG1hcmtlci0+bWFya2VyVW5pdHMo
KSA9PSBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEgpOworICAg
IGJvb2wgdXNlU3Ryb2tlV2lkdGggPSBtYXJrZXItPm1hcmtlclVuaXRzKCkgPT0gU1ZHTWFya2Vy
VW5pdHNTdHJva2VXaWR0aDsKIAogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZShvcmlnaW4ueCgpLCBvcmlnaW4ueSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFy
a2VyLmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKIAogICAgIEZsb2F0UG9pbnQgcmVmZXJlbmNlUG9pbnQoKSBjb25zdDsKICAgICBm
bG9hdCBhbmdsZSgpIGNvbnN0OwotICAgIFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlclVuaXRz
VHlwZSBtYXJrZXJVbml0cygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNWR01hcmtlckVs
ZW1lbnQqPihub2RlKCkpLT5tYXJrZXJVbml0cygpOyB9CisgICAgU1ZHTWFya2VyVW5pdHNUeXBl
IG1hcmtlclVuaXRzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTWFya2VyRWxlbWVu
dCo+KG5vZGUoKSktPm1hcmtlclVuaXRzKCk7IH0KIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVz
b3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHNfcmVzb3VyY2VUeXBlOyB9
CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlVHlwZSBzX3Jlc291cmNlVHlwZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGgu
Y3BwCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU1ZHVGV4dFBhdGg6OlJlbmRlclNWR1RleHRQYXRoKE5v
ZGUqIG4pCiAgICAgOiBSZW5kZXJTVkdJbmxpbmUobikKLSAgICAsIG1fc3RhcnRPZmZzZXQoMC4w
ZikKKyAgICAsIG1fc3RhcnRPZmZzZXQoMCkKICAgICAsIG1fZXhhY3RBbGlnbm1lbnQodHJ1ZSkK
ICAgICAsIG1fc3RyZXRjaE1ldGhvZChmYWxzZSkKIHsKQEAgLTY5LDEyICs2OSwxMiBAQCBmbG9h
dCBSZW5kZXJTVkdUZXh0UGF0aDo6c3RhcnRPZmZzZXQoKSBjCiAKIGJvb2wgUmVuZGVyU1ZHVGV4
dFBhdGg6OmV4YWN0QWxpZ25tZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+c3BhY2luZygpID09IFNWR19URVhUUEFUSF9T
UEFDSU5HVFlQRV9FWEFDVDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4dFBhdGhFbGVt
ZW50Kj4obm9kZSgpKS0+c3BhY2luZygpID09IFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0OwogfQog
CiBib29sIFJlbmRlclNWR1RleHRQYXRoOjpzdHJldGNoTWV0aG9kKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+bWV0aG9kKCkg
PT0gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSDsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U1ZHVGV4dFBhdGhFbGVtZW50Kj4obm9kZSgpKS0+bWV0aG9kKCkgPT0gU1ZHVGV4dFBhdGhN
ZXRob2RTdHJldGNoOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkyLDkgKzE5Miw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0KICAgICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJr
ZXJVbml0c1R5cGUmIG1hcmtlclVuaXQpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU1ZHTWFya2VyVW5pdHNUeXBlJiBtYXJrZXJVbml0KQogewot
ICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlclVu
aXRzVHlwZT46OnRvU3RyaW5nKG1hcmtlclVuaXQpOworICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR01hcmtlclVuaXRzVHlwZT46OnRvU3RyaW5nKG1hcmtlclVuaXQpOwogICAgIHJldHVy
biB0czsKIH0KIApAQCAtMjUxLDkgKzI1MSw5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0KICAgICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1Nw
cmVhZE1ldGhvZFR5cGUmIHR5cGUpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgU1ZHU3ByZWFkTWV0aG9kVHlwZSYgdHlwZSkKIHsKLSAgICB0cyA8
PCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5
cGU+Ojp0b1N0cmluZyh0eXBlKS51cHBlcigpOworICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR1NwcmVhZE1ldGhvZFR5cGU+Ojp0b1N0cmluZyh0eXBlKS51cHBlcigpOwogICAgIHJldHVy
biB0czsKIH0KIApAQCAtNTAwLDExICs1MDAsMTEgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgYm91
bmRpbmdCb3hNb2RlU3RyaQogICAgIHJldHVybiBib3VuZGluZ0JveE1vZGUgPyAib2JqZWN0Qm91
bmRpbmdCb3giIDogInVzZXJTcGFjZU9uVXNlIjsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHdy
aXRlQ29tbW9uR3JhZGllbnRQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTVkdHcmFkaWVudEVs
ZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGdyYWRpZW50VHJhbnNmb3JtLCBib29sIGJvdW5kaW5nQm94TW9kZSkKK3N0YXRpYyBp
bmxpbmUgdm9pZCB3cml0ZUNvbW1vbkdyYWRpZW50UHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywg
U1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
Z3JhZGllbnRUcmFuc2Zvcm0sIGJvb2wgYm91bmRpbmdCb3hNb2RlKQogewogICAgIHdyaXRlTmFt
ZVZhbHVlUGFpcih0cywgImdyYWRpZW50VW5pdHMiLCBib3VuZGluZ0JveE1vZGVTdHJpbmcoYm91
bmRpbmdCb3hNb2RlKSk7CiAKLSAgICBpZiAoc3ByZWFkTWV0aG9kICE9IFNWR0dyYWRpZW50RWxl
bWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQpCisgICAgaWYgKHNwcmVhZE1ldGhvZCAhPSBTVkdT
cHJlYWRNZXRob2RQYWQpCiAgICAgICAgIHRzIDw8ICIgW3NwcmVhZE1ldGhvZD0iIDw8IHNwcmVh
ZE1ldGhvZCA8PCAiXSI7CiAKICAgICBpZiAoIWdyYWRpZW50VHJhbnNmb3JtLmlzSWRlbnRpdHko
KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dENodW5rQnVpbGRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
Q2h1bmtCdWlsZGVyLmNwcAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRDaHVua0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAs
MTIgKzEzMCwxMiBAQCB2b2lkIFNWR1RleHRDaHVua0J1aWxkZXI6OmFkZFRleHRDaHVuayhWCiAg
ICAgICAgIGRlc2lyZWRUZXh0TGVuZ3RoID0gdGV4dENvbnRlbnRFbGVtZW50LT5zcGVjaWZpZWRU
ZXh0TGVuZ3RoKCkudmFsdWUodGV4dENvbnRlbnRFbGVtZW50KTsKIAogICAgICAgICBzd2l0Y2gg
KHRleHRDb250ZW50RWxlbWVudC0+bGVuZ3RoQWRqdXN0KCkpIHsKLSAgICAgICAgY2FzZSBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktOT1dOOgorICAgICAgICBjYXNlIFNW
R0xlbmd0aEFkanVzdFVua25vd246CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9TUEFDSU5HOgorICAgICAgICBjYXNl
IFNWR0xlbmd0aEFkanVzdFNwYWNpbmc6CiAgICAgICAgICAgICBjaHVua1N0eWxlIHw9IFNWR1Rl
eHRDaHVuazo6TGVuZ3RoQWRqdXN0U3BhY2luZzsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNWR1RleHRDb250ZW50RWxlbWVudDo6TEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQ
SFM6CisgICAgICAgIGNhc2UgU1ZHTGVuZ3RoQWRqdXN0U3BhY2luZ0FuZEdseXBoczoKICAgICAg
ICAgICAgIGNodW5rU3R5bGUgfD0gU1ZHVGV4dENodW5rOjpMZW5ndGhBZGp1c3RTcGFjaW5nQW5k
R2x5cGhzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAJKHJl
dmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0RW5naW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDEwICsxNTQsOCBAQCBib29sIFNW
R1RleHRMYXlvdXRFbmdpbmU6OnBhcmVudERlZmluZXNUCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBj
dXJyZW50UGFyZW50ID0gcGFyZW50OwogICAgIHdoaWxlIChjdXJyZW50UGFyZW50KSB7Ci0gICAg
ICAgIFNWR1RleHRDb250ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50ID0gU1ZHVGV4dENv
bnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKGN1cnJlbnRQYXJlbnQpOwotICAgICAg
ICBpZiAodGV4dENvbnRlbnRFbGVtZW50KSB7Ci0gICAgICAgICAgICBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OlNWR0xlbmd0aEFkanVzdFR5cGUgbGVuZ3RoQWRqdXN0ID0gdGV4dENvbnRlbnRFbGVt
ZW50LT5sZW5ndGhBZGp1c3QoKTsKLSAgICAgICAgICAgIGlmIChsZW5ndGhBZGp1c3QgPT0gU1ZH
VGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpVU1RfU1BBQ0lORyAmJiB0ZXh0Q29udGVudEVs
ZW1lbnQtPnNwZWNpZmllZFRleHRMZW5ndGgoKS52YWx1ZSh0ZXh0Q29udGVudEVsZW1lbnQpID4g
MCkKKyAgICAgICAgaWYgKFNWR1RleHRDb250ZW50RWxlbWVudCogdGV4dENvbnRlbnRFbGVtZW50
ID0gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKGN1cnJlbnRQYXJl
bnQpKSB7CisgICAgICAgICAgICBpZiAodGV4dENvbnRlbnRFbGVtZW50LT5sZW5ndGhBZGp1c3Qo
KSA9PSBTVkdMZW5ndGhBZGp1c3RTcGFjaW5nICYmIHRleHRDb250ZW50RWxlbWVudC0+c3BlY2lm
aWVkVGV4dExlbmd0aCgpLnZhbHVlKHRleHRDb250ZW50RWxlbWVudCkgPiAwKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTIwOCw3ICsyMDYsNyBAQCB2b2lk
IFNWR1RleHRMYXlvdXRFbmdpbmU6OmJlZ2luVGV4dFBhdGhMCiAgICAgbV90ZXh0UGF0aEN1cnJl
bnRPZmZzZXQgPSBtX3RleHRQYXRoU3RhcnRPZmZzZXQ7CiAKICAgICAvLyBFdmVudHVhbGx5IGhh
bmRsZSB0ZXh0TGVuZ3RoIGFkanVzdG1lbnRzLgotICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6
U1ZHTGVuZ3RoQWRqdXN0VHlwZSBsZW5ndGhBZGp1c3QgPSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OkxFTkdUSEFESlVTVF9VTktOT1dOOworICAgIFNWR0xlbmd0aEFkanVzdFR5cGUgbGVuZ3RoQWRq
dXN0ID0gU1ZHTGVuZ3RoQWRqdXN0VW5rbm93bjsKICAgICBmbG9hdCBkZXNpcmVkVGV4dExlbmd0
aCA9IDA7CiAKICAgICBpZiAoU1ZHVGV4dENvbnRlbnRFbGVtZW50KiB0ZXh0Q29udGVudEVsZW1l
bnQgPSBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIodGV4dFBhdGgp
KSB7CkBAIC0yMTksNyArMjE3LDcgQEAgdm9pZCBTVkdUZXh0TGF5b3V0RW5naW5lOjpiZWdpblRl
eHRQYXRoTAogICAgIGlmICghZGVzaXJlZFRleHRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChsZW5ndGhBZGp1c3QgPT0gU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpV
U1RfU1BBQ0lORykKKyAgICBpZiAobGVuZ3RoQWRqdXN0ID09IFNWR0xlbmd0aEFkanVzdFNwYWNp
bmcpCiAgICAgICAgIG1fdGV4dFBhdGhTcGFjaW5nID0gKGRlc2lyZWRUZXh0TGVuZ3RoIC0gdG90
YWxMZW5ndGgpIC8gdG90YWxDaGFyYWN0ZXJzOwogICAgIGVsc2UKICAgICAgICAgbV90ZXh0UGF0
aFNjYWxpbmcgPSBkZXNpcmVkVGV4dExlbmd0aCAvIHRvdGFsTGVuZ3RoOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR3JhZGllbnRBdHRyaWJ1
dGVzIHsKICAgICBHcmFkaWVudEF0dHJpYnV0ZXMoKQotICAgICAgICA6IG1fc3ByZWFkTWV0aG9k
KFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9QQUQpCisgICAgICAgIDogbV9z
cHJlYWRNZXRob2QoU1ZHU3ByZWFkTWV0aG9kUGFkKQogICAgICAgICAsIG1fYm91bmRpbmdCb3hN
b2RlKHRydWUpCiAgICAgICAgICwgbV9zcHJlYWRNZXRob2RTZXQoZmFsc2UpCiAgICAgICAgICwg
bV9ib3VuZGluZ0JveE1vZGVTZXQoZmFsc2UpCkBAIC0zNywxMiArMzcsMTIgQEAgc3RydWN0IEdy
YWRpZW50QXR0cmlidXRlcyB7CiAgICAgewogICAgIH0KIAotICAgIFNWR0dyYWRpZW50RWxlbWVu
dDo6U1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX3Nw
cmVhZE1ldGhvZDsgfQorICAgIFNWR1NwcmVhZE1ldGhvZFR5cGUgc3ByZWFkTWV0aG9kKCkgY29u
c3QgeyByZXR1cm4gbV9zcHJlYWRNZXRob2Q7IH0KICAgICBib29sIGJvdW5kaW5nQm94TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYm91bmRpbmdCb3hNb2RlOyB9CiAgICAgQWZmaW5lVHJhbnNmb3Jt
IGdyYWRpZW50VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybTsg
fQogICAgIGNvbnN0IFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiYgc3RvcHMoKSBjb25zdCB7
IHJldHVybiBtX3N0b3BzOyB9CiAKLSAgICB2b2lkIHNldFNwcmVhZE1ldGhvZChTVkdHcmFkaWVu
dEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUgdmFsdWUpCisgICAgdm9pZCBzZXRTcHJlYWRN
ZXRob2QoU1ZHU3ByZWFkTWV0aG9kVHlwZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1fc3ByZWFk
TWV0aG9kID0gdmFsdWU7CiAgICAgICAgIG1fc3ByZWFkTWV0aG9kU2V0ID0gdHJ1ZTsKQEAgLTcz
LDcgKzczLDcgQEAgc3RydWN0IEdyYWRpZW50QXR0cmlidXRlcyB7CiAKIHByaXZhdGU6CiAgICAg
Ly8gUHJvcGVydGllcwotICAgIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFkTWV0aG9kVHlw
ZSBtX3NwcmVhZE1ldGhvZDsKKyAgICBTVkdTcHJlYWRNZXRob2RUeXBlIG1fc3ByZWFkTWV0aG9k
OwogICAgIGJvb2wgbV9ib3VuZGluZ0JveE1vZGU7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fZ3Jh
ZGllbnRUcmFuc2Zvcm07CiAgICAgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+IG1fc3RvcHM7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjksMzEgKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW50IHsKLXB1
YmxpYzoKLSAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVyRnVuY3Rpb24oKSBj
b25zdDsKLQotcHJvdGVjdGVkOgotICAgIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgLy8gRklYTUU6IHN2
Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIAotcHJpdmF0ZToKLSAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1F
UkFUSU9OKFR5cGUsIHR5cGUsIENvbXBvbmVudFRyYW5zZmVyVHlwZSkKLSAgICBERUNMQVJFX0FO
SU1BVEVEX05VTUJFUl9MSVNUKFRhYmxlVmFsdWVzLCB0YWJsZVZhbHVlcykKLSAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihTbG9wZSwgc2xvcGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoSW50ZXJjZXB0LCBpbnRlcmNlcHQpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQW1w
bGl0dWRlLCBhbXBsaXR1ZGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoRXhwb25lbnQs
IGV4cG9uZW50KQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKE9mZnNldCwgb2Zmc2V0KQot
fTsKLQogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbXBvbmVudFRyYW5z
ZmVyVHlwZT4gewogICAgIHN0YXRpYyBDb21wb25lbnRUcmFuc2ZlclR5cGUgaGlnaGVzdEVudW1W
YWx1ZSgpIHsgcmV0dXJuIEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQTsgfQpAQCAtOTUs
NiArNzAsMzEgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbXBvbmVudFRyYW5zZgogICAg
IH0KIH07CiAKK2NsYXNzIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogcHVi
bGljIFNWR0VsZW1lbnQgeworcHVibGljOgorICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
dHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CisKKyAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgorICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAg
Citwcml2YXRlOgorICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucworICAgIERF
Q0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNmZXJU
eXBlKQorICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSX0xJU1QoVGFibGVWYWx1ZXMsIHRhYmxl
VmFsdWVzKQorICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNsb3BlLCBzbG9wZSkKKyAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihJbnRlcmNlcHQsIGludGVyY2VwdCkKKyAgICBERUNMQVJF
X0FOSU1BVEVEX05VTUJFUihBbXBsaXR1ZGUsIGFtcGxpdHVkZSkKKyAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihFeHBvbmVudCwgZXhwb25lbnQpCisgICAgREVDTEFSRV9BTklNQVRFRF9OVU1C
RVIoT2Zmc2V0LCBvZmZzZXQpCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyOCArMjgsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ZFQmxlbmRFbGVtZW50IDogcHVi
bGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVCbGVuZEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBTVkdGRUJsZW5kRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKLQotICAgIC8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMiwgaW4yKQotICAgIERFQ0xBUkVfQU5J
TUFURURfRU5VTUVSQVRJT04oTW9kZSwgbW9kZSwgQmxlbmRNb2RlVHlwZSkKLX07Ci0KIHRlbXBs
YXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxCbGVuZE1vZGVUeXBlPiB7CiAgICAgc3Rh
dGljIEJsZW5kTW9kZVR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIEZFQkxFTkRfTU9E
RV9MSUdIVEVOOyB9CkBAIC05MSw2ICs2OSwyOCBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8
QmxlbmRNb2RlVHlwZT4gCiAgICAgfQogfTsKIAorY2xhc3MgU1ZHRkVCbGVuZEVsZW1lbnQgOiBw
dWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUJsZW5kRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIFNWR0ZFQmxlbmRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJF
ZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOworCisgICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCisgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBp
bjEpCisgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCisgICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihNb2RlLCBtb2RlLCBCbGVuZE1vZGVUeXBlKQorfTsKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwyOCArMjksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKLQotcHJpdmF0ZToKLSAgICBTVkdGRUNvbG9yTWF0cml4RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXIqKTsKLQotICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwot
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQotICAgIERFQ0xBUkVfQU5JTUFU
RURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29sb3JNYXRyaXhUeXBlKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSX0xJU1QoVmFsdWVzLCB2YWx1ZXMpCi19OwotCiB0ZW1wbGF0ZTw+CiBz
dHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q29sb3JNYXRyaXhUeXBlPiB7CiAgICAgc3RhdGljIENv
bG9yTWF0cml4VHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gRkVDT0xPUk1BVFJJWF9U
WVBFX0xVTUlOQU5DRVRPQUxQSEE7IH0KQEAgLTg4LDYgKzY2LDI4IEBAIHN0cnVjdCBTVkdQcm9w
ZXJ0eVRyYWl0czxDb2xvck1hdHJpeFR5cGUKICAgICB9CiB9OwogCitjbGFzcyBTVkdGRUNvbG9y
TWF0cml4RWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKK3ByaXZhdGU6
CisgICAgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CisKKyAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CisgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3Qq
LCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7
CisKKyAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKKyAgICBERUNMQVJFX0FO
SU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9O
KFR5cGUsIHR5cGUsIENvbG9yTWF0cml4VHlwZSkKKyAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
Ul9MSVNUKFZhbHVlcywgdmFsdWVzKQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwzMiArMjksNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IHB1
YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFQ29tcG9zaXRlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi1wcml2YXRlOgotICAgIFNWR0ZFQ29tcG9zaXRl
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKLQotICAgIC8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlY2xhcmF0aW9ucwotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQotICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMiwgaW4yKQotICAgIERFQ0xBUkVfQU5J
TUFURURfRU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3BlcmF0b3IsIENvbXBvc2l0ZU9wZXJhdGlv
blR5cGUpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzEsIGsxKQotICAgIERFQ0xBUkVf
QU5JTUFURURfTlVNQkVSKEsyLCBrMikKLSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMywg
azMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzQsIGs0KQotfTsKLQogdGVtcGxhdGU8
Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+IHsKICAg
ICBzdGF0aWMgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1
cm4gRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQzsgfQpAQCAtMTAwLDYgKzc0LDMyIEBA
IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxDb21wb3NpdGVPcGVyYXQKICAgICB9CiB9OwogCitj
bGFzcyBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
KworcHJpdmF0ZToKKyAgICBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CisKKyAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CisgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0
ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwg
RmlsdGVyKik7CisKKyAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKKyAgICBE
RUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKKyAgICBERUNMQVJFX0FOSU1BVEVEX1NU
UklORyhJbjIsIGluMikKKyAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKF9vcGVyYXRv
ciwgX29wZXJhdG9yLCBDb21wb3NpdGVPcGVyYXRpb25UeXBlKQorICAgIERFQ0xBUkVfQU5JTUFU
RURfTlVNQkVSKEsxLCBrMSkKKyAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLMiwgazIpCisg
ICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoSzMsIGszKQorICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKEs0LCBrNCkKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEs
MzkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgU1ZHUHJv
cGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPiB7CisgICAgc3RhdGljIEVkZ2VNb2RlVHlwZSBoaWdo
ZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gRURHRU1PREVfTk9ORTsgfQorCisgICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhFZGdlTW9kZVR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
dHlwZSkgeworICAgICAgICBjYXNlIEVER0VNT0RFX1VOS05PV046CisgICAgICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgY2FzZSBFREdFTU9ERV9EVVBMSUNBVEU6CisgICAg
ICAgICAgICByZXR1cm4gImR1cGxpY2F0ZSI7CisgICAgICAgIGNhc2UgRURHRU1PREVfV1JBUDoK
KyAgICAgICAgICAgIHJldHVybiAid3JhcCI7CisgICAgICAgIGNhc2UgRURHRU1PREVfTk9ORToK
KyAgICAgICAgICAgIHJldHVybiAibm9uZSI7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgfQorCisg
ICAgc3RhdGljIEVkZ2VNb2RlVHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCisg
ICAgeworICAgICAgICBpZiAodmFsdWUgPT0gImR1cGxpY2F0ZSIpCisgICAgICAgICAgICByZXR1
cm4gRURHRU1PREVfRFVQTElDQVRFOworICAgICAgICBpZiAodmFsdWUgPT0gIndyYXAiKQorICAg
ICAgICAgICAgcmV0dXJuIEVER0VNT0RFX1dSQVA7CisgICAgICAgIGlmICh2YWx1ZSA9PSAibm9u
ZSIpCisgICAgICAgICAgICByZXR1cm4gRURHRU1PREVfTk9ORTsKKyAgICAgICAgcmV0dXJuIEVE
R0VNT0RFX1VOS05PV047CisgICAgfQorfTsKKwogY2xhc3MgU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtNzAsMzkgKzEwMyw2
IEBAIHByaXZhdGU6CiAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKFByZXNlcnZlQWxwaGEs
IHByZXNlcnZlQWxwaGEpCiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8RWRnZU1vZGVUeXBlPiB7Ci0gICAgc3RhdGljIEVkZ2VNb2RlVHlwZSBoaWdoZXN0RW51bVZh
bHVlKCkgeyByZXR1cm4gRURHRU1PREVfTk9ORTsgfQotCi0gICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhFZGdlTW9kZVR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewot
ICAgICAgICBjYXNlIEVER0VNT0RFX1VOS05PV046Ci0gICAgICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKLSAgICAgICAgY2FzZSBFREdFTU9ERV9EVVBMSUNBVEU6Ci0gICAgICAgICAgICBy
ZXR1cm4gImR1cGxpY2F0ZSI7Ci0gICAgICAgIGNhc2UgRURHRU1PREVfV1JBUDoKLSAgICAgICAg
ICAgIHJldHVybiAid3JhcCI7Ci0gICAgICAgIGNhc2UgRURHRU1PREVfTk9ORToKLSAgICAgICAg
ICAgIHJldHVybiAibm9uZSI7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgfQotCi0gICAgc3RhdGlj
IEVkZ2VNb2RlVHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCi0gICAgewotICAg
ICAgICBpZiAodmFsdWUgPT0gImR1cGxpY2F0ZSIpCi0gICAgICAgICAgICByZXR1cm4gRURHRU1P
REVfRFVQTElDQVRFOwotICAgICAgICBpZiAodmFsdWUgPT0gIndyYXAiKQotICAgICAgICAgICAg
cmV0dXJuIEVER0VNT0RFX1dSQVA7Ci0gICAgICAgIGlmICh2YWx1ZSA9PSAibm9uZSIpCi0gICAg
ICAgICAgICByZXR1cm4gRURHRU1PREVfTk9ORTsKLSAgICAgICAgcmV0dXJuIEVER0VNT0RFX1VO
S05PV047Ci0gICAgfQotfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywzMyAr
MjcsNyBAQAogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1jbGFzcyBTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHN0YXRp
YyBDaGFubmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmKTsKLSAg
ICAKLXByaXZhdGU6Ci0gICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7Ci0gICAgCi0gICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJF
ZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwotCi0gICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBp
bjEpCi0gICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9FTlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBD
aGFubmVsU2VsZWN0b3JUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oWUNo
YW5uZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKLSAg
ICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihTY2FsZSwgc2NhbGUpCi19OwotCisgCiB0ZW1wbGF0
ZTw+CiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gewogICAg
IHN0YXRpYyBDaGFubmVsU2VsZWN0b3JUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBD
SEFOTkVMX0E7IH0KQEAgLTkxLDYgKzY1LDMyIEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxD
aGFubmVsU2VsZWN0b3IKICAgICB9CiB9OwogCitjbGFzcyBTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIHN0YXRpYyBD
aGFubmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBTdHJpbmcmKTsKKyAgICAK
K3ByaXZhdGU6CisgICAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CisgICAgCisgICAgYm9vbCBpc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
OworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOworCisgICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCisgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEp
CisgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4yLCBpbjIpCisgICAgREVDTEFSRV9BTklN
QVRFRF9FTlVNRVJBVElPTihYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNlbGVjdG9yLCBDaGFu
bmVsU2VsZWN0b3JUeXBlKQorICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oWUNoYW5u
ZWxTZWxlY3RvciwgeUNoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNlbGVjdG9yVHlwZSkKKyAgICBE
RUNMQVJFX0FOSU1BVEVEX05VTUJFUihTY2FsZSwgc2NhbGUpCit9OworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCShyZXZpc2lvbiA5MDQ1NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDM0ICsyOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHZvaWQg
c2V0UmFkaXVzKGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1kpOwotCi1wcml2YXRlOgotICAg
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
Ci0KLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAg
dmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7Ci0KLSAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYWRpdXNYSWRlbnRpZmllcigpOwotICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJhZGl1c1lJZGVudGlmaWVyKCk7Ci0KLSAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKLSAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklO
RyhJbjEsIGluMSkKLSAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKF9vcGVyYXRvciwg
X29wZXJhdG9yLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlKQotICAgIERFQ0xBUkVfQU5JTUFURURf
TlVNQkVSKFJhZGl1c1gsIHJhZGl1c1gpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUmFk
aXVzWSwgcmFkaXVzWSkKLX07Ci0KIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxNb3JwaG9sb2d5T3BlcmF0b3JUeXBlPiB7CiAgICAgc3RhdGljIE1vcnBob2xvZ3lPcGVyYXRv
clR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9E
SUxBVEU7IH0KQEAgLTg1LDYgKzU3LDM0IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxNb3Jw
aG9sb2d5T3BlcmEKICAgICB9CiB9OwogCitjbGFzcyBTVkdGRU1vcnBob2xvZ3lFbGVtZW50IDog
cHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVNb3JwaG9sb2d5RWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAgdm9pZCBzZXRSYWRpdXMoZmxvYXQg
cmFkaXVzWCwgZmxvYXQgcmFkaXVzWSk7CisKK3ByaXZhdGU6CisgICAgU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKKworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHJhZGl1c1hJZGVudGlmaWVyKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgcmFkaXVzWUlkZW50aWZpZXIoKTsKKworICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlY2xhcmF0aW9ucworICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQorICAg
IERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oX29wZXJhdG9yLCBfb3BlcmF0b3IsIE1vcnBo
b2xvZ3lPcGVyYXRvclR5cGUpCisgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUmFkaXVzWCwg
cmFkaXVzWCkKKyAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihSYWRpdXNZLCByYWRpdXNZKQor
fTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNp
b24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwzNCArMzYsNiBAQCBlbnVtIFNWR1N0aXRjaE9wdGlvbnMg
ewogICAgIFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMgogfTsKIAotY2xhc3MgU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudCA6IHB1YmxpYyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToK
LSAgICBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwotCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwot
ICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwotICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciopOwotCi0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5jeVhJ
ZGVudGlmaWVyKCk7Ci0gICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUZyZXF1ZW5j
eVlJZGVudGlmaWVyKCk7Ci0KLSAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
LSAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihCYXNlRnJlcXVlbmN5WCwgYmFzZUZyZXF1ZW5j
eVgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmFzZUZyZXF1ZW5jeVksIGJhc2VGcmVx
dWVuY3lZKQotICAgIERFQ0xBUkVfQU5JTUFURURfSU5URUdFUihOdW1PY3RhdmVzLCBudW1PY3Rh
dmVzKQotICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKFNlZWQsIHNlZWQpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9FTlVNRVJBVElPTihTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMsIFNWR1N0aXRj
aE9wdGlvbnMpCi0gICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihUeXBlLCB0eXBlLCBU
dXJidWxlbmNlVHlwZSkKLX07Ci0KIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdTdGl0Y2hPcHRpb25zPiB7CiAgICAgc3RhdGljIFNWR1N0aXRjaE9wdGlvbnMgaGlnaGVz
dEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR19TVElUQ0hUWVBFX05PU1RJVENIOyB9CkBAIC0xMjIs
NiArOTQsMzQgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFR1cmJ1bGVuY2VUeXBlPgogICAg
IH0KIH07CiAKK2NsYXNzIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQgOiBwdWJsaWMgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdGRVR1cmJ1bGVuY2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CisKK3ByaXZhdGU6CisgICAgU1ZHRkVUdXJidWxlbmNlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKKworICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lYSWRlbnRpZmllcigpOworICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lZSWRlbnRpZmllcigpOworCisgICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCisgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQmFz
ZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQorICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KEJhc2VGcmVxdWVuY3lZLCBiYXNlRnJlcXVlbmN5WSkKKyAgICBERUNMQVJFX0FOSU1BVEVEX0lO
VEVHRVIoTnVtT2N0YXZlcywgbnVtT2N0YXZlcykKKyAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJF
UihTZWVkLCBzZWVkKQorICAgIERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oU3RpdGNoVGls
ZXMsIHN0aXRjaFRpbGVzLCBTVkdTdGl0Y2hPcHRpb25zKQorICAgIERFQ0xBUkVfQU5JTUFURURf
RU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgVHVyYnVsZW5jZVR5cGUpCit9OworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihTVkdHcmFkaWVudEVsZW1l
bnQsIFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLCBTcHJlYWRNZXRob2QsIHNwcmVhZE1ldGhv
ZCwgU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdTcHJlYWRNZXRob2RUeXBlKQorREVGSU5FX0FOSU1B
VEVEX0VOVU1FUkFUSU9OKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OnNwcmVhZE1ldGhv
ZEF0dHIsIFNwcmVhZE1ldGhvZCwgc3ByZWFkTWV0aG9kLCBTVkdTcHJlYWRNZXRob2RUeXBlKQog
REVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6
OmdyYWRpZW50VW5pdHNBdHRyLCBHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRzLCBTVkdVbml0
VHlwZXM6OlNWR1VuaXRUeXBlKQogREVGSU5FX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFNWR0dy
YWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgR3JhZGllbnRU
cmFuc2Zvcm0sIGdyYWRpZW50VHJhbnNmb3JtKQogREVGSU5FX0FOSU1BVEVEX1NUUklORyhTVkdH
cmFkaWVudEVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBIcmVmLCBocmVmKQpAQCAtNDcs
NyArNDcsNyBAQCBERUZJTkVfQU5JTUFURURfQk9PTEVBTihTVkdHcmFkaWVudEVsZW1lCiAKIFNW
R0dyYWRpZW50RWxlbWVudDo6U1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCi0gICAgLCBtX3NwcmVhZE1ldGhvZChTVkdfU1BSRUFETUVUSE9EX1BB
RCkKKyAgICAsIG1fc3ByZWFkTWV0aG9kKFNWR1NwcmVhZE1ldGhvZFBhZCkKICAgICAsIG1fZ3Jh
ZGllbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gp
CiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZp
c2lvbiA5MDQ1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDU2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorZW51bSBTVkdTcHJlYWRNZXRob2RUeXBlIHsKKyAgICBTVkdTcHJlYWRNZXRob2RVbmtub3du
ID0gMCwKKyAgICBTVkdTcHJlYWRNZXRob2RQYWQsCisgICAgU1ZHU3ByZWFkTWV0aG9kUmVmbGVj
dCwKKyAgICBTVkdTcHJlYWRNZXRob2RSZXBlYXQKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBT
VkdQcm9wZXJ0eVRyYWl0czxTVkdTcHJlYWRNZXRob2RUeXBlPiB7CisgICAgc3RhdGljIFNWR1Nw
cmVhZE1ldGhvZFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR1NwcmVhZE1ldGhv
ZFJlcGVhdDsgfQorCisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhTVkdTcHJlYWRNZXRob2RU
eXBlIHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBT
VkdTcHJlYWRNZXRob2RVbmtub3duOgorICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CisgICAgICAgIGNhc2UgU1ZHU3ByZWFkTWV0aG9kUGFkOgorICAgICAgICAgICAgcmV0dXJuICJw
YWQiOworICAgICAgICBjYXNlIFNWR1NwcmVhZE1ldGhvZFJlZmxlY3Q6CisgICAgICAgICAgICBy
ZXR1cm4gInJlZmxlY3QiOworICAgICAgICBjYXNlIFNWR1NwcmVhZE1ldGhvZFJlcGVhdDoKKyAg
ICAgICAgICAgIHJldHVybiAicmVwZWF0IjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU1ZHU3ByZWFkTWV0aG9kVHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgPT0gInBhZCIpCisgICAgICAgICAgICByZXR1
cm4gU1ZHU3ByZWFkTWV0aG9kUGFkOworICAgICAgICBpZiAodmFsdWUgPT0gInJlZmxlY3QiKQor
ICAgICAgICAgICAgcmV0dXJuIFNWR1NwcmVhZE1ldGhvZFJlZmxlY3Q7CisgICAgICAgIGlmICh2
YWx1ZSA9PSAicmVwZWF0IikKKyAgICAgICAgICAgIHJldHVybiBTVkdTcHJlYWRNZXRob2RSZXBl
YXQ7CisgICAgICAgIHJldHVybiBTVkdTcHJlYWRNZXRob2RVbmtub3duOworICAgIH0KK307CisK
KwogY2xhc3MgU1ZHR3JhZGllbnRFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQg
ewogcHVibGljOgotICAgIGVudW0gU1ZHU3ByZWFkTWV0aG9kVHlwZSB7Ci0gICAgICAgIFNWR19T
UFJFQURNRVRIT0RfVU5LTk9XTiA9IDAsCi0gICAgICAgIFNWR19TUFJFQURNRVRIT0RfUEFEICAg
ICA9IDEsCi0gICAgICAgIFNWR19TUFJFQURNRVRIT0RfUkVGTEVDVCA9IDIsCi0gICAgICAgIFNW
R19TUFJFQURNRVRIT0RfUkVQRUFUICA9IDMKKyAgICBlbnVtIHsKKyAgICAgICAgU1ZHX1NQUkVB
RE1FVEhPRF9VTktOT1dOID0gU1ZHU3ByZWFkTWV0aG9kVW5rbm93biwKKyAgICAgICAgU1ZHX1NQ
UkVBRE1FVEhPRF9QQUQgPSBTVkdTcHJlYWRNZXRob2RSZWZsZWN0LAorICAgICAgICBTVkdfU1BS
RUFETUVUSE9EX1JFRkxFQ1QgPSBTVkdTcHJlYWRNZXRob2RSZXBlYXQsCisgICAgICAgIFNWR19T
UFJFQURNRVRIT0RfUkVQRUFUID0gU1ZHU3ByZWFkTWV0aG9kVW5rbm93bgogICAgIH07CiAKICAg
ICBWZWN0b3I8R3JhZGllbnQ6OkNvbG9yU3RvcD4gYnVpbGRTdG9wcygpOwpAQCAtNzIsMzkgKzEx
Myw2IEBAIHByaXZhdGU6CiAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiB9OwogCi10ZW1wbGF0
ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHR3JhZGllbnRFbGVtZW50OjpTVkdTcHJl
YWRNZXRob2RUeXBlPiB7Ci0gICAgc3RhdGljIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHU3ByZWFk
TWV0aG9kVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHR3JhZGllbnRFbGVtZW50
OjpTVkdfU1BSRUFETUVUSE9EX1JFUEVBVDsgfQotCi0gICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
ZyhTVkdHcmFkaWVudEVsZW1lbnQ6OlNWR1NwcmVhZE1ldGhvZFR5cGUgdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIFNWR0dyYWRpZW50RWxlbWVudDo6
U1ZHX1NQUkVBRE1FVEhPRF9VTktOT1dOOgotICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7Ci0gICAgICAgIGNhc2UgU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1BB
RDoKLSAgICAgICAgICAgIHJldHVybiAicGFkIjsKLSAgICAgICAgY2FzZSBTVkdHcmFkaWVudEVs
ZW1lbnQ6OlNWR19TUFJFQURNRVRIT0RfUkVGTEVDVDoKLSAgICAgICAgICAgIHJldHVybiAicmVm
bGVjdCI7Ci0gICAgICAgIGNhc2UgU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9E
X1JFUEVBVDoKLSAgICAgICAgICAgIHJldHVybiAicmVwZWF0IjsKLSAgICAgICAgfQotCi0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgU1ZHR3JhZGllbnRFbGVtZW50OjpTVkdTcHJlYWRNZXRob2RU
eXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmICh2
YWx1ZSA9PSAicGFkIikKLSAgICAgICAgICAgIHJldHVybiBTVkdHcmFkaWVudEVsZW1lbnQ6OlNW
R19TUFJFQURNRVRIT0RfUEFEOwotICAgICAgICBpZiAodmFsdWUgPT0gInJlZmxlY3QiKQotICAg
ICAgICAgICAgcmV0dXJuIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9SRUZM
RUNUOwotICAgICAgICBpZiAodmFsdWUgPT0gInJlcGVhdCIpCi0gICAgICAgICAgICByZXR1cm4g
U1ZHR3JhZGllbnRFbGVtZW50OjpTVkdfU1BSRUFETUVUSE9EX1JFUEVBVDsKLSAgICAgICAgcmV0
dXJuIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHX1NQUkVBRE1FVEhPRF9VTktOT1dOOwotICAgIH0K
LX07Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVs
ZW1lbnQsCiBERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVz
OjpyZWZZQXR0ciwgUmVmWSwgcmVmWSkKIERFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTWFya2Vy
RWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgTWFya2VyV2lkdGgsIG1hcmtlcldp
ZHRoKQogREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6
bWFya2VySGVpZ2h0QXR0ciwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCi1ERUZJTkVfQU5J
TUFURURfRU5VTUVSQVRJT04oU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlclVuaXRz
QXR0ciwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJr
ZXJVbml0c1R5cGUpCitERUZJTkVfQU5JTUFURURfRU5VTUVSQVRJT04oU1ZHTWFya2VyRWxlbWVu
dCwgU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBT
VkdNYXJrZXJVbml0c1R5cGUpCiBERUZJTkVfQU5JTUFURURfQU5HTEVfTVVMVElQTEVfV1JBUFBF
UlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om9yaWVudEF0dHIsIG9yaWVudEFuZ2xlSWRl
bnRpZmllcigpLCBPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUpCiBERUZJTkVfQU5JTUFURURfQk9P
TEVBTihTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEF0dHIsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCiBERUZJTkVfQU5JTUFURURfUkVDVChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6dmll
d0JveEF0dHIsIFZpZXdCb3gsIHZpZXdCb3gpCkBAIC01MCw4ICs1MCw4IEBAIGlubGluZSBTVkdN
YXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW4KICAgICAsIG1fcmVmWShMZW5ndGhNb2RlSGVp
Z2h0KQogICAgICwgbV9tYXJrZXJXaWR0aChMZW5ndGhNb2RlV2lkdGgsICIzIikKICAgICAsIG1f
bWFya2VySGVpZ2h0KExlbmd0aE1vZGVIZWlnaHQsICIzIikgCi0gICAgLCBtX21hcmtlclVuaXRz
KFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCkKLSAgICAsIG1fb3JpZW50VHlwZShTVkdfTUFS
S0VSX09SSUVOVF9BTkdMRSkKKyAgICAsIG1fbWFya2VyVW5pdHMoU1ZHTWFya2VyVW5pdHNTdHJv
a2VXaWR0aCkKKyAgICAsIG1fb3JpZW50VHlwZShTVkdNYXJrZXJPcmllbnRBbmdsZSkKIHsKICAg
ICAvLyBTcGVjOiBJZiB0aGUgbWFya2VyV2lkdGgvbWFya2VySGVpZ2h0IGF0dHJpYnV0ZSBpcyBu
b3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjMiIHdlcmUgc3Bl
Y2lmaWVkLgogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKTsKQEAg
LTEzNiw3ICsxMzYsNyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
CiAgICAgICAgIFNWR01hcmtlck9yaWVudFR5cGUgb3JpZW50VHlwZSA9IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR01hcmtlck9yaWVudFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlLCBhbmdsZSk7CiAgICAg
ICAgIGlmIChvcmllbnRUeXBlID4gMCkKICAgICAgICAgICAgIHNldE9yaWVudFR5cGVCYXNlVmFs
dWUob3JpZW50VHlwZSk7Ci0gICAgICAgIGlmIChvcmllbnRUeXBlID09IFNWR19NQVJLRVJfT1JJ
RU5UX0FOR0xFKQorICAgICAgICBpZiAob3JpZW50VHlwZSA9PSBTVkdNYXJrZXJPcmllbnRBbmds
ZSkKICAgICAgICAgICAgIHNldE9yaWVudEFuZ2xlQmFzZVZhbHVlKGFuZ2xlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChiCiAKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9B
dXRvKCkKIHsKLSAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5UX0FV
VE8pOworICAgIHNldE9yaWVudFR5cGVCYXNlVmFsdWUoU1ZHTWFya2VyT3JpZW50QXV0byk7CiAg
ICAgc2V0T3JpZW50QW5nbGVCYXNlVmFsdWUoU1ZHQW5nbGUoKSk7CiAKICAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgU1ZH
TWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BdXRvKCkKIAogdm9pZCBTVkdNYXJrZXJFbGVtZW50
OjpzZXRPcmllbnRUb0FuZ2xlKGNvbnN0IFNWR0FuZ2xlJiBhbmdsZSkKIHsKLSAgICBzZXRPcmll
bnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5UX0FOR0xFKTsKKyAgICBzZXRPcmllbnRU
eXBlQmFzZVZhbHVlKFNWR01hcmtlck9yaWVudEFuZ2xlKTsKICAgICBzZXRPcmllbnRBbmdsZUJh
c2VWYWx1ZShhbmdsZSk7CiAKICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJl
cigpKQpAQCAtMzAzLDE1ICszMDMsMTUgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJv
bml6ZU9yaWVudAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgQXRvbWljU3RyaW5nIHZhbHVl
OwotICAgIGlmIChtX29yaWVudFR5cGUudmFsdWUgPT0gU1ZHX01BUktFUl9PUklFTlRfQVVUTykK
KyAgICBpZiAobV9vcmllbnRUeXBlLnZhbHVlID09IFNWR01hcmtlck9yaWVudEF1dG8pCiAgICAg
ICAgIHZhbHVlID0gImF1dG8iOwotICAgIGVsc2UgaWYgKG1fb3JpZW50VHlwZS52YWx1ZSA9PSBT
VkdfTUFSS0VSX09SSUVOVF9BTkdMRSkKKyAgICBlbHNlIGlmIChtX29yaWVudFR5cGUudmFsdWUg
PT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCiAgICAgICAgIHZhbHVlID0gb3JpZW50QW5nbGUoKS52
YWx1ZUFzU3RyaW5nKCk7CiAKICAgICBTVkdBbmltYXRlZFByb3BlcnR5U3luY2hyb25pemVyPHRy
dWU+OjpzeW5jaHJvbml6ZSh0aGlzLCBTVkdOYW1lczo6b3JpZW50QXR0ciwgdmFsdWUpOwogfQog
Ci1QYXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFy
a2VyRWxlbWVudDo6U1ZHTWFya2VyT3JpZW50VHlwZT4gPiBTVkdNYXJrZXJFbGVtZW50Ojpvcmll
bnRUeXBlQW5pbWF0ZWQoKQorUGFzc1JlZlB0cjxTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVy
dHlUZWFyT2ZmPFNWR01hcmtlck9yaWVudFR5cGU+ID4gU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50
VHlwZUFuaW1hdGVkKCkKIHsKICAgICBtX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUgPSB0
cnVlOwogICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBw
ZXI8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxTVkdNYXJrZXJPcmllbnRU
eXBlPiwgU1ZHTWFya2VyT3JpZW50VHlwZT4odGhpcywgU1ZHTmFtZXM6Om9yaWVudEF0dHIsIG9y
aWVudFR5cGVJZGVudGlmaWVyKCksIG1fb3JpZW50VHlwZS52YWx1ZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDkwNDU0KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjEgKzM1
LDgxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBTVkdNYXJrZXJVbml0c1R5cGUg
eworICAgIFNWR01hcmtlclVuaXRzVW5rbm93biA9IDAsCisgICAgU1ZHTWFya2VyVW5pdHNVc2Vy
U3BhY2VPblVzZSwKKyAgICBTVkdNYXJrZXJVbml0c1N0cm9rZVdpZHRoCit9OworCitlbnVtIFNW
R01hcmtlck9yaWVudFR5cGUgeworICAgIFNWR01hcmtlck9yaWVudFVua25vd24gPSAwLAorICAg
IFNWR01hcmtlck9yaWVudEF1dG8sCisgICAgU1ZHTWFya2VyT3JpZW50QW5nbGUKK307CisKK3Rl
bXBsYXRlPD4KK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJVbml0c1R5cGU+IHsK
KyAgICBzdGF0aWMgU1ZHTWFya2VyVW5pdHNUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVy
biBTVkdNYXJrZXJVbml0c1N0cm9rZVdpZHRoOyB9CisKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKFNWR01hcmtlclVuaXRzVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgICAgIGNhc2UgU1ZHTWFya2VyVW5pdHNVbmtub3duOgorICAgICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgICAgIGNhc2UgU1ZHTWFya2VyVW5pdHNVc2VyU3BhY2VP
blVzZToKKyAgICAgICAgICAgIHJldHVybiAidXNlclNwYWNlT25Vc2UiOworICAgICAgICBjYXNl
IFNWR01hcmtlclVuaXRzU3Ryb2tlV2lkdGg6CisgICAgICAgICAgICByZXR1cm4gInN0cm9rZVdp
ZHRoIjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU1ZHTWFya2VyVW5p
dHNUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlm
ICh2YWx1ZSA9PSAidXNlclNwYWNlT25Vc2UiKQorICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtl
clVuaXRzVXNlclNwYWNlT25Vc2U7CisgICAgICAgIGlmICh2YWx1ZSA9PSAic3Ryb2tlV2lkdGgi
KQorICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtlclVuaXRzU3Ryb2tlV2lkdGg7CisgICAgICAg
IHJldHVybiBTVkdNYXJrZXJVbml0c1Vua25vd247CisgICAgfQorfTsKKwordGVtcGxhdGU8Pgor
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+IHsKKyAgICBzdGF0
aWMgU1ZHTWFya2VyT3JpZW50VHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHTWFy
a2VyT3JpZW50QW5nbGU7IH0KKworICAgIC8vIHRvU3RyaW5nIGlzIG5vdCBuZWVkZWQsIHN5bmNo
cm9uaXplT3JpZW50VHlwZSgpIGhhbmRsZXMgdGhpcyBvbiBpdHMgb3duLgorCisgICAgc3RhdGlj
IFNWR01hcmtlck9yaWVudFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBTVkdB
bmdsZSYgYW5nbGUpCisgICAgeworICAgICAgICBpZiAodmFsdWUgPT0gImF1dG8iKQorICAgICAg
ICAgICAgcmV0dXJuIFNWR01hcmtlck9yaWVudEF1dG87CisKKyAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgICAgIGFuZ2xlLnNldFZhbHVlQXNTdHJpbmcodmFsdWUsIGVjKTsKKyAg
ICAgICAgaWYgKCFlYykKKyAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBbmdsZTsK
KyAgICAgICAgcmV0dXJuIFNWR01hcmtlck9yaWVudFVua25vd247CisgICAgfQorfTsKKwogY2xh
c3MgU1ZHTWFya2VyRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR0ZpdFRvVmlld0JveCB7CiBwdWJsaWM6Ci0gICAgZW51bSBT
VkdNYXJrZXJVbml0c1R5cGUgewotICAgICAgICBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiAgICAg
ICAgICAgPSAwLAotICAgICAgICBTVkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0UgICAgPSAx
LAotICAgICAgICBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEggICAgICAgPSAyCisgICAgZW51
bSB7CisgICAgICAgIFNWR19NQVJLRVJVTklUU19VTktOT1dOID0gU1ZHTWFya2VyVW5pdHNVbmtu
b3duLAorICAgICAgICBTVkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0UgPSBTVkdNYXJrZXJV
bml0c1VzZXJTcGFjZU9uVXNlLAorICAgICAgICBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEgg
PSBTVkdNYXJrZXJVbml0c1N0cm9rZVdpZHRoCiAgICAgfTsKIAotICAgIGVudW0gU1ZHTWFya2Vy
T3JpZW50VHlwZSB7Ci0gICAgICAgIFNWR19NQVJLRVJfT1JJRU5UX1VOS05PV04gICAgPSAwLAot
ICAgICAgICBTVkdfTUFSS0VSX09SSUVOVF9BVVRPICAgICAgID0gMSwKLSAgICAgICAgU1ZHX01B
UktFUl9PUklFTlRfQU5HTEUgICAgICA9IDIKKyAgICBlbnVtIHsKKyAgICAgICAgU1ZHX01BUktF
Ul9PUklFTlRfVU5LTk9XTiA9IFNWR01hcmtlck9yaWVudFVua25vd24sCisgICAgICAgIFNWR19N
QVJLRVJfT1JJRU5UX0FVVE8gPSBTVkdNYXJrZXJPcmllbnRBdXRvLAorICAgICAgICBTVkdfTUFS
S0VSX09SSUVOVF9BTkdMRSA9IFNWR01hcmtlck9yaWVudEFuZ2xlCiAgICAgfTsKIAogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNWR01hcmtlckVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKQEAgLTEwNyw1NCArMTY3LDYgQEAgcHJpdmF0ZToKICAgICBtdXRh
YmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdNYXJrZXJPcmllbnRUeXBl
PiBtX29yaWVudFR5cGU7CiB9OwogCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyVW5pdHNUeXBlPiB7Ci0gICAgc3RhdGljIFNW
R01hcmtlckVsZW1lbnQ6OlNWR01hcmtlclVuaXRzVHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyBy
ZXR1cm4gU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIOyB9Ci0K
LSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlclVu
aXRzVHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNh
c2UgU1ZHTWFya2VyRWxlbWVudDo6U1ZHX01BUktFUlVOSVRTX1VOS05PV046Ci0gICAgICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAgICAgY2FzZSBTVkdNYXJrZXJFbGVtZW50OjpT
VkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0U6Ci0gICAgICAgICAgICByZXR1cm4gInVzZXJT
cGFjZU9uVXNlIjsKLSAgICAgICAgY2FzZSBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSVU5J
VFNfU1RST0tFV0lEVEg6Ci0gICAgICAgICAgICByZXR1cm4gInN0cm9rZVdpZHRoIjsKLSAgICAg
ICAgfQotCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFy
a2VyVW5pdHNUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICB7Ci0gICAg
ICAgIGlmICh2YWx1ZSA9PSAidXNlclNwYWNlT25Vc2UiKQotICAgICAgICAgICAgcmV0dXJuIFNW
R01hcmtlckVsZW1lbnQ6OlNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRTsKLSAgICAgICAg
aWYgKHZhbHVlID09ICJzdHJva2VXaWR0aCIpCi0gICAgICAgICAgICByZXR1cm4gU1ZHTWFya2Vy
RWxlbWVudDo6U1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIOwotICAgICAgICByZXR1cm4gU1ZH
TWFya2VyRWxlbWVudDo6U1ZHX01BUktFUlVOSVRTX1VOS05PV047Ci0gICAgfQotfTsKLQotdGVt
cGxhdGU8Pgotc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlckVsZW1lbnQ6OlNWR01h
cmtlck9yaWVudFR5cGU+IHsKLSAgICBzdGF0aWMgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2Vy
T3JpZW50VHlwZSBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gU1ZHTWFya2VyRWxlbWVudDo6
U1ZHX01BUktFUl9PUklFTlRfQU5HTEU7IH0KLQotICAgIC8vIHRvU3RyaW5nIGlzIG5vdCBuZWVk
ZWQsIHN5bmNocm9uaXplT3JpZW50VHlwZSgpIGhhbmRsZXMgdGhpcyBvbiBpdHMgb3duLgotCi0g
ICAgc3RhdGljIFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlck9yaWVudFR5cGUgZnJvbVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHZhbHVlLCBTVkdBbmdsZSYgYW5nbGUpCi0gICAgewotICAgICAgICBp
ZiAodmFsdWUgPT0gImF1dG8iKQotICAgICAgICAgICAgcmV0dXJuIFNWR01hcmtlckVsZW1lbnQ6
OlNWR19NQVJLRVJfT1JJRU5UX0FVVE87Ci0KLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgICAgIGFuZ2xlLnNldFZhbHVlQXNTdHJpbmcodmFsdWUsIGVjKTsKLSAgICAgICAgaWYg
KCFlYykKLSAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJFbGVtZW50OjpTVkdfTUFSS0VSX09S
SUVOVF9BTkdMRTsKLSAgICAgICAgcmV0dXJuIFNWR01hcmtlckVsZW1lbnQ6OlNWR19NQVJLRVJf
T1JJRU5UX1VOS05PV047Ci0gICAgfQotfTsKLQogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiA5MDQ1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSwxNCArMzksMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKLURFRklORV9BTklNQVRFRF9FTlVNRVJBVElPTihT
VkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLCBMZW5ndGhB
ZGp1c3QsIGxlbmd0aEFkanVzdCwgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdMZW5ndGhBZGp1
c3RUeXBlKQorREVGSU5FX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNWR1RleHRDb250ZW50RWxlbWVu
dCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIExlbmd0aEFkanVzdCwgbGVuZ3RoQWRqdXN0
LCBTVkdMZW5ndGhBZGp1c3RUeXBlKQogREVGSU5FX0FOSU1BVEVEX0JPT0xFQU4oU1ZHVGV4dENv
bnRlbnRFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKIFNW
R1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3NwZWNpZmllZFRleHRMZW5ndGgoTGVuZ3Ro
TW9kZU90aGVyKQogICAgICwgbV90ZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcikKLSAgICAsIG1f
bGVuZ3RoQWRqdXN0KExFTkdUSEFESlVTVF9TUEFDSU5HKQorICAgICwgbV9sZW5ndGhBZGp1c3Qo
U1ZHTGVuZ3RoQWRqdXN0U3BhY2luZykKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE1
ICszMiw1MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gU1ZHTGVuZ3RoQWRqdXN0
VHlwZSB7CisgICAgU1ZHTGVuZ3RoQWRqdXN0VW5rbm93biwKKyAgICBTVkdMZW5ndGhBZGp1c3RT
cGFjaW5nLAorICAgIFNWR0xlbmd0aEFkanVzdFNwYWNpbmdBbmRHbHlwaHMKK307CisKK3RlbXBs
YXRlPD4KK3N0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhBZGp1c3RUeXBlPiB7Cisg
ICAgc3RhdGljIFNWR0xlbmd0aEFkanVzdFR5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJu
IFNWR0xlbmd0aEFkanVzdFNwYWNpbmdBbmRHbHlwaHM7IH0KKworICAgIHN0YXRpYyBTdHJpbmcg
dG9TdHJpbmcoU1ZHTGVuZ3RoQWRqdXN0VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgICAgIGNhc2UgU1ZHTGVuZ3RoQWRqdXN0VW5rbm93bjoKKyAgICAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgICAgICBjYXNlIFNWR0xlbmd0aEFkanVzdFNw
YWNpbmc6CisgICAgICAgICAgICByZXR1cm4gInNwYWNpbmciOworICAgICAgICBjYXNlIFNWR0xl
bmd0aEFkanVzdFNwYWNpbmdBbmRHbHlwaHM6CisgICAgICAgICAgICByZXR1cm4gInNwYWNpbmdB
bmRHbHlwaHMiOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIH0KKworICAgIHN0YXRpYyBTVkdMZW5n
dGhBZGp1c3RUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIGlmICh2YWx1ZSA9PSAic3BhY2luZ0FuZEdseXBocyIpCisgICAgICAgICAgICByZXR1cm4g
U1ZHTGVuZ3RoQWRqdXN0U3BhY2luZ0FuZEdseXBoczsKKyAgICAgICAgaWYgKHZhbHVlID09ICJz
cGFjaW5nIikKKyAgICAgICAgICAgIHJldHVybiBTVkdMZW5ndGhBZGp1c3RTcGFjaW5nOworICAg
ICAgICByZXR1cm4gU1ZHTGVuZ3RoQWRqdXN0VW5rbm93bjsKKyAgICB9Cit9OworCiBjbGFzcyBT
VkdUZXh0Q29udGVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiBwdWJsaWM6Ci0g
ICAgZW51bSBTVkdMZW5ndGhBZGp1c3RUeXBlIHsKLSAgICAgICAgTEVOR1RIQURKVVNUX1VOS05P
V04gICAgICAgICAgICA9IDAsCi0gICAgICAgIExFTkdUSEFESlVTVF9TUEFDSU5HICAgICAgICAg
ICAgPSAxLAotICAgICAgICBMRU5HVEhBREpVU1RfU1BBQ0lOR0FOREdMWVBIUyAgID0gMgorICAg
IC8vIEZvcndhcmQgZGVjbGFyZSB0aGVzZSBlbnVtcyBpbiB0aGUgdzNjIG5hbWluZyBzY2hlbWUs
IGZvciBJREwgZ2VuZXJhdGlvbgorICAgIGVudW0geworICAgICAgICBMRU5HVEhBREpVU1RfVU5L
Tk9XTiA9IFNWR0xlbmd0aEFkanVzdFVua25vd24sCisgICAgICAgIExFTkdUSEFESlVTVF9TUEFD
SU5HID0gU1ZHTGVuZ3RoQWRqdXN0U3BhY2luZywKKyAgICAgICAgTEVOR1RIQURKVVNUX1NQQUNJ
TkdBTkRHTFlQSFMgPSBTVkdMZW5ndGhBZGp1c3RTcGFjaW5nQW5kR2x5cGhzCiAgICAgfTsKIAog
ICAgIHVuc2lnbmVkIGdldE51bWJlck9mQ2hhcnMoKSBjb25zdDsKQEAgLTg3LDM1ICsxMjMsNiBA
QCBwcml2YXRlOgogICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKSAKIH07CiAKLXRlbXBsYXRlPD4K
LXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR0xlbmd0
aEFkanVzdFR5cGU+IHsKLSAgICBzdGF0aWMgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdMZW5n
dGhBZGp1c3RUeXBlIGhpZ2hlc3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OkxFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTOyB9Ci0KLSAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHTGVuZ3RoQWRqdXN0VHlwZSB0
eXBlKQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgU1ZHVGV4
dENvbnRlbnRFbGVtZW50OjpMRU5HVEhBREpVU1RfVU5LTk9XTjoKLSAgICAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgICAgICBjYXNlIFNWR1RleHRDb250ZW50RWxlbWVudDo6TEVO
R1RIQURKVVNUX1NQQUNJTkc6Ci0gICAgICAgICAgICByZXR1cm4gInNwYWNpbmciOwotICAgICAg
ICBjYXNlIFNWR1RleHRDb250ZW50RWxlbWVudDo6TEVOR1RIQURKVVNUX1NQQUNJTkdBTkRHTFlQ
SFM6Ci0gICAgICAgICAgICByZXR1cm4gInNwYWNpbmdBbmRHbHlwaHMiOwotICAgICAgICB9Ci0K
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwotICAgIH0KLQotICAgIHN0YXRpYyBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR0xlbmd0
aEFkanVzdFR5cGUgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQotICAgIHsKLSAgICAg
ICAgaWYgKHZhbHVlID09ICJzcGFjaW5nQW5kR2x5cGhzIikKLSAgICAgICAgICAgIHJldHVybiBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTOwotICAg
ICAgICBpZiAodmFsdWUgPT0gInNwYWNpbmciKQotICAgICAgICAgICAgcmV0dXJuIFNWR1RleHRD
b250ZW50RWxlbWVudDo6TEVOR1RIQURKVVNUX1NQQUNJTkc7Ci0gICAgICAgIHJldHVybiBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OkxFTkdUSEFESlVTVF9VTktOT1dOOwotICAgIH0KLX07Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gOTA0NTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAsOCArNDAsOCBAQCBERUZJTkVfQU5JTUFURURfU1RSSU5HKFNWR1RleHRQYXRoRWxl
bWVuCiBpbmxpbmUgU1ZHVGV4dFBhdGhFbGVtZW50OjpTVkdUZXh0UGF0aEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHVGV4
dENvbnRlbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9zdGFydE9mZnNldChM
ZW5ndGhNb2RlT3RoZXIpCi0gICAgLCBtX21ldGhvZChTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9B
TElHTikKLSAgICAsIG1fc3BhY2luZyhTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1QpCisg
ICAgLCBtX21ldGhvZChTVkdUZXh0UGF0aE1ldGhvZEFsaWduKQorICAgICwgbV9zcGFjaW5nKFNW
R1RleHRQYXRoU3BhY2luZ0V4YWN0KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVz
Ojp0ZXh0UGF0aFRhZykpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuaAkocmV2aXNpb24gOTA0NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE1ICsyOCwxNSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBlbnVtIFNWR1RleHRQYXRoTWV0aG9kVHlwZSB7Ci0gICAgU1ZHX1RFWFRQ
QVRIX01FVEhPRFRZUEVfVU5LTk9XTiA9IDAsCi0gICAgU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVf
QUxJR04gPSAxLAotICAgIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0ggPSAyCisgICAg
U1ZHVGV4dFBhdGhNZXRob2RVbmtub3duID0gMCwKKyAgICBTVkdUZXh0UGF0aE1ldGhvZEFsaWdu
LAorICAgIFNWR1RleHRQYXRoTWV0aG9kU3RyZXRjaAogfTsKIAogZW51bSBTVkdUZXh0UGF0aFNw
YWNpbmdUeXBlIHsKLSAgICBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTiA9IDAsCi0g
ICAgU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE8gPSAxLAotICAgIFNWR19URVhUUEFUSF9T
UEFDSU5HVFlQRV9FWEFDVCA9IDIKKyAgICBTVkdUZXh0UGF0aFNwYWNpbmdVbmtub3duID0gMCwK
KyAgICBTVkdUZXh0UGF0aFNwYWNpbmdBdXRvLAorICAgIFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0
CiB9OwogCiBjbGFzcyBTVkdUZXh0UGF0aEVsZW1lbnQgOiBwdWJsaWMgU1ZHVGV4dENvbnRlbnRF
bGVtZW50LApAQCAtNDQsMTIgKzQ0LDEyIEBAIGNsYXNzIFNWR1RleHRQYXRoRWxlbWVudCA6IHB1
YmxpYyBTVkdUZXgKIHB1YmxpYzoKICAgICAvLyBGb3J3YXJkIGRlY2xhcmUgdGhlc2UgZW51bXMg
aW4gdGhlIHczYyBuYW1pbmcgc2NoZW1lLCBmb3IgSURMIGdlbmVyYXRpb24KICAgICBlbnVtIHsK
LSAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOID0gU1ZHX1RFWFRQQVRIX01FVEhP
RFRZUEVfVU5LTk9XTiwKLSAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiA9IFNWR19U
RVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOLAotICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX1NU
UkVUQ0ggPSBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENILAotICAgICAgICBURVhUUEFU
SF9TUEFDSU5HVFlQRV9VTktOT1dOID0gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04s
Ci0gICAgICAgIFRFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE8gPSBTVkdfVEVYVFBBVEhfU1BBQ0lO
R1RZUEVfQVVUTywKLSAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1QgPSBTVkdfVEVY
VFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1QKKyAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktO
T1dOID0gU1ZHVGV4dFBhdGhNZXRob2RVbmtub3duLAorICAgICAgICBURVhUUEFUSF9NRVRIT0RU
WVBFX0FMSUdOID0gU1ZHVGV4dFBhdGhNZXRob2RBbGlnbiwKKyAgICAgICAgVEVYVFBBVEhfTUVU
SE9EVFlQRV9TVFJFVENIID0gU1ZHVGV4dFBhdGhNZXRob2RTdHJldGNoLAorICAgICAgICBURVhU
UEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOID0gU1ZHVGV4dFBhdGhTcGFjaW5nVW5rbm93biwKKyAg
ICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUTyA9IFNWR1RleHRQYXRoU3BhY2luZ0F1dG8s
CisgICAgICAgIFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUID0gU1ZHVGV4dFBhdGhTcGFjaW5n
RXhhY3QKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHVGV4dFBhdGhFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC04MywxNiArODMs
MTYgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNW
R1RleHRQYXRoTWV0aG9kVHlwZT4gewotICAgIHN0YXRpYyBTVkdUZXh0UGF0aE1ldGhvZFR5cGUg
aGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVU
Q0g7IH0KKyAgICBzdGF0aWMgU1ZHVGV4dFBhdGhNZXRob2RUeXBlIGhpZ2hlc3RFbnVtVmFsdWUo
KSB7IHJldHVybiBTVkdUZXh0UGF0aE1ldGhvZFN0cmV0Y2g7IH0KIAogICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoU1ZHVGV4dFBhdGhNZXRob2RUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktO
T1dOOgorICAgICAgICBjYXNlIFNWR1RleHRQYXRoTWV0aG9kVW5rbm93bjoKICAgICAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwotICAgICAgICBjYXNlIFNWR19URVhUUEFUSF9NRVRIT0RU
WVBFX0FMSUdOOgorICAgICAgICBjYXNlIFNWR1RleHRQYXRoTWV0aG9kQWxpZ246CiAgICAgICAg
ICAgICByZXR1cm4gImFsaWduIjsKLSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQ
RV9TVFJFVENIOgorICAgICAgICBjYXNlIFNWR1RleHRQYXRoTWV0aG9kU3RyZXRjaDoKICAgICAg
ICAgICAgIHJldHVybiAic3RyZXRjaCI7CiAgICAgICAgIH0KICAgICAKQEAgLTEwMywyNSArMTAz
LDI1IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aE1ldGgKICAgICBzdGF0
aWMgU1ZHVGV4dFBhdGhNZXRob2RUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAiYWxpZ24iKQotICAgICAgICAgICAgcmV0dXJu
IFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX0FMSUdOOworICAgICAgICAgICAgcmV0dXJuIFNWR1Rl
eHRQYXRoTWV0aG9kQWxpZ247CiAgICAgICAgIGlmICh2YWx1ZSA9PSAic3RyZXRjaCIpCi0gICAg
ICAgICAgICByZXR1cm4gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSDsKLSAgICAgICAg
cmV0dXJuIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV047CisgICAgICAgICAgICByZXR1
cm4gU1ZHVGV4dFBhdGhNZXRob2RTdHJldGNoOworICAgICAgICByZXR1cm4gU1ZHVGV4dFBhdGhN
ZXRob2RVbmtub3duOwogICAgIH0KIH07CiAKIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdUZXh0UGF0aFNwYWNpbmdUeXBlPiB7Ci0gICAgc3RhdGljIFNWR1RleHRQYXRo
U3BhY2luZ1R5cGUgaGlnaGVzdEVudW1WYWx1ZSgpIHsgcmV0dXJuIFNWR19URVhUUEFUSF9TUEFD
SU5HVFlQRV9FWEFDVDsgfQorICAgIHN0YXRpYyBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIGhpZ2hl
c3RFbnVtVmFsdWUoKSB7IHJldHVybiBTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdDsgfQogCiAgICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZyhTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIHR5cGUpCiAgICAg
ewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdfVEVYVFBBVEhfU1BB
Q0lOR1RZUEVfVU5LTk9XTjoKKyAgICAgICAgY2FzZSBTVkdUZXh0UGF0aFNwYWNpbmdVbmtub3du
OgogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgICAgIGNhc2UgU1ZHX1RF
WFRQQVRIX1NQQUNJTkdUWVBFX0FVVE86CisgICAgICAgIGNhc2UgU1ZHVGV4dFBhdGhTcGFjaW5n
QXV0bzoKICAgICAgICAgICAgIHJldHVybiAiYXV0byI7Ci0gICAgICAgIGNhc2UgU1ZHX1RFWFRQ
QVRIX1NQQUNJTkdUWVBFX0VYQUNUOgorICAgICAgICBjYXNlIFNWR1RleHRQYXRoU3BhY2luZ0V4
YWN0OgogICAgICAgICAgICAgcmV0dXJuICJleGFjdCI7CiAgICAgICAgIH0KIApAQCAtMTMyLDEw
ICsxMzIsMTAgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoU3BhYwogICAg
IHN0YXRpYyBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAiYXV0byIpCi0gICAgICAgICAgICBy
ZXR1cm4gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE87CisgICAgICAgICAgICByZXR1cm4g
U1ZHVGV4dFBhdGhTcGFjaW5nQXV0bzsKICAgICAgICAgaWYgKHZhbHVlID09ICJleGFjdCIpCi0g
ICAgICAgICAgICByZXR1cm4gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUOwotICAgICAg
ICByZXR1cm4gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV047CisgICAgICAgICAgICBy
ZXR1cm4gU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3Q7CisgICAgICAgIHJldHVybiBTVkdUZXh0UGF0
aFNwYWNpbmdVbmtub3duOwogICAgIH0KIH07CiAK
</data>
<flag name="review"
          id="94560"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>