<?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>63645</bug_id>
          
          <creation_ts>2011-06-29 12:17:32 -0700</creation_ts>
          <short_desc>Switch paint to new layout types</short_desc>
          <delta_ts>2011-06-29 14:33:30 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>429778</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-29 12:17:32 -0700</bug_when>
    <thetext>Converting the vanilla paint method to the new layout types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429787</commentid>
    <comment_count>1</comment_count>
      <attachid>99127</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-29 12:24:58 -0700</bug_when>
    <thetext>Created attachment 99127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429814</commentid>
    <comment_count>2</comment_count>
      <attachid>99127</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-29 13:12:49 -0700</bug_when>
    <thetext>Comment on attachment 99127
Patch

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

LGTM.

&gt; Source/WebCore/rendering/svg/RenderSVGText.h:55
&gt; +    virtual void paint(PaintInfo&amp;, const LayoutPoint&amp;);

What does the point mean in this call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429848</commentid>
    <comment_count>3</comment_count>
      <attachid>99127</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-06-29 13:50:51 -0700</bug_when>
    <thetext>Comment on attachment 99127
Patch

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

Thanks for the review!

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGText.h:55
&gt;&gt; +    virtual void paint(PaintInfo&amp;, const LayoutPoint&amp;);
&gt; 
&gt; What does the point mean in this call?

In SVG it means essentially nothing, but exists only to keep the signature consistent. Only RenderSVGRoot uses it to set up the paint context :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429851</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-29 13:53:27 -0700</bug_when>
    <thetext>I meant in general.  All of those paint() calls could use some documentation of what LayoutPoint means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429889</commentid>
    <comment_count>5</comment_count>
      <attachid>99127</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-29 14:33:25 -0700</bug_when>
    <thetext>Comment on attachment 99127
Patch

Clearing flags on attachment: 99127

Committed r90048: &lt;http://trac.webkit.org/changeset/90048&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429890</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-29 14:33:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99127</attachid>
            <date>2011-06-29 12:24:58 -0700</date>
            <delta_ts>2011-06-29 14:33:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63645-20110629122457.patch</filename>
            <type>text/plain</type>
            <size>49053</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMDMzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODUgQEAKKzIwMTEtMDYtMjkgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBwYWludCB0byBuZXcgbGF5b3V0IHR5cGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY0NQorCisg
ICAgICAgIFN3aXRjaCB2YW5pbGxhIHBhaW50IGZ1bmN0aW9uIG92ZXIgdG8gdGhlIG5ldyBsYXlv
dXQgdW5pdCBhYnN0cmFjdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9u
YWxpdHkgY2hhbmdlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGcmFtZVNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMaXN0SXRlbTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
aXN0SXRlbS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclJlcGxpY2EuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OnBhaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJl
Um9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdQYXRoLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnBhaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuaDoKKwogMjAxMS0wNi0yOSAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDg5OTgzKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjI2Miw5ICsyMjYyLDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVwYWludE92ZXJoYW5naW5nRmxv
YQogICAgIH0KIH0KICAKLXZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJlbmRlckJsb2NrOjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewotICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0
aW9uKCk7CisgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50T2Zmc2V0
ICsgbG9jYXRpb24oKTsKICAgICAKICAgICBQYWludFBoYXNlIHBoYXNlID0gcGFpbnRJbmZvLnBo
YXNlOwogCkBAIC0yMjcyLDcgKzIyNzIsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludChQYWlu
dEluZm8mIHBhaW50CiAgICAgLy8gRklYTUU6IENvdWxkIGVsaW1pbmF0ZSB0aGUgaXNSb290KCkg
Y2hlY2sgaWYgd2UgZml4IGJhY2tncm91bmQgcGFpbnRpbmcgc28gdGhhdCB0aGUgUmVuZGVyVmll
dwogICAgIC8vIHBhaW50cyB0aGUgcm9vdCdzIGJhY2tncm91bmQuCiAgICAgaWYgKCFpc1Jvb3Qo
KSkgewotICAgICAgICBJbnRSZWN0IG92ZXJmbG93Qm94ID0gdmlzdWFsT3ZlcmZsb3dSZWN0KCk7
CisgICAgICAgIExheW91dFJlY3Qgb3ZlcmZsb3dCb3ggPSB2aXN1YWxPdmVyZmxvd1JlY3QoKTsK
ICAgICAgICAgZmxpcEZvcldyaXRpbmdNb2RlKG92ZXJmbG93Qm94KTsKICAgICAgICAgb3ZlcmZs
b3dCb3guaW5mbGF0ZShtYXhpbWFsT3V0bGluZVNpemUocGFpbnRJbmZvLnBoYXNlKSk7CiAgICAg
ICAgIG92ZXJmbG93Qm94Lm1vdmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiA4OTk4MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIs
NyArMjkyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0
cyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T2JqZWN0KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICBpbnQgbG9naWNhbFJpZ2h0T2Zm
c2V0Rm9yTGluZShpbnQgcG9zaXRpb24sIGludCBmaXhlZE9mZnNldCwgYm9vbCBhcHBseVRleHRJ
bmRlbnQgPSB0cnVlLCBpbnQqIGxvZ2ljYWxIZWlnaHRSZW1haW5pbmcgPSAwKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA4OTk4MikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NzEsOSArNzcxLDkgQEAgYm9vbCBSZW5kZXJCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhp
dFRlcwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gcGFpbnRpbmcgc3R1ZmYgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFJlbmRlckJveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyQm94
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewotICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCAr
IGxvY2F0aW9uKCk7CisgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50
T2Zmc2V0ICsgbG9jYXRpb24oKTsKICAgICAvLyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLiBKdXN0
IHBhc3MgcGFpbnQgdGhyb3VnaCB0byB0aGUgY2hpbGRyZW4KICAgICBQYWludEluZm8gY2hpbGRJ
bmZvKHBhaW50SW5mbyk7CiAgICAgY2hpbGRJbmZvLnVwZGF0ZVBhaW50aW5nUm9vdEZvckNoaWxk
cmVuKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNp
b24gODk5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCByZWZsZWN0
ZWRSZWN0KGNvbnN0IEludFJlY3QmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsK
ICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IEludFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFp
bHNNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXRhaWxzTWFya2VyLmNwcAkocmV2aXNpb24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwx
NSArMTIwLDE1IEBAIFBhdGggUmVuZGVyRGV0YWlsc01hcmtlcjo6Z2V0UGF0aChjb25zdCAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQpCit2b2lkIFJl
bmRlckRldGFpbHNNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkgewog
ICAgICAgICBSZW5kZXJCbG9jazo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBJbnRQb2ludCBib3hPcmlnaW4ocGFpbnRPZmZzZXQg
KyBsb2NhdGlvbigpKTsKLSAgICBJbnRSZWN0IG92ZXJmbG93UmVjdCh2aXN1YWxPdmVyZmxvd1Jl
Y3QoKSk7CisgICAgTGF5b3V0UG9pbnQgYm94T3JpZ2luKHBhaW50T2Zmc2V0ICsgbG9jYXRpb24o
KSk7CisgICAgTGF5b3V0UmVjdCBvdmVyZmxvd1JlY3QodmlzdWFsT3ZlcmZsb3dSZWN0KCkpOwog
ICAgIG92ZXJmbG93UmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKICAgICBvdmVyZmxvd1JlY3QuaW5m
bGF0ZShtYXhpbWFsT3V0bGluZVNpemUocGFpbnRJbmZvLnBoYXNlKSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAkocmV2aXNpb24g
ODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlckRl
dGFpbHNNYXJrZXIiOyB9CiAgICAgdmlydHVhbCBib29sIGlzRGV0YWlsc01hcmtlcigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKTsKIAogICAgIGJvb2wgaXNPcGVuKCkgY29uc3Q7CiAgICAgUGF0aCBnZXRD
YW5vbmljYWxQYXRoKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDg5OTgzKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnNldE1pc3Np
bmdQbHUKICAgICByZXBhaW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQpCit2
b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGlmIChwbHVnaW5DcmFzaGVkT3JX
YXNNaXNzaW5nKCkpIHsKICAgICAgICAgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KHBhaW50SW5mbywg
cGFpbnRPZmZzZXQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmgJKHJldmlzaW9uIDg5OTgzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNFbWJlZGRlZE9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkocmV2aXNpb24gODk5ODIp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dC
b3JkZXIoY29ucwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVy
RnJhbWVTZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9y
ZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI3LDIwICsxMjcsMjAgQEAgdm9pZCBSZW5k
ZXJGcmFtZVNldDo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAgIGlmICghY2hpbGQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNl
dCArIGxvY2F0aW9uKCk7CisgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBh
aW50T2Zmc2V0ICsgbG9jYXRpb24oKTsKIAogICAgIGludCByb3dzID0gZnJhbWVTZXQoKS0+dG90
YWxSb3dzKCk7CiAgICAgaW50IGNvbHMgPSBmcmFtZVNldCgpLT50b3RhbENvbHMoKTsKLSAgICBp
bnQgYm9yZGVyVGhpY2tuZXNzID0gZnJhbWVTZXQoKS0+Ym9yZGVyKCk7CisgICAgTGF5b3V0VW5p
dCBib3JkZXJUaGlja25lc3MgPSBmcmFtZVNldCgpLT5ib3JkZXIoKTsKICAgICAKLSAgICBpbnQg
eVBvcyA9IDA7CisgICAgTGF5b3V0VW5pdCB5UG9zID0gMDsKICAgICBmb3IgKGludCByID0gMDsg
ciA8IHJvd3M7IHIrKykgewotICAgICAgICBpbnQgeFBvcyA9IDA7CisgICAgICAgIExheW91dFVu
aXQgeFBvcyA9IDA7CiAgICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgY29sczsgYysrKSB7CiAg
ICAgICAgICAgICBjaGlsZC0+cGFpbnQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsK
ICAgICAgICAgICAgIHhQb3MgKz0gbV9jb2xzLm1fc2l6ZXNbY107CiAgICAgICAgICAgICBpZiAo
Ym9yZGVyVGhpY2tuZXNzICYmIG1fY29scy5tX2FsbG93Qm9yZGVyW2MgKyAxXSkgewotICAgICAg
ICAgICAgICAgIHBhaW50Q29sdW1uQm9yZGVyKHBhaW50SW5mbywgSW50UmVjdChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIHhQb3MsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgeVBvcywgYm9y
ZGVyVGhpY2tuZXNzLCBoZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIHBhaW50Q29sdW1uQm9y
ZGVyKHBhaW50SW5mbywgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHhQb3Ms
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgeVBvcywgYm9yZGVyVGhpY2tuZXNzLCBoZWlnaHQo
KSkpOwogICAgICAgICAgICAgICAgIHhQb3MgKz0gYm9yZGVyVGhpY2tuZXNzOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKQEAgLTE0OSw3
ICsxNDksNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpwYWludChQYWludEluZm8mIHBhCiAgICAg
ICAgIH0KICAgICAgICAgeVBvcyArPSBtX3Jvd3MubV9zaXplc1tyXTsKICAgICAgICAgaWYgKGJv
cmRlclRoaWNrbmVzcyAmJiBtX3Jvd3MubV9hbGxvd0JvcmRlcltyICsgMV0pIHsKLSAgICAgICAg
ICAgIHBhaW50Um93Qm9yZGVyKHBhaW50SW5mbywgSW50UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0
LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB5UG9zLCB3aWR0aCgpLCBib3JkZXJUaGlj
a25lc3MpKTsKKyAgICAgICAgICAgIHBhaW50Um93Qm9yZGVyKHBhaW50SW5mbywgTGF5b3V0UmVj
dChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB5UG9z
LCB3aWR0aCgpLCBib3JkZXJUaGlja25lc3MpKTsKICAgICAgICAgICAgIHlQb3MgKz0gYm9yZGVy
VGhpY2tuZXNzOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lU2V0LmgJKHJldmlzaW9uIDg5OTgyKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIGJv
b2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29u
c3QgSW50UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IEludFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5m
byYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKFJl
bmRlck9iamVjdCosIFJlbmRlclN0eWxlKikgY29uc3Q7CiAKICAgICBpbmxpbmUgSFRNTEZyYW1l
U2V0RWxlbWVudCogZnJhbWVTZXQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gODk5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZgogICAgIH0KIH0KIAot
dm9pZCBSZW5kZXJJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFBv
aW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVySW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgUmVuZGVyUmVw
bGFjZWQ6OnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHJldmlzaW9uIDg5OTgzKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcg
KzU5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBl
ZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgYm9vbCBpc0xv
Z2ljYWxXaWR0aFNwZWNpZmllZCgpIGNvbnN0OwogICAgIGJvb2wgaXNMb2dpY2FsSGVpZ2h0U3Bl
Y2lmaWVkKCkgY29uc3Q7CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
UmVuZGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CiAKICAg
ICB2aXJ0dWFsIGludCBtaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDg5OTgyKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6YWRkQ2hpbGRUb0NvbnRp
bnVhdGlvCiAgICAgfQogfQogCi12b2lkIFJlbmRlcklubGluZTo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVySW5saW5l
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewogICAgIG1fbGluZUJveGVzLnBhaW50KHRoaXMsIHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAkocmV2
aXNpb24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIGxheW91dCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gRG8gbm90aGluZyBm
b3IgbGF5b3V0KCkKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBJ
bnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpOwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEludFBvaW50JiBwb2ludEluQ29udGFpbmVy
LCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaAkocmV2
aXNpb24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXJ0eUxpbmVCb3hlcygpOwogICAgIHZvaWQgZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVu
ZGVyT2JqZWN0KiBwYXJlbnQsIFJlbmRlck9iamVjdCogY2hpbGQpOwogCi0gICAgdm9pZCBwYWlu
dChSZW5kZXJCb3hNb2RlbE9iamVjdCosIFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50JikgY29u
c3Q7CisgICAgdm9pZCBwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCosIFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBoaXRUZXN0KFJlbmRlckJveE1vZGVs
T2JqZWN0KiwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSW50
UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IEludFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCwgSGl0VGVzdEFjdGlvbikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCShyZXZpc2lvbiA4OTk4MikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFJlbmRlckxpc3RJdGVtOjpwb3NpdGlvbkxpc3RN
YXJrZXIoCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxpc3RJdGVtOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJMaXN0
SXRlbTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCkKIHsKICAgICBpZiAoIWxvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgJKHJldmlzaW9u
IDg5OTgyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGVzdHJveSgpOwogCiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAJKHJldmlzaW9uIDg5OTgyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAxLDcgKzExMDEsNyBA
QCBJbnRSZWN0IFJlbmRlckxpc3RNYXJrZXI6OmxvY2FsU2VsZWN0aW9uCiAgICAgcmV0dXJuIElu
dFJlY3QobmV3TG9naWNhbFRvcCwgMCwgcm9vdC0+c2VsZWN0aW9uSGVpZ2h0KCksIGhlaWdodCgp
KTsKIH0KIAotdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJMaXN0TWFya2VyOjpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQogewogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTExMDksMTcgKzExMDksMTcgQEAgdm9pZCBSZW5kZXJMaXN0TWFy
a2VyOjpwYWludChQYWludEluZm8mIAogICAgIGlmIChzdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0g
VklTSUJMRSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UG9pbnQgYm94T3JpZ2luKHBhaW50
T2Zmc2V0ICsgbG9jYXRpb24oKSk7Ci0gICAgSW50UmVjdCBvdmVyZmxvd1JlY3QodmlzdWFsT3Zl
cmZsb3dSZWN0KCkpOworICAgIExheW91dFBvaW50IGJveE9yaWdpbihwYWludE9mZnNldCArIGxv
Y2F0aW9uKCkpOworICAgIExheW91dFJlY3Qgb3ZlcmZsb3dSZWN0KHZpc3VhbE92ZXJmbG93UmVj
dCgpKTsKICAgICBvdmVyZmxvd1JlY3QubW92ZUJ5KGJveE9yaWdpbik7CiAgICAgb3ZlcmZsb3dS
ZWN0LmluZmxhdGUobWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSkpOwogCiAgICAg
aWYgKCFwYWludEluZm8ucmVjdC5pbnRlcnNlY3RzKG92ZXJmbG93UmVjdCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEludFJlY3QgYm94KGJveE9yaWdpbiwgSW50U2l6ZSh3aWR0aCgpLCBoZWln
aHQoKSkpOworICAgIExheW91dFJlY3QgYm94KGJveE9yaWdpbiwgTGF5b3V0U2l6ZSh3aWR0aCgp
LCBoZWlnaHQoKSkpOwogICAgIAotICAgIEludFJlY3QgbWFya2VyID0gZ2V0UmVsYXRpdmVNYXJr
ZXJSZWN0KCk7CisgICAgTGF5b3V0UmVjdCBtYXJrZXIgPSBnZXRSZWxhdGl2ZU1hcmtlclJlY3Qo
KTsKICAgICBtYXJrZXIubW92ZUJ5KGJveE9yaWdpbik7CiAKICAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKQEAgLTExMzEsNyArMTEzMSw3IEBAIHZvaWQg
UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiAKICNlbmRpZgogICAgICAgICBjb250
ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZS0+aW1hZ2UodGhpcywgbWFya2VyLnNpemUoKSkuZ2V0KCks
IHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKICAgICAgICAgaWYgKHNlbGVjdGlvblN0
YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewotICAgICAgICAgICAgSW50UmVjdCBzZWxSZWN0ID0g
bG9jYWxTZWxlY3Rpb25SZWN0KCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IHNlbFJlY3QgPSBs
b2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9yaWdp
bik7CiAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChzZWxSZWN0LCBzZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgfQpAQCAtMTE0
NSw3ICsxMTQ1LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8mIAog
I2VuZGlmCiAKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7Ci0g
ICAgICAgIEludFJlY3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOworICAgICAgICBM
YXlvdXRSZWN0IHNlbFJlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgc2VsUmVj
dC5tb3ZlQnkoYm94T3JpZ2luKTsKICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qoc2VsUmVjdCwg
c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CiAgICAg
fQpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWlu
dEluZm8mIAogICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1hcmtlci54KCksIC1tYXJrZXIu
bWF4WSgpKTsKICAgICB9CiAKLSAgICBJbnRQb2ludCB0ZXh0T3JpZ2luID0gSW50UG9pbnQobWFy
a2VyLngoKSwgbWFya2VyLnkoKSArIHN0eWxlKCktPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpOwor
ICAgIExheW91dFBvaW50IHRleHRPcmlnaW4gPSBMYXlvdXRQb2ludChtYXJrZXIueCgpLCBtYXJr
ZXIueSgpICsgc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7CiAKICAgICBpZiAodHlw
ZSA9PSBBc3Rlcmlza3MgfHwgdHlwZSA9PSBGb290bm90ZXMpCiAgICAgICAgIGNvbnRleHQtPmRy
YXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4pOwpAQCAtMTI4NSwxNCArMTI4NSwxNCBA
QCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgCiAKICAgICAgICAgY29u
c3QgVUNoYXIgc3VmZml4ID0gbGlzdE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLT52YWx1
ZSgpKTsKICAgICAgICAgaWYgKHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewot
ICAgICAgICAgICAgaW50IHdpZHRoID0gZm9udC53aWR0aCh0ZXh0UnVuKTsKKyAgICAgICAgICAg
IExheW91dFVuaXQgd2lkdGggPSBmb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAgICAgY29u
dGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7CiAgICAgICAgICAgICBV
Q2hhciBzdWZmaXhTcGFjZVsyXSA9IHsgc3VmZml4LCAnICcgfTsKICAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZv
bnQsIHN1ZmZpeFNwYWNlLCAyLCBzdHlsZSgpKSwgdGV4dE9yaWdpbiArIEludFNpemUod2lkdGgs
IDApKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFVDaGFyIHNwYWNlU3VmZml4WzJd
ID0geyAnICcsIHN1ZmZpeCB9OwogICAgICAgICAgICAgVGV4dFJ1biBzcGFjZVN1ZmZpeFJ1biA9
IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIHNwYWNlU3VmZml4LCAy
LCBzdHlsZSgpKTsKLSAgICAgICAgICAgIGludCB3aWR0aCA9IGZvbnQud2lkdGgoc3BhY2VTdWZm
aXhSdW4pOworICAgICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aCA9IGZvbnQud2lkdGgoc3BhY2VT
dWZmaXhSdW4pOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgc3BhY2VTdWZm
aXhSdW4sIHRleHRPcmlnaW4pOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwg
dGV4dFJ1biwgdGV4dE9yaWdpbiArIEludFNpemUod2lkdGgsIDApKTsKICAgICAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCShyZXZpc2lv
biA4OTk4MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0xpc3RNYXJrZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAkocmV2aXNpb24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw3ICs1MzEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciosIGNvbnN0IEZpbGxMYXllciop
OwogICAgIHZvaWQgdXBkYXRlSW1hZ2UoU3R5bGVJbWFnZSosIFN0eWxlSW1hZ2UqKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAg
Ly8gUmVjdXJzaXZlIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZXMgdGhlIHNpemUgYW5kIHBvc2l0aW9u
IG9mIHRoaXMgb2JqZWN0IGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzLgogICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcAkocmV2aXNpb24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMiArOTQsMTIgQEAgdm9pZCBS
ZW5kZXJSZXBsYWNlZDo6aW50cmluc2ljU2l6ZUNoYW5nZQogICAgIHNldE5lZWRzTGF5b3V0QW5k
UHJlZldpZHRoc1JlY2FsYygpOwogfQogCi12b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5k
ZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAoIXNob3VsZFBhaW50KHBhaW50SW5mbywgcGFpbnRP
ZmZzZXQpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSW50UG9pbnQgYWRqdXN0ZWRQYWlu
dE9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKTsKKyAgICBMYXlvdXRQb2ludCBhZGp1
c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpOwogICAgIAogICAgIGlm
IChoYXNCb3hEZWNvcmF0aW9ucygpICYmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZv
cmVncm91bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pKSAKICAg
ICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIGFkanVzdGVkUGFpbnRPZmZzZXQp
OwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5m
byYgcGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEludFJlY3QgcGFpbnRSZWN0ID0g
SW50UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpOworICAgIExheW91dFJlY3QgcGFp
bnRSZWN0ID0gTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpOwogICAgIGlm
ICgocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlU2VsZk91dGxpbmUpICYmIHN0eWxlKCktPm91dGxpbmVXaWR0aCgpKQog
ICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCk7CiAgICAg
CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZv
JiBwYQogCiAgICAgYm9vbCBjb21wbGV0ZWx5Q2xpcHBlZE91dCA9IGZhbHNlOwogICAgIGlmIChz
dHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSkgewotICAgICAgICBJbnRSZWN0IGJvcmRlclJlY3Qg
PSBJbnRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSk7CisgICAgICAgIExheW91dFJl
Y3QgYm9yZGVyUmVjdCA9IExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKTsK
IAogICAgICAgICBpZiAoYm9yZGVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb21wbGV0
ZWx5Q2xpcHBlZE91dCA9IHRydWU7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBSZW5kZXJSZXBs
YWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAgIC8vIFRoZSBzZWxlY3Rpb24gdGludCBuZXZl
ciBnZXRzIGNsaXBwZWQgYnkgYm9yZGVyLXJhZGl1cyByb3VuZGluZywgc2luY2Ugd2Ugd2FudCBp
dCB0byBydW4gcmlnaHQgdXAgdG8gdGhlIGVkZ2VzIG9mCiAgICAgLy8gc3Vycm91bmRpbmcgY29u
dGVudC4KICAgICBpZiAoZHJhd1NlbGVjdGlvblRpbnQpIHsKLSAgICAgICAgSW50UmVjdCBzZWxl
Y3Rpb25QYWludGluZ1JlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKKyAgICAgICAgTGF5b3V0
UmVjdCBzZWxlY3Rpb25QYWludGluZ1JlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAg
ICAgc2VsZWN0aW9uUGFpbnRpbmdSZWN0Lm1vdmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0KTsKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVjdCwg
c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSk7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgJKHJldmlz
aW9uIDg5OTgzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpOwogICAgIHZvaWQgc2V0SGFzSW50cmluc2ljU2l6
ZSgpIHsgbV9oYXNJbnRyaW5zaWNTaXplID0gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgYm9vbCBzaG91bGRQYWludChQ
YWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOwogICAgIEludFJlY3QgbG9jYWxTZWxlY3Rpb25S
ZWN0KGJvb2wgY2hlY2tXaGV0aGVyU2VsZWN0ZWQgPSB0cnVlKSBjb25zdDsgLy8gVGhpcyBpcyBp
biBsb2NhbCBjb29yZGluYXRlcywgYnV0IGl0J3MgYSBwaHlzaWNhbCByZWN0IChzbyB0aGUgdG9w
IGxlZnQgY29ybmVyIGlzIHBoeXNpY2FsIHRvcCBsZWZ0KS4KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAkocmV2aXNpb24gODk5ODIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDEyICs2MCwxMiBAQCB2b2lkIFJlbmRlclJlcGxpY2E6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
CiAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotdm9pZCBS
ZW5kZXJSZXBsaWNhOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQm
IHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJSZXBsaWNhOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIGlmIChwYWludElu
Zm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VNYXNrKQogICAgICAgICByZXR1cm47CiAgCi0gICAgSW50UG9pbnQgYWRqdXN0ZWRQ
YWludE9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKTsKKyAgICBMYXlvdXRQb2ludCBh
ZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpOwogCiAgICAgaWYg
KHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgLy8gVHVy
biBhcm91bmQgYW5kIHBhaW50IHRoZSBwYXJlbnQgbGF5ZXIuIFVzZSB0ZW1wb3JhcnkgY2xpcFJl
Y3RzLCBzbyB0aGF0IHRoZSBsYXllciBkb2Vzbid0IGVuZCB1cCBjYWNoaW5nIGNsaXAgcmVjdHMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAkocmV2aXNpb24g
ODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCk7
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50
Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmVwbGljYSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cAkocmV2aXNpb24gODk5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCB2b2lkIFJlbmRlclRh
YmxlOjpzZXRDZWxsTG9naWNhbFdpZHRocygpCiAgICAgfQogfQogCi12b2lkIFJlbmRlclRhYmxl
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0
KQordm9pZCBSZW5kZXJUYWJsZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBJbnRQb2ludCBhZGp1c3RlZFBhaW50T2Zm
c2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpOworICAgIExheW91dFBvaW50IGFkanVzdGVk
UGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CiAKICAgICBQYWludFBoYXNl
IHBhaW50UGhhc2UgPSBwYWludEluZm8ucGhhc2U7CiAKICAgICBpZiAoIWlzUm9vdCgpKSB7Ci0g
ICAgICAgIEludFJlY3Qgb3ZlcmZsb3dCb3ggPSB2aXN1YWxPdmVyZmxvd1JlY3QoKTsKKyAgICAg
ICAgTGF5b3V0UmVjdCBvdmVyZmxvd0JveCA9IHZpc3VhbE92ZXJmbG93UmVjdCgpOwogICAgICAg
ICBmbGlwRm9yV3JpdGluZ01vZGUob3ZlcmZsb3dCb3gpOwogICAgICAgICBvdmVyZmxvd0JveC5p
bmZsYXRlKG1heGltYWxPdXRsaW5lU2l6ZShwYWludEluZm8ucGhhc2UpKTsKICAgICAgICAgb3Zl
cmZsb3dCb3gubW92ZUJ5KGFkanVzdGVkUGFpbnRPZmZzZXQpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJKHJldmlzaW9uIDg5OTgzKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNCwxMCArMjE0
LDEwIEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBvbGRDaGlsZCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9u
cyhQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludE1h
c2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
OwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBjb25zdCBJbnRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgSW50
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiA4OTk4MikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MDEsMTcgKzgwMSwxNyBAQCBpbnQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJI
YWxmQWZ0ZXIoYm9vCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVDZWxsOjpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQor
dm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlQ29sbGFwc2VkVGFibGVCb3JkZXJzICYmIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFKSB7CiAgICAgICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9v
dCh0aGlzKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBJbnRQb2ludCBhZGp1c3Rl
ZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpOwotICAgICAgICBpbnQgb3Mg
PSAyICogbWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSk7CisgICAgICAgIExheW91
dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7Cisg
ICAgICAgIExheW91dFVuaXQgb3MgPSAyICogbWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5w
aGFzZSk7CiAgICAgICAgIGlmIChhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSAtIHRhYmxlKCktPm91
dGVyQm9yZGVyVG9wKCkgPCBwYWludEluZm8ucmVjdC5tYXhZKCkgKyBvcwogICAgICAgICAgICAg
JiYgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBoZWlnaHQoKSArIHRhYmxlKCktPm91dGVyQm9y
ZGVyQm90dG9tKCkgPiBwYWludEluZm8ucmVjdC55KCkgLSBvcykKLSAgICAgICAgICAgIHBhaW50
Q29sbGFwc2VkQm9yZGVyKHBhaW50SW5mby5jb250ZXh0LCBJbnRSZWN0KGFkanVzdGVkUGFpbnRP
ZmZzZXQsIHNpemUoKSkpOworICAgICAgICAgICAgcGFpbnRDb2xsYXBzZWRCb3JkZXIocGFpbnRJ
bmZvLmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9IAogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICB2b2lkIHBh
aW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50JiwgUmVu
ZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCShyZXZpc2lvbiA4OTk4MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
OCw3ICsyMDgsNyBAQCBib29sIFJlbmRlclRhYmxlUm93Ojpub2RlQXRQb2ludChjb25zdCBICiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRhYmxlUm93OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJU
YWJsZVJvdzo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKIHsKICAgICBBU1NFUlQoaGFzU2VsZlBhaW50aW5nTGF5ZXIoKSk7CiAgICAg
aWYgKCFsYXllcigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Um93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Um93LmgJKHJldmlzaW9uIDg5OTgyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBUaGUgb25seSB0aW1lIHJvd3MgZ2V0IGEgbGF5ZXIgaXMgd2hlbiB0aGV5IGhhdmUgdHJh
bnNwYXJlbmN5LgogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1
cm4gaXNUcmFuc3BhcmVudCgpIHx8IGhhc092ZXJmbG93Q2xpcCgpIHx8IGhhc1RyYW5zZm9ybSgp
IHx8IGhhc01hc2soKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNv
bnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJ
bWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHJldmlzaW9uIDg5OTgzKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg4NSw3ICs4ODUsNyBAQCBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExp
bmVCb3hCYXNlCiAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lOwogfQogCi12b2lkIFJlbmRl
clRhYmxlU2VjdGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFBvaW50
JiBwYWludE9mZnNldCkKK3ZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIC8vIHB1
dCB0aGlzIGJhY2sgaW4gd2hlbiBhbGwgbGF5b3V0IHRlc3RzIGNhbiBoYW5kbGUgaXQKICAgICAv
LyBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwpAQCAtODk5LDcgKzg5OSw3IEBAIHZvaWQgUmVuZGVy
VGFibGVTZWN0aW9uOjpwYWludChQYWludEluZm8KICAgICBpZiAoIXRvdGFsUm93cyB8fCAhdG90
YWxDb2xzKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRQb2ludCBhZGp1c3RlZFBhaW50T2Zm
c2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpOworICAgIExheW91dFBvaW50IGFkanVzdGVk
UGFpbnRPZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2F0aW9uKCk7CiAKICAgICBQYWludFBoYXNl
IHBoYXNlID0gcGFpbnRJbmZvLnBoYXNlOwogICAgIGJvb2wgcHVzaGVkQ2xpcCA9IHB1c2hDb250
ZW50c0NsaXAocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgJKHJldmlzaW9uIDg5OTgz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QqIG9sZENoaWxkKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludENlbGwoUmVuZGVyVGFibGVDZWxsKiwgUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAJKHJldmlzaW9uIDg5OTgyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzNSwxMiArMjM1LDEyIEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpzdWJ0cmUKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zm
c2V0KQordm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgUmVuZGVy
VGV4dENvbnRyb2w6OnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAgaWYgKHBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kICYmIG1fc2hvdWxkRHJh
d0NhcHNMb2NrSW5kaWNhdG9yKSB7Ci0gICAgICAgIEludFJlY3QgY29udGVudHNSZWN0ID0gY29u
dGVudEJveFJlY3QoKTsKKyAgICAgICAgTGF5b3V0UmVjdCBjb250ZW50c1JlY3QgPSBjb250ZW50
Qm94UmVjdCgpOwogCiAgICAgICAgIC8vIENlbnRlciB2ZXJ0aWNhbGx5IGxpa2UgdGhlIHRleHQu
CiAgICAgICAgIGNvbnRlbnRzUmVjdC5zZXRZKChoZWlnaHQoKSAtIGNvbnRlbnRzUmVjdC5oZWln
aHQoKSkgLyAyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgJKHJldmlzaW9uIDg5OTgyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVGV4
dEZpZWxkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHN1YnRy
ZWVIYXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0
IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogCiAgICAgdmlydHVhbCBi
b29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEludFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmgJKHJldmlzaW9uIDg5OTgyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgog
ICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB0byBwYWludCB0aGUgd2lkZ2V0IGFzIGEgYmFj
a2dyb3VuZCBvZiB0aGUgUmVuZGVyT2JqZWN0LiAgQSB3aWRnZXQncyBmb3JlZ3JvdW5kLCBlLmcu
LCB0aGUKICAgICAvLyB0ZXh0IG9mIGEgYnV0dG9uLCBpcyBhbHdheXMgcmVuZGVyZWQgYnkgdGhl
IGVuZ2luZSBpdHNlbGYuICBUaGUgYm9vbGVhbiByZXR1cm4gdmFsdWUgaW5kaWNhdGVzCiAgICAg
Ly8gd2hldGhlciB0aGUgQ1NTIGJvcmRlci9iYWNrZ3JvdW5kIHNob3VsZCBhbHNvIGJlIHBhaW50
ZWQuCi0gICAgYm9vbCBwYWludChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgYm9vbCBwYWludChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgYm9vbCBwYWludEJvcmRlck9ubHkoUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcGFp
bnREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJl
dmlzaW9uIDg5OTgyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjptYXBB
YnNvbHV0ZVRvTG9jYWxQb2ludAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJWaWV3OjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBS
ZW5kZXJWaWV3OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogewogICAgIC8vIElmIHdlIGV2ZXIgcmVxdWlyZSBsYXlvdXQgYnV0IHJl
Y2VpdmUgYSBwYWludCBhbnl3YXksIHNvbWV0aGluZyBoYXMgZ29uZSBob3JyaWJseSB3cm9uZy4K
ICAgICBBU1NFUlQoIW5lZWRzTGF5b3V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oCShyZXZpc2lvbiA4OTk4MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgog
ICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlJ2QgbmV2ZXIgaGF2ZSB0byBkbyB0aGlzLCBpZiBhbGwg
cmVwYWludHMgYXJlIGNvbnRhaW5lci1yZWxhdGl2ZS4KICAgICB2aXJ0dWFsIHZvaWQgcmVwYWlu
dFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMoY29uc3QgSW50UmVjdCYsIGJvb2wg
aW1tZWRpYXRlID0gZmFsc2UpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IEludFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRC
b3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOwogCiAgICAgZW51bSBT
ZWxlY3Rpb25SZXBhaW50TW9kZSB7IFJlcGFpbnROZXdYT1JPbGQsIFJlcGFpbnROZXdNaW51c09s
ZCB9OwogICAgIHZvaWQgc2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFy
dFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIGludCBlbmRQb3MsIFNlbGVjdGlvblJlcGFpbnRNb2Rl
ID0gUmVwYWludE5ld1hPUk9sZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAkocmV2aXNpb24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDEyICsyNDcsMTIgQEAg
dm9pZCBSZW5kZXJXaWRnZXQ6Om5vdGlmeVdpZGdldChXaWRnZXRObwogICAgICAgICBtX3dpZGdl
dC0+bm90aWZ5V2lkZ2V0KG5vdGlmaWNhdGlvbik7CiB9CiAKLXZvaWQgUmVuZGVyV2lkZ2V0Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQor
dm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKCFzaG91bGRQYWludChwYWludEluZm8s
IHBhaW50T2Zmc2V0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UG9pbnQgYWRqdXN0ZWRQ
YWludE9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKTsKKyAgICBMYXlvdXRQb2ludCBh
ZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpOwogCiAgICAgaWYg
KGhhc0JveERlY29yYXRpb25zKCkgJiYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9y
ZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikpCiAgICAg
ICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsK
QEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWluCiAgICAgfQogCiAgICAgaWYgKChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxp
bmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgaGFzT3V0
bGluZSgpKQotICAgICAgICBwYWludE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIEludFJlY3Qo
YWRqdXN0ZWRQYWludE9mZnNldCwgc2l6ZSgpKSk7CisgICAgICAgIHBhaW50T3V0bGluZShwYWlu
dEluZm8uY29udGV4dCwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpKTsK
IAogICAgIGlmICghbV9mcmFtZVZpZXcgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VG
b3JlZ3JvdW5kKQogICAgICAgICByZXR1cm47CkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBSZW5k
ZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbgogI2VuZGlmCiAKICAgICBpZiAoc3R5bGUo
KS0+aGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgSW50UmVjdCBib3JkZXJSZWN0ID0gSW50
UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpOworICAgICAgICBMYXlvdXRSZWN0IGJv
cmRlclJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSk7CiAKICAg
ICAgICAgaWYgKGJvcmRlclJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjkwLDExICsyOTAsMTEgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFp
bgogICAgICAgICBpZiAobV9zdWJzdGl0dXRlSW1hZ2UpCiAgICAgICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+ZHJhd0ltYWdlKG1fc3Vic3RpdHV0ZUltYWdlLmdldCgpLCBzdHlsZSgpLT5jb2xv
clNwYWNlKCksIG1fd2lkZ2V0LT5mcmFtZVJlY3QoKSk7CiAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgSW50UG9pbnQgd2lkZ2V0TG9jYXRpb24gPSBtX3dpZGdldC0+ZnJhbWVSZWN0KCkubG9j
YXRpb24oKTsKLSAgICAgICAgICAgIEludFBvaW50IHBhaW50TG9jYXRpb24oYWRqdXN0ZWRQYWlu
dE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBhZGp1c3RlZFBhaW50
T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKLSAgICAgICAgICAgIElu
dFJlY3QgcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CisgICAgICAgICAgICBMYXlvdXRQb2lu
dCB3aWRnZXRMb2NhdGlvbiA9IG1fd2lkZ2V0LT5mcmFtZVJlY3QoKS5sb2NhdGlvbigpOworICAg
ICAgICAgICAgTGF5b3V0UG9pbnQgcGFpbnRMb2NhdGlvbihhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSArIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgp
ICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBw
YWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKIAotICAgICAgICAgICAgSW50U2l6ZSB3aWRnZXRQ
YWludE9mZnNldCA9IHBhaW50TG9jYXRpb24gLSB3aWRnZXRMb2NhdGlvbjsKKyAgICAgICAgICAg
IExheW91dFNpemUgd2lkZ2V0UGFpbnRPZmZzZXQgPSBwYWludExvY2F0aW9uIC0gd2lkZ2V0TG9j
YXRpb247CiAgICAgICAgICAgICAvLyBXaGVuIHBhaW50aW5nIHdpZGdldHMgaW50byBjb21wb3Np
dGluZyBsYXllcnMsIHR4IGFuZCB0eSBhcmUgcmVsYXRpdmUgdG8gdGhlIGVuY2xvc2luZyBjb21w
b3NpdGluZyBsYXllciwKICAgICAgICAgICAgIC8vIG5vdCB0aGUgcm9vdC4gSW4gdGhpcyBjYXNl
LCBzaGlmdCB0aGUgQ1RNIGFuZCBhZGp1c3QgdGhlIHBhaW50UmVjdCB0byBiZSByb290LXJlbGF0
aXZlIHRvIGZpeCBwbHVnLWluIGRyYXdpbmcuCiAgICAgICAgICAgICBpZiAoIXdpZGdldFBhaW50
T2Zmc2V0LmlzWmVybygpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oCShyZXZpc2lvbiA4OTk4MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNXaWRnZXQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5oCShyZXZpc2lvbiA4OTk4MikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0cmV0Y2hUb0hlaWdodChpbnQgaGVpZ2h0KTsK
IAogI2lmIEVOQUJMRShERUJVR19NQVRIX0xBWU9VVCkKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICNlbmRpZgogICAgIAogcHJvdGVjdGVkOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uaAkocmV2aXNpb24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmpl
Y3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Q7IAotICAgIHZpcnR1
YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAkocmV2aXNpb24g
ODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBSZW5kZXJNYXRoTUxS
b290IDogcHVibGljIFJlbmRlck1hCiBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MUm9vdChOb2Rl
KiBmcmFjdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgSW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgJKHJldmlzaW9uIDg5OTgy
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVS
b290LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9j
ayB7CiBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdChOb2RlKiBmcmFjdGlvbik7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAkocmV2aXNp
b24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gJm1fY2hp
bGRyZW47IH0KICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyByZXR1cm4g
Jm1fY2hpbGRyZW47IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUo
KSB7IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlID0gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaAkocmV2aXNpb24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCB7IHJldHVybiAiUmVuZGVyU1ZHRm9yZWlnbk9iamVjdCI7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBJbnRQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgdmlydHVhbCBJbnRS
ZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiwgYm9vbCBm
aXhlZCA9IGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSGlkZGVuQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAkocmV2aXNpb24gODk5ODIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzU1ZHSGlkZGVuQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7
CiAgICAgCiAgICAgdmlydHVhbCBJbnRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KikgeyByZXR1cm4gSW50UmVjdCgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgJKHJldmlzaW9uIDg5OTgy
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgJKHJldmlzaW9uIDg5OTgyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHUGF0aCI7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgSW50
UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiwgY29uc3QgSW50UG9pbnQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiA4OTk4MikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2MiwxMyArMjYyLDEzIEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6c2VsZldpbGxQ
YWludCgpCiAjZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJTVkdSb290OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0KQordm9pZCBSZW5kZXJTVkdS
b290OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogewogICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGlzVmlzaWJsZSA9IHN0eWxlKCktPnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFOwotICAgIEludFBvaW50IGJvcmRlckJveE9yaWdpbkluQ29udGFp
bmVyID0gcGFpbnRPZmZzZXQgKyBwYXJlbnRPcmlnaW5Ub0JvcmRlckJveCgpOworICAgIExheW91
dFBvaW50IGJvcmRlckJveE9yaWdpbkluQ29udGFpbmVyID0gcGFpbnRPZmZzZXQgKyBwYXJlbnRP
cmlnaW5Ub0JvcmRlckJveCgpOwogCiAgICAgaWYgKGhhc0JveERlY29yYXRpb25zKCkgJiYgKHBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIHx8IHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIGlzVmlzaWJsZSkKICAg
ICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIGJvcmRlckJveE9yaWdpbkluQ29u
dGFpbmVyKTsKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBhaW50KFBh
aW50SW5mbyYgcGFpCiAgICAgICAgIGNvbnRpbnVlUmVuZGVyaW5nID0gU1ZHUmVuZGVyU3VwcG9y
dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBjaGlsZFBhaW50SW5mbyk7CiAKICAg
ICBpZiAoY29udGludWVSZW5kZXJpbmcpCi0gICAgICAgIFJlbmRlckJveDo6cGFpbnQoY2hpbGRQ
YWludEluZm8sIEludFBvaW50KCkpOworICAgICAgICBSZW5kZXJCb3g6OnBhaW50KGNoaWxkUGFp
bnRJbmZvLCBMYXlvdXRQb2ludCgpKTsKIAogICAgIGlmIChjaGlsZFBhaW50SW5mby5waGFzZSA9
PSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6ZmluaXNo
UmVuZGVyU1ZHQ29udGVudCh0aGlzLCBjaGlsZFBhaW50SW5mbywgcGFpbnRJbmZvLmNvbnRleHQp
OwpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWkKICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAKICAgICBpZiAo
KHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKSAmJiBp
c1Zpc2libGUpCi0gICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgSW50UmVj
dChib3JkZXJCb3hPcmlnaW5JbkNvbnRhaW5lciwgc2l6ZSgpKSk7CisgICAgICAgIHBhaW50T3V0
bGluZShwYWludEluZm8uY29udGV4dCwgTGF5b3V0UmVjdChib3JkZXJCb3hPcmlnaW5JbkNvbnRh
aW5lciwgc2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6ZGVzdHJveSgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAkocmV2aXNp
b24gODk5ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
aW50IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChib29sIGluY2x1ZGVNYXhXaWR0aCA9IHRy
dWUpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQo
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveSgpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgJKHJldmlzaW9uIDg5OTgyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyU1ZHVGV4dCI7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdUZXh0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEludFBv
aW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQs
IEhpdFRlc3RBY3Rpb24pOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pOwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>