<?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>164869</bug_id>
          
          <creation_ts>2016-11-17 08:57:42 -0800</creation_ts>
          <short_desc>Add support for rotate in B3 and the relevant assemblers</short_desc>
          <delta_ts>2016-11-17 09:52:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252301</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-17 08:57:42 -0800</bug_when>
    <thetext>Add support for rotate in B3 and the relevant assemblers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252303</commentid>
    <comment_count>1</comment_count>
      <attachid>295051</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-17 09:07:25 -0800</bug_when>
    <thetext>Created attachment 295051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252309</commentid>
    <comment_count>2</comment_count>
      <attachid>295051</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-11-17 09:34:39 -0800</bug_when>
    <thetext>Comment on attachment 295051
Patch

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

r=me

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:670
&gt; +    void rotateRight32(RegisterID src, TrustedImm32 imm, RegisterID dest)
&gt; +    {
&gt; +        m_assembler.ror&lt;32&gt;(dest, src, imm.m_value &amp; 31);
&gt; +    }

It looks like this would transform an identity rotation into a non-identity rotation. Is that desirable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252311</commentid>
    <comment_count>3</comment_count>
      <attachid>295051</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-17 09:35:46 -0800</bug_when>
    <thetext>Comment on attachment 295051
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        ammount by the value. Additionally, this patch refactors some

/ammount/amount/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252314</commentid>
    <comment_count>4</comment_count>
      <attachid>295051</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-17 09:44:15 -0800</bug_when>
    <thetext>Comment on attachment 295051
Patch

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

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:670
&gt;&gt; +    }
&gt; 
&gt; It looks like this would transform an identity rotation into a non-identity rotation. Is that desirable?

AFAIK, ARM doesn&apos;t specify what happens when the immediate is &gt; 31. This matches the behavior if the immediate was put into a register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252315</commentid>
    <comment_count>5</comment_count>
      <attachid>295051</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-17 09:44:28 -0800</bug_when>
    <thetext>Comment on attachment 295051
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt; +        ammount by the value. Additionally, this patch refactors some
&gt; 
&gt; /ammount/amount/

fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252316</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-11-17 09:52:11 -0800</bug_when>
    <thetext>Committed r208848: &lt;http://trac.webkit.org/changeset/208848&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295051</attachid>
            <date>2016-11-17 09:07:25 -0800</date>
            <delta_ts>2016-11-17 09:34:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164869-20161117090719.patch</filename>
            <type>text/plain</type>
            <size>35311</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NWM1NzBiMjg1MDVkNTgyZWZlY2I0MjNiN2YxNTA4NzRjZmY2YTk5Li41ZDY2OWQ0ZGE0MTg3NTI3
OTZkODg1YzY5Y2U3NTM4NDgyN2ExOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAxNi0xMS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igcm90YXRlIGluIEIzIGFuZCB0aGUgcmVs
ZXZhbnQgYXNzZW1ibGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY0ODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBydW5zIFJvdFIgYW5kIFJvdEwgKHJvdGF0ZSByaWdodCBhbmQg
bGVmdCByZXNwZWN0aXZlbHkpCisgICAgICAgIHRocm91Z2ggQjMgYW5kIEIzJ3MgYXNzZW1ibGVy
cy4gT25lIHRoaW5nIG9mIG5vdGUgaXMgdGhhdCBBUk02NCBkb2VzCisgICAgICAgIG5vdCBzdXBw
b3J0IHJvdGF0ZSBsZWZ0IGluc3RlYWQgaXQgYWxsb3dzIG5lZ2F0aXZlIHJpZ2h0IHJvdGF0aW9u
cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gZml4ZXMgYSB0aGVvcmV0aWNhbCBidWcgaW4g
dGhlIGFzc2VtYmxlciB3aGVyZQorICAgICAgICBvbiBYODYgZG9pbmcgc29tZVNoaWZ0T3AocmVn
LCBlZHgpIHdvdWxkIGluc3RlYWQgc2hpZnQgdGhlIHNoaWZ0CisgICAgICAgIGFtbW91bnQgYnkg
dGhlIHZhbHVlLiBBZGRpdGlvbmFsbHksIHRoaXMgcGF0Y2ggcmVmYWN0b3JzIHNvbWUKKyAgICAg
ICAgb2YgdGhlIFg4NiBhc3NlbWJsZXIgdG8gdXNlIHRlbXBsYXRlcyB3aGVuIGRlY2lkaW5nIGhv
dyB0byBmb3JtYXQKKyAgICAgICAgdGhlIGFwcHJvcHJpYXRlIHNoaWZ0IGluc3RydWN0aW9uLgor
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6cm90YXRlUmlnaHQzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNNjQ6OnJvdGF0ZVJpZ2h0NjQpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6cm90YXRlUmlnaHQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpyb3RhdGVMZWZ0MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6bHNoaWZ0NjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cnNoaWZ0NjQpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6dXJzaGlmdDY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnJvdGF0ZVJpZ2h0NjQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6cm90YXRlTGVmdDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6Om9yNjQpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3JxX3JtKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpzaGlmdEluc3RydWN0aW9uMzIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnNhcmxfaThyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzaHJsX2k4cik6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c2hsbF9pOHIpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OnJvcmxfaThyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyb3JsX0NM
cik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6cm9sbF9pOHIpOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6OnJvbGxfQ0xyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpz
aGlmdEluc3RydWN0aW9uNjQpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnNhcnFfQ0xy
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzYXJxX2k4cik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6c2hycV9pOHIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnNo
bHFfaThyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyb3JxX2k4cik6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6cm9ycV9DTHIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OnJvbHFfaThyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpyb2xxX0NMcik6Cisg
ICAgICAgICogYjMvQjNDb21tb24uaDoKKyAgICAgICAgKEpTQzo6QjM6OnJvdGF0ZVJpZ2h0KToK
KyAgICAgICAgKEpTQzo6QjM6OnJvdGF0ZUxlZnQpOgorICAgICAgICAqIGIzL0IzQ29uc3QzMlZh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6cm90UkNvbnN0YW50KToK
KyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6cm90TENvbnN0YW50KToKKyAgICAgICAg
KiBiMy9CM0NvbnN0MzJWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6cm90UkNvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6cm90TENvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM0Nv
bnN0NjRWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM09wY29kZS5j
cHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGIzL0IzT3Bjb2Rl
Lmg6CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNW
YWxpZGF0ZS5jcHA6CisgICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpWYWx1ZTo6cm90UkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpyb3RMQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmVmZmVjdHMpOgorICAgICAgICAoSlND
OjpCMzo6VmFsdWU6OmtleSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6dHlwZUZvcik6Cisg
ICAgICAgICogYjMvQjNWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzVmFsdWVLZXkuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6VmFsdWVLZXk6Om1hdGVyaWFsaXplKToKKyAgICAgICAgKiBiMy9haXIv
QWlySW5zdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6aXNSb3RhdGVSaWdodDMy
VmFsaWQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjppc1JvdGF0ZUxlZnQzMlZhbGlkKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6aXNSb3RhdGVSaWdodDY0VmFsaWQpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjppc1JvdGF0ZUxlZnQ2NFZhbGlkKToKKyAgICAgICAgKiBiMy9haXIvQWlyT3Bj
b2RlLm9wY29kZXM6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RSb3RSKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RSb3RMKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RSb3RSV2l0aEltbVNoaWZ0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RSb3RMV2l0
aEltbVNoaWZ0KToKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisKIDIwMTYtMTEtMTYgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBTbGlnaHQgT2N0YW5lIHJlZ3Jl
c3Npb24gZnJvbSBjb25jdXJyZW50IEdDJ3MgZWFnZXIgb2JqZWN0IHplcm8tZmlsbApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAppbmRleCBkMmJhMmRiNjk1OTBiMjM3ZTI2ZTQ3MmIzYmE3ZTNhNTZjOGYzNTA1Li42NTQ2MTA3
MGFiMWQ2MGRkYWMwMDdhYzgzODI2MmY4ZGMzYmQ1M2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtNjY0LDkg
KzY2NCwzNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycjw2ND4oZGVzdCwgZGVz
dCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCByb3RhdGVSaWdodDMyKFJl
Z2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5yb3I8MzI+KGRlc3QsIHNyYywgaW1tLm1fdmFsdWUgJiAzMSk7
CisgICAgfQorCisgICAgdm9pZCByb3RhdGVSaWdodDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgc3JjRHN0KQorICAgIHsKKyAgICAgICAgcm90YXRlUmlnaHQzMihzcmNEc3QsIGltbSwg
c3JjRHN0KTsKKyAgICB9CisKKyAgICB2b2lkIHJvdGF0ZVJpZ2h0MzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgc2hpZnRBbW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5yb3I8MzI+KGRlc3QsIHNyYywgc2hpZnRBbW1vdW50KTsKKyAgICB9CisK
KyAgICB2b2lkIHJvdGF0ZVJpZ2h0NjQoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnJvcjw2ND4oZGVz
dCwgc3JjLCBpbW0ubV92YWx1ZSAmIDYzKTsKKyAgICB9CisKICAgICB2b2lkIHJvdGF0ZVJpZ2h0
NjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEc3QpCiAgICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5yb3I8NjQ+KHNyY0RzdCwgc3JjRHN0LCBpbW0ubV92YWx1ZSAmIDYzKTsKKyAg
ICAgICAgcm90YXRlUmlnaHQ2NChzcmNEc3QsIGltbSwgc3JjRHN0KTsKKyAgICB9CisKKyAgICB2
b2lkIHJvdGF0ZVJpZ2h0NjQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW1vdW50
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5yb3I8NjQ+KGRl
c3QsIHNyYywgc2hpZnRBbW1vdW50KTsKICAgICB9CiAKICAgICB2b2lkIHJzaGlmdDMyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgKaW5kZXggOWI0NTQ5MTJlM2I3YzY0OTczNWQ1NjY3ZjQ1ZTY4OGY0NGNkMDUz
MS4uY2FmNzkyYTRiMjJlNDBiOGE2Nzc0ODRlYTA1Mjc4ODUxMTFhODI2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaApAQCAtNTY2LDcgKzU2Niw0NSBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUzMklmTmVl
ZGVkKHNyYywgZGVzdCk7CiAgICAgICAgIHVyc2hpZnQzMihpbW0sIGRlc3QpOwogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgcm90YXRlUmlnaHQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5yb3JsX2k4cihpbW0ubV92YWx1ZSwg
ZGVzdCk7CisgICAgfQorCisgICAgdm9pZCByb3RhdGVSaWdodDMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc3JjID09IFg4NlJlZ2lzdGVyczo6
ZWN4KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIucm9ybF9DTHIoZGVzdCk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgQVNTRVJUKHNyYyAhPSBkZXN0KTsKKworICAgICAgICAgICAgLy8g
Q2FuIG9ubHkgcm90YXRlIGJ5IGVjeCwgc28gd2UgZG8gc29tZSBzd2FwcGluZyBpZiB3ZSBzZWUg
YW55dGhpbmcgZWxzZS4KKyAgICAgICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVjeCk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5yb3JsX0NMcihkZXN0ID09IFg4NlJlZ2lzdGVyczo6
ZWN4ID8gc3JjIDogZGVzdCk7CisgICAgICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjpl
Y3gpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCByb3RhdGVMZWZ0MzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm9s
bF9pOHIoaW1tLm1fdmFsdWUsIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgcm90YXRlTGVmdDMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc3Jj
ID09IFg4NlJlZ2lzdGVyczo6ZWN4KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIucm9sbF9DTHIo
ZGVzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKHNyYyAhPSBkZXN0KTsK
KworICAgICAgICAgICAgLy8gQ2FuIG9ubHkgcm90YXRlIGJ5IGVjeCwgc28gd2UgZG8gc29tZSBz
d2FwcGluZyBpZiB3ZSBzZWUgYW55dGhpbmcgZWxzZS4KKyAgICAgICAgICAgIHN3YXAoc3JjLCBY
ODZSZWdpc3RlcnM6OmVjeCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5yb2xsX0NMcihkZXN0
ID09IFg4NlJlZ2lzdGVyczo6ZWN4ID8gc3JjIDogZGVzdCk7CisgICAgICAgICAgICBzd2FwKHNy
YywgWDg2UmVnaXN0ZXJzOjplY3gpOworICAgICAgICB9CisgICAgfQorCiAgICAgdm9pZCBzdWIz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuc3VibF9ycihzcmMsIGRlc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDhiMWIzMTc2NTA1ZGIx
OWU3YjgxZDgxODQwZWU0MTYwMzMxMGU2MTUuLmM5YmMwNzgxZjZkZmE1YWI5MWQ0N2YxYWRmY2E4
N2IwMmU1Y2MwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTQwMiwxMCArNDAyLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNobHFfQ0xyKGRlc3QpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIEFTU0VSVChzcmMgIT0gZGVzdCk7Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgLy8gQ2FuIG9ubHkgc2hpZnQgYnkgZWN4LCBzbyB3ZSBkbyBzb21lIHN3YXBwaW5nIGlm
IHdlIHNlZSBhbnl0aGluZyBlbHNlLgogICAgICAgICAgICAgc3dhcChzcmMsIFg4NlJlZ2lzdGVy
czo6ZWN4KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNobHFfQ0xyKGRlc3QpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuc2hscV9DTHIoZGVzdCA9PSBYODZSZWdpc3RlcnM6OmVjeCA/IHNy
YyA6IGRlc3QpOwogICAgICAgICAgICAgc3dhcChzcmMsIFg4NlJlZ2lzdGVyczo6ZWN4KTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQyNCw3ICs0MjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIC8vIENhbiBvbmx5IHNoaWZ0IGJ5IGVjeCwgc28gd2UgZG8gc29tZSBzd2Fw
cGluZyBpZiB3ZSBzZWUgYW55dGhpbmcgZWxzZS4KICAgICAgICAgICAgIHN3YXAoc3JjLCBYODZS
ZWdpc3RlcnM6OmVjeCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zYXJxX0NMcihkZXN0KTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNhcnFfQ0xyKGRlc3QgPT0gWDg2UmVnaXN0ZXJzOjpl
Y3ggPyBzcmMgOiBkZXN0KTsKICAgICAgICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVj
eCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00NDMsNyArNDQzLDQ1IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gQ2FuIG9ubHkgc2hpZnQgYnkgZWN4LCBzbyB3ZSBkbyBz
b21lIHN3YXBwaW5nIGlmIHdlIHNlZSBhbnl0aGluZyBlbHNlLgogICAgICAgICAgICAgc3dhcChz
cmMsIFg4NlJlZ2lzdGVyczo6ZWN4KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNocnFfQ0xy
KGRlc3QpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2hycV9DTHIoZGVzdCA9PSBYODZSZWdp
c3RlcnM6OmVjeCA/IHNyYyA6IGRlc3QpOworICAgICAgICAgICAgc3dhcChzcmMsIFg4NlJlZ2lz
dGVyczo6ZWN4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcm90YXRlUmlnaHQ2NChU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5yb3JxX2k4cihpbW0ubV92YWx1ZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCByb3Rh
dGVSaWdodDY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBpZiAoc3JjID09IFg4NlJlZ2lzdGVyczo6ZWN4KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
cm9ycV9DTHIoZGVzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKHNyYyAh
PSBkZXN0KTsKKworICAgICAgICAgICAgLy8gQ2FuIG9ubHkgcm90YXRlIGJ5IGVjeCwgc28gd2Ug
ZG8gc29tZSBzd2FwcGluZyBpZiB3ZSBzZWUgYW55dGhpbmcgZWxzZS4KKyAgICAgICAgICAgIHN3
YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVjeCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5yb3Jx
X0NMcihkZXN0ID09IFg4NlJlZ2lzdGVyczo6ZWN4ID8gc3JjIDogZGVzdCk7CisgICAgICAgICAg
ICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplY3gpOworICAgICAgICB9CisgICAgfQorCisgICAg
dm9pZCByb3RhdGVMZWZ0NjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIucm9scV9pOHIoaW1tLm1fdmFsdWUsIGRlc3QpOworICAg
IH0KKworICAgIHZvaWQgcm90YXRlTGVmdDY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBpZiAoc3JjID09IFg4NlJlZ2lzdGVyczo6ZWN4KQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIucm9scV9DTHIoZGVzdCk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgQVNTRVJUKHNyYyAhPSBkZXN0KTsKKworICAgICAgICAgICAgLy8gQ2FuIG9ubHkgcm90
YXRlIGJ5IGVjeCwgc28gd2UgZG8gc29tZSBzd2FwcGluZyBpZiB3ZSBzZWUgYW55dGhpbmcgZWxz
ZS4KKyAgICAgICAgICAgIHN3YXAoc3JjLCBYODZSZWdpc3RlcnM6OmVjeCk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5yb2xxX0NMcihkZXN0ID09IFg4NlJlZ2lzdGVyczo6ZWN4ID8gc3JjIDog
ZGVzdCk7CiAgICAgICAgICAgICBzd2FwKHNyYywgWDg2UmVnaXN0ZXJzOjplY3gpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNTQyLDExICs1ODAsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoc3Jj
LCBkZXN0KTsKICAgICAgICAgb3I2NChpbW0sIGRlc3QpOwogICAgIH0KLSAgICAKLSAgICB2b2lk
IHJvdGF0ZVJpZ2h0NjQoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEc3QpCi0gICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5yb3JxX2k4cihpbW0ubV92YWx1ZSwgc3JjRHN0KTsKLSAg
ICB9CiAKICAgICB2b2lkIHN1YjY0KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
aW5kZXggYzJjMmNlM2I1ZmQ5OTM1ZTcyODYwMzQzNjdmMjViODgzYmFlOGYyNi4uODMyMzM2MDFl
OTFiZGI0OWE2ODFiN2E1OTdlYzIwNzU4MzQxN2EzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC05NjcsMTYgKzk2Nyw2IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX1hPUl9Fdkd2LCBz
cmMsIGJhc2UsIG9mZnNldCk7CiAgICAgfQotICAgIAotICAgIHZvaWQgcm9ycV9pOHIoaW50IGlt
bSwgUmVnaXN0ZXJJRCBkc3QpCi0gICAgewotICAgICAgICBpZiAoaW1tID09IDEpCi0gICAgICAg
ICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDJfRXYxLCBHUk9VUDJfT1BfUk9S
LCBkc3QpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVP
cDY0KE9QX0dST1VQMl9FdkliLCBHUk9VUDJfT1BfUk9SLCBkc3QpOwotICAgICAgICAgICAgbV9m
b3JtYXR0ZXIuaW1tZWRpYXRlOChpbW0pOwotICAgICAgICB9Ci0gICAgfQogCiAjZW5kaWYKIApA
QCAtMTAyOCwxNSArMTAxOCwyMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICB2b2lk
IHNhcmxfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorcHJpdmF0ZToKKyAgICB0ZW1wbGF0
ZTxHcm91cE9wY29kZUlEIG9wPgorICAgIHZvaWQgc2hpZnRJbnN0cnVjdGlvbjMyKGludCBpbW0s
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKGltbSA9PSAxKQotICAgICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdjEsIEdST1VQMl9PUF9TQVIsIGRz
dCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2MSwgb3As
IGRzdCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0dST1VQMl9FdkliLCBHUk9VUDJfT1BfU0FSLCBkc3QpOworICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdkliLCBvcCwgZHN0KTsKICAgICAgICAgICAgIG1f
Zm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICAgICAgfQogICAgIH0KK3B1YmxpYzoKKwor
ICAgIHZvaWQgc2FybF9pOHIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAg
ICBzaGlmdEluc3RydWN0aW9uMzI8R1JPVVAyX09QX1NBUj4oaW1tLCBkc3QpOworICAgIH0KIAog
ICAgIHZvaWQgc2FybF9DTHIoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMTA0NSwxMiArMTA0
Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNocmxfaThyKGludCBpbW0sIFJlZ2lzdGVy
SUQgZHN0KQogICAgIHsKLSAgICAgICAgaWYgKGltbSA9PSAxKQotICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdjEsIEdST1VQMl9PUF9TSFIsIGRzdCk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9F
dkliLCBHUk9VUDJfT1BfU0hSLCBkc3QpOwotICAgICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRp
YXRlOChpbW0pOwotICAgICAgICB9CisgICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb24zMjxHUk9VUDJf
T1BfU0hSPihpbW0sIGRzdCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgc2hybF9DTHIoUmVnaXN0
ZXJJRCBkc3QpCkBAIC0xMDYwLDEyICsxMDUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaGxs
X2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7Ci0gICAgICAgIGlmIChpbW0gPT0g
MSkKLSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9HUk9VUDJfRXYxLCBHUk9V
UDJfT1BfU0hMLCBkc3QpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9HUk9VUDJfRXZJYiwgR1JPVVAyX09QX1NITCwgZHN0KTsKLSAgICAgICAg
ICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKLSAgICAgICAgfQorICAgICAgICBzaGlm
dEluc3RydWN0aW9uMzI8R1JPVVAyX09QX1NITD4oaW1tLCBkc3QpOwogICAgIH0KIAogICAgIHZv
aWQgc2hsbF9DTHIoUmVnaXN0ZXJJRCBkc3QpCkBAIC0xMDczLDMwICsxMDYxLDUyIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdkNMLCBHUk9VUDJf
T1BfU0hMLCBkc3QpOwogICAgIH0KIAotI2lmIENQVShYODZfNjQpCi0gICAgdm9pZCBzYXJxX0NM
cihSZWdpc3RlcklEIGRzdCkKKyAgICB2b2lkIHJvcmxfaThyKGludCBpbW0sIFJlZ2lzdGVySUQg
ZHN0KQogICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAyX0V2
Q0wsIEdST1VQMl9PUF9TQVIsIGRzdCk7CisgICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb24zMjxHUk9V
UDJfT1BfUk9SPihpbW0sIGRzdCk7CiAgICAgfQogCi0gICAgdm9pZCBzYXJxX2k4cihpbnQgaW1t
LCBSZWdpc3RlcklEIGRzdCkKKyAgICB2b2lkIHJvcmxfQ0xyKFJlZ2lzdGVySUQgZHN0KQorICAg
IHsKKyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wKE9QX0dST1VQMl9FdkNMLCBHUk9VUDJf
T1BfUk9SLCBkc3QpOworICAgIH0KKworICAgIHZvaWQgcm9sbF9pOHIoaW50IGltbSwgUmVnaXN0
ZXJJRCBkc3QpCisgICAgeworICAgICAgICBzaGlmdEluc3RydWN0aW9uMzI8R1JPVVAyX09QX1JP
TD4oaW1tLCBkc3QpOworICAgIH0KKworICAgIHZvaWQgcm9sbF9DTHIoUmVnaXN0ZXJJRCBkc3Qp
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfR1JPVVAyX0V2Q0wsIEdS
T1VQMl9PUF9ST0wsIGRzdCk7CisgICAgfQorCisjaWYgQ1BVKFg4Nl82NCkKK3ByaXZhdGU6Cisg
ICAgdGVtcGxhdGU8R3JvdXBPcGNvZGVJRCBvcD4KKyAgICB2b2lkIHNoaWZ0SW5zdHJ1Y3Rpb242
NChpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0gPT0gMSkK
LSAgICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMl9FdjEsIEdST1VQ
Ml9PUF9TQVIsIGRzdCk7CisgICAgICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9H
Uk9VUDJfRXYxLCBvcCwgZHN0KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDJfRXZJYiwgR1JPVVAyX09QX1NBUiwgZHN0KTsKKyAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMl9FdkliLCBvcCwgZHN0
KTsKICAgICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKICAgICAgICAgfQog
ICAgIH0KK3B1YmxpYzoKKyAgICB2b2lkIHNhcnFfQ0xyKFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAyX0V2Q0wsIEdST1VQMl9P
UF9TQVIsIGRzdCk7CisgICAgfQorCisgICAgdm9pZCBzYXJxX2k4cihpbnQgaW1tLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB7CisgICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb242NDxHUk9VUDJfT1BfU0FS
PihpbW0sIGRzdCk7CisgICAgfQogCiAgICAgdm9pZCBzaHJxX2k4cihpbnQgaW1tLCBSZWdpc3Rl
cklEIGRzdCkKICAgICB7Ci0gICAgICAgIGlmIChpbW0gPT0gMSkKLSAgICAgICAgICAgIG1fZm9y
bWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMl9FdjEsIEdST1VQMl9PUF9TSFIsIGRzdCk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JP
VVAyX0V2SWIsIEdST1VQMl9PUF9TSFIsIGRzdCk7Ci0gICAgICAgICAgICBtX2Zvcm1hdHRlci5p
bW1lZGlhdGU4KGltbSk7Ci0gICAgICAgIH0KKyAgICAgICAgc2hpZnRJbnN0cnVjdGlvbjY0PEdS
T1VQMl9PUF9TSFI+KGltbSwgZHN0KTsKICAgICB9CiAKICAgICB2b2lkIHNocnFfQ0xyKFJlZ2lz
dGVySUQgZHN0KQpAQCAtMTEwNiwxOCArMTExNiwzMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNo
bHFfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKLSAgICAgICAgaWYgKGltbSA9
PSAxKQotICAgICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAyX0V2MSwg
R1JPVVAyX09QX1NITCwgZHN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDJfRXZJYiwgR1JPVVAyX09QX1NITCwgZHN0KTsKLSAg
ICAgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTgoaW1tKTsKLSAgICAgICAgfQorICAgICAg
ICBzaGlmdEluc3RydWN0aW9uNjQ8R1JPVVAyX09QX1NITD4oaW1tLCBkc3QpOwogICAgIH0KIAog
ICAgIHZvaWQgc2hscV9DTHIoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1h
dHRlci5vbmVCeXRlT3A2NChPUF9HUk9VUDJfRXZDTCwgR1JPVVAyX09QX1NITCwgZHN0KTsKICAg
ICB9CisKKyAgICB2b2lkIHJvcnFfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsK
KyAgICAgICAgc2hpZnRJbnN0cnVjdGlvbjY0PEdST1VQMl9PUF9ST1I+KGltbSwgZHN0KTsKKyAg
ICB9CisKKyAgICB2b2lkIHJvcnFfQ0xyKFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAg
bV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfR1JPVVAyX0V2Q0wsIEdST1VQMl9PUF9ST1IsIGRz
dCk7CisgICAgfQorCisgICAgdm9pZCByb2xxX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkK
KyAgICB7CisgICAgICAgIHNoaWZ0SW5zdHJ1Y3Rpb242NDxHUk9VUDJfT1BfUk9MPihpbW0sIGRz
dCk7CisgICAgfQorCisgICAgdm9pZCByb2xxX0NMcihSZWdpc3RlcklEIGRzdCkKKyAgICB7Cisg
ICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMl9FdkNMLCBHUk9VUDJfT1Bf
Uk9MLCBkc3QpOworICAgIH0KICNlbmRpZiAvLyBDUFUoWDg2XzY0KQogCiAgICAgdm9pZCBpbXVs
bF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbW1vbi5oCmluZGV4IDkyMWExZmNjZjcwMzYzM2Q0YTUxYWIwOTYxMzdmZGQyMzdjNzQzNTUu
LjQxZThlZTA5NjViNzBiYWJlOTgzYTNiOTVlOTIzMTNjOWM0OTBiNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbW1vbi5oCkBAIC0xNDgsNiArMTQ4LDI4IEBAIHN0YXRpYyBJbnRUeXBlIGNo
aWxsVU1vZChJbnRUeXBlIG51bWVyYXRvciwgSW50VHlwZSBkZW5vbWluYXRvcikKICAgICByZXR1
cm4gdW5zaWduZWROdW1lcmF0b3IgJSB1bnNpZ25lZERlbm9taW5hdG9yOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRUeXBlPgorc3RhdGljIEludFR5cGUgcm90YXRlUmlnaHQoSW50VHlwZSB2
YWx1ZSwgaW50MzJfdCBzaGlmdCkKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFrZV91
bnNpZ25lZDxJbnRUeXBlPjo6dHlwZSBVbnNpZ25lZEludFR5cGU7CisgICAgVW5zaWduZWRJbnRU
eXBlIHVWYWx1ZSA9IHN0YXRpY19jYXN0PFVuc2lnbmVkSW50VHlwZT4odmFsdWUpOworICAgIGlu
dDMyX3QgYml0cyA9IHNpemVvZihJbnRUeXBlKSAqIDg7CisgICAgaW50MzJfdCBtYXNrID0gYml0
cyAtIDE7CisgICAgc2hpZnQgJj0gbWFzazsKKyAgICByZXR1cm4gKHVWYWx1ZSA+PiBzaGlmdCkg
fCAodVZhbHVlIDw8ICgoYml0cyAtIHNoaWZ0KSAmIG1hc2spKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgSW50VHlwZT4KK3N0YXRpYyBJbnRUeXBlIHJvdGF0ZUxlZnQoSW50VHlwZSB2YWx1ZSwg
aW50MzJfdCBzaGlmdCkKK3sKKyAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25l
ZDxJbnRUeXBlPjo6dHlwZSBVbnNpZ25lZEludFR5cGU7CisgICAgVW5zaWduZWRJbnRUeXBlIHVW
YWx1ZSA9IHN0YXRpY19jYXN0PFVuc2lnbmVkSW50VHlwZT4odmFsdWUpOworICAgIGludDMyX3Qg
Yml0cyA9IHNpemVvZihJbnRUeXBlKSAqIDg7CisgICAgaW50MzJfdCBtYXNrID0gYml0cyAtIDE7
CisgICAgc2hpZnQgJj0gbWFzazsKKyAgICByZXR1cm4gKHVWYWx1ZSA8PCBzaGlmdCkgfCAodVZh
bHVlID4+ICgoYml0cyAtIHNoaWZ0KSAmIG1hc2spKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCiAKICNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKaW5kZXggZWFlYjg1OTkwNzNhYTgxOGI4MGU2ZTcxNWRh
OGUxNDFlMjg2NzY2OC4uNDlhNzQ1M2E0OWE1OWM4OGYzYzZiYmZkYTI2NmFmYjY5ODViNzMxNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCkBAIC0xNzUs
NiArMTc1LDIwIEBAIFZhbHVlKiBDb25zdDMyVmFsdWU6OnpTaHJDb25zdGFudChQcm9jZWR1cmUm
IHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29u
c3QzMlZhbHVlPihvcmlnaW4oKSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG1fdmFsdWUpID4+IChvdGhlci0+YXNJbnQzMigpICYgMzEpKSk7CiB9CiAKK1ZhbHVl
KiBDb25zdDMyVmFsdWU6OnJvdFJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVl
KiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4o
KSwgcm90YXRlUmlnaHQobV92YWx1ZSwgb3RoZXItPmFzSW50MzIoKSkpOworfQorCitWYWx1ZSog
Q29uc3QzMlZhbHVlOjpyb3RMQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCks
IHJvdGF0ZUxlZnQobV92YWx1ZSwgb3RoZXItPmFzSW50MzIoKSkpOworfQorCiBWYWx1ZSogQ29u
c3QzMlZhbHVlOjpiaXR3aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsK
ICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3RGbG9hdFZhbHVlPihvcmlnaW4oKSwgYml0d2lzZV9j
YXN0PGZsb2F0PihtX3ZhbHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdDMyVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJW
YWx1ZS5oCmluZGV4IDk5MGM5NzY4Zjc0MjQxMzYyYTA2ODRlOTEwZTA0NWRlYzgzNTQ1NTMuLmFm
NGQwOGIwNTBkMDVmMDIxYTA5OTMzYjEzNGYxYjg4ZDRhMTM5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAg
ICBWYWx1ZSogc2hsQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKICAgICBWYWx1ZSogc1NockNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZh
bHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIHpTaHJDb25zdGFudChQcm9j
ZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBy
b3RSQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBWYWx1ZSogcm90TENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGJpdHdpc2VDYXN0Q29uc3RhbnQoUHJvY2Vk
dXJlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGlUb0RDb25zdGFudChQcm9jZWR1cmUm
KSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogaVRvRkNvbnN0YW50KFByb2NlZHVyZSYpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3Q2NFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5j
cHAKaW5kZXggYmQ0OTc1NjllMzIwZGFkZDJiMTcyYWJhMWExMzQxZmQzY2U2MWM3NS4uNGY3Yjg2
YjJlOWQ0ZGU2MTU1ZDQzMzY1YTBmZTExMDRiOWI1ZDA1YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwCkBAIC0xNzUsNiArMTc1LDIwIEBAIFZhbHVlKiBD
b25zdDY0VmFsdWU6OnpTaHJDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKICAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdmFsdWUpID4+IChv
dGhlci0+YXNJbnQzMigpICYgNjMpKSk7CiB9CiAKK1ZhbHVlKiBDb25zdDY0VmFsdWU6OnJvdFJD
b25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKK3sKKyAg
ICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwgcm90YXRlUmlnaHQobV92YWx1
ZSwgb3RoZXItPmFzSW50MzIoKSkpOworfQorCitWYWx1ZSogQ29uc3Q2NFZhbHVlOjpyb3RMQ29u
c3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAg
aWYgKCFvdGhlci0+aGFzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIHByb2MuYWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIHJvdGF0ZUxlZnQobV92YWx1ZSwg
b3RoZXItPmFzSW50MzIoKSkpOworfQorCiBWYWx1ZSogQ29uc3Q2NFZhbHVlOjpiaXR3aXNlQ2Fz
dENvbnN0YW50KFByb2NlZHVyZSYgcHJvYykgY29uc3QKIHsKICAgICByZXR1cm4gcHJvYy5hZGQ8
Q29uc3REb3VibGVWYWx1ZT4ob3JpZ2luKCksIGJpdHdpc2VfY2FzdDxkb3VibGU+KG1fdmFsdWUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmgKaW5kZXggOWI0YWY0
NzUwMDRhNjQ0OTA3ZDliYWNlNzQwNmRmYzJhYzEyNzdlOS4uM2VmZDU1ODQ3YzI3ZmU3OTU5NDdj
YTA2MDc1YjMxNjZmNDBiYWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3Q2NFZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2
NFZhbHVlLmgKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogICAgIFZhbHVlKiBzaGxDb25zdGFu
dChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZh
bHVlKiBzU2hyQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBv
dmVycmlkZTsKICAgICBWYWx1ZSogelNockNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVl
KiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIHJvdFJDb25zdGFudChQcm9jZWR1
cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiByb3RM
Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsK
ICAgICBWYWx1ZSogYml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWYWx1ZSogaVRvRENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFZhbHVlKiBpVG9GQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDE4MGIyNGU0MzNjMzQ0
MTU3M2M3NjNiZjgwMDQyY2IzOTQ1MTk1MTEuLjk3NTkyMjZlNTJiODgwOWFiNTA0YTk2YjViZGQ4
MWI3NTEwODNkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CkBAIC0yMTkxLDYgKzIxOTEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgUm90UjogeworICAgICAgICAgICAgYXBwZW5kU2hpZnQ8
Um90YXRlUmlnaHQzMiwgUm90YXRlUmlnaHQ2ND4obV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUt
PmNoaWxkKDEpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgUm90TDogeworICAgICAgICAgICAgYXBwZW5kU2hpZnQ8Um90YXRlTGVmdDMyLCBSb3RhdGVM
ZWZ0NjQ+KG1fdmFsdWUtPmNoaWxkKDApLCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIENsejogewogICAgICAgICAgICAg
YXBwZW5kVW5PcDxDb3VudExlYWRpbmdaZXJvczMyLCBDb3VudExlYWRpbmdaZXJvczY0PihtX3Zh
bHVlLT5jaGlsZCgwKSk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzT3Bjb2RlLmNwcAppbmRleCBkNjhlODY1OTk5Y2NhNjUzZTZhNDk4MGM5ZjViYWIwYzU0Yzg5
OWIyLi4zYzdmZWRlNDUwNGQ3NWYxM2ZlOWUyOTM0NWJjYTI3Nzg3Mzc4MzkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKQEAgLTE1Miw2ICsxNTIsMTIgQEAgdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wY29kZSBvcGNvZGUpCiAgICAgY2FzZSBaU2hy
OgogICAgICAgICBvdXQucHJpbnQoIlpTaHIiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
Um90UjoKKyAgICAgICAgb3V0LnByaW50KCJSb3RSIik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIFJvdEw6CisgICAgICAgIG91dC5wcmludCgiUm90TCIpOworICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBDbHo6CiAgICAgICAgIG91dC5wcmludCgiQ2x6Iik7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKaW5kZXggYTgxODY5NTRiZjNiZTg2M2Q4N2E1
NmZmNTlkZDc5ZGU4MzNiNWYwNi4uYzY4YWFiYjBkYjdhYzgxNTgyNDUxYTQzYjdkNWQ1ZGNlZTM4
MjRmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTk1LDYgKzk1LDggQEAg
ZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICBTaGwsCiAgICAgU1NociwgLy8gQXJpdGhtZXRp
YyBTaGlmdC4KICAgICBaU2hyLCAvLyBMb2dpY2FsIFNoaWZ0LgorICAgIFJvdFIsIC8vIFJvdGF0
ZSBSaWdodC4KKyAgICBSb3RMLCAvLyBSb3RhdGUgTGVmdC4KICAgICBDbHosIC8vIENvdW50IGxl
YWRpbmcgemVyb3MuCiAKICAgICAvLyBGbG9hdGluZyBwb2ludCBtYXRoLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IGRjNDU0ZTlmODhkYmIz
YjkzZjA5NzcwNjYyMGQ1ZmE2MDAzYTg1ZGEuLjlhZWI0NDViNzFlYmFiMzBhNTEzYjkxMDU3MTgy
ZmQ5YWU2NDExOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJl
bmd0aC5jcHAKQEAgLTEwNjksOSArMTA2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChoYW5kbGVTaGlmdEFtb3Vu
dCgpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgICBoYW5kbGVTaGlmdEFt
b3VudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTU2hyOgpAQCAtMTEz
MSw5ICsxMTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChoYW5kbGVTaGlmdEFtb3VudCgpKQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgICBoYW5kbGVTaGlmdEFtb3VudCgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBaU2hyOgpAQCAtMTE0NCw5ICsxMTQwLDM5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGlmIChoYW5kbGVTaGlmdEFtb3VudCgpKQorICAgICAgICAgICAgaGFuZGxlU2hp
ZnRBbW91bnQoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUm90UjoKKyAg
ICAgICAgICAgIC8vIFR1cm4gdGhpczogUm90Uihjb25zdGFudDEsIGNvbnN0YW50MikKKyAgICAg
ICAgICAgIC8vIEludG8gdGhpczogKGNvbnN0YW50MSA+PiBjb25zdGFudDIpIHwgKGNvbnN0YW50
MSA8PCBzaXplb2YoY29uc3RhbnQxKSAqIDggLSBjb25zdGFudDIpCisgICAgICAgICAgICBpZiAo
VmFsdWUqIGNvbnN0YW50ID0gbV92YWx1ZS0+Y2hpbGQoMCktPnJvdFJDb25zdGFudChtX3Byb2Ms
IG1fdmFsdWUtPmNoaWxkKDEpKSkgeworICAgICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFs
dWUoY29uc3RhbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBoYW5kbGVTaGlmdEFtb3VudCgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBSb3RMOgorICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBSb3RMKGNvbnN0YW50
MSwgY29uc3RhbnQyKQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiAoY29uc3RhbnQxIDw8IGNv
bnN0YW50MikgfCAoY29uc3RhbnQxID4+IHNpemVvZihjb25zdGFudDEpICogOCAtIGNvbnN0YW50
MikKKyAgICAgICAgICAgIGlmIChWYWx1ZSogY29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+
cm90TENvbnN0YW50KG1fcHJvYywgbV92YWx1ZS0+Y2hpbGQoMSkpKSB7CisgICAgICAgICAgICAg
ICAgcmVwbGFjZVdpdGhOZXdWYWx1ZShjb25zdGFudCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFSTTY0IG9ubHkgaGFzIHJvdGF0ZSBy
aWdodC4KKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogUm90TCh2YWx1ZSwgc2hpZnQpCisgICAg
ICAgICAgICAvLyBJbnRvIHRoaXM6IFJvdFIodmFsdWUsIE5lZyhzaGlmdCkpCisgICAgICAgICAg
ICBpZiAoaXNBUk02NCgpKSB7CisgICAgICAgICAgICAgICAgVmFsdWUqIG5ld1NoaWZ0ID0gbV9p
bnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtX2luZGV4LCBOZWcsIG1fdmFsdWUtPm9yaWdpbigp
LCBtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIHJvdGF0ZSA9IG1f
aW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obV9pbmRleCwgUm90UiwgbV92YWx1ZS0+b3JpZ2lu
KCksIG1fdmFsdWUtPmNoaWxkKDApLCBuZXdTaGlmdCk7CisgICAgICAgICAgICAgICAgcmVwbGFj
ZVdpdGhJZGVudGl0eShyb3RhdGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQogCisgICAgICAgICAgICBoYW5kbGVTaGlmdEFtb3VudCgpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBBYnM6CkBAIC0yMTg0LDEyICsyMjEwLDEyIEBAIHByaXZhdGU6
CiAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgfQogCi0gICAgYm9vbCBoYW5kbGVTaGlm
dEFtb3VudCgpCisgICAgdm9pZCBoYW5kbGVTaGlmdEFtb3VudCgpCiAgICAgewogICAgICAgICAv
LyBTaGlmdCBhbnl0aGluZyBieSB6ZXJvIGlzIGlkZW50aXR5LgogICAgICAgICBpZiAobV92YWx1
ZS0+Y2hpbGQoMSktPmlzSW50MzIoMCkpIHsKICAgICAgICAgICAgIHJlcGxhY2VXaXRoSWRlbnRp
dHkobV92YWx1ZS0+Y2hpbGQoMCkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUgc2hpZnQgYWxyZWFkeSBt
YXNrcyBpdHMgc2hpZnQgYW1vdW50LiBJZiB0aGUgc2hpZnQgYW1vdW50IGlzIGJlaW5nIG1hc2tl
ZCBieSBhCkBAIC0yMjAyLDExICsyMjI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICYmICht
X3ZhbHVlLT5jaGlsZCgxKS0+Y2hpbGQoMSktPmFzSW50MzIoKSAmIG1hc2spID09IG1hc2spIHsK
ICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDEpID0gbV92YWx1ZS0+Y2hpbGQoMSktPmNoaWxk
KDApOwogICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIC8vIERvbid0
IG5lZWQgdG8gcmV0dXJuIHRydWUsIHNpbmNlIHdlJ3JlIHN0aWxsIHRoZSBzYW1lIHNoaWZ0LCBh
bmQgd2UgY2FuIHN0aWxsIGNhc2NhZGUKLSAgICAgICAgICAgIC8vIHRocm91Z2ggb3RoZXIgb3B0
aW1pemF0aW9ucy4KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIHZvaWQgcmVwbGFjZUlmUmVkdW5kYW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbGlkYXRlLmNwcAppbmRleCBmM2UyNDdiZjZkN2NjMmZiMmJjNjRiN2YyZGJlMzhm
MWYwM2M4YzIwLi5mNzIyNGNmMjdkYjE5NGQ3Mjg4M2Q4ZTJiN2ZjMjhiNTEwZTZjODMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCkBAIC0yMjksNiArMjI5LDggQEAg
cHVibGljOgogICAgICAgICAgICAgY2FzZSBTaGw6CiAgICAgICAgICAgICBjYXNlIFNTaHI6CiAg
ICAgICAgICAgICBjYXNlIFpTaHI6CisgICAgICAgICAgICBjYXNlIFJvdFI6CisgICAgICAgICAg
ICAgICAgY2FzZSBSb3RMOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKCF2YWx1ZS0+a2luZCgp
Lmhhc0V4dHJhQml0cygpLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDIsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSB2YWx1ZS0+Y2hpbGQoMCktPnR5cGUo
KSwgKCJBdCAiLCAqdmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRl
eCA4MGViODRiNDk3ZGNkZmQ0MTMwMzE3ZWRiOWI2YTEyMmM3YjE2ZDhhLi42NDQxMGFjNTRmYzk1
ZDYzYTdkNTE5MDMzYTg4ZWUzMGYwMWM5NzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCkBAIC0zNDMsNiArMzQzLDE2IEBAIFZhbHVlKiBWYWx1ZTo6elNockNvbnN0YW50KFBy
b2NlZHVyZSYsIGNvbnN0IFZhbHVlKikgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAor
VmFsdWUqIFZhbHVlOjpyb3RSQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqKSBjb25z
dAoreworICAgIHJldHVybiBudWxscHRyOworfQorCitWYWx1ZSogVmFsdWU6OnJvdExDb25zdGFu
dChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKIFZhbHVlKiBWYWx1ZTo6Yml0d2lzZUNhc3RDb25zdGFudChQcm9jZWR1cmUmKSBjb25z
dAogewogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTUwLDYgKzU2MCw4IEBAIEVmZmVjdHMgVmFs
dWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgU2hsOgogICAgIGNhc2UgU1NocjoKICAgICBj
YXNlIFpTaHI6CisgICAgY2FzZSBSb3RSOgorICAgIGNhc2UgUm90TDoKICAgICBjYXNlIENsejoK
ICAgICBjYXNlIEFiczoKICAgICBjYXNlIENlaWw6CkBAIC02OTYsNiArNzA4LDggQEAgVmFsdWVL
ZXkgVmFsdWU6OmtleSgpIGNvbnN0CiAgICAgY2FzZSBTaGw6CiAgICAgY2FzZSBTU2hyOgogICAg
IGNhc2UgWlNocjoKKyAgICBjYXNlIFJvdFI6CisgICAgY2FzZSBSb3RMOgogICAgIGNhc2UgRXF1
YWw6CiAgICAgY2FzZSBOb3RFcXVhbDoKICAgICBjYXNlIExlc3NUaGFuOgpAQCAtNzc3LDYgKzc5
MSw4IEBAIFR5cGUgVmFsdWU6OnR5cGVGb3IoS2luZCBraW5kLCBWYWx1ZSogZmlyc3RDaGlsZCwg
VmFsdWUqIHNlY29uZENoaWxkKQogICAgIGNhc2UgU2hsOgogICAgIGNhc2UgU1NocjoKICAgICBj
YXNlIFpTaHI6CisgICAgY2FzZSBSb3RSOgorICAgIGNhc2UgUm90TDoKICAgICBjYXNlIENsejoK
ICAgICBjYXNlIEFiczoKICAgICBjYXNlIENlaWw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
aAppbmRleCA3YmQ0NjMwMmFjMzM0MGY1ZWM0OGU3M2QwNDgxZGI3MGY0ZmI3ZjM2Li5lYmU1MmFk
M2Y3MGQ0ZDVkZTgyNmI0OTYxYWRhZDFmOWQwMzFlMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmgKQEAgLTE3NSw2ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWYWx1ZSog
c2hsQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKICAgICB2
aXJ0dWFsIFZhbHVlKiBzU2hyQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiB6U2hyQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlKiByb3RSQ29uc3RhbnQo
UHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVl
KiByb3RMQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFZhbHVlKiBiaXR3aXNlQ2FzdENvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0Owog
ICAgIHZpcnR1YWwgVmFsdWUqIGlUb0RDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKICAgICB2
aXJ0dWFsIFZhbHVlKiBpVG9GQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7CkBAIC0zMzMsNiAr
MzM1LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBTaGw6CiAgICAgICAgIGNhc2UgU1NocjoK
ICAgICAgICAgY2FzZSBaU2hyOgorICAgICAgICBjYXNlIFJvdFI6CisgICAgICAgIGNhc2UgUm90
TDoKICAgICAgICAgY2FzZSBFcXVhbDoKICAgICAgICAgY2FzZSBOb3RFcXVhbDoKICAgICAgICAg
Y2FzZSBMZXNzVGhhbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlS2V5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmNwcAppbmRl
eCBhYTBmYTFhODhhYzIwMTU5Zjk3ZDIxNTU4NDllZGEzNWQ1ZWEyMjE4Li4xMGVkZmYzYzQwMGRi
ZjE1ZGZkMjQ3ZjA2NjE5NzYzMTk0Njk4NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZUtleS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsdWVLZXkuY3BwCkBAIC04Niw2ICs4Niw4IEBAIFZhbHVlKiBWYWx1ZUtleTo6bWF0ZXJpYWxp
emUoUHJvY2VkdXJlJiBwcm9jLCBPcmlnaW4gb3JpZ2luKSBjb25zdAogICAgIGNhc2UgU2hsOgog
ICAgIGNhc2UgU1NocjoKICAgICBjYXNlIFpTaHI6CisgICAgY2FzZSBSb3RSOgorICAgIGNhc2Ug
Um90TDoKICAgICBjYXNlIEVxdWFsOgogICAgIGNhc2UgTm90RXF1YWw6CiAgICAgY2FzZSBMZXNz
VGhhbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaApp
bmRleCA0MTc0Yjk4M2YwN2IwMmIyMGIxNDExNDI2YjI3NTVkMzU2ZWIwYTY5Li4xYWFhMDZjNTBj
MDg2N2MxNWVjMTMzOGFlY2IyNzg3NzE4OWYwNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oCkBAIC0yMTQsNiArMjE0LDI2IEBAIGlubGluZSBi
b29sIGlzVXJzaGlmdDY0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKICAgICByZXR1cm4gaXNTaGlm
dFZhbGlkKGluc3QpOwogfQogCitpbmxpbmUgYm9vbCBpc1JvdGF0ZVJpZ2h0MzJWYWxpZChjb25z
dCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc1NoaWZ0VmFsaWQoaW5zdCk7Cit9CisKK2lu
bGluZSBib29sIGlzUm90YXRlTGVmdDMyVmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICBy
ZXR1cm4gaXNTaGlmdFZhbGlkKGluc3QpOworfQorCitpbmxpbmUgYm9vbCBpc1JvdGF0ZVJpZ2h0
NjRWYWxpZChjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHJldHVybiBpc1NoaWZ0VmFsaWQoaW5z
dCk7Cit9CisKK2lubGluZSBib29sIGlzUm90YXRlTGVmdDY0VmFsaWQoY29uc3QgSW5zdCYgaW5z
dCkKK3sKKyAgICByZXR1cm4gaXNTaGlmdFZhbGlkKGluc3QpOworfQorCiBpbmxpbmUgYm9vbCBp
c1g4NkRpdkhlbHBlclZhbGlkKGNvbnN0IEluc3QmIGluc3QpCiB7CiAjaWYgQ1BVKFg4NikgfHwg
Q1BVKFg4Nl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
T3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5v
cGNvZGVzCmluZGV4IDlkOTA1YjhjMTJmMmVjMDQ2NWI5MjQyMDhkYTUzYzRiNTJhZmNmYWYuLjQx
NzBmNzQ2MmQ3M2Y2ZDExNWRjNTAzZThiNTNlZTM5NGIwYjYzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtMzczLDcgKzM3Myw3IEBA
IHg4NjpMc2hpZnQzMiBVOkc6MzIsIFVaRDpHOjMyCiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBU
bXAKIAotYXJtNjQ6IExzaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjY0Cithcm02NDogTHNo
aWZ0NjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAogICAgIFRtcCwgVG1wLCBUbXAKICAgICBUbXAs
IEltbSwgVG1wCiAKQEAgLTM4OSw3ICszODksNyBAQCB4ODY6IFJzaGlmdDMyIFU6RzozMiwgVVpE
Okc6MzIKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCi1hcm02NDogUnNoaWZ0NjQgVTpH
OjY0LCBVOkc6NjQsIFpEOkc6NjQKK2FybTY0OiBSc2hpZnQ2NCBVOkc6NjQsIFU6Rzo2NCwgRDpH
OjY0CiAgICAgVG1wLCBUbXAsIFRtcAogICAgIFRtcCwgSW1tLCBUbXAKIApAQCAtNDA1LDcgKzQw
NSw3IEBAIHg4NjogVXJzaGlmdDMyIFU6RzozMiwgVVpEOkc6MzIKICAgICBUbXAqLCBUbXAKICAg
ICBJbW0sIFRtcAogCi1hcm02NDogVXJzaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBaRDpHOjY0Cith
cm02NDogVXJzaGlmdDY0IFU6Rzo2NCwgVTpHOjY0LCBEOkc6NjQKICAgICBUbXAsIFRtcCwgVG1w
CiAgICAgVG1wLCBJbW0sIFRtcAogCkBAIC00MTMsNiArNDEzLDMwIEBAIHg4Nl82NDogVXJzaGlm
dDY0IFU6Rzo2NCwgVUQ6Rzo2NAogICAgIFRtcCosIFRtcAogICAgIEltbSwgVG1wCiAKK3g4Nl82
NDogUm90YXRlUmlnaHQzMiBVOkc6MzIsIFVaRDpHOjMyCisgICAgVG1wKiwgVG1wCisgICAgSW1t
LCBUbXAKKworYXJtNjQ6IFJvdGF0ZVJpZ2h0MzIgVTpHOjMyLCBVOkc6MzIsIFpEOkc6MzIKKyAg
ICBUbXAsIFRtcCwgVG1wCisgICAgVG1wLCBJbW0sIFRtcAorCit4ODZfNjQ6IFJvdGF0ZVJpZ2h0
NjQgVTpHOjY0LCBVRDpHOjY0CisgICAgVG1wKiwgVG1wCisgICAgSW1tLCBUbXAKKworYXJtNjQ6
IFJvdGF0ZVJpZ2h0NjQgVTpHOjY0LCBVOkc6NjQsIEQ6Rzo2NAorICAgIFRtcCwgVG1wLCBUbXAK
KyAgICBUbXAsIEltbSwgVG1wCisKK3g4Nl82NDogUm90YXRlTGVmdDMyIFU6RzozMiwgVVpEOkc6
MzIKKyAgICBUbXAqLCBUbXAKKyAgICBJbW0sIFRtcAorCit4ODZfNjQ6IFJvdGF0ZUxlZnQ2NCBV
Okc6NjQsIFVEOkc6NjQKKyAgICBUbXAqLCBUbXAKKyAgICBJbW0sIFRtcAorCiBPcjMyIFU6Rzoz
MiwgVTpHOjMyLCBaRDpHOjMyCiAgICAgVG1wLCBUbXAsIFRtcAogICAgIGFybTY0OiBCaXRJbW0s
IFRtcCwgVG1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmluZGV4IGQ4Y2RlNjE0ZjFi
YTk4MDUyNzRhOTE1M2Q4YmUyNzU4NmJhMjQwNTMuLjU2MmFjODZiZDhmMWQ0ZWE1NmYwMTJlMmE2
ZTBiZDMxNzZkZDAwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0xMTk1
OSw2ICsxMTk1OSw3NiBAQCB2b2lkIHRlc3RTU2hyU2hsNjQoaW50NjRfdCB2YWx1ZSwgaW50MzJf
dCBzc2hyQW1vdW50LCBpbnQzMl90IHNobEFtb3VudCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3ZvaWQgdGVzdFJvdFIoVCB2YWx1ZUludCwgaW50MzJfdCBzaGlmdCkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworCisg
ICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGlmIChzaXplb2YoVCkgPT0g
NCkKKyAgICAgICAgdmFsdWUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBP
cmlnaW4oKSwgdmFsdWUpOworCisgICAgVmFsdWUqIGFtbW91bnQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsK
KyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBSb3RSLCBPcmlnaW4oKSwgdmFs
dWUsIGFtbW91bnQpKTsKKworICAgIENIRUNLX0VRKGNvbXBpbGVBbmRSdW48VD4ocHJvYywgdmFs
dWVJbnQsIHNoaWZ0KSwgcm90YXRlUmlnaHQodmFsdWVJbnQsIHNoaWZ0KSk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RSb3RMKFQgdmFsdWVJbnQsIGludDMyX3Qgc2hpZnQp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBpZiAo
c2l6ZW9mKFQpID09IDQpCisgICAgICAgIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksIHZhbHVlKTsKKworICAgIFZhbHVlKiBhbW1vdW50ID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUm90TCwg
T3JpZ2luKCksIHZhbHVlLCBhbW1vdW50KSk7CisKKyAgICBDSEVDS19FUShjb21waWxlQW5kUnVu
PFQ+KHByb2MsIHZhbHVlSW50LCBzaGlmdCksIHJvdGF0ZUxlZnQodmFsdWVJbnQsIHNoaWZ0KSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RSb3RSV2l0aEltbVNoaWZ0KFQg
dmFsdWVJbnQsIGludDMyX3Qgc2hpZnQpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIFZhbHVlKiB2YWx1ZSA9IHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKKyAgICBpZiAoc2l6ZW9mKFQpID09IDQpCisgICAgICAgIHZhbHVlID0g
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIHZhbHVlKTsKKwor
ICAgIFZhbHVlKiBhbW1vdW50ID0gcm9vdC0+YXBwZW5kSW50Q29uc3RhbnQocHJvYywgT3JpZ2lu
KCksIEludDMyLCBzaGlmdCk7CisgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Um90UiwgT3JpZ2luKCksIHZhbHVlLCBhbW1vdW50KSk7CisKKyAgICBDSEVDS19FUShjb21waWxl
QW5kUnVuPFQ+KHByb2MsIHZhbHVlSW50LCBzaGlmdCksIHJvdGF0ZVJpZ2h0KHZhbHVlSW50LCBz
aGlmdCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCB0ZXN0Um90TFdpdGhJbW1T
aGlmdChUIHZhbHVlSW50LCBpbnQzMl90IHNoaWZ0KQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBWYWx1ZSogdmFs
dWUgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgaWYgKHNpemVvZihUKSA9PSA0KQorICAgICAgICB2
YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCB2YWx1
ZSk7CisKKyAgICBWYWx1ZSogYW1tb3VudCA9IHJvb3QtPmFwcGVuZEludENvbnN0YW50KHByb2Ms
IE9yaWdpbigpLCBJbnQzMiwgc2hpZnQpOworICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1
ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFJvdEwsIE9yaWdpbigpLCB2YWx1ZSwgYW1tb3VudCkpOworCisgICAgQ0hFQ0tfRVEo
Y29tcGlsZUFuZFJ1bjxUPihwcm9jLCB2YWx1ZUludCwgc2hpZnQpLCByb3RhdGVMZWZ0KHZhbHVl
SW50LCBzaGlmdCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCB0ZXN0Q29tcHV0
ZURpdmlzaW9uTWFnaWMoVCB2YWx1ZSwgVCBtYWdpY011bHRpcGxpZXIsIHVuc2lnbmVkIHNoaWZ0
KQogewogICAgIERpdmlzaW9uTWFnaWM8VD4gbWFnaWMgPSBjb21wdXRlRGl2aXNpb25NYWdpYyh2
YWx1ZSk7CkBAIC0xNTI5Myw2ICsxNTM2MywxNiBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0
ZXIpCiAKICAgICBSVU4odGVzdENoZWNrTXVsNjRTU2hyKCkpOwogCisgICAgUlVOX0JJTkFSWSh0
ZXN0Um90UiwgaW50MzJPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5B
UlkodGVzdFJvdFIsIGludDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5f
QklOQVJZKHRlc3RSb3RMLCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAg
UlVOX0JJTkFSWSh0ZXN0Um90TCwgaW50NjRPcGVyYW5kcygpLCBpbnQzMk9wZXJhbmRzKCkpOwor
CisgICAgUlVOX0JJTkFSWSh0ZXN0Um90UldpdGhJbW1TaGlmdCwgaW50MzJPcGVyYW5kcygpLCBp
bnQzMk9wZXJhbmRzKCkpOworICAgIFJVTl9CSU5BUlkodGVzdFJvdFJXaXRoSW1tU2hpZnQsIGlu
dDY0T3BlcmFuZHMoKSwgaW50MzJPcGVyYW5kcygpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RSb3RM
V2l0aEltbVNoaWZ0LCBpbnQzMk9wZXJhbmRzKCksIGludDMyT3BlcmFuZHMoKSk7CisgICAgUlVO
X0JJTkFSWSh0ZXN0Um90TFdpdGhJbW1TaGlmdCwgaW50NjRPcGVyYW5kcygpLCBpbnQzMk9wZXJh
bmRzKCkpOworCiAgICAgUlVOKHRlc3RDb21wdXRlRGl2aXNpb25NYWdpYzxpbnQzMl90PigyLCAt
MjE0NzQ4MzY0NywgMCkpOwogICAgIFJVTih0ZXN0VHJpdmlhbEluZmluaXRlTG9vcCgpKTsKICAg
ICBSVU4odGVzdEZvbGRQYXRoRXF1YWwoKSk7Cg==
</data>
<flag name="review"
          id="317692"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>