<?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>122904</bug_id>
          
          <creation_ts>2013-10-16 09:43:08 -0700</creation_ts>
          <short_desc>Add PassRef and createRefCounted so we can improve creation of RefCounted objects</short_desc>
          <delta_ts>2013-10-21 09:44:23 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940405</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-16 09:43:08 -0700</bug_when>
    <thetext>Add PassRef and createRefCounted so we can improve creation of RefCounted objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940407</commentid>
    <comment_count>1</comment_count>
      <attachid>214367</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-16 09:54:59 -0700</bug_when>
    <thetext>Created attachment 214367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940410</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-16 09:57:30 -0700</bug_when>
    <thetext>Attachment 214367 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/GNUmakefile.list.am&apos;, u&apos;Source/WTF/WTF.vcxproj/WTF.vcxproj&apos;, u&apos;Source/WTF/WTF.vcxproj/WTF.vcxproj.filters&apos;, u&apos;Source/WTF/WTF.xcodeproj/project.pbxproj&apos;, u&apos;Source/WTF/wtf/CMakeLists.txt&apos;, u&apos;Source/WTF/wtf/Forward.h&apos;, u&apos;Source/WTF/wtf/PassRef.h&apos;, u&apos;Source/WTF/wtf/PassRefPtr.h&apos;, u&apos;Source/WTF/wtf/Ref.h&apos;, u&apos;Source/WTF/wtf/RefPtr.h&apos;, u&apos;Source/WTF/wtf/StdLibExtras.h&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/Tests/WTF/Ref.cpp&apos;]&quot; exit_code: 1
Source/WTF/wtf/PassRef.h:41:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/PassRef.h:127:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Source/WTF/wtf/StdLibExtras.h:94:  reinterpret_cast_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WTF/wtf/StdLibExtras.h:101:  reinterpret_cast_ptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 4 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940413</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-16 10:16:27 -0700</bug_when>
    <thetext>Committed r157520: &lt;http://trac.webkit.org/changeset/157520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941835</commentid>
    <comment_count>4</comment_count>
      <attachid>214367</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-10-21 07:13:57 -0700</bug_when>
    <thetext>Comment on attachment 214367
Patch

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

&gt; Source/WTF/wtf/PassRef.h:185
&gt; +{

Could we use variadic templates instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941873</commentid>
    <comment_count>5</comment_count>
      <attachid>214367</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-21 09:44:23 -0700</bug_when>
    <thetext>Comment on attachment 214367
Patch

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

&gt;&gt; Source/WTF/wtf/PassRef.h:185
&gt;&gt; +{
&gt; 
&gt; Could we use variadic templates instead?

We do. You are have put this comment within the #else side of #if COMPILER_SUPPORTS(CXX_VARIADIC_TEMPLATES) that starts on line 125 above. If you look there you can see the much simpler version using variadic templates for compilers that support it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214367</attachid>
            <date>2013-10-16 09:54:59 -0700</date>
            <delta_ts>2013-10-21 09:44:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122904-20131016095459.patch</filename>
            <type>text/plain</type>
            <size>36312</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2NDAxMjA1NTY1OTQ1YzJlN2ZhNmUz
ZmI4MjNiZWMxNjFjMTQ4NDQuLmZhYWY1OTY0MjUzNzgwMGM0M2IwNTE3N2I4ODViYzcwNDUzN2U5
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTMtMTAtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBQYXNzUmVmIGFuZCBjcmVhdGVSZWZDb3VudGVkIHNv
IHdlIGNhbiBpbXByb3ZlIGNyZWF0aW9uIG9mIFJlZkNvdW50ZWQgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTA0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOiBBZGRlZCBQYXNzUmVmLmguCisgICAgICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6
IERpdHRvLgorICAgICAgICAqIFdURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnM6IERpdHRv
LgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAg
ICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6IERpdHRvLgorCisgICAgICAgICogd3RmL0ZvcndhcmQu
aDogQWRkZWQgUGFzc1JlZi4gQWxzbyByZS1zb3J0ZWQgYW5kIHVuLWluZGVudGVkIHRvIG1hdGNo
IHdoYXQKKyAgICAgICAgdGhlIHN0eWxlLWNoZWNraW5nIHNjcmlwdCBleHBlY3RzLgorCisgICAg
ICAgICogd3RmL1Bhc3NSZWYuaDogQWRkZWQuIEluY2x1ZGVzIHRoZSBjcmVhdGVSZWZDb3VudGVk
IGZ1bmN0aW9uIHRlbXBsYXRlLCB3aGljaAorICAgICAgICBpcyBhbmFsb2dvdXMgdG8gbWFrZV91
bmlxdWUsIGJ1dCBpcyBmb3IgcmVmZXJlbmNlIGNvdW50ZWQgb2JqZWN0cywgYW5kIGFsc28KKyAg
ICAgICAgYXNzdW1lcyB0aGF0IG5ldyB3aWxsIG5ldmVyIHJldHVybiBudWxsLiBBbHNvIGluY2x1
ZGVzIGFuIG92ZXJsb2FkIG9mIGFkb3B0UmVmCisgICAgICAgIHRoYXQgdGFrZXMgYSByZWZlcmVu
Y2UgcmF0aGVyIHRoYW4gYSBwb2ludGVyLgorCisgICAgICAgICogd3RmL1Bhc3NSZWZQdHIuaDog
SW5jbHVkZSAiUGFzc1JlZi5oIiBzbyB3ZSBjYW4gc2hhcmUgdGhlIGFkb3B0ZWQgZnVuY3Rpb24u
CisgICAgICAgIEdvdCByaWQgb2YgZGVjbGFyYXRpb25zIHRoYXQgZHVwbGljYXRlIG9uZXMgaW4g
dGhlcmUuCisgICAgICAgIChXVEY6OnJlZklmTm90TnVsbCk6IFVzZSBudWxscHRyLgorICAgICAg
ICAoV1RGOjpkZXJlZklmTm90TnVsbCk6IFVzZSBudWxscHRyLgorICAgICAgICAoV1RGOjpQYXNz
UmVmUHRyOjpQYXNzUmVmUHRyKTogVXNlIG51bGxwdHIuIEFkZGVkIGFuIG92ZXJsb2FkIHRoYXQg
dGFrZXMgYSBQYXNzUmVmLgorICAgICAgICAoV1RGOjpQYXNzUmVmUHRyOjpvcGVyYXRvciBVbnNw
ZWNpZmllZEJvb2xUeXBlKTogVXNlIG51bGxwdHIuCisgICAgICAgIChXVEY6OlBhc3NSZWZQdHI6
Om9wZXJhdG9yPSk6IE1hZGUgdGhpcyBkZWxldGVkIGluc3RlYWQgb2YgY29tcGlsZSB0aW1lIGFz
c2VydGlvbi4KKyAgICAgICAgKFdURjo6UGFzc1JlZlB0cjo6UGFzc1JlZlB0cik6IE1hZGUgYWRv
cHRpbmcgY29uc3RydWN0b3IgdXNlIGFuIGFkb3B0IHRhZyBpbnN0ZWFkCisgICAgICAgIG9mIGFu
IHVudXNlZCBib29sZWFuLgorICAgICAgICAoV1RGOjpQYXNzUmVmUHRyOjpsZWFrUmVmKTogVXNl
IG51bGxwdHIuCisgICAgICAgIChXVEY6OmFkb3B0UmVmKTogVXNlIHRoZSBhZG9wdCB0YWcuCisK
KyAgICAgICAgKiB3dGYvUmVmLmg6IFVzZSBOb25jb3B5YWJsZSBpbnN0ZWFkIG9mIHJvbGxpbmcg
b3VyIG93bi4KKyAgICAgICAgKFdURjo6UmVmOjpSZWYpOiBBZGQgYW4gb3ZlcmxvYWQgdGhhdCB0
YWtlcyBhIFBhc3NSZWYuCisgICAgICAgIChXVEY6OlJlZjo6b3BlcmF0b3I9KTogRGl0dG8uCisK
KyAgICAgICAgKiB3dGYvUmVmUHRyLmg6IFJlbW92ZWQgdW5uZWVkZWQgZm9yd2FyZCBkZWNsYXJh
dGlvbiBvZiBQYXNzUmVmUHRyLgorICAgICAgICAoV1RGOjpSZWZQdHI6OlJlZlB0cik6IFVzZSBu
dWxscHRyLiBBZGRlZCBvdmVybG9hZCB0aGF0IHRha2VzIGEgUGFzc1JlZi4KKyAgICAgICAgKFdU
Rjo6UmVmUHRyOjpyZWxlYXNlKTogVXNlIG51bGxwdHIuCisgICAgICAgIChXVEY6OlJlZlB0cjo6
b3BlcmF0b3IgVW5zcGVjaWZpZWRCb29sVHlwZSk6IFVzZSBudWxscHRyLgorICAgICAgICAoV1RG
OjpSZWZQdHI6Om9wZXJhdG9yPSk6IEFkZGVkIG92ZXJsb2FkIHRoYXQgdGFrZXMgYSBQYXNzUmVm
LgorICAgICAgICAoV1RGOjpSZWZQdHI6OmNsZWFyKTogVXNlIG51bGxwdHIuCisKKyAgICAgICAg
KiB3dGYvU3RkTGliRXh0cmFzLmg6IEFkZGVkIGlubGluZSBrZXl3b3JkIHRvIGlzUG9pbnRlclR5
cGVBbGlnbm1lbnRPa2F5LAorICAgICAgICByZWludGVycHJldF9jYXN0X3B0ciwgYW5kIG1ha2Vf
dW5pcXVlLiBTZWVtcyBsaWtlIGEgc2ltcGxlIG92ZXJzaWdodCB0aGF0IHRoZXNlCisgICAgICAg
IHdlcmUgbWlzc2luZyBiZWZvcmUuCisKIDIwMTMtMTAtMTUgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBFTkFCTEVfV0VCX0FOSU1BVElPTlMgZmxhZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDkwMmNlZWRiYzRiNmEzMWMxMjM1NGM3NWE2YmUyNDRhZThj
NmUzNTYuLjQ1ZGM3ODY1Njk1NmI4ZWY4M2Q4NzA1ODRhMmNlZjY4YjJiM2YxYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTExNyw2ICsxMTcsNyBAQCB3dGZfc291cmNlcyArPSBcCiAgICAg
U291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzTGliZGlzcGF0Y2guaCBcCiAgICAgU291cmNlL1dU
Ri93dGYvUGFyYWxsZWxKb2JzT3Blbk1QLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1Bhc3NPd25Q
dHIuaCBcCisgICAgU291cmNlL1dURi93dGYvUGFzc1JlZi5oIFwKICAgICBTb3VyY2UvV1RGL3d0
Zi9QYXNzUmVmUHRyLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggXAogICAgIFNv
dXJjZS9XVEYvd3RmL1Bvc3NpYmx5TnVsbC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
LnZjeHByb2ovV1RGLnZjeHByb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9q
CmluZGV4IGFjZGE3MGRjYTFlZTE2NGFmZWFiYTQ2N2EzOWU4M2U5NGFmYWNmOTEuLjk2NDg3NmFk
ZmIzYmI3ZjYxYWE0NmEwMWM1YzcwZWEyYWIzNDdjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
V1RGLnZjeHByb2ovV1RGLnZjeHByb2oKKysrIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYu
dmN4cHJvagpAQCAtMjAyLDYgKzIwMiw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3
dGZcUGFyYWxsZWxKb2JzTGliZGlzcGF0Y2guaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcUGFyYWxsZWxKb2JzT3Blbk1QLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cd3RmXFBhc3NPd25QdHIuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3
dGZcUGFzc1JlZi5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXNzUmVm
UHRyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFBsYXRmb3JtLmgiIC8+
DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFBvc3NpYmx5TnVsbC5oIiAvPg0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycyBiL1Nv
dXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVycwppbmRleCAwMGE1MWRiMjBi
ZTgzZDU3MTczYWM1ZGY1N2QyNzY0NmVlZTQyNTdmLi5jZmZhNGVmOWU5NWNmMTk5NDFlZTJkZWUx
M2YzMDFmNmE4MTQxYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52
Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvai5m
aWx0ZXJzCkBAIC01MjcsNiArNTI3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxQYXNzT3duUHRyLmgiPg0KICAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQogICAgIDwvQ2xJ
bmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXNzUmVmLmgiPg0KKyAg
ICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHd0ZlxQYXNzUmVmUHRyLmgiPg0KICAgICAgIDxGaWx0ZXI+d3RmPC9G
aWx0ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDljZDczYmJmNDgxZDkwYzkwZTBmYjA2ODNlYTVlYzM2ZTYyYWEyOTku
LmZiYjYxNzU2MmQ5ZGNmODEyMGRkNThkMjk4NTVmYjM4ZWI5MzVjODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjMsNiArNjMsNyBAQAogCQk3RTI5QzMz
RTE1RkZENzlCMDA1MTZENjEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMjlDMzNEMTVGRkQ3OUIwMDUxNkQ2MSAv
KiBPYmpjUnVudGltZUV4dHJhcy5oICovOyB9OwogCQk4MTM0MDEzODE1QjA5MkZEMDAxRkYwQjgg
LyogQmFzZTY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICovOyB9OwogCQk4MTM0
MDEzOTE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0
LmggKi87IH07CisJCTkzQjFBQTgwMTgwRTVBRjMwMDRBMkYwNSAvKiBQYXNzUmVmLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0IxQUE3RjE4MEU1QUYz
MDA0QTJGMDUgLyogUGFzc1JlZi5oICovOyB9OwogCQk5NzRDRkM4RTE2QTRGMzI3MDA2RDU0MDQg
LyogV2Vha1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTc0Q0ZDOEQxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCAqLzsgfTsKIAkJOUJDNzBG
MDUxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzcwRjA0MTc2QzM3OUQwMDEwMURF
QyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgKi87IH07CiAJCTlCRDhGNDBCMTc2QzJCNDcwMDAy
RDg2NSAvKiBBdG9taWNTdHJpbmdUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJEOEY0MEExNzZDMkFEODAwMDJEODY1IC8qIEF0b21pY1N0cmlu
Z1RhYmxlLmggKi87IH07CkBAIC0zMjUsNiArMzI2LDcgQEAKIAkJN0UyOUMzM0QxNUZGRDc5QjAw
NTE2RDYxIC8qIE9iamNSdW50aW1lRXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE9iamNSdW50aW1lRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgxMzQwMTM2MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZTY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCYXNlNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTNCMUFBN0YxODBFNUFGMzAwNEEyRjA1IC8qIFBhc3NSZWYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFzc1JlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCQzcwRjA0MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdG9taWNTdHJpbmdUYWJsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDhGNDBBMTc2QzJBRDgwMDAyRDg2NSAvKiBB
dG9taWNTdHJpbmdUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdG9taWNTdHJpbmdUYWJsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg1LDcgKzY4Nyw2IEBACiAJCQkJQThBNDcy
Q0UxNTFBODI1QjAwNDEyM0ZGIC8qIE1ldGFBbGxvY2F0b3IuaCAqLywKIAkJCQlBOEE0NzJDRjE1
MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oICovLAogCQkJCTFBM0Y2QkU2
MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAotCQkJCTI2Mjk5QjZEMTdB
OUU1QjgwMEFERUJFNSAvKiBSZWYuaCAqLywKIAkJCQkwRjBEODVCMzE3MjM0Q0IxMDAzMzgyMTAg
LyogTm9Mb2NrLmggKi8sCiAJCQkJQThBNDcyRDAxNTFBODI1QjAwNDEyM0ZGIC8qIE5vbmNvcHlh
YmxlLmggKi8sCiAJCQkJQThBNDcyRDUxNTFBODI1QjAwNDEyM0ZGIC8qIE51bWJlck9mQ29yZXMu
Y3BwICovLApAQCAtNzA3LDYgKzcwOCw3IEBACiAJCQkJQThBNDcyRTYxNTFBODI1QjAwNDEyM0ZG
IC8qIFBhcmFsbGVsSm9icy5oICovLAogCQkJCUE4QTQ3MkU5MTUxQTgyNUIwMDQxMjNGRiAvKiBQ
YXJhbGxlbEpvYnNMaWJkaXNwYXRjaC5oICovLAogCQkJCUE4QTQ3MkVDMTUxQTgyNUIwMDQxMjNG
RiAvKiBQYXNzT3duUHRyLmggKi8sCisJCQkJOTNCMUFBN0YxODBFNUFGMzAwNEEyRjA1IC8qIFBh
c3NSZWYuaCAqLywKIAkJCQlBOEE0NzJFRDE1MUE4MjVCMDA0MTIzRkYgLyogUGFzc1JlZlB0ci5o
ICovLAogCQkJCUE4NzZEQkQ3MTUxODE2RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oICovLAogCQkJ
CUE4QTQ3MkYzMTUxQTgyNUIwMDQxMjNGRiAvKiBQb3NzaWJseU51bGwuaCAqLywKQEAgLTcyMCw2
ICs3MjIsNyBAQAogCQkJCUE4QTQ3MkZEMTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXJT
ZWVkLmggKi8sCiAJCQkJMEY4NzEwNTkxNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCAq
LywKIAkJCQlBOEE0NzJGRTE1MUE4MjVCMDA0MTIzRkYgLyogUmVkQmxhY2tUcmVlLmggKi8sCisJ
CQkJMjYyOTlCNkQxN0E5RTVCODAwQURFQkU1IC8qIFJlZi5oICovLAogCQkJCUE4QTQ3MkZGMTUx
QTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkLmggKi8sCiAJCQkJQThBNDczMDAxNTFBODI1QjAw
NDEyM0ZGIC8qIFJlZkNvdW50ZWRBcnJheS5oICovLAogCQkJCUE4QTQ3MzAxMTUxQTgyNUIwMDQx
MjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwICovLApAQCAtOTc2LDYgKzk3OSw3IEBA
CiAJCQkJQThBNDczRTMxNTFBODI1QjAwNDEyM0ZGIC8qIExvY2tlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDczRTYxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3M0U4MTUxQTgyNUIwMDQxMjNGRiAvKiBNYXRoRXh0cmFzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk5M0IxQUE4MDE4MEU1QUYzMDA0QTJGMDUgLyogUGFzc1JlZi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDczRUExNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0Q1NDk3QUQxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDczRUIxNTFBODI1QjAwNDEyM0ZGIC8qIE1lc3NhZ2VRdWV1ZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDAxZTYwNGI4OTg4MTE0ZDhj
NzJlNGJmMzMzMjg5MTBmMDhiMWEzMjguLjYwZWRlNTY2NmZkMWE0NDIzNGViZjY1ZDI4ZDIwYjRl
OTQ2YTFkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02Nyw2ICs2Nyw3IEBAIHNldChXVEZf
SEVBREVSUwogICAgIFBhcmFsbGVsSm9ic0xpYmRpc3BhdGNoLmgKICAgICBQYXJhbGxlbEpvYnNP
cGVuTVAuaAogICAgIFBhc3NPd25QdHIuaAorICAgIFBhc3NSZWYuaAogICAgIFBhc3NSZWZQdHIu
aAogICAgIFBsYXRmb3JtLmgKICAgICBQb3NzaWJseU51bGwuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IGVmYmJj
ZDVhMjdhNmVlOTk0ZTJkMDQ0NTg4NzA2N2JlYTk5OGFkMjkuLmYxYzIyM2ZmOTEyNzNjNDVlYmYz
ZWVlYmVhY2QzYjc4Njg4OTk0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTI1LDQ3ICsyNSw1MCBAQAogCiBu
YW1lc3BhY2UgV1RGIHsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEZ1bmN0aW9u
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIE93blB0cjsKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBjbGFzcyBQYXNzT3duUHRyOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIFBhc3NSZWZQdHI7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmUHRyOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFJlZjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4gY2xh
c3MgVmVjdG9yOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRnVuY3Rpb247Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBPd25QdHI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQ
YXNzT3duUHRyOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZjsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFz
cyBSZWZQdHI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWY7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjbGFzcyBTdHJpbmdCdWZmZXI7CiAKLSAgICBjbGFzcyBBdG9taWNTdHJpbmc7Ci0g
ICAgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLSAgICBjbGFzcyBCaW5hcnlTZW1hcGhvcmU7Ci0g
ICAgY2xhc3MgQ1N0cmluZzsKLSAgICBjbGFzcyBEZWNvZGVyOwotICAgIGNsYXNzIEVuY29kZXI7
Ci0gICAgY2xhc3MgRnVuY3Rpb25EaXNwYXRjaGVyOwotICAgIGNsYXNzIFByaW50U3RyZWFtOwot
ICAgIGNsYXNzIFN0cmluZzsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU3RyaW5n
QnVmZmVyOwotICAgIGNsYXNzIFN0cmluZ0J1aWxkZXI7Ci0gICAgY2xhc3MgU3RyaW5nSW1wbDsK
LX0KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyPiBjbGFzcyBWZWN0b3I7CiAKLXVzaW5nIFdURjo6RnVuY3Rpb247Ci11
c2luZyBXVEY6Ok93blB0cjsKLXVzaW5nIFdURjo6UGFzc093blB0cjsKLXVzaW5nIFdURjo6UGFz
c1JlZlB0cjsKLXVzaW5nIFdURjo6UmVmUHRyOwotdXNpbmcgV1RGOjpSZWY7Ci11c2luZyBXVEY6
OlZlY3RvcjsKK2NsYXNzIEF0b21pY1N0cmluZzsKK2NsYXNzIEF0b21pY1N0cmluZ0ltcGw7Citj
bGFzcyBCaW5hcnlTZW1hcGhvcmU7CitjbGFzcyBDU3RyaW5nOworY2xhc3MgRGVjb2RlcjsKK2Ns
YXNzIEVuY29kZXI7CitjbGFzcyBGdW5jdGlvbkRpc3BhdGNoZXI7CitjbGFzcyBQcmludFN0cmVh
bTsKK2NsYXNzIFN0cmluZzsKK2NsYXNzIFN0cmluZ0J1aWxkZXI7CitjbGFzcyBTdHJpbmdJbXBs
OworCit9CiAKIHVzaW5nIFdURjo6QXRvbWljU3RyaW5nOwogdXNpbmcgV1RGOjpBdG9taWNTdHJp
bmdJbXBsOwogdXNpbmcgV1RGOjpCaW5hcnlTZW1hcGhvcmU7CiB1c2luZyBXVEY6OkNTdHJpbmc7
Ci11c2luZyBXVEY6OkVuY29kZXI7CiB1c2luZyBXVEY6OkRlY29kZXI7Cit1c2luZyBXVEY6OkVu
Y29kZXI7Cit1c2luZyBXVEY6OkZ1bmN0aW9uOwogdXNpbmcgV1RGOjpGdW5jdGlvbkRpc3BhdGNo
ZXI7Cit1c2luZyBXVEY6Ok93blB0cjsKK3VzaW5nIFdURjo6UGFzc093blB0cjsKK3VzaW5nIFdU
Rjo6UGFzc1JlZjsKK3VzaW5nIFdURjo6UGFzc1JlZlB0cjsKIHVzaW5nIFdURjo6UHJpbnRTdHJl
YW07Cit1c2luZyBXVEY6OlJlZjsKK3VzaW5nIFdURjo6UmVmUHRyOwogdXNpbmcgV1RGOjpTdHJp
bmc7CiB1c2luZyBXVEY6OlN0cmluZ0J1ZmZlcjsKIHVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsK
IHVzaW5nIFdURjo6U3RyaW5nSW1wbDsKK3VzaW5nIFdURjo6VmVjdG9yOwogCiAjZW5kaWYgLy8g
V1RGX0ZvcndhcmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFzc1JlZi5oIGIvU291
cmNlL1dURi93dGYvUGFzc1JlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZjM4NGRjOTY3NGJkZmQzZWE3ZmZi
NWRlOWI4OGQxMTY0NjE5ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXNz
UmVmLmgKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgV1RGX1Bh
c3NSZWZfaAorI2RlZmluZSBXVEZfUGFzc1JlZl9oCisKKyNpbmNsdWRlICJBc3NlcnRpb25zLmgi
CisjaW5jbHVkZSA8Y3N0ZGRlZj4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIFBhc3NSZWY7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVm
UHRyOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmOwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgUmVmUHRyOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzUmVmPFQ+IGFkb3B0
UmVmKFQmKTsKKworaW5saW5lIHZvaWQgYWRvcHRlZChjb25zdCB2b2lkKikgeyB9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWYgeworcHVibGljOgorICAgIFBhc3NSZWYoVCYp
OworICAgIFBhc3NSZWYoUGFzc1JlZiYmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBQYXNz
UmVmKFBhc3NSZWY8VT4pOworCisjaWZuZGVmIE5ERUJVRworICAgIH5QYXNzUmVmKCk7CisjZW5k
aWYKKworcHJpdmF0ZToKKyAgICBmcmllbmQgUGFzc1JlZiBhZG9wdFJlZjxUPihUJik7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgY2xhc3MgUGFzc1JlZjsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBmcmllbmQgY2xhc3MgUGFzc1JlZlB0cjsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBmcmllbmQgY2xhc3MgUmVmOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGZyaWVu
ZCBjbGFzcyBSZWZQdHI7CisKKyAgICBlbnVtIEFkb3B0VGFnIHsgQWRvcHQgfTsKKyAgICBQYXNz
UmVmKFQmLCBBZG9wdFRhZyk7CisKKyAgICBUJiB0YWtlUmVmZXJlbmNlKCk7CisKKyAgICBUJiBt
X3JlZmVyZW5jZTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBib29sIG1fZ2F2ZVVwUmVmZXJlbmNl
OworI2VuZGlmCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc1JlZjxUPjo6
UGFzc1JlZihUJiByZWZlcmVuY2UpCisgICAgOiBtX3JlZmVyZW5jZShyZWZlcmVuY2UpCisjaWZu
ZGVmIE5ERUJVRworICAgICwgbV9nYXZlVXBSZWZlcmVuY2UoZmFsc2UpCisjZW5kaWYKK3sKKyAg
ICByZWZlcmVuY2UucmVmKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNz
UmVmPFQ+OjpQYXNzUmVmKFBhc3NSZWYmJiBvdGhlcikKKyAgICA6IG1fcmVmZXJlbmNlKG90aGVy
LnRha2VSZWZlcmVuY2UoKSkKKyNpZm5kZWYgTkRFQlVHCisgICAgLCBtX2dhdmVVcFJlZmVyZW5j
ZShmYWxzZSkKKyNlbmRpZgoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBpbmxpbmUgUGFzc1JlZjxUPjo6UGFzc1JlZihQYXNzUmVmPFU+IG90aGVyKQor
ICAgIDogbV9yZWZlcmVuY2Uob3RoZXIudGFrZVJlZmVyZW5jZSgpKQorI2lmbmRlZiBOREVCVUcK
KyAgICAsIG1fZ2F2ZVVwUmVmZXJlbmNlKGZhbHNlKQorI2VuZGlmCit7Cit9CisKKyNpZm5kZWYg
TkRFQlVHCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFBhc3NSZWY8VD46On5QYXNzUmVmKCkKK3sK
KyAgICBBU1NFUlQobV9nYXZlVXBSZWZlcmVuY2UpOworfQorCisjZW5kaWYKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIFQmIFBhc3NSZWY8VD46OnRha2VSZWZlcmVuY2UoKQoreworI2lm
bmRlZiBOREVCVUcKKyAgICBBU1NFUlQoIW1fZ2F2ZVVwUmVmZXJlbmNlKTsKKyAgICBtX2dhdmVV
cFJlZmVyZW5jZSA9IHRydWU7CisjZW5kaWYKKyAgICByZXR1cm4gbV9yZWZlcmVuY2U7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzUmVmPFQ+OjpQYXNzUmVmKFQmIHJlZmVy
ZW5jZSwgQWRvcHRUYWcpCisgICAgOiBtX3JlZmVyZW5jZShyZWZlcmVuY2UpCisjaWZuZGVmIE5E
RUJVRworICAgICwgbV9nYXZlVXBSZWZlcmVuY2UoZmFsc2UpCisjZW5kaWYKK3sKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NSZWY8VD4gYWRvcHRSZWYoVCYgcmVmZXJlbmNl
KQoreworICAgIGFkb3B0ZWQoJnJlZmVyZW5jZSk7CisgICAgcmV0dXJuIFBhc3NSZWY8VD4ocmVm
ZXJlbmNlLCBQYXNzUmVmPFQ+OjpBZG9wdCk7Cit9CisKKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhD
WFhfVkFSSUFESUNfVEVNUExBVEVTKQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4u
LiBBcmdzPiBpbmxpbmUgUGFzc1JlZjxUPiBjcmVhdGVSZWZDb3VudGVkKEFyZ3MmJi4uLiBhcmdz
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKSk7Cit9CisKKyNlbHNlCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzUmVm
PFQ+IGNyZWF0ZVJlZkNvdW50ZWQoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFQpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBMT4gaW5saW5lIFBhc3NSZWY8VD4g
Y3JlYXRlUmVmQ291bnRlZChBMSYmIGExKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFQo
c3RkOjpmb3J3YXJkPEExPihhMSkpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgQTEsIHR5cGVuYW1lIEEyPiBpbmxpbmUgUGFzc1JlZjxUPiBjcmVhdGVSZWZDb3VudGVkKEEx
JiYgYTEsIEEyJiYgYTIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVChzdGQ6OmZvcndh
cmQ8QTE+KGExKSwgc3RkOjpmb3J3YXJkPEEyPihhMikpKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMz4gaW5saW5lIFBhc3NS
ZWY8VD4gY3JlYXRlUmVmQ291bnRlZChBMSYmIGExLCBBMiYmIGEyLCBBMyYmIGEzKQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFQoc3RkOjpmb3J3YXJkPEExPihhMSksIHN0ZDo6Zm9yd2Fy
ZDxBMj4oYTIpLCBzdGQ6OmZvcndhcmQ8QTM+KGEzKSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBND4g
aW5saW5lIFBhc3NSZWY8VD4gY3JlYXRlUmVmQ291bnRlZChBMSYmIGExLCBBMiYmIGEyLCBBMyYm
IGEzLCBBNCYmIGE0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFQoc3RkOjpmb3J3YXJk
PEExPihhMSksIHN0ZDo6Zm9yd2FyZDxBMj4oYTIpLCBzdGQ6OmZvcndhcmQ8QTM+KGEzKSwgc3Rk
Ojpmb3J3YXJkPEE0PihhNCkpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
QTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1PiBp
bmxpbmUgUGFzc1JlZjxUPiBjcmVhdGVSZWZDb3VudGVkKEExJiYgYTEsIEEyJiYgYTIsIEEzJiYg
YTMsIEE0JiYgYTQsIEE1JiYgYTUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVChzdGQ6
OmZvcndhcmQ8QTE+KGExKSwgc3RkOjpmb3J3YXJkPEEyPihhMiksIHN0ZDo6Zm9yd2FyZDxBMz4o
YTMpLCBzdGQ6OmZvcndhcmQ8QTQ+KGE0KSwgc3RkOjpmb3J3YXJkPEE1PihhNSkpKTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBB
MywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNj4gaW5saW5lIFBhc3NSZWY8
VD4gY3JlYXRlUmVmQ291bnRlZChBMSYmIGExLCBBMiYmIGEyLCBBMyYmIGEzLCBBNCYmIGE0LCBB
NSYmIGE1LCBBNiYmIGE2KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFQoc3RkOjpmb3J3
YXJkPEExPihhMSksIHN0ZDo6Zm9yd2FyZDxBMj4oYTIpLCBzdGQ6OmZvcndhcmQ8QTM+KGEzKSwg
c3RkOjpmb3J3YXJkPEE0PihhNCksIHN0ZDo6Zm9yd2FyZDxBNT4oYTUpLCBzdGQ6OmZvcndhcmQ8
QTY+KGE2KSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBMSwgdHlwZW5h
bWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2
LCB0eXBlbmFtZSBBNz4gaW5saW5lIFBhc3NSZWY8VD4gY3JlYXRlUmVmQ291bnRlZChBMSYmIGEx
LCBBMiYmIGEyLCBBMyYmIGEzLCBBNCYmIGE0LCBBNSYmIGE1LCBBNiYmIGE2LCBBNyYmIGE3KQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFQoc3RkOjpmb3J3YXJkPEExPihhMSksIHN0ZDo6
Zm9yd2FyZDxBMj4oYTIpLCBzdGQ6OmZvcndhcmQ8QTM+KGEzKSwgc3RkOjpmb3J3YXJkPEE0Pihh
NCksIHN0ZDo6Zm9yd2FyZDxBNT4oYTUpLCBzdGQ6OmZvcndhcmQ8QTY+KGE2KSwgc3RkOjpmb3J3
YXJkPEE3PihhNykpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQTEsIHR5
cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LCB0eXBlbmFt
ZSBBNiwgdHlwZW5hbWUgQTcsIHR5cGVuYW1lIEE4PiBpbmxpbmUgUGFzc1JlZjxUPiBjcmVhdGVS
ZWZDb3VudGVkKEExJiYgYTEsIEEyJiYgYTIsIEEzJiYgYTMsIEE0JiYgYTQsIEE1JiYgYTUsIEE2
JiYgYTYsIEE3JiYgYTcsIEE4JiYgYTgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVChz
dGQ6OmZvcndhcmQ8QTE+KGExKSwgc3RkOjpmb3J3YXJkPEEyPihhMiksIHN0ZDo6Zm9yd2FyZDxB
Mz4oYTMpLCBzdGQ6OmZvcndhcmQ8QTQ+KGE0KSwgc3RkOjpmb3J3YXJkPEE1PihhNSksIHN0ZDo6
Zm9yd2FyZDxBNj4oYTYpLCBzdGQ6OmZvcndhcmQ8QTc+KGE3KSwgc3RkOjpmb3J3YXJkPEE4Pihh
OCkpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEy
LCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsIHR5cGVuYW1lIEE1LCB0eXBlbmFtZSBBNiwgdHlw
ZW5hbWUgQTcsIHR5cGVuYW1lIEE4LCB0eXBlbmFtZSBBOT4gaW5saW5lIFBhc3NSZWY8VD4gY3Jl
YXRlUmVmQ291bnRlZChBMSYmIGExLCBBMiYmIGEyLCBBMyYmIGEzLCBBNCYmIGE0LCBBNSYmIGE1
LCBBNiYmIGE2LCBBNyYmIGE3LCBBOCYmIGE4LCBBOSYmIGE5KQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFQoc3RkOjpmb3J3YXJkPEExPihhMSksIHN0ZDo6Zm9yd2FyZDxBMj4oYTIpLCBz
dGQ6OmZvcndhcmQ8QTM+KGEzKSwgc3RkOjpmb3J3YXJkPEE0PihhNCksIHN0ZDo6Zm9yd2FyZDxB
NT4oYTUpLCBzdGQ6OmZvcndhcmQ8QTY+KGE2KSwgc3RkOjpmb3J3YXJkPEE3PihhNyksIHN0ZDo6
Zm9yd2FyZDxBOD4oYTgpLCBzdGQ6OmZvcndhcmQ8QTk+KGE5KSkpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFt
ZSBBNCwgdHlwZW5hbWUgQTUsIHR5cGVuYW1lIEE2LCB0eXBlbmFtZSBBNywgdHlwZW5hbWUgQTgs
IHR5cGVuYW1lIEE5LCB0eXBlbmFtZSBBMTA+IGlubGluZSBQYXNzUmVmPFQ+IGNyZWF0ZVJlZkNv
dW50ZWQoQTEmJiBhMSwgQTImJiBhMiwgQTMmJiBhMywgQTQmJiBhNCwgQTUmJiBhNSwgQTYmJiBh
NiwgQTcmJiBhNywgQTgmJiBhOCwgQTkmJiBhOSwgQTEwJiYgYTEwKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFQoc3RkOjpmb3J3YXJkPEExPihhMSksIHN0ZDo6Zm9yd2FyZDxBMj4oYTIp
LCBzdGQ6OmZvcndhcmQ8QTM+KGEzKSwgc3RkOjpmb3J3YXJkPEE0PihhNCksIHN0ZDo6Zm9yd2Fy
ZDxBNT4oYTUpLCBzdGQ6OmZvcndhcmQ8QTY+KGE2KSwgc3RkOjpmb3J3YXJkPEE3PihhNyksIHN0
ZDo6Zm9yd2FyZDxBOD4oYTgpLCBzdGQ6OmZvcndhcmQ8QTk+KGE5KSwgc3RkOjpmb3J3YXJkPEEx
MD4oYTEwKSkpOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdU
Rjo6UGFzc1JlZjsKK3VzaW5nIFdURjo6YWRvcHRSZWY7Cit1c2luZyBXVEY6OmNyZWF0ZVJlZkNv
dW50ZWQ7CisKKyNlbmRpZiAvLyBXVEZfUGFzc1JlZl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QYXNzUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYXNzUmVmUHRyLmgKaW5kZXggODcy
OWU3MzU1ZWZjOTE2MDUyNDFlMTZlNGQ3ZTZkZTlkZjQxYWY0OS4uNWM4YjNmMmJlOGFkMjNiNDEz
ZWVlMTAyZTU3ZGFiZDhhNGM4N2FlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFzc1Jl
ZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWZQdHIuaApAQCAtMjEsMzIgKzIxLDI3
IEBACiAjaWZuZGVmIFdURl9QYXNzUmVmUHRyX2gKICNkZWZpbmUgV1RGX1Bhc3NSZWZQdHJfaAog
Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1
ZGUgIlBhc3NSZWYuaCIKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjbGFzcyBSZWZQdHI7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1Jl
ZlB0cjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVmKFQq
KTsKIAotICAgIGlubGluZSB2b2lkIGFkb3B0ZWQoY29uc3Qgdm9pZCopIHsgfQotCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gQUxXQVlTX0lOTElORSB2b2lkIHJlZklmTm90TnVsbChUKiBwdHIp
CiAgICAgewotICAgICAgICBpZiAoTElLRUxZKHB0ciAhPSAwKSkKKyAgICAgICAgaWYgKExJS0VM
WShwdHIgIT0gbnVsbHB0cikpCiAgICAgICAgICAgICBwdHItPnJlZigpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZklmTm90TnVsbChU
KiBwdHIpCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKHB0ciAhPSAwKSkKKyAgICAgICAgaWYg
KExJS0VMWShwdHIgIT0gbnVsbHB0cikpCiAgICAgICAgICAgICBwdHItPmRlcmVmKCk7CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0ciB7CiAgICAgcHVi
bGljOgotICAgICAgICBQYXNzUmVmUHRyKCkgOiBtX3B0cigwKSB7IH0KKyAgICAgICAgUGFzc1Jl
ZlB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9CiAgICAgICAgIFBhc3NSZWZQdHIoVCogcHRyKSA6
IG1fcHRyKHB0cikgeyByZWZJZk5vdE51bGwocHRyKTsgfQogICAgICAgICAvLyBJdCBzb21ld2hh
dCBicmVha3MgdGhlIHR5cGUgc3lzdGVtIHRvIGFsbG93IHRyYW5zZmVyIG9mIG93bmVyc2hpcCBv
dXQgb2YKICAgICAgICAgLy8gYSBjb25zdCBQYXNzUmVmUHRyLiBIb3dldmVyLCBpdCBtYWtlcyBp
dCBtdWNoIGVhc2llciB0byB3b3JrIHdpdGggUGFzc1JlZlB0cgpAQCAtNTcsNyArNTIsOCBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgQUxXQVlTX0lOTElORSB+UGFzc1JlZlB0cigpIHsgZGVy
ZWZJZk5vdE51bGwobV9wdHIpOyB9CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFz
c1JlZlB0cihjb25zdCBSZWZQdHI8VT4mKTsKLSAgICAgICAgCisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IFBhc3NSZWZQdHIoUGFzc1JlZjxVPiByZWZlcmVuY2UpIDogbV9wdHIoJnJlZmVy
ZW5jZS50YWtlUmVmZXJlbmNlKCkpIHsgfQorCiAgICAgICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyOyB9CiAKICAgICAgICAgVCogbGVha1JlZigpIGNvbnN0IFdBUk5fVU5VU0VEX1JF
VFVSTjsKQEAgLTY5LDE1ICs2NSwxNSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgICAgICAvLyBU
aGlzIGNvbnZlcnNpb24gb3BlcmF0b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9v
bCBidXQgbm90IHRvIG90aGVyIGludGVnZXIgdHlwZXMuCiAgICAgICAgIHR5cGVkZWYgVCogKFBh
c3NSZWZQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlKTsKLSAgICAgICAgb3BlcmF0b3IgVW5zcGVj
aWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlBhc3NSZWZQdHI6Om1fcHRy
IDogMDsgfQotCi0gICAgICAgIFBhc3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRy
JikgeyBDT01QSUxFX0FTU0VSVCghc2l6ZW9mKFQqKSwgUGFzc1JlZlB0cl9zaG91bGRfbmV2ZXJf
YmVfYXNzaWduZWRfdG8pOyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgb3BlcmF0b3IgVW5zcGVj
aWZpZWRCb29sVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID8gJlBhc3NSZWZQdHI6Om1fcHRy
IDogbnVsbHB0cjsgfQogCiAgICAgICAgIGZyaWVuZCBQYXNzUmVmUHRyIGFkb3B0UmVmPFQ+KFQq
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIGFkb3B0aW5nIGNvbnN0cnVjdG9yCi0gICAg
ICAgIFBhc3NSZWZQdHIoVCogcHRyLCBib29sKSA6IG1fcHRyKHB0cikgeyB9CisgICAgICAgIFBh
c3NSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyJikgV1RGX0RFTEVURURfRlVOQ1RJ
T047CisKKyAgICAgICAgZW51bSBBZG9wdFRhZyB7IEFkb3B0IH07CisgICAgICAgIFBhc3NSZWZQ
dHIoVCogcHRyLCBBZG9wdFRhZykgOiBtX3B0cihwdHIpIHsgfQogCiAgICAgICAgIG11dGFibGUg
VCogbV9wdHI7CiAgICAgfTsKQEAgLTkyLDcgKzg4LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFBhc3NSZWZQdHI8VD46OmxlYWtSZWYoKSBj
b25zdAogICAgIHsKICAgICAgICAgVCogcHRyID0gbV9wdHI7Ci0gICAgICAgIG1fcHRyID0gMDsK
KyAgICAgICAgbV9wdHIgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIApA
QCAtMTQ5LDcgKzE0NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBQYXNzUmVmUHRyPFQ+IGFkb3B0UmVmKFQqIHApCiAgICAgewogICAgICAgICBh
ZG9wdGVkKHApOwotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxUPihwLCB0cnVlKTsKKyAgICAg
ICAgcmV0dXJuIFBhc3NSZWZQdHI8VD4ocCwgUGFzc1JlZlB0cjxUPjo6QWRvcHQpOwogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBQYXNzUmVmUHRy
PFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUGFzc1JlZlB0cjxVPiYgcCkgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCmluZGV4IDcz
NDE0ZmZlYjZlY2EyNTlkOTZmNDA5MjgzZGZhYmE5MzcxYTMxNDMuLjRkODMzZDJlM2U0NTM5YTJm
MmFjM2E0ZWI3MjFiNzNkMmExZWM0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZi5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZi5oCkBAIC0yNiwxMyArMjYsMjAgQEAKICNpZm5kZWYg
V1RGX1JlZl9oCiAjZGVmaW5lIFdURl9SZWZfaAogCi0jaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+
CisjaW5jbHVkZSAiTm9uY29weWFibGUuaCIKIAogbmFtZXNwYWNlIFdURiB7CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWY7CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IFJlZiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVmKQogcHVibGljOgogICAgIFJlZihU
JiBvYmplY3QpIDogbV9wdHIoJm9iamVjdCkgeyBtX3B0ci0+cmVmKCk7IH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBSZWYoUGFzc1JlZjxVPiByZWZlcmVuY2UpIDogbV9wdHIoJnJlZmVyZW5j
ZS50YWtlUmVmZXJlbmNlKCkpIHsgfQorCisgICAgflJlZigpIHsgbV9wdHItPmRlcmVmKCk7IH0K
KwogICAgIFJlZiYgb3BlcmF0b3I9KFQmIG9iamVjdCkKICAgICB7CiAgICAgICAgIG9iamVjdC5y
ZWYoKTsKQEAgLTQwLDggKzQ3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9wdHIgPSAmb2JqZWN0
OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQotCi0gICAgflJlZigpIHsgbV9wdHItPmRl
cmVmKCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWYmIG9wZXJhdG9yPShQYXNzUmVm
PFU+IHJlZmVyZW5jZSkKKyAgICB7CisgICAgICAgIG1fcHRyLT5kZXJlZigpOworICAgICAgICBt
X3B0ciA9ICZyZWZlcmVuY2UudGFrZVJlZmVyZW5jZSgpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQogCiAgICAgY29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fcHRy
OyB9CiAgICAgVCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIG1fcHRyOyB9CkBAIC01MCw5ICs2MSw2
IEBAIHB1YmxpYzoKICAgICBUJiBnZXQoKSB7IHJldHVybiAqbV9wdHI7IH0KIAogcHJpdmF0ZToK
LSAgICBSZWYoY29uc3QgUmVmJik7Ci0gICAgUmVmJiBvcGVyYXRvcj0oY29uc3QgUmVmPFQ+Jik7
Ci0KICAgICBUKiBtX3B0cjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0
ci5oIGIvU291cmNlL1dURi93dGYvUmVmUHRyLmgKaW5kZXggMDBiZTg4YjUxODM2NzAwN2ZmM2Rl
M2I5NWQ1NWUxOTYwODExNDI2Yy4uNGU0ZmNmMDRlOWRlZjc1ZjczNzMyYjUwYjI4OWZjY2E5YmQw
NjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmUHRyLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUmVmUHRyLmgKQEAgLTIzLDIxICsyMywxOSBAQAogI2lmbmRlZiBXVEZfUmVmUHRyX2gK
ICNkZWZpbmUgV1RGX1JlZlB0cl9oCiAKKyNpbmNsdWRlICJGYXN0TWFsbG9jLmgiCisjaW5jbHVk
ZSAiUGFzc1JlZlB0ci5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx1dGlsaXR5
PgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQ
YXNzUmVmUHRyOwotCiAgICAgZW51bSBIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlIHsgSGFzaFRh
YmxlRGVsZXRlZFZhbHVlIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQ
dHIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKCkgOiBtX3B0cigwKSB7IH0KKyAgICAgICAgQUxXQVlT
X0lOTElORSBSZWZQdHIoKSA6IG1fcHRyKG51bGxwdHIpIHsgfQogICAgICAgICBBTFdBWVNfSU5M
SU5FIFJlZlB0cihUKiBwdHIpIDogbV9wdHIocHRyKSB7IHJlZklmTm90TnVsbChwdHIpOyB9CiAg
ICAgICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykgOiBtX3B0cihvLm1f
cHRyKSB7IHJlZklmTm90TnVsbChtX3B0cik7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gUmVmUHRyKGNvbnN0IFJlZlB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90
TnVsbChtX3B0cik7IH0KQEAgLTQ4LDYgKzQ2LDggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IC8vIFNlZSBjb21tZW50cyBpbiBQYXNzUmVmUHRyLmggZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdo
eSB0aGlzIHRha2VzIGEgY29uc3QgcmVmZXJlbmNlLgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYpOwogCisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IFJlZlB0cihQYXNzUmVmPFU+KTsKKwogICAgICAgICAvLyBIYXNoIHRhYmxlIGRl
bGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3RlZCBhbmQgbmV2ZXIgY29waWVk
IG9yIGRlc3Ryb3llZC4KICAgICAgICAgUmVmUHRyKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
IDogbV9wdHIoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQogICAgICAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gaGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0KQEAgLTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CiAgICAgICAgIAogICAgICAgICB2b2lk
IGNsZWFyKCk7Ci0gICAgICAgIFBhc3NSZWZQdHI8VD4gcmVsZWFzZSgpIHsgUGFzc1JlZlB0cjxU
PiB0bXAgPSBhZG9wdFJlZihtX3B0cik7IG1fcHRyID0gMDsgcmV0dXJuIHRtcDsgfQorICAgICAg
ICBQYXNzUmVmUHRyPFQ+IHJlbGVhc2UoKSB7IFBhc3NSZWZQdHI8VD4gdG1wID0gYWRvcHRSZWYo
bV9wdHIpOyBtX3B0ciA9IG51bGxwdHI7IHJldHVybiB0bXA7IH0KIAogICAgICAgICBUJiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiAqbV9wdHI7IH0KICAgICAgICAgQUxXQVlTX0lOTElORSBU
KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KQEAgLTY2LDcgKzY2LDcgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgCiAgICAgICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRv
ciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50
ZWdlciB0eXBlcy4KICAgICAgICAgdHlwZWRlZiBUKiAoUmVmUHRyOjoqVW5zcGVjaWZpZWRCb29s
VHlwZSk7Ci0gICAgICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3B0ciA/ICZSZWZQdHI6Om1fcHRyIDogMDsgfQorICAgICAgICBvcGVyYXRvciBVbnNw
ZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUmVmUHRyOjptX3B0ciA6
IG51bGxwdHI7IH0KICAgICAgICAgCiAgICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJl
ZlB0ciYpOwogICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShUKik7CkBAIC03OCw2ICs3OCw4IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9w
ZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+Jik7CiAgICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9
KFJlZlB0ciYmKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRv
cj0oUmVmUHRyPFU+JiYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9w
ZXJhdG9yPShQYXNzUmVmPFU+KTsKKwogICAgICAgICB2b2lkIHN3YXAoUmVmUHRyJik7CiAKICAg
ICAgICAgc3RhdGljIFQqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VCo+KC0xKTsgfQpAQCAtOTEsMTAgKzkzLDE1IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIHsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBpbmxpbmUgUmVmUHRyPFQ+OjpSZWZQdHIoUGFzc1JlZjxVPiByZWZlcmVuY2UpCisgICAg
ICAgIDogbV9wdHIoJnJlZmVyZW5jZS50YWtlUmVmZXJlbmNlKCkpCisgICAgeworICAgIH0KKwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIFJlZlB0cjxUPjo6Y2xlYXIoKQog
ICAgIHsKICAgICAgICAgVCogcHRyID0gbV9wdHI7Ci0gICAgICAgIG1fcHRyID0gMDsKKyAgICAg
ICAgbV9wdHIgPSBudWxscHRyOwogICAgICAgICBkZXJlZklmTm90TnVsbChwdHIpOwogICAgIH0K
IApAQCAtMTQ3LDYgKzE1NCwxMyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1l
IFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3BlcmF0b3I9KFBhc3NSZWY8VT4gcmVm
ZXJlbmNlKQorICAgIHsKKyAgICAgICAgUmVmUHRyIHB0ciA9IHJlZmVyZW5jZTsKKyAgICAgICAg
c3dhcChwdHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHZvaWQgUmVmUHRyPFQ+Ojpzd2FwKFJlZlB0ciYgbykKICAgICB7CiAg
ICAgICAgIHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4
IGFjOTI3MjlkNTUyMDA4ODQwZmJmMTQ3ZDc4MGIyODU1MDAwNDM3OTMuLmNmYzlkM2ZhYTA3ZmMy
MjAzZTZkNmZmYWUyYmI0MWE0MTcyYjhiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0
ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC04NSwy
NyArODUsMjcgQEAKICAqLwogI2lmIChDUFUoQVJNKSB8fCBDUFUoTUlQUykpICYmIENPTVBJTEVS
KEdDQykKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+Ci1ib29sIGlzUG9pbnRlclR5cGVBbGlnbm1l
bnRPa2F5KFR5cGUqIHB0cikKK2lubGluZSBib29sIGlzUG9pbnRlclR5cGVBbGlnbm1lbnRPa2F5
KFR5cGUqIHB0cikKIHsKICAgICByZXR1cm4gIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pihw
dHIpICUgX19hbGlnbm9mX18oVHlwZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlUHRy
PgotVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cih2b2lkKiBwdHIpCitpbmxpbmUgVHlwZVB0
ciByZWludGVycHJldF9jYXN0X3B0cih2b2lkKiBwdHIpCiB7CiAgICAgQVNTRVJUKGlzUG9pbnRl
clR5cGVBbGlnbm1lbnRPa2F5KHJlaW50ZXJwcmV0X2Nhc3Q8VHlwZVB0cj4ocHRyKSkpOwogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFR5cGVQdHI+KHB0cik7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFR5cGVQdHI+Ci1UeXBlUHRyIHJlaW50ZXJwcmV0X2Nhc3RfcHRyKGNvbnN0IHZvaWQq
IHB0cikKK2lubGluZSBUeXBlUHRyIHJlaW50ZXJwcmV0X2Nhc3RfcHRyKGNvbnN0IHZvaWQqIHB0
cikKIHsKICAgICBBU1NFUlQoaXNQb2ludGVyVHlwZUFsaWdubWVudE9rYXkocmVpbnRlcnByZXRf
Y2FzdDxUeXBlUHRyPihwdHIpKSk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VHlwZVB0
cj4ocHRyKTsKIH0KICNlbHNlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotYm9vbCBpc1BvaW50
ZXJUeXBlQWxpZ25tZW50T2theShUeXBlKikKK2lubGluZSBib29sIGlzUG9pbnRlclR5cGVBbGln
bm1lbnRPa2F5KFR5cGUqKQogewogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzMwLDgwICszMzAs
ODAgQEAgbmFtZXNwYWNlIHN0ZCB7CiAgICAgfTsKIAogI2lmIENPTVBJTEVSX1NVUFBPUlRTKENY
WF9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MuLi4gQXJn
cz4gdHlwZW5hbWUgX1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3QKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBULCBjbGFzcy4uLiBBcmdzPiBpbmxpbmUgdHlwZW5hbWUgX1VuaXF1ZV9pZjxUPjo6X1Np
bmdsZV9vYmplY3QKICAgICBtYWtlX3VuaXF1ZShBcmdzJiYuLi4gYXJncykKICAgICB7CiAgICAg
ICAgIHJldHVybiB1bmlxdWVfcHRyPFQ+KG5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOwogICAgIH0KICNlbHNlCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gdHlwZW5hbWUgX1VuaXF1
ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3QKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlw
ZW5hbWUgX1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3QKICAgICBtYWtlX3VuaXF1ZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdW5pcXVlX3B0cjxUPihuZXcgVCk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQTE+IHR5cGVuYW1lIF9VbmlxdWVfaWY8VD46Ol9TaW5n
bGVfb2JqZWN0CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQTE+IGlubGluZSB0eXBlbmFt
ZSBfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdAogICAgIG1ha2VfdW5pcXVlKEExJiYgYTEp
CiAgICAgewogICAgICAgICByZXR1cm4gdW5pcXVlX3B0cjxUPihuZXcgVChzdGQ6OmZvcndhcmQ8
QTE+KGExKSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEExLCBjbGFz
cyBBMj4gdHlwZW5hbWUgX1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3QKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTI+IGlubGluZSB0eXBlbmFtZSBfVW5pcXVlX2lm
PFQ+OjpfU2luZ2xlX29iamVjdAogICAgIG1ha2VfdW5pcXVlKEExJiYgYTEsIEEyJiYgYTIpCiAg
ICAgewogICAgICAgICByZXR1cm4gdW5pcXVlX3B0cjxUPihuZXcgVChzdGQ6OmZvcndhcmQ8QTE+
KGExKSwgc3RkOjpmb3J3YXJkPEEyPihhMikpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFz
cyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzPiB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+
OjpfU2luZ2xlX29iamVjdAorICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBB
MiwgY2xhc3MgQTM+IGlubGluZSB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVj
dAogICAgIG1ha2VfdW5pcXVlKEExJiYgYTEsIEEyJiYgYTIsIEEzJiYgYTMpCiAgICAgewogICAg
ICAgICByZXR1cm4gdW5pcXVlX3B0cjxUPihuZXcgVChzdGQ6OmZvcndhcmQ8QTE+KGExKSwgc3Rk
Ojpmb3J3YXJkPEEyPihhMiksIHN0ZDo6Zm9yd2FyZDxBMz4oYTMpKSk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+
IHR5cGVuYW1lIF9VbmlxdWVfaWY8VD46Ol9TaW5nbGVfb2JqZWN0CisgICAgdGVtcGxhdGU8Y2xh
c3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQ+IGlubGluZSB0eXBl
bmFtZSBfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdAogICAgIG1ha2VfdW5pcXVlKEExJiYg
YTEsIEEyJiYgYTIsIEEzJiYgYTMsIEE0JiYgYTQpCiAgICAgewogICAgICAgICByZXR1cm4gdW5p
cXVlX3B0cjxUPihuZXcgVChzdGQ6OmZvcndhcmQ8QTE+KGExKSwgc3RkOjpmb3J3YXJkPEEyPihh
MiksIHN0ZDo6Zm9yd2FyZDxBMz4oYTMpLCBzdGQ6OmZvcndhcmQ8QTQ+KGE0KSkpOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNs
YXNzIEE0LCBjbGFzcyBBNT4gdHlwZW5hbWUgX1VuaXF1ZV9pZjxUPjo6X1NpbmdsZV9vYmplY3QK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFz
cyBBNCwgY2xhc3MgQTU+IGlubGluZSB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29i
amVjdAogICAgIG1ha2VfdW5pcXVlKEExJiYgYTEsIEEyJiYgYTIsIEEzJiYgYTMsIEE0JiYgYTQs
IEE1JiYgYTUpCiAgICAgewogICAgICAgICByZXR1cm4gdW5pcXVlX3B0cjxUPihuZXcgVChzdGQ6
OmZvcndhcmQ8QTE+KGExKSwgc3RkOjpmb3J3YXJkPEEyPihhMiksIHN0ZDo6Zm9yd2FyZDxBMz4o
YTMpLCBzdGQ6OmZvcndhcmQ8QTQ+KGE0KSwgc3RkOjpmb3J3YXJkPEE1PihhNSkpKTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBj
bGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2PiB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+OjpfU2lu
Z2xlX29iamVjdAorICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xh
c3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTY+IGlubGluZSB0eXBlbmFtZSBfVW5p
cXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdAogICAgIG1ha2VfdW5pcXVlKEExJiYgYTEsIEEyJiYg
YTIsIEEzJiYgYTMsIEE0JiYgYTQsIEE1JiYgYTUsIEE2JiYgYTYpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdW5pcXVlX3B0cjxUPihuZXcgVChzdGQ6OmZvcndhcmQ8QTE+KGExKSwgc3RkOjpmb3J3
YXJkPEEyPihhMiksIHN0ZDo6Zm9yd2FyZDxBMz4oYTMpLCBzdGQ6OmZvcndhcmQ8QTQ+KGE0KSwg
c3RkOjpmb3J3YXJkPEE1PihhNSksIHN0ZDo6Zm9yd2FyZDxBNj4oYTYpKSk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3Mg
QTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+IHR5cGVuYW1lIF9VbmlxdWVfaWY8VD46
Ol9TaW5nbGVfb2JqZWN0CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEy
LCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTc+IGlubGlu
ZSB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdAogICAgIG1ha2VfdW5pcXVl
KEExJiYgYTEsIEEyJiYgYTIsIEEzJiYgYTMsIEE0JiYgYTQsIEE1JiYgYTUsIEE2JiYgYTYsIEE3
JiYgYTcpCiAgICAgewogICAgICAgICByZXR1cm4gdW5pcXVlX3B0cjxUPihuZXcgVChzdGQ6OmZv
cndhcmQ8QTE+KGExKSwgc3RkOjpmb3J3YXJkPEEyPihhMiksIHN0ZDo6Zm9yd2FyZDxBMz4oYTMp
LCBzdGQ6OmZvcndhcmQ8QTQ+KGE0KSwgc3RkOjpmb3J3YXJkPEE1PihhNSksIHN0ZDo6Zm9yd2Fy
ZDxBNj4oYTYpLCBzdGQ6OmZvcndhcmQ8QTc+KGE3KSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRl
PGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBB
NSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOD4gdHlwZW5hbWUgX1VuaXF1ZV9pZjxUPjo6
X1NpbmdsZV9vYmplY3QKKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIs
IGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3Mg
QTg+IGlubGluZSB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdAogICAgIG1h
a2VfdW5pcXVlKEExJiYgYTEsIEEyJiYgYTIsIEEzJiYgYTMsIEE0JiYgYTQsIEE1JiYgYTUsIEE2
JiYgYTYsIEE3JiYgYTcsIEE4JiYgYTgpCiAgICAgewogICAgICAgICByZXR1cm4gdW5pcXVlX3B0
cjxUPihuZXcgVChzdGQ6OmZvcndhcmQ8QTE+KGExKSwgc3RkOjpmb3J3YXJkPEEyPihhMiksIHN0
ZDo6Zm9yd2FyZDxBMz4oYTMpLCBzdGQ6OmZvcndhcmQ8QTQ+KGE0KSwgc3RkOjpmb3J3YXJkPEE1
PihhNSksIHN0ZDo6Zm9yd2FyZDxBNj4oYTYpLCBzdGQ6OmZvcndhcmQ8QTc+KGE3KSwgc3RkOjpm
b3J3YXJkPEE4PihhOCkpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBB
MSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFz
cyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5PiB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+OjpfU2luZ2xl
X29iamVjdAorICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3Mg
QTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xh
c3MgQTk+IGlubGluZSB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdAogICAg
IG1ha2VfdW5pcXVlKEExJiYgYTEsIEEyJiYgYTIsIEEzJiYgYTMsIEE0JiYgYTQsIEE1JiYgYTUs
IEE2JiYgYTYsIEE3JiYgYTcsIEE4JiYgYTgsIEE5JiYgYTkpCiAgICAgewogICAgICAgICByZXR1
cm4gdW5pcXVlX3B0cjxUPihuZXcgVChzdGQ6OmZvcndhcmQ8QTE+KGExKSwgc3RkOjpmb3J3YXJk
PEEyPihhMiksIHN0ZDo6Zm9yd2FyZDxBMz4oYTMpLCBzdGQ6OmZvcndhcmQ8QTQ+KGE0KSwgc3Rk
Ojpmb3J3YXJkPEE1PihhNSksIHN0ZDo6Zm9yd2FyZDxBNj4oYTYpLCBzdGQ6OmZvcndhcmQ8QTc+
KGE3KSwgc3RkOjpmb3J3YXJkPEE4PihhOCksIHN0ZDo6Zm9yd2FyZDxBOT4oYTkpKSk7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywg
Y2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4LCBjbGFzcyBB
OSwgY2xhc3MgQTEwPiB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+OjpfU2luZ2xlX29iamVjdAorICAg
IHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0
LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTksIGNsYXNz
IEExMD4gaW5saW5lIHR5cGVuYW1lIF9VbmlxdWVfaWY8VD46Ol9TaW5nbGVfb2JqZWN0CiAgICAg
bWFrZV91bmlxdWUoQTEmJiBhMSwgQTImJiBhMiwgQTMmJiBhMywgQTQmJiBhNCwgQTUmJiBhNSwg
QTYmJiBhNiwgQTcmJiBhNywgQTgmJiBhOCwgQTkmJiBhOSwgQTEwJiYgYTEwKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHVuaXF1ZV9wdHI8VD4obmV3IFQoc3RkOjpmb3J3YXJkPEExPihhMSksIHN0
ZDo6Zm9yd2FyZDxBMj4oYTIpLCBzdGQ6OmZvcndhcmQ8QTM+KGEzKSwgc3RkOjpmb3J3YXJkPEE0
PihhNCksIHN0ZDo6Zm9yd2FyZDxBNT4oYTUpLCBzdGQ6OmZvcndhcmQ8QTY+KGE2KSwgc3RkOjpm
b3J3YXJkPEE3PihhNyksIHN0ZDo6Zm9yd2FyZDxBOD4oYTgpLCBzdGQ6OmZvcndhcmQ8QTk+KGE5
KSwgc3RkOjpmb3J3YXJkPEExMD4oYTEwKSkpOwogICAgIH0KICNlbmRpZgogCi0gICAgdGVtcGxh
dGU8Y2xhc3MgVD4gdHlwZW5hbWUgX1VuaXF1ZV9pZjxUPjo6X1Vua25vd25fYm91bmQKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgX1VuaXF1ZV9pZjxUPjo6X1Vua25vd25f
Ym91bmQKICAgICBtYWtlX3VuaXF1ZShzaXplX3QgbikKICAgICB7CiAgICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSBVOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDcyZGM4ZWUzODFkOTE3ZTZiNTY3MTA4N2Zj
YWFkMDgwYTc3ZmQwMGUuLjFkNDMwYWFkM2JjZGU1NDE3ZTliNTZkYWMxNDhhMTBkZWMxYTczNzYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMy0xMC0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIFBhc3NSZWYgYW5kIGNyZWF0ZVJlZkNvdW50ZWQgc28gd2UgY2FuIGltcHJv
dmUgY3JlYXRpb24gb2YgUmVmQ291bnRlZCBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZi5j
cHA6IEFkZGVkIHNvbWUgYmFzaWMgdGVzdHMgZm9yIGFkb3B0UmVmIGFuZCBQYXNzUmVmLgorCiAy
MDEzLTEwLTE1ICBTZXJnaW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+
CiAKICAgICAgICAgW0VGTF1bV0syXSBNYWtlIFNlY2NvbXBGaWx0ZXJzIGJ1aWxkIGFnYWluIGFm
dGVyIHIxNTYzNDkgYW5kIHIxNTYzNTMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1JlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWYuY3Bw
CmluZGV4IDQ1NWQwMGNjMjRkZWM5NzU3NjgzOTI3YjhjODRkNTBhYTZhMTRlNzguLjFiOWVlZjY3
YTg0NmJjMWI0MWYxMDQzNWI5ODVhNjBjMTU1OTBlZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1JlZi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUmVmLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAj
aW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKQEAgLTQwLDYgKzQyLDEzIEBAIFRFU1QoV1RGX1JlZiwgQmFzaWMpCiAgICAg
ICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKICAgICB9CiAgICAgQVNTRVJUX1NU
UkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgewor
ICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIoYWRvcHRSZWYoYSkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsICZwdHIuZ2V0KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFt
ZSk7CisgICAgfQorICAgIEFTU0VSVF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogfQogCiBURVNUKFdURl9SZWYsIEFzc2lnbm1lbnQpCkBAIC02Nyw2ICs3Niw3MSBA
QCBURVNUKFdURl9SZWYsIEFzc2lnbm1lbnQpCiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAg
fQogICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIHwgcmVmKGMpIGRlcmVmKGEpIHwgZGVyZWYoYykg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBSZWY8UmVmTG9nZ2Vy
PiBwdHIoYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJnB0ci5nZXQoKSk7CisgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CisgICAgICAgIHB0ciA9IGFkb3B0UmVmKGIpOworICAgICAgICBBU1NFUlRf
RVEoJmIsICZwdHIuZ2V0KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBB
U1NFUlRfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOworCisgICAgeworICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIoYSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgJnB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8ICJ8ICI7Cisg
ICAgICAgIHB0ciA9IGFkb3B0UmVmKGMpOworICAgICAgICBBU1NFUlRfRVEoJmMsICZwdHIuZ2V0
KCkpOworICAgICAgICBsb2coKSA8PCAifCAiOworICAgIH0KKyAgICBBU1NFUlRfU1RSRVEoInJl
ZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQor
CitQYXNzUmVmPFJlZkxvZ2dlcj4gcGFzc1dpdGhQYXNzUmVmKFBhc3NSZWY8UmVmTG9nZ2VyPiBy
ZWZlcmVuY2UpCit7CisgICAgcmV0dXJuIHJlZmVyZW5jZTsKK30KKworUmVmUHRyPFJlZkxvZ2dl
cj4gcGFzc1dpdGhQYXNzUmVmUHRyKFBhc3NSZWZQdHI8UmVmTG9nZ2VyPiByZWZlcmVuY2UpCit7
CisgICAgcmV0dXJuIHJlZmVyZW5jZTsKK30KKworVEVTVChXVEZfUmVmLCBSZXR1cm5WYWx1ZSkK
K3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOwor
ICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBSZWY8UmVmTG9n
Z2VyPiBwdHIocGFzc1dpdGhQYXNzUmVmKGEpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmcHRy
LmdldCgpKTsKKyAgICB9CisgICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgeworICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwdHIo
YSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJnB0ci5nZXQoKSk7CisgICAgICAgIGxvZygpIDw8
ICJ8ICI7CisgICAgICAgIHB0ciA9IHBhc3NXaXRoUGFzc1JlZihiKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCAmcHRyLmdldCgpKTsKKyAgICAgICAgbG9nKCkgPDwgInwgIjsKKyAgICB9CisgICAg
QVNTRVJUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0
cihwYXNzV2l0aFBhc3NSZWYoYSkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7
CisgICAgfQorICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKHBhc3NX
aXRoUGFzc1JlZlB0cihwYXNzV2l0aFBhc3NSZWYoYSkpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwdHIuZ2V0KCkpOworICAgIH0KKyAgICBBU1NFUlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkK
</data>
<flag name="review"
          id="236906"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>