<?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>73493</bug_id>
          
          <creation_ts>2011-11-30 14:50:05 -0800</creation_ts>
          <short_desc>[JSC] Implement ArrayBuffer transfer</short_desc>
          <delta_ts>2012-02-28 22:41:10 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Lomov">dslomov</reporter>
          <assigned_to name="Dmitry Lomov">dslomov</assigned_to>
          <cc>dslomov</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>512153</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-11-30 14:50:05 -0800</bug_when>
    <thetext>JSC should implement ArrayBuffer transfer as per http://www.khronos.org/registry/typedarray/specs/latest/#9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566298</commentid>
    <comment_count>1</comment_count>
      <attachid>129171</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-27 19:33:54 -0800</bug_when>
    <thetext>Created attachment 129171
Implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567291</commentid>
    <comment_count>2</comment_count>
      <attachid>129366</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2012-02-28 17:59:14 -0800</bug_when>
    <thetext>Created attachment 129366
Windows build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567390</commentid>
    <comment_count>3</comment_count>
      <attachid>129366</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 22:40:58 -0800</bug_when>
    <thetext>Comment on attachment 129366
Windows build fix

Clearing flags on attachment: 129366

Committed r109196: &lt;http://trac.webkit.org/changeset/109196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567391</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 22:41:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129171</attachid>
            <date>2012-02-27 19:33:54 -0800</date>
            <delta_ts>2012-02-28 17:59:14 -0800</delta_ts>
            <desc>Implementation</desc>
            <filename>73493.patch</filename>
            <type>text/plain</type>
            <size>39931</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNjM4ZDZiLi4xMjhlM2UxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDIt
MjcgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBbSlNDXSBJ
bXBsZW1lbnQgQXJyYXlCdWZmZXIgdHJhbnNmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDkzLgorICAgICAgICBJbXBsZW1lbnQgQXJyYXlCdWZm
ZXIgdHJhbnNmZXIsIHBlciBLaHJvbm9zIHNwZWM6ICBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3Jl
Z2lzdHJ5L3R5cGVkYXJyYXkvc3BlY3MvbGF0ZXN0LyM5LgorICAgICAgICBUaGlzIGJyaW5ncyBw
YXJpdHkgd2l0aCBWOCBpbXBsZW1lbnRhdGlvbiBvZiB0cmFuc2ZlcmFibGUgdHlwZWQgYXJyYXlz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvYXJyYXlidWZmZXItdHJhbnNmZXItb2YtY29udHJvbC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5YnVmZmVy
LXRyYW5zZmVyLW9mLWNvbnRyb2wuanM6IEFkZGVkIHRlc3RzIGZvciBVaW50OENsYW1wZWRBcnJh
eQorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9T
a2lwcGVkOgorCiAyMDEyLTAyLTI3ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIEZpeGVkIGEgdHlwbyBpbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmRyYXdJbWFnZShIVE1MQ2FudmFzRWxlbWVudCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5YnVmZmVyLXRyYW5z
ZmVyLW9mLWNvbnRyb2wtZXhwZWN0ZWQudHh0CmluZGV4IDE1ZmIxY2YuLmM2NTVhYWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5YnVmZmVyLXRyYW5zZmVy
LW9mLWNvbnRyb2wtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2FycmF5YnVmZmVyLXRyYW5zZmVyLW9mLWNvbnRyb2wtZXhwZWN0ZWQudHh0CkBAIC0xMiw2
ICsxMiw3IEBAIFBBU1MgcmF3IEludDMyCiBQQVNTIHJhdyBVaW50MzIKIFBBU1MgcmF3IEludDgK
IFBBU1MgcmF3IFVpbnQ4CitQQVNTIHJhdyBVaW50OENsYW1wZWQKIFBBU1MgcmF3IEludDE2CiBQ
QVNTIHJhdyBVaW50MTYKIFBBU1MgcmF3IEZsb2F0MzIKQEAgLTIxLDYgKzIyLDcgQEAgUEFTUyBz
ZW5kIHZpZXcsIGJ1ZmZlciBmb3IgSW50MzIKIFBBU1Mgc2VuZCB2aWV3LCBidWZmZXIgZm9yIFVp
bnQzMgogUEFTUyBzZW5kIHZpZXcsIGJ1ZmZlciBmb3IgSW50OAogUEFTUyBzZW5kIHZpZXcsIGJ1
ZmZlciBmb3IgVWludDgKK1BBU1Mgc2VuZCB2aWV3LCBidWZmZXIgZm9yIFVpbnQ4Q2xhbXBlZAog
UEFTUyBzZW5kIHZpZXcsIGJ1ZmZlciBmb3IgSW50MTYKIFBBU1Mgc2VuZCB2aWV3LCBidWZmZXIg
Zm9yIFVpbnQxNgogUEFTUyBzZW5kIHZpZXcsIGJ1ZmZlciBmb3IgRmxvYXQzMgpAQCAtMzAsNiAr
MzIsNyBAQCBQQVNTIHNlbmQgYnVmZmVyLCB2aWV3IGZvciBJbnQzMgogUEFTUyBzZW5kIGJ1ZmZl
ciwgdmlldyBmb3IgVWludDMyCiBQQVNTIHNlbmQgYnVmZmVyLCB2aWV3IGZvciBJbnQ4CiBQQVNT
IHNlbmQgYnVmZmVyLCB2aWV3IGZvciBVaW50OAorUEFTUyBzZW5kIGJ1ZmZlciwgdmlldyBmb3Ig
VWludDhDbGFtcGVkCiBQQVNTIHNlbmQgYnVmZmVyLCB2aWV3IGZvciBJbnQxNgogUEFTUyBzZW5k
IGJ1ZmZlciwgdmlldyBmb3IgVWludDE2CiBQQVNTIHNlbmQgYnVmZmVyLCB2aWV3IGZvciBGbG9h
dDMyCkBAIC0zOSw2ICs0Miw3IEBAIFBBU1Mgc3F1YXNoIHVucmVsYXRlZCB2aWV3cyBmb3IgSW50
MzIKIFBBU1Mgc3F1YXNoIHVucmVsYXRlZCB2aWV3cyBmb3IgVWludDMyCiBQQVNTIHNxdWFzaCB1
bnJlbGF0ZWQgdmlld3MgZm9yIEludDgKIFBBU1Mgc3F1YXNoIHVucmVsYXRlZCB2aWV3cyBmb3Ig
VWludDgKK1BBU1Mgc3F1YXNoIHVucmVsYXRlZCB2aWV3cyBmb3IgVWludDhDbGFtcGVkCiBQQVNT
IHNxdWFzaCB1bnJlbGF0ZWQgdmlld3MgZm9yIEludDE2CiBQQVNTIHNxdWFzaCB1bnJlbGF0ZWQg
dmlld3MgZm9yIFVpbnQxNgogUEFTUyBzcXVhc2ggdW5yZWxhdGVkIHZpZXdzIGZvciBGbG9hdDMy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMv
YXJyYXlidWZmZXItdHJhbnNmZXItb2YtY29udHJvbC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmpz
CmluZGV4IDBiYzdiMjkuLjc2MDY2ZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmpz
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheWJ1
ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmpzCkBAIC0yNSwxMSArMjUsMTIgQEAgdmFyIGFsbEJ1
ZmZlclR5cGVzID0KICAgICBbIlVpbnQzMiIsIFVpbnQzMkFycmF5LCA0XSwKICAgICBbIkludDgi
LCBJbnQ4QXJyYXksIDFdLAogICAgIFsiVWludDgiLCBVaW50OEFycmF5LCAxXSwKKyAgICBbIlVp
bnQ4Q2xhbXBlZCIsIFVpbnQ4Q2xhbXBlZEFycmF5LCAxXSwKICAgICBbIkludDE2IiwgSW50MTZB
cnJheSwgMl0sCiAgICAgWyJVaW50MTYiLCBVaW50MTZBcnJheSwgMl0sCiAgICAgWyJGbG9hdDMy
IiwgRmxvYXQzMkFycmF5LCA0XSwKICAgICBbIkZsb2F0NjQiLCBGbG9hdDY0QXJyYXksIDhdLAot
ICAgIFsiRGF0YVZpZXciLCBEYXRhVmlldywgMV0KKyAgICBbIkRhdGFWaWV3IiwgRGF0YVZpZXcs
IDFdIAogXTsKIAogZnVuY3Rpb24gaXNUeXBlZEFycmF5KHZpZXcpCkBAIC0zNjAsNiArMzYxLDcg
QEAgdGVzdExpc3QgPSB0ZXN0TGlzdC5jb25jYXQoYWxsQnVmZmVyVHlwZXMubWFwKGZ1bmN0aW9u
KGJ1ZmZlclR5cGUpIHsgcmV0dXJuIHsKICAgICB9CiB9fSkpOwogCisKIGZ1bmN0aW9uIHZpZXdB
bmRCdWZmZXIodmlld0ZpcnN0LCBidWZmZXJUeXBlKSB7CiAgICAgcmV0dXJuIHsKICAgICAgICAg
bmFtZTogKHZpZXdGaXJzdCA/ICJzZW5kIHZpZXcsIGJ1ZmZlciBmb3IgIiA6ICJzZW5kIGJ1ZmZl
ciwgdmlldyBmb3IgIikgKyBidWZmZXJUeXBlWzBdLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3Rl
ZC50eHQKaW5kZXggOTg2ZDI2My4uYjY3ODdlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0
ZWQudHh0CkBAIC0yMiw5ICsyMiw5IEBAIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJzIxNDc0ODM2
NDgnLCBudWxsKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9zdGluZyBtZXNz
YWdlICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0
IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3Rpbmcg
bWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29i
amVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0
aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XScs
IFtvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93
IGFuIGV4Y2VwdGlvbgotRkFJTDogUG9zdGluZyBtZXNzYWdlICgnW29iamVjdCBBcnJheUJ1ZmZl
cl0nLCBbb2JqZWN0IEFycmF5QnVmZmVyXSk6IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IKLUZBSUw6IGFycmF5QnVmZmVyIG5vdCBuZXV0ZXJlZDsgYnl0ZUxlbmd0aCA9IDMw
Ci1GQUlMOiB2aWV3IHdhcyBub3QgbmV1dGVyZWQ7IGxlbmd0aCA9IDEwCitQQVNTOiBQb3N0aW5n
IG1lc3NhZ2UgKCdbb2JqZWN0IEFycmF5QnVmZmVyXScsIFtvYmplY3QgQXJyYXlCdWZmZXJdKSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogYXJyYXlCdWZmZXIgbmV1dGVyZWQKK1BB
U1M6IHZpZXcgbmV1dGVyZWQKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ2RvbmUnLCB1bmRlZmlu
ZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBSZWNlaXZlZCBtZXNzYWdlICc0JyB3aXRo
IDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc0JyB3aXRoIDAgcG9ydHMuCkBAIC00Miw1ICs0
Miw2IEBAIFJlY2VpdmVkIG1lc3NhZ2UgJzIxNDc0ODM2NDgnIHdpdGggMCBwb3J0cy4KIFJlY2Vp
dmVkIG1lc3NhZ2UgJ1tvYmplY3QgT2JqZWN0XScgd2l0aCAyIHBvcnRzLgogUmVjZWl2ZWQgbWVz
c2FnZSAnW29iamVjdCBNZXNzYWdlUG9ydF0nIHdpdGggMiBwb3J0cy4KIFJlY2VpdmVkIG1lc3Nh
Z2UgJ1tvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBvcnRdJyB3aXRoIDIgcG9y
dHMuCitSZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IEFycmF5QnVmZmVyXScgd2l0aCAwIHBvcnRz
LgogUmVjZWl2ZWQgbWVzc2FnZSAnZG9uZScgd2l0aCAwIHBvcnRzLgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCmluZGV4IDA1MTU3ZTMuLmQ4MWU2YzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCkBAIC0xNTE0LDkgKzE1MTQsNiBAQCBmYXN0L2Zvcm1zL2N1cnNvci1hdC1lZGl0YWJsZS1j
b250ZW50LWJvdW5kYXJ5Lmh0bWwKIGZhc3QvdGV4dC9nbHlwaC1yZW9yZGVyaW5nLmh0bWwKIGZh
c3QvdGV4dC9pcGEtdG9uZS1sZXR0ZXJzLmh0bWwKIAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM0OTMKLWZhc3QvY2FudmFzL3dlYmdsL2FycmF5YnVmZmVyLXRy
YW5zZmVyLW9mLWNvbnRyb2wuaHRtbAotCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzY1MwogZmFzdC9ldmVudHMvb2Zmc2V0WC1vZmZzZXRZLmh0bWwKIGZhc3Qv
Zm9ybXMvbnVtYmVyL3NwaW4taW4tbXVsdGktY29sdW1uLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Nr
aXBwZWQKaW5kZXggOGZiNWVkMy4uYjcxZWE0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQK
QEAgLTUyNCw5ICs1MjQsNiBAQCBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFy
cmF5cy5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzE0
OAogZmFzdC9jYW52YXMvd2ViZ2wvd2ViZ2wtdGV4dHVyZS1iaW5kaW5nLXByZXNlcnZlZC5odG1s
CiAKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDkzCi1mYXN0
L2NhbnZhcy93ZWJnbC9hcnJheWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmh0bWwKLQogIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5NzQKIGZhc3QvY2FudmFz
L3dlYmdsL2NhbnZhcy0yZC13ZWJnbC10ZXh0dXJlLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQKaW5kZXggY2IzMWIxNS4uMGFiNTZmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0y
NTY1LDkgKzI1NjUsNiBAQCBodHRwL3Rlc3RzL3NlY3VyaXR5L3RleHQtdHJhY2stY3Jvc3Nvcmln
aW4uaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI2OTQK
IGZhc3QvY2FudmFzL2NhbnZhcy1saW5lV2lkdGguaHRtbAogCi0jIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQ5MwotZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXlidWZm
ZXItdHJhbnNmZXItb2YtY29udHJvbC5odG1sCi0KICMgW1F0XSBmYXN0L2Zvcm1zL3NlbGVjdC9s
aXN0Ym94LWluLW11bHRpLWNvbHVtbi5odG1sIGZhaWxzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzY2MAogZmFzdC9mb3Jtcy9zZWxlY3QvbGlzdGJveC1pbi1t
dWx0aS1jb2x1bW4uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCAwMDAzNjFmLi4w
NzE1YjUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTUzMiw5ICsxNTMyLDYgQEAg
cG9pbnRlci1sb2NrLwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzI0MzUKIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJyYXlzLmh0bWwKIAot
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0OTMKLWZhc3QvY2Fu
dmFzL3dlYmdsL2FycmF5YnVmZmVyLXRyYW5zZmVyLW9mLWNvbnRyb2wuaHRtbAotCiAjIEZhaWxz
IGJlY2F1c2UgTXV0YXRpb25PYnNlcnZlcnMgYXJlIG5vdCBub3RpZmllZCBhdCBlbmQtb2YtdGFz
awogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgyOTAKIGZhc3Qv
bXV0YXRpb24vZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQKaW5kZXggZTZlZDg3OS4uYTk5ZjlkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9Ta2lwcGVkCkBAIC0yMDQyLDkgKzIwNDIsNiBAQCBwb2ludGVyLWxvY2svCiAjIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjQzNQogZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcnJheXMuaHRtbAogCi0jIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQ5MwotZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXlidWZm
ZXItdHJhbnNmZXItb2YtY29udHJvbC5odG1sCi0KICMgRmFpbHMgYmVjYXVzZSBNdXRhdGlvbk9i
c2VydmVycyBhcmUgbm90IG5vdGlmaWVkIGF0IGVuZC1vZi10YXNrCiAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI5MAogZmFzdC9tdXRhdGlvbi9lbmQtb2YtdGFz
ay1kZWxpdmVyeS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2MmU0YzI4Li4wMDIw
MDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMi0y
NyAgRG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgorCisgICAgICAgIFtKU0NdIElt
cGxlbWVudCBBcnJheUJ1ZmZlciB0cmFuc2ZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0OTMuCisgICAgICAgIEltcGxlbWVudCBBcnJheUJ1ZmZl
ciB0cmFuc2ZlciwgcGVyIEtocm9ub3Mgc3BlYzogIGh0dHA6Ly93d3cua2hyb25vcy5vcmcvcmVn
aXN0cnkvdHlwZWRhcnJheS9zcGVjcy9sYXRlc3QvIzkuCisgICAgICAgIFRoaXMgYnJpbmdzIHBh
cml0eSB3aXRoIFY4IGltcGxlbWVudGF0aW9uIG9mIHRyYW5zZmVyYWJsZSB0eXBlZCBhcnJheXMu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
QXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEFycmF5QnVmZmVyKTogQWRkZWQgZXh0cmEgZXhwb3J0
LgorCiAyMDEyLTAyLTI3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfNTAwL1M3LjJfQTEuNl9UMS5odG1sIGNyYXNoZXMg
aW4gdGhlIGludGVycHJldGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0FycmF5QnVmZmVyLmgK
aW5kZXggZWU5NWY1Yi4uMzI1N2RmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXJyYXlC
dWZmZXIuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRWaWV3KEFycmF5
QnVmZmVyVmlldyopOwogICAgIHZvaWQgcmVtb3ZlVmlldyhBcnJheUJ1ZmZlclZpZXcqKTsKIAot
ICAgIGJvb2wgdHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYsIFZlY3RvcjxSZWZQdHI8QXJy
YXlCdWZmZXJWaWV3PiA+JiBuZXV0ZXJlZFZpZXdzKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCB0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiwgVmVjdG9yPFJlZlB0cjxBcnJheUJ1
ZmZlclZpZXc+ID4mIG5ldXRlcmVkVmlld3MpOwogICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0
dXJuICFtX2NvbnRlbnRzLm1fZGF0YTsgfQogCiAgICAgfkFycmF5QnVmZmVyKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNjc4NWM1MC4uZWQ3ODNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisy
MDEyLTAyLTI3ICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gSW1wbGVtZW50IEFycmF5QnVmZmVyIHRyYW5zZmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQ5My4KKyAgICAgICAgSW1wbGVtZW50IEFy
cmF5QnVmZmVyIHRyYW5zZmVyLCBwZXIgS2hyb25vcyBzcGVjOiAgaHR0cDovL3d3dy5raHJvbm9z
Lm9yZy9yZWdpc3RyeS90eXBlZGFycmF5L3NwZWNzL2xhdGVzdC8jOS4KKyAgICAgICAgVGhpcyBi
cmluZ3MgcGFyaXR5IHdpdGggVjggaW1wbGVtZW50YXRpb24gb2YgdHJhbnNmZXJhYmxlIHR5cGVk
IGFycmF5cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cHVzaFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpoYW5kbGVJbml0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
c3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxNZXNzYWdlUG9ydEFy
cmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRWYWx1ZTo6c2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChDbG9uZVNlcmlhbGl6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9uZVNlcmlhbGl6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpmaWxsVHJhbnNmZXJNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wQXJyYXlCdWZmZXJWaWV3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkNsb25lRGVzZXJpYWxpemVyOjpDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKyAgICAgICAgKENsb25lRGVz
ZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6dHJhbnNmZXJBcnJheUJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk6CisKIDIwMTItMDItMjcgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFu
eTEwMC5uZXQ+CiAKICAgICAgICAgRml4ZWQgYSB0eXBvIGluIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAwYmEyNTllLi4wNjM0NjU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCkBAIC01NjgsNiArNTY4LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hvd01vZGFsRGlh
bG9nKEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKERP
TVdpbmRvdyogaW1wbCwgRXhlY1N0YXRlKiBleGVjLCBib29sIGRvVHJhbnNmZXIpCiB7CiAgICAg
TWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydHM7CisgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJh
eUJ1ZmZlcnM7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGhhcyB2YXJpYWJsZSBhcmd1bWVudHMg
YW5kIGNhbiBiZToKICAgICAvLyBQZXIgY3VycmVudCBzcGVjOgpAQCAtNTgyLDEzICs1ODMsMTQg
QEAgc3RhdGljIEpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93KiBpbXBsLCBFeGVj
U3RhdGUqIGV4ZWMsIGJvb2wgZG9UcmFuc2YKICAgICAgICAgICAgIHRhcmdldE9yaWdpbkFyZ0lu
ZGV4ID0gMjsKICAgICAgICAgICAgIHRyYW5zZmVyYWJsZXNBcmdJbmRleCA9IDE7CiAgICAgICAg
IH0KLSAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoZXhlYywgZXhlYy0+YXJndW1lbnQodHJh
bnNmZXJhYmxlc0FyZ0luZGV4KSwgbWVzc2FnZVBvcnRzKTsKKyAgICAgICAgZmlsbE1lc3NhZ2VQ
b3J0QXJyYXkoZXhlYywgZXhlYy0+YXJndW1lbnQodHJhbnNmZXJhYmxlc0FyZ0luZGV4KSwgbWVz
c2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMpOwogICAgIH0KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1RyYW5zZmVyID8g
Jm1lc3NhZ2VQb3J0cyA6IDApOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1l
c3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVu
dCgwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb1RyYW5zZmVyID8gJm1lc3NhZ2VQb3J0cyA6IDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZG9UcmFuc2ZlciA/ICZhcnJheUJ1ZmZlcnMgOiAwKTsKIAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCBiZDA2MjE2
Li5kNzkxM2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5j
cHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgU2NyaXB0VmFsdWUmIHJlcwogCiB2b2lkIEpT
RGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwgMCk7CisgICAgcmVzdWx0
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgdmFsdWUsIDAsIDApOwogfQog
CiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFs
dWUsIFJlZlB0cjxET01XaW5kb3c+JiByZXN1bHQpCkBAIC0xMjgsNyArMTI4LDggQEAgdm9pZCBK
U0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVlLCBSZWZQ
dHI8U3RvcmFnZT4mIHJlc3UKIAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHJlc3VsdCkKIHsK
LSAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCB2YWx1ZSwgcmVzdWx0KTsKKyAgICBBcnJh
eUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyczsKKyAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVj
LCB2YWx1ZSwgcmVzdWx0LCBhcnJheUJ1ZmZlcnMpOwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAK
aW5kZXggNDgwNjU4Yi4uZTcyYzI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgSlNWYWx1ZSBKU0hpc3Rv
cnk6OnN0YXRlKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1
c2hTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCksIDApOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApLCAwLCAwKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0yMDYsNyArMjA2LDcgQEAgSlNWYWx1ZSBK
U0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAKIEpTVmFsdWUgSlNIaXN0b3J5
OjpyZXBsYWNlU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAwKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3BwCmluZGV4IDY0Yjk4OWMuLjY0
ZmNlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VF
dmVudEN1c3RvbS5jcHAKQEAgLTEwOSw5ICsxMDksMTEgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBo
YW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNT
dGEKICAgICBjb25zdCBVU3RyaW5nJiBsYXN0RXZlbnRJZEFyZyA9IGV4ZWMtPmFyZ3VtZW50KDUp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBET01XaW5kb3cqIHNvdXJjZUFyZyA9
IHRvRE9NV2luZG93KGV4ZWMtPmFyZ3VtZW50KDYpKTsKICAgICBPd25QdHI8TWVzc2FnZVBvcnRB
cnJheT4gbWVzc2FnZVBvcnRzOworICAgIE93blB0cjxBcnJheUJ1ZmZlckFycmF5PiBhcnJheUJ1
ZmZlcnM7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCg3KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CiAgICAgICAgIG1lc3NhZ2VQb3J0cyA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KTsK
LSAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoZXhlYywgZXhlYy0+YXJndW1lbnQoNyksICpt
ZXNzYWdlUG9ydHMpOworICAgICAgICBhcnJheUJ1ZmZlcnMgPSBhZG9wdFB0cihuZXcgQXJyYXlC
dWZmZXJBcnJheSk7CisgICAgICAgIGZpbGxNZXNzYWdlUG9ydEFycmF5KGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDcpLCAqbWVzc2FnZVBvcnRzLCAqYXJyYXlCdWZmZXJzKTsKICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmNwcAppbmRleCA3MTExNjZiLi43NmE4YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTRE9NR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNFdmVudC5oIgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0
ZW5lci5oIgpAQCAtNjcsMTIgKzY4LDEzIEBAIEpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojp3
ZWJraXRQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gaGFuZGxl
UG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpKTsKIH0KIAotdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJh
eShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9ydEFy
cmF5JiBwb3J0QXJyYXkpCit2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSwg
QXJyYXlCdWZmZXJBcnJheSYgYXJyYXlCdWZmZXJzKQogewogICAgIC8vIENvbnZlcnQgZnJvbSB0
aGUgcGFzc2VkLWluIEpTIGFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgTWVzc2FnZVBvcnRBcnJheS4K
ICAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBh
bmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRN
TDUgc3BlYy4KICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBw
b3J0QXJyYXkucmVzaXplKDApOworICAgICAgICBhcnJheUJ1ZmZlcnMucmVzaXplKDApOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NCwxMSArOTYsMTcgQEAgdm9pZCBmaWxsTWVzc2Fn
ZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNz
YWdlUG9ydEEKIAogICAgICAgICAvLyBWYWxpZGF0aW9uIG9mIE9iamVjdHMgaW1wbGVtZW50aW5n
IGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQuMS4xNS4KICAgICAgICAgUmVmUHRyPE1l
c3NhZ2VQb3J0PiBwb3J0ID0gdG9NZXNzYWdlUG9ydCh2YWx1ZSk7Ci0gICAgICAgIGlmICghcG9y
dCkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7Ci0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChwb3J0KQorICAgICAgICAgICAgcG9ydEFycmF5LmFwcGVuZChwb3J0
LnJlbGVhc2UoKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIodmFsdWUpOworICAgICAgICAgICAgaWYg
KGFycmF5QnVmZmVyKQorICAgICAgICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQoYXJyYXlC
dWZmZXIpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIHBvcnRBcnJheS5hcHBlbmQocG9ydC5yZWxlYXNlKCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1
c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5o
CmluZGV4IDVhOWUwNGIuLmU3NmU3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKQEAgLTQyLDE1ICs0MiwxNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMg
b3V0IG9mIGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBNZXNzYWdlUG9ydEFycmF5LgogICAgIC8v
IEFsc28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEu
MTUgb2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVj
LgogICAgIC8vIE1heSBnZW5lcmF0ZSBhbiBleGNlcHRpb24gdmlhIHRoZSBwYXNzZWQgRXhlY1N0
YXRlLgotICAgIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmKTsKKyAgICB2b2lkIGZpbGxNZXNzYWdlUG9ydEFy
cmF5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiwgQXJy
YXlCdWZmZXJBcnJheSYpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJv
bSBKUyBwb3N0TWVzc2FnZSBhcmd1bWVudHMgdG8gV2ViQ29yZSBwb3N0TWVzc2FnZSBhcmd1bWVu
dHMuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBo
YW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgVCogaW1wbCkKICAgICB7CiAg
ICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwotICAgICAgICBmaWxsTWVzc2FnZVBv
cnRBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgcG9ydEFycmF5KTsKLSAgICAgICAgUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAmcG9ydEFycmF5KTsKKyAgICAgICAg
QXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlckFycmF5OworICAgICAgICBmaWxsTWVzc2FnZVBv
cnRBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgcG9ydEFycmF5LCBhcnJheUJ1ZmZlckFy
cmF5KTsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAmcG9y
dEFycmF5LCAmYXJyYXlCdWZmZXJBcnJheSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAppbmRleCA3MjcyYTEwLi5mNzU4NTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0xMDIs
NyArMTAyLDcgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNGdW5jdGlvbigpIGNvbnN0CiAKIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3JpcHRWYWx1ZTo6c2VyaWFsaXplKFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlv
bnMpCiB7Ci0gICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0
YXRlLCBqc1ZhbHVlKCksIDAsIHRocm93RXhjZXB0aW9ucyk7CisgICAgcmV0dXJuIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIDAsIDAsIHRocm93
RXhjZXB0aW9ucyk7CiB9CiAKIFNjcmlwdFZhbHVlIFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShT
Y3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNzdjZDY1
Yi4uN2M3ZDMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSA8cnVudGlt
ZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvUmVnRXhwLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9SZWdFeHBPYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIu
aD4KICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMDUsNiArMTA2LDcgQEAgZW51bSBTZXJp
YWxpemF0aW9uVGFnIHsKICAgICBNZXNzYWdlUG9ydFJlZmVyZW5jZVRhZyA9IDIwLAogICAgIEFy
cmF5QnVmZmVyVGFnID0gMjEsCiAgICAgQXJyYXlCdWZmZXJWaWV3VGFnID0gMjIsCisgICAgQXJy
YXlCdWZmZXJUcmFuc2ZlclRhZyA9IDIzLAogICAgIEVycm9yVGFnID0gMjU1CiB9OwogCkBAIC0x
OTEsNiArMTkzLDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBTdHJpbmdQb29sVGFnID0g
MHhGRkZGRkZGRTsKICAqICAgIHwgTWVzc2FnZVBvcnRSZWZlcmVuY2VUYWcgPHZhbHVlOnVpbnQz
Ml90PgogICogICAgfCBBcnJheUJ1ZmZlcgogICogICAgfCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJy
YXlCdWZmZXJWaWV3U3VidGFnIDxieXRlT2Zmc2V0OnVpbnQzMl90PiA8Ynl0ZUxlbmdodDp1aW50
MzJfdD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0UmVmZXJlbmNlKQorICogICAgfCBBcnJheUJ1ZmZl
clRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAqCiAgKiBTdHJpbmcgOi0KICAqICAgICAg
RW1wdHlTdHJpbmdUYWcKQEAgLTMxNSw5ICszMTgsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0YXRpYyBib29sIHdyaXRlTGl0dGxlRW5kaWFuKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBj
b24KIAogY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgU2VyaWFsaXphdGlvblJldHVybkNvZGUgc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBWZWN0b3I8dWlu
dDhfdD4mIG91dCkKKyAgICBzdGF0aWMgU2VyaWFsaXphdGlvblJldHVybkNvZGUgc2VyaWFsaXpl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJy
YXlCdWZmZXJBcnJheSogYXJyYXlCdWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCiAgICAgewotICAgICAgICBD
bG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCBtZXNzYWdlUG9ydHMsIG91dCk7CisgICAg
ICAgIENsb25lU2VyaWFsaXplciBzZXJpYWxpemVyKGV4ZWMsIG1lc3NhZ2VQb3J0cywgYXJyYXlC
dWZmZXJzLCBvdXQpOwogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUp
OwogICAgIH0KIApAQCAtMzQ2LDE5ICszNTEsMjkgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICBDbG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBNZXNzYWdlUG9ydEFycmF5
KiBtZXNzYWdlUG9ydHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQorICAgIHR5cGVkZWYgSGFzaE1h
cDxKU09iamVjdCosIHVpbnQzMl90PiBPYmplY3RQb29sOworCisgICAgQ2xvbmVTZXJpYWxpemVy
KEV4ZWNTdGF0ZSogZXhlYywgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1
ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQogICAgICAgICA6
IENsb25lQmFzZShleGVjKQogICAgICAgICAsIG1fYnVmZmVyKG91dCkKICAgICAgICAgLCBtX2Vt
cHR5SWRlbnRpZmllcihleGVjLCBVU3RyaW5nKCIiLCAwKSkKICAgICB7CiAgICAgICAgIHdyaXRl
KEN1cnJlbnRWZXJzaW9uKTsKLSAgICAgICAgaWYgKG1lc3NhZ2VQb3J0cykgewotICAgICAgICAg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZVBvcnRzLT5zaXplKCk7IGkrKykgewotICAgICAg
ICAgICAgICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBt
ZXNzYWdlUG9ydHMtPmF0KGkpLmdldCgpKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUuZ2V0
T2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgICAgIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMu
YWRkKHZhbHVlLmdldE9iamVjdCgpLCBpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZmlsbFRy
YW5zZmVyTWFwKG1lc3NhZ2VQb3J0cywgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cyk7CisgICAg
ICAgIGZpbGxUcmFuc2Zlck1hcChhcnJheUJ1ZmZlcnMsIG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZl
cnMpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBUPgorICAgIHZvaWQgZmlsbFRyYW5z
ZmVyTWFwKFZlY3RvcjxSZWZQdHI8VD4sIDE+KiBpbnB1dCwgT2JqZWN0UG9vbCYgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgaWYgKCFpbnB1dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4obV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGlucHV0LT5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgSlNDOjpK
U1ZhbHVlIHZhbHVlID0gdG9KUyhtX2V4ZWMsIGdsb2JhbE9iamVjdCwgaW5wdXQtPmF0KGkpLmdl
dCgpKTsKKyAgICAgICAgICAgIEpTQzo6SlNPYmplY3QqIG9iaiA9IHZhbHVlLmdldE9iamVjdCgp
OworICAgICAgICAgICAgaWYgKG9iaiAmJiAhcmVzdWx0LmNvbnRhaW5zKG9iaikpCisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFkZChvYmosIGkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00NzUs
NyArNDkwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgZHVtcEFy
cmF5QnVmZmVyVmlldyhKU09iamVjdCogb2JqKQorICAgIGJvb2wgZHVtcEFycmF5QnVmZmVyVmll
dyhKU09iamVjdCogb2JqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYgY29kZSkKICAgICB7CiAg
ICAgICAgIHdyaXRlKEFycmF5QnVmZmVyVmlld1RhZyk7CiAgICAgICAgIGlmIChvYmotPmluaGVy
aXRzKCZKU0RhdGFWaWV3OjpzX2luZm8pKQpAQCAtNTA1LDExICs1MjAsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0
ZU9mZnNldCgpKSk7CiAgICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihhcnJheUJ1
ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSkpOwogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyID0gYXJyYXlCdWZmZXJWaWV3LT5idWZmZXIoKTsKKyAgICAgICAgaWYgKCFhcnJh
eUJ1ZmZlcikgeworICAgICAgICAgICAgY29kZSA9IFZhbGlkYXRpb25FcnJvcjsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIEpTVmFsdWUgYnVmZmVyT2JqID0g
dG9KUyhtX2V4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLCBhcnJheUJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgIHJldHVybiBk
dW1wSWZUZXJtaW5hbChidWZmZXJPYmopOworICAgICAgICByZXR1cm4gZHVtcElmVGVybWluYWwo
YnVmZmVyT2JqLCBjb2RlKTsKICAgICB9CiAKLSAgICBib29sIGR1bXBJZlRlcm1pbmFsKEpTVmFs
dWUgdmFsdWUpCisgICAgYm9vbCBkdW1wSWZUZXJtaW5hbChKU1ZhbHVlIHZhbHVlLCBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZSYgY29kZSkKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUuaXNDZWxs
KCkpIHsKICAgICAgICAgICAgIGR1bXBJbW1lZGlhdGUodmFsdWUpOwpAQCAtNTk2LDE3ICs2MTUs
MjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBPYmplY3RQb29sOjppdGVyYXRvciBpbmRl
eCA9IG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMuZmluZChvYmopOwogICAgICAgICAgICAgICAg
IGlmIChpbmRleCAhPSBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzLmVuZCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHdyaXRlKE1lc3NhZ2VQb3J0UmVmZXJlbmNlVGFnKTsKLSAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgaSA9IGluZGV4LT5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgICAg
IHdyaXRlKGkpOworICAgICAgICAgICAgICAgICAgICB3cml0ZShpbmRleC0+c2Vjb25kKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChv
YmotPmluaGVyaXRzKCZKU0FycmF5QnVmZmVyOjpzX2luZm8pKSB7CisgICAgICAgICAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIob2JqKTsKKyAg
ICAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlzTmV1dGVyZWQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlvbkVycm9yOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgT2JqZWN0UG9v
bDo6aXRlcmF0b3IgaW5kZXggPSBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzLmZpbmQob2JqKTsK
KyAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT0gbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVycy5l
bmQoKSkgeworICAgICAgICAgICAgICAgICAgICB3cml0ZShBcnJheUJ1ZmZlclRyYW5zZmVyVGFn
KTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgtPnNlY29uZCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBpZiAoIXN0YXJ0T2JqZWN0SW50ZXJuYWwob2JqKSkgLy8gaGFuZGxlIGR1cGxpY2F0ZXMKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgd3JpdGUoQXJy
YXlCdWZmZXJUYWcpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIgPSB0b0FycmF5QnVmZmVyKG9iaik7CiAgICAgICAgICAgICAgICAgd3JpdGUoYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCAqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MTQsNyArNjQyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzKCZKU0FycmF5QnVmZmVy
Vmlldzo6c19pbmZvKSkgewogICAgICAgICAgICAgICAgIGlmICghc3RhcnRPYmplY3RJbnRlcm5h
bChvYmopKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZHVtcEFycmF5QnVmZmVyVmlldyhvYmopOworICAgICAgICAgICAgICAgIHJldHVy
biBkdW1wQXJyYXlCdWZmZXJWaWV3KG9iaiwgY29kZSk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIENhbGxEYXRhIHVudXNlZERhdGE7CkBAIC03NDksOSArNzc3LDkgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4mIG1fYnVmZmVyOwotICAgIHR5cGVkZWYgSGFz
aE1hcDxKU09iamVjdCosIHVpbnQzMl90PiBPYmplY3RQb29sOwogICAgIE9iamVjdFBvb2wgbV9v
YmplY3RQb29sOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0czsKKyAg
ICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnM7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgdWludDMyX3QsIElkZW50aWZpZXJSZXBIYXNoPiBTdHJp
bmdDb25zdGFudFBvb2w7CiAgICAgU3RyaW5nQ29uc3RhbnRQb29sIG1fY29uc3RhbnRQb29sOwog
ICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7CkBAIC04MTQsNyArODQyLDEwIEBAIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUg
aW4pCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgpOwot
ICAgICAgICAgICAgICAgIGlmIChkdW1wSWZUZXJtaW5hbChpblZhbHVlKSkgeworICAgICAgICAg
ICAgICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHRlcm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxs
eUNvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBpZiAoZHVtcElmVGVybWluYWwoaW5WYWx1ZSwg
dGVybWluYWxDb2RlKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybWluYWxDb2RlICE9
IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
ZXJtaW5hbENvZGU7CiAgICAgICAgICAgICAgICAgICAgIGluZGV4U3RhY2subGFzdCgpKys7CiAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFZpc2l0TWVtYmVyOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTg3MSwxMCArOTAyLDEzIEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENs
b25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgaWYg
KHNob3VsZFRlcm1pbmF0ZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXhpc3RpbmdF
eGNlcHRpb25FcnJvcjsKIAotICAgICAgICAgICAgICAgIGlmICghZHVtcElmVGVybWluYWwoaW5W
YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB0ZXJtaW5h
bENvZGUgPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CisgICAgICAgICAgICAgICAgaWYgKCFkdW1w
SWZUZXJtaW5hbChpblZhbHVlLCB0ZXJtaW5hbENvZGUpKSB7CiAgICAgICAgICAgICAgICAgICAg
IHN0YXRlU3RhY2suYXBwZW5kKE9iamVjdEVuZFZpc2l0TWVtYmVyKTsKICAgICAgICAgICAgICAg
ICAgICAgZ290byBzdGF0ZVVua25vd247CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGVybWluYWxDb2RlOwogICAgICAgICAgICAgICAgIC8vIGZhbGx0
aHJvdWdoCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIE9iamVjdEVuZFZpc2l0TWVt
YmVyOiB7CkBAIC04ODUsMTMgKzkxOSwxOCBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9u
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgICAgICAgICAgICAgIGdvdG8g
b2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRl
VW5rbm93bjoKLSAgICAgICAgICAgIGNhc2UgU3RhdGVVbmtub3duOgotICAgICAgICAgICAgICAg
IGlmIChkdW1wSWZUZXJtaW5hbChpblZhbHVlKSkKKyAgICAgICAgICAgIGNhc2UgU3RhdGVVbmtu
b3duOiB7CisgICAgICAgICAgICAgICAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgdGVybWluYWxD
b2RlID0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkOworICAgICAgICAgICAgICAgIGlmIChkdW1wSWZU
ZXJtaW5hbChpblZhbHVlLCB0ZXJtaW5hbENvZGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXJtaW5hbENvZGUgIT0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRlcm1pbmFsQ29kZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoaW5WYWx1
ZSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFN0YXRlOwogICAgICAgICAg
ICAgICAgIGdvdG8gb2JqZWN0U3RhcnRTdGF0ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBpZiAoc3RhdGVTdGFjay5pc0VtcHR5KCkpCiAgICAgICAgICAgICBicmVhazsKQEAg
LTkxMSw2ICs5NTAsOCBAQCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgIHJldHVybiBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7
CiB9CiAKK3R5cGVkZWYgVmVjdG9yPFdURjo6QXJyYXlCdWZmZXJDb250ZW50cz4gQXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5OworCiBjbGFzcyBDbG9uZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBkZXNlcmlhbGl6ZVN0cmluZyhjb25zdCBWZWN0
b3I8dWludDhfdD4mIGJ1ZmZlcikKQEAgLTkzMiwxMiArOTczLDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIFN0cmluZyhzdHIuaW1wbCgpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgRGVzZXJp
YWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLAorICAgIHN0
YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
YnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIuc2l6ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIG1ha2VfcGFpcihqc051bGwoKSwgVW5zcGVjaWZpZWRFcnJvcik7Ci0gICAgICAgIENs
b25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihleGVjLCBnbG9iYWxPYmplY3QsIG1lc3NhZ2VQ
b3J0cywgYnVmZmVyKTsKKyAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKGV4
ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXks
IGJ1ZmZlcik7CiAgICAgICAgIGlmICghZGVzZXJpYWxpemVyLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBtYWtlX3BhaXIoSlNWYWx1ZSgpLCBWYWxpZGF0aW9uRXJyb3IpOwogICAgICAg
ICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCk7CkBAIC05ODIsNyArMTAyNCw5IEBA
IHByaXZhdGU6CiAgICAgICAgIHNpemVfdCBtX2luZGV4OwogICAgIH07CiAKLSAgICBDbG9uZURl
c2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBi
dWZmZXIpCisgICAgQ2xvbmVEZXNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCAKKyAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUG9ydEFy
cmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJD
b250ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1
ZmZlcikKICAgICAgICAgOiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2dsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9pc0RPTUdsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3QtPmluaGVyaXRzKCZKU0RPTUdsb2JhbE9iamVjdDo6c19pbmZvKSkKQEAgLTk5MCw2ICsxMDM0
LDggQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2VuZChidWZmZXIuZGF0YSgpICsgYnVmZmVyLnNp
emUoKSkKICAgICAgICAgLCBtX3ZlcnNpb24oMHhGRkZGRkZGRikKICAgICAgICAgLCBtX21lc3Nh
Z2VQb3J0cyhtZXNzYWdlUG9ydHMpCisgICAgICAgICwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzKGFy
cmF5QnVmZmVyQ29udGVudHMpCisgICAgICAgICwgbV9hcnJheUJ1ZmZlcnMoYXJyYXlCdWZmZXJD
b250ZW50cyA/IGFycmF5QnVmZmVyQ29udGVudHMtPnNpemUoKSA6IDApCiAgICAgewogICAgICAg
ICBpZiAoIXJlYWQobV92ZXJzaW9uKSkKICAgICAgICAgICAgIG1fdmVyc2lvbiA9IDB4RkZGRkZG
RkY7CkBAIC0xNDMyLDYgKzE0NzgsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fZ2NCdWZm
ZXIuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CisgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZzogeworICAgICAgICAgICAgdWlu
dDMyX3QgaW5kZXg7CisgICAgICAgICAgICBib29sIGluZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJl
YWQoaW5kZXgpOworICAgICAgICAgICAgaWYgKCFpbmRleFN1Y2Nlc3NmdWxseVJlYWQgfHwgaW5k
ZXggPj0gbV9hcnJheUJ1ZmZlcnMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZmFpbCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmICghbV9hcnJheUJ1ZmZlcnNbaW5kZXhdKQorICAgICAgICAgICAgICAgIG1fYXJy
YXlCdWZmZXJzW2luZGV4XSA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9hcnJheUJ1ZmZlckNvbnRl
bnRzLT5hdChpbmRleCkpOworCisgICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShtX2FycmF5
QnVmZmVyc1tpbmRleF0uZ2V0KCkpOworICAgICAgICB9CiAgICAgICAgIGNhc2UgQXJyYXlCdWZm
ZXJWaWV3VGFnOiB7CiAgICAgICAgICAgICBKU1ZhbHVlIGFycmF5QnVmZmVyVmlldzsKICAgICAg
ICAgICAgIGlmICghcmVhZEFycmF5QnVmZmVyVmlldyhhcnJheUJ1ZmZlclZpZXcpKSB7CkBAIC0x
NDU0LDYgKzE1MTMsOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdmVyc2lvbjsKICAgICBW
ZWN0b3I8Q2FjaGVkU3RyaW5nPiBtX2NvbnN0YW50UG9vbDsKICAgICBNZXNzYWdlUG9ydEFycmF5
KiBtX21lc3NhZ2VQb3J0czsKKyAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIG1fYXJyYXlC
dWZmZXJDb250ZW50czsKKyAgICBBcnJheUJ1ZmZlckFycmF5IG1fYXJyYXlCdWZmZXJzOwogfTsK
IAogRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgp
CkBAIC0xNjAzLDE3ICsxNjY0LDYxIEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIG1fZGF0YS5zd2FwKGJ1
ZmZlcik7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIE1lc3Nh
Z2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4
Y2VwdGlvbnMpCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShW
ZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgUGFzc093blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkKKyAgICA6IG1fYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5KGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkKK3sKKyAgICBtX2RhdGEuc3dhcChidWZm
ZXIpOworfQorCitQYXNzT3duUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRyYW5zZmVyQXJyYXlCdWZmZXJz
KAorICAgIEFycmF5QnVmZmVyQXJyYXkmIGFycmF5QnVmZmVycywgU2VyaWFsaXphdGlvblJldHVy
bkNvZGUmIGNvZGUpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheUJ1ZmZlcnMu
c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGFycmF5QnVmZmVyc1tpXS0+aXNOZXV0ZXJlZCgp
KSB7CisgICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlvbkVycm9yOworICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBPd25QdHI8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PiBjb250ZW50cyA9IGFkb3B0UHRyKG5ldyBBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXkoYXJyYXlCdWZmZXJzLnNpemUoKSkpOworCisgICAgSGFzaFNldDxXVEY6OkFycmF5QnVm
ZmVyKj4gdmlzaXRlZDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5QnVmZmVycy5z
aXplKCk7IGkrKykgeworICAgICAgICBWZWN0b3I8UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gPiBu
ZXV0ZXJlZFZpZXdzOworCisgICAgICAgIGlmICh2aXNpdGVkLmNvbnRhaW5zKGFycmF5QnVmZmVy
c1tpXS5nZXQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdmlzaXRlZC5hZGQo
YXJyYXlCdWZmZXJzW2ldLmdldCgpKTsKKworICAgICAgICBib29sIHJlc3VsdCA9IGFycmF5QnVm
ZmVyc1tpXS0+dHJhbnNmZXIoY29udGVudHMtPmF0KGkpLCBuZXV0ZXJlZFZpZXdzKTsKKyAgICAg
ICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNvZGUgPSBWYWxpZGF0aW9uRXJyb3I7Cisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
Y29udGVudHMucmVsZWFzZSgpOworfQorCisKK1Bhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1
ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0
aHJvd0V4Y2VwdGlvbnMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoZXhl
YywgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYnVmZmVyKTsKKyAgICBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoZXhlYywgdmFsdWUsIG1lc3Nh
Z2VQb3J0cywgYXJyYXlCdWZmZXJzLCBidWZmZXIpOworCisgICAgT3duUHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5OworCisgICAgaWYgKGFycmF5
QnVmZmVycyAmJiBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoY29kZSkpCisg
ICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IHRyYW5zZmVyQXJyYXlCdWZmZXJzKCph
cnJheUJ1ZmZlcnMsIGNvZGUpOworCiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBUaHJvd2lu
ZykKICAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChleGVj
LCBjb2RlKTsKIAogICAgIGlmICghc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5
KGNvZGUpKQogICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVyKSk7CisKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIsIGFycmF5QnVmZmVyQ29udGVudHNB
cnJheS5yZWxlYXNlKCkpKTsKIH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkKQEAgLTE2MzEsMTIgKzE3MzYsMTMgQEAg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3QKIH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5D
b250ZXh0LCBKU1ZhbHVlUmVmIGFwaVZhbHVlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUG9ydEFycmF5KiBt
ZXNzYWdlUG9ydHMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUG9ydEFy
cmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhv
cmlnaW5Db250ZXh0KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogICAgIEpT
VmFsdWUgdmFsdWUgPSB0b0pTKGV4ZWMsIGFwaVZhbHVlKTsKLSAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICAgICAg
KmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4Y2VwdGlvbigpKTsKQEAgLTE2NTAsNyAr
MTc1Niw3IEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9y
aWdpbkNvbnRleHQsIEpTVmFsdWVSZWYgYXBpVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewotICAgIHJldHVybiBjcmVhdGUob3JpZ2luQ29udGV4dCwgYXBpVmFsdWUsIDAs
IGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIGNyZWF0ZShvcmlnaW5Db250ZXh0LCBhcGlWYWx1ZSwg
MCwgMCwgZXhjZXB0aW9uKTsKIH0KIAogU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9T
dHJpbmcoKQpAQCAtMTY1OCwxMCArMTc2NCwxMSBAQCBTdHJpbmcgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjp0b1N0cmluZygpCiAgICAgcmV0dXJuIENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6
ZVN0cmluZyhtX2RhdGEpOwogfQogCi1KU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCAK
K0pTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBTZXJp
YWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKLSAgICBEZXNlcmlhbGl6YXRp
b25SZXN1bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKGV4ZWMsIGds
b2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBtX2RhdGEpOworICAgIERlc2VyaWFsaXphdGlvblJl
c3VsdCByZXN1bHQgPSBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemUoZXhlYywgZ2xvYmFs
T2JqZWN0LCBtZXNzYWdlUG9ydHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJh
eS5nZXQoKSwgbV9kYXRhKTsKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFRocm93aW5nKQog
ICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGV4ZWMsIHJl
c3VsdC5zZWNvbmQpOwogICAgIHJldHVybiByZXN1bHQuZmlyc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDc1Y2U2OTQu
LjNmOGRhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5o
PgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtNDEsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQ
b3J0OwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRB
cnJheTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxXVEY6OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlC
dWZmZXJBcnJheTsKICAKIGVudW0gU2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAgIFN1Y2Nl
c3NmdWxseUNvbXBsZXRlZCwKQEAgLTU4LDggKzYwLDkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVz
c2FnZVBvcnRBcnJheSosIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBUaHJvd2luZyk7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmLCBNZXNzYWdlUG9ydEFycmF5KiwgIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1
ZmZlckFycmF5KiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gVGhyb3dpbmcpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZiwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5QnVmZmVyQXJyYXkqLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYpOwpAQCAtODgsMTEgKzkxLDE1IEBAIHB1YmxpYzoKICAgICB+U2VyaWFs
aXplZFNjcmlwdFZhbHVlKCk7CiAKIHByaXZhdGU6CisgICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpB
cnJheUJ1ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgc3RhdGlj
IHZvaWQgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChKU0M6OkV4ZWNT
dGF0ZSosIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgYm9vbCBzZXJpYWxp
emF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlvblJldHVybkNvZGUpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gdHJhbnNmZXJB
cnJheUJ1ZmZlcnMoQXJyYXlCdWZmZXJBcnJheSYsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlJik7
CiAgICAgCiAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYp
OworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mLCBQYXNz
T3duUHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4pOwogICAgIFZlY3Rvcjx1bnNpZ25lZCBj
aGFyPiBtX2RhdGE7CisgICAgT3duUHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9hcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="131772"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129366</attachid>
            <date>2012-02-28 17:59:14 -0800</date>
            <delta_ts>2012-02-28 22:40:57 -0800</delta_ts>
            <desc>Windows build fix</desc>
            <filename>73493.patch</filename>
            <type>text/plain</type>
            <size>40924</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NDFhMDI4Li45OWMyMDM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDIt
MjcgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBbSlNDXSBJ
bXBsZW1lbnQgQXJyYXlCdWZmZXIgdHJhbnNmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDkzLgorICAgICAgICBJbXBsZW1lbnQgQXJyYXlCdWZm
ZXIgdHJhbnNmZXIsIHBlciBLaHJvbm9zIHNwZWM6ICBodHRwOi8vd3d3Lmtocm9ub3Mub3JnL3Jl
Z2lzdHJ5L3R5cGVkYXJyYXkvc3BlY3MvbGF0ZXN0LyM5LgorICAgICAgICBUaGlzIGJyaW5ncyBw
YXJpdHkgd2l0aCBWOCBpbXBsZW1lbnRhdGlvbiBvZiB0cmFuc2ZlcmFibGUgdHlwZWQgYXJyYXlz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgorCisgICAgICAgICogZmFzdC9j
YW52YXMvd2ViZ2wvYXJyYXlidWZmZXItdHJhbnNmZXItb2YtY29udHJvbC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5YnVmZmVyLXRy
YW5zZmVyLW9mLWNvbnRyb2wuanM6IEFkZGVkIHRlc3RzIGZvciBVaW50OENsYW1wZWRBcnJheQor
ICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lw
cGVkOgorCiAyMDEyLTAyLTI3ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgog
CiAgICAgICAgIDxjb250ZW50PiBlbGVtZW50IHNob3VsZCBiZWhhdmUgYXMgSFRNTFVua25vd25F
bGVtZW50IG91dHNpZGUgb2YgYSBzaGFkb3cgRE9NIHN1YnRyZWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5YnVmZmVyLXRyYW5zZmVyLW9mLWNvbnRyb2wt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXlidWZmZXIt
dHJhbnNmZXItb2YtY29udHJvbC1leHBlY3RlZC50eHQKaW5kZXggMTVmYjFjZi4uYzY1NWFhZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXlidWZmZXItdHJh
bnNmZXItb2YtY29udHJvbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvYXJyYXlidWZmZXItdHJhbnNmZXItb2YtY29udHJvbC1leHBlY3RlZC50eHQKQEAg
LTEyLDYgKzEyLDcgQEAgUEFTUyByYXcgSW50MzIKIFBBU1MgcmF3IFVpbnQzMgogUEFTUyByYXcg
SW50OAogUEFTUyByYXcgVWludDgKK1BBU1MgcmF3IFVpbnQ4Q2xhbXBlZAogUEFTUyByYXcgSW50
MTYKIFBBU1MgcmF3IFVpbnQxNgogUEFTUyByYXcgRmxvYXQzMgpAQCAtMjEsNiArMjIsNyBAQCBQ
QVNTIHNlbmQgdmlldywgYnVmZmVyIGZvciBJbnQzMgogUEFTUyBzZW5kIHZpZXcsIGJ1ZmZlciBm
b3IgVWludDMyCiBQQVNTIHNlbmQgdmlldywgYnVmZmVyIGZvciBJbnQ4CiBQQVNTIHNlbmQgdmll
dywgYnVmZmVyIGZvciBVaW50OAorUEFTUyBzZW5kIHZpZXcsIGJ1ZmZlciBmb3IgVWludDhDbGFt
cGVkCiBQQVNTIHNlbmQgdmlldywgYnVmZmVyIGZvciBJbnQxNgogUEFTUyBzZW5kIHZpZXcsIGJ1
ZmZlciBmb3IgVWludDE2CiBQQVNTIHNlbmQgdmlldywgYnVmZmVyIGZvciBGbG9hdDMyCkBAIC0z
MCw2ICszMiw3IEBAIFBBU1Mgc2VuZCBidWZmZXIsIHZpZXcgZm9yIEludDMyCiBQQVNTIHNlbmQg
YnVmZmVyLCB2aWV3IGZvciBVaW50MzIKIFBBU1Mgc2VuZCBidWZmZXIsIHZpZXcgZm9yIEludDgK
IFBBU1Mgc2VuZCBidWZmZXIsIHZpZXcgZm9yIFVpbnQ4CitQQVNTIHNlbmQgYnVmZmVyLCB2aWV3
IGZvciBVaW50OENsYW1wZWQKIFBBU1Mgc2VuZCBidWZmZXIsIHZpZXcgZm9yIEludDE2CiBQQVNT
IHNlbmQgYnVmZmVyLCB2aWV3IGZvciBVaW50MTYKIFBBU1Mgc2VuZCBidWZmZXIsIHZpZXcgZm9y
IEZsb2F0MzIKQEAgLTM5LDYgKzQyLDcgQEAgUEFTUyBzcXVhc2ggdW5yZWxhdGVkIHZpZXdzIGZv
ciBJbnQzMgogUEFTUyBzcXVhc2ggdW5yZWxhdGVkIHZpZXdzIGZvciBVaW50MzIKIFBBU1Mgc3F1
YXNoIHVucmVsYXRlZCB2aWV3cyBmb3IgSW50OAogUEFTUyBzcXVhc2ggdW5yZWxhdGVkIHZpZXdz
IGZvciBVaW50OAorUEFTUyBzcXVhc2ggdW5yZWxhdGVkIHZpZXdzIGZvciBVaW50OENsYW1wZWQK
IFBBU1Mgc3F1YXNoIHVucmVsYXRlZCB2aWV3cyBmb3IgSW50MTYKIFBBU1Mgc3F1YXNoIHVucmVs
YXRlZCB2aWV3cyBmb3IgVWludDE2CiBQQVNTIHNxdWFzaCB1bnJlbGF0ZWQgdmlld3MgZm9yIEZs
b2F0MzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10
ZXN0cy9hcnJheWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5YnVmZmVyLXRyYW5zZmVyLW9mLWNvbnRy
b2wuanMKaW5kZXggMGJjN2IyOS4uNzYwNjZmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2FycmF5YnVmZmVyLXRyYW5zZmVyLW9mLWNvbnRy
b2wuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2Fy
cmF5YnVmZmVyLXRyYW5zZmVyLW9mLWNvbnRyb2wuanMKQEAgLTI1LDExICsyNSwxMiBAQCB2YXIg
YWxsQnVmZmVyVHlwZXMgPQogICAgIFsiVWludDMyIiwgVWludDMyQXJyYXksIDRdLAogICAgIFsi
SW50OCIsIEludDhBcnJheSwgMV0sCiAgICAgWyJVaW50OCIsIFVpbnQ4QXJyYXksIDFdLAorICAg
IFsiVWludDhDbGFtcGVkIiwgVWludDhDbGFtcGVkQXJyYXksIDFdLAogICAgIFsiSW50MTYiLCBJ
bnQxNkFycmF5LCAyXSwKICAgICBbIlVpbnQxNiIsIFVpbnQxNkFycmF5LCAyXSwKICAgICBbIkZs
b2F0MzIiLCBGbG9hdDMyQXJyYXksIDRdLAogICAgIFsiRmxvYXQ2NCIsIEZsb2F0NjRBcnJheSwg
OF0sCi0gICAgWyJEYXRhVmlldyIsIERhdGFWaWV3LCAxXQorICAgIFsiRGF0YVZpZXciLCBEYXRh
VmlldywgMV0gCiBdOwogCiBmdW5jdGlvbiBpc1R5cGVkQXJyYXkodmlldykKQEAgLTM2MCw2ICsz
NjEsNyBAQCB0ZXN0TGlzdCA9IHRlc3RMaXN0LmNvbmNhdChhbGxCdWZmZXJUeXBlcy5tYXAoZnVu
Y3Rpb24oYnVmZmVyVHlwZSkgeyByZXR1cm4gewogICAgIH0KIH19KSk7CiAKKwogZnVuY3Rpb24g
dmlld0FuZEJ1ZmZlcih2aWV3Rmlyc3QsIGJ1ZmZlclR5cGUpIHsKICAgICByZXR1cm4gewogICAg
ICAgICBuYW1lOiAodmlld0ZpcnN0ID8gInNlbmQgdmlldywgYnVmZmVyIGZvciAiIDogInNlbmQg
YnVmZmVyLCB2aWV3IGZvciAiKSArIGJ1ZmZlclR5cGVbMF0sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4
cGVjdGVkLnR4dAppbmRleCA5ODZkMjYzLi5iNjc4N2VkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1l
eHBlY3RlZC50eHQKQEAgLTIyLDkgKzIyLDkgQEAgUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMjE0
NzQ4MzY0OCcsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQb3N0aW5n
IG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBvcnRdLFtv
YmplY3QgTWVzc2FnZVBvcnRdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUzogUG9z
dGluZyBtZXNzYWdlICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQb3J0
XSxbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6
IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdLFtvYmplY3QgTWVzc2FnZVBv
cnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3Qg
dGhyb3cgYW4gZXhjZXB0aW9uCi1GQUlMOiBQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IEFycmF5
QnVmZmVyXScsIFtvYmplY3QgQXJyYXlCdWZmZXJdKTogdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogVHlwZSBlcnJvcgotRkFJTDogYXJyYXlCdWZmZXIgbm90IG5ldXRlcmVkOyBieXRlTGVuZ3Ro
ID0gMzAKLUZBSUw6IHZpZXcgd2FzIG5vdCBuZXV0ZXJlZDsgbGVuZ3RoID0gMTAKK1BBU1M6IFBv
c3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgQXJyYXlCdWZmZXJdJywgW29iamVjdCBBcnJheUJ1ZmZl
cl0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiBhcnJheUJ1ZmZlciBuZXV0ZXJl
ZAorUEFTUzogdmlldyBuZXV0ZXJlZAogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnZG9uZScsIHVu
ZGVmaW5lZCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFJlY2VpdmVkIG1lc3NhZ2UgJzQn
IHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJzQnIHdpdGggMCBwb3J0cy4KQEAgLTQy
LDUgKzQyLDYgQEAgUmVjZWl2ZWQgbWVzc2FnZSAnMjE0NzQ4MzY0OCcgd2l0aCAwIHBvcnRzLgog
UmVjZWl2ZWQgbWVzc2FnZSAnW29iamVjdCBPYmplY3RdJyB3aXRoIDIgcG9ydHMuCiBSZWNlaXZl
ZCBtZXNzYWdlICdbb2JqZWN0IE1lc3NhZ2VQb3J0XScgd2l0aCAyIHBvcnRzLgogUmVjZWl2ZWQg
bWVzc2FnZSAnW29iamVjdCBNZXNzYWdlUG9ydF0sW29iamVjdCBNZXNzYWdlUG9ydF0nIHdpdGgg
MiBwb3J0cy4KK1JlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyB3aXRoIDAg
cG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICdkb25lJyB3aXRoIDAgcG9ydHMuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQKaW5kZXggM2U3ZGI1Yy4uNmZlZGNkMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQKQEAgLTE1MDcsOSArMTUwNyw2IEBAIGZhc3QvZm9ybXMvY3Vyc29yLWF0LWVkaXRh
YmxlLWNvbnRlbnQtYm91bmRhcnkuaHRtbAogZmFzdC90ZXh0L2dseXBoLXJlb3JkZXJpbmcuaHRt
bAogZmFzdC90ZXh0L2lwYS10b25lLWxldHRlcnMuaHRtbAogCi0jIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQ5MwotZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXlidWZm
ZXItdHJhbnNmZXItb2YtY29udHJvbC5odG1sCi0KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNjUzCiBmYXN0L2V2ZW50cy9vZmZzZXRYLW9mZnNldFkuaHRtbAog
ZmFzdC9mb3Jtcy9udW1iZXIvc3Bpbi1pbi1tdWx0aS1jb2x1bW4uaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZAppbmRleCAyMjg3MTA1Li4yODNmYmVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tp
cHBlZApAQCAtNTI3LDkgKzUyNyw2IEBAIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3Nh
Z2UtYXJyYXlzLmh0bWwKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczMTQ4CiBmYXN0L2NhbnZhcy93ZWJnbC93ZWJnbC10ZXh0dXJlLWJpbmRpbmctcHJlc2VydmVk
Lmh0bWwKIAotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0OTMK
LWZhc3QvY2FudmFzL3dlYmdsL2FycmF5YnVmZmVyLXRyYW5zZmVyLW9mLWNvbnRyb2wuaHRtbAot
CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzk3NAogZmFzdC9j
YW52YXMvd2ViZ2wvY2FudmFzLTJkLXdlYmdsLXRleHR1cmUuaHRtbAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAppbmRleCBmNzhlZTRkLi44M2QzODUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
QEAgLTI1NjIsOSArMjU2Miw2IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvdGV4dC10cmFjay1jcm9z
c29yaWdpbi5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MjY5NAogZmFzdC9jYW52YXMvY2FudmFzLWxpbmVXaWR0aC5odG1sCiAKLSMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDkzCi1mYXN0L2NhbnZhcy93ZWJnbC9hcnJh
eWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmh0bWwKLQogIyBbUXRdIGZhc3QvZm9ybXMvc2Vs
ZWN0L2xpc3Rib3gtaW4tbXVsdGktY29sdW1uLmh0bWwgZmFpbHMKICMgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjYwCiBmYXN0L2Zvcm1zL3NlbGVjdC9saXN0Ym94
LWluLW11bHRpLWNvbHVtbi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDEzMzUw
OTUuLjYxZTZjMjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xNTMyLDkgKzE1MzIs
NiBAQCBwb2ludGVyLWxvY2svCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MjQzNQogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcnJheXMuaHRt
bAogCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQ5MwotZmFz
dC9jYW52YXMvd2ViZ2wvYXJyYXlidWZmZXItdHJhbnNmZXItb2YtY29udHJvbC5odG1sCi0KICMg
RmFpbHMgYmVjYXVzZSBNdXRhdGlvbk9ic2VydmVycyBhcmUgbm90IG5vdGlmaWVkIGF0IGVuZC1v
Zi10YXNrCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODI5MAog
ZmFzdC9tdXRhdGlvbi9lbmQtb2YtdGFzay1kZWxpdmVyeS5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vU2tpcHBlZAppbmRleCA0NmM1NzM4Li5mZTYxMWM5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTIwNDUsOSArMjA0NSw2IEBAIHBvaW50ZXItbG9jay8K
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNDM1CiBmYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFycmF5cy5odG1sCiAKLSMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDkzCi1mYXN0L2NhbnZhcy93ZWJnbC9hcnJh
eWJ1ZmZlci10cmFuc2Zlci1vZi1jb250cm9sLmh0bWwKLQogIyBGYWlscyBiZWNhdXNlIE11dGF0
aW9uT2JzZXJ2ZXJzIGFyZSBub3Qgbm90aWZpZWQgYXQgZW5kLW9mLXRhc2sKICMgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MjkwCiBmYXN0L211dGF0aW9uL2VuZC1v
Zi10YXNrLWRlbGl2ZXJ5Lmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhiOTg2NjYu
LjE4ZmNlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTAyLTI3ICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CisKKyAgICAgICAgW0pT
Q10gSW1wbGVtZW50IEFycmF5QnVmZmVyIHRyYW5zZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQ5My4KKyAgICAgICAgSW1wbGVtZW50IEFycmF5
QnVmZmVyIHRyYW5zZmVyLCBwZXIgS2hyb25vcyBzcGVjOiAgaHR0cDovL3d3dy5raHJvbm9zLm9y
Zy9yZWdpc3RyeS90eXBlZGFycmF5L3NwZWNzL2xhdGVzdC8jOS4KKyAgICAgICAgVGhpcyBicmlu
Z3MgcGFyaXR5IHdpdGggVjggaW1wbGVtZW50YXRpb24gb2YgdHJhbnNmZXJhYmxlIHR5cGVkIGFy
cmF5cy4KKworICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KKworICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6IEV4
dHJhIGV4cG9ydC4KKyAgICAgICAgKiB3dGYvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKEFycmF5
QnVmZmVyKTogQWRkZWQgZXh0cmEgZXhwb3J0LgorCiAyMDEyLTAyLTI4ICBHYXZpbiBCYXJyYWNs
b3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBbW0dldF1dL1tbUHV0XV0g
Zm9yIHByaW1pdGl2ZXMgc2hvdWxkIG5vdCB3cmFwIG9uIHN0cmljdCBhY2Nlc3NvciBjYWxsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCmlu
ZGV4IDAyNjIyYWQuLjg0NDYyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0zNDgsNiArMzQ4LDcgQEAgRVhQT1JUUwogICAg
ID90b1RoaXNPYmplY3RASlNPYmplY3RASlNDQEBTQVBBVjEyQFBBVkpTQ2VsbEAyQFBBVkV4ZWNT
dGF0ZUAyQEBaCiAgICAgP3RvVGhpc09iamVjdFNsb3dDYXNlQEpTVmFsdWVASlNDQEBBQkVQQVZK
U09iamVjdEAyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP3RvVUludDMyQElkZW50aWZpZXJASlND
QEBTQUlBQlZVU3RyaW5nQDJAQUFfTkBaCisgICAgP3RyYW5zZmVyQEFycmF5QnVmZmVyQFdURkBA
UUFFX05BQVZBcnJheUJ1ZmZlckNvbnRlbnRzQDJAQUFWPyRWZWN0b3JAVj8kUmVmUHRyQFZBcnJh
eUJ1ZmZlclZpZXdAV1RGQEBAV1RGQEAkMEFAQDJAQFoKICAgICA/dHJ5RmFzdENhbGxvY0BXVEZA
QFlBP0FVVHJ5TWFsbG9jUmV0dXJuVmFsdWVAMUBJSUBaCiAgICAgP3RyeUZhc3RNYWxsb2NAV1RG
QEBZQT9BVVRyeU1hbGxvY1JldHVyblZhbHVlQDFASUBaCiAgICAgP3RyeUZhc3RSZWFsbG9jQFdU
RkBAWUE/QVVUcnlNYWxsb2NSZXR1cm5WYWx1ZUAxQFBBWElAWgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9BcnJheUJ1ZmZlci5oCmluZGV4IGVlOTVmNWIuLjMyNTdkZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0FycmF5QnVmZmVyLmgKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkVmlldyhBcnJheUJ1ZmZlclZpZXcqKTsKICAgICB2b2lkIHJlbW92ZVZpZXcoQXJy
YXlCdWZmZXJWaWV3Kik7CiAKLSAgICBib29sIHRyYW5zZmVyKEFycmF5QnVmZmVyQ29udGVudHMm
LCBWZWN0b3I8UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gPiYgbmV1dGVyZWRWaWV3cyk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgdHJhbnNmZXIoQXJyYXlCdWZmZXJDb250ZW50cyYsIFZl
Y3RvcjxSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiA+JiBuZXV0ZXJlZFZpZXdzKTsKICAgICBib29s
IGlzTmV1dGVyZWQoKSB7IHJldHVybiAhbV9jb250ZW50cy5tX2RhdGE7IH0KIAogICAgIH5BcnJh
eUJ1ZmZlcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVhMzhkMzguLjNiMTZiZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MCBAQAorMjAxMi0wMi0yNyAgRG1pdHJ5IExvbW92ICA8ZHNsb21vdkBnb29n
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBBcnJheUJ1ZmZlciB0cmFuc2Zlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0OTMuCisg
ICAgICAgIEltcGxlbWVudCBBcnJheUJ1ZmZlciB0cmFuc2ZlciwgcGVyIEtocm9ub3Mgc3BlYzog
IGh0dHA6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvdHlwZWRhcnJheS9zcGVjcy9sYXRlc3Qv
IzkuCisgICAgICAgIFRoaXMgYnJpbmdzIHBhcml0eSB3aXRoIFY4IGltcGxlbWVudGF0aW9uIG9m
IHRyYW5zZmVyYWJsZSB0eXBlZCBhcnJheXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVy
IEh1bnQuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhh
bmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0hpc3Rvcnk6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnJlcGxh
Y2VTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlSW5pdE1lc3NhZ2VFdmVudCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpm
aWxsTWVzc2FnZVBvcnRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQ
b3N0TWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0VmFsdWU6OnNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAoQ2xv
bmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6Q2xvbmVT
ZXJpYWxpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZmlsbFRyYW5z
ZmVyTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcEFycmF5QnVm
ZmVyVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1p
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6Q2xvbmVEZXNlcmlhbGl6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6Cisg
ICAgICAgIChDbG9uZURlc2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRyYW5zZmVyQXJyYXlCdWZmZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorCiAyMDEyLTAyLTI3ICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIDxjb250ZW50PiBlbGVtZW50IHNob3VsZCBi
ZWhhdmUgYXMgSFRNTFVua25vd25FbGVtZW50IG91dHNpZGUgb2YgYSBzaGFkb3cgRE9NIHN1YnRy
ZWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAppbmRleCAwYmEyNTllLi4wNjM0NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC01NjgsNiArNTY4LDcgQEAgSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKEV4ZWNTdGF0ZSogZXhlYykKIHN0YXRpYyBKU1Zh
bHVlIGhhbmRsZVBvc3RNZXNzYWdlKERPTVdpbmRvdyogaW1wbCwgRXhlY1N0YXRlKiBleGVjLCBi
b29sIGRvVHJhbnNmZXIpCiB7CiAgICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9ydHM7Cisg
ICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlcnM7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGhhcyB2YXJpYWJsZSBhcmd1bWVudHMgYW5kIGNhbiBiZToKICAgICAvLyBQZXIgY3VycmVudCBz
cGVjOgpAQCAtNTgyLDEzICs1ODMsMTQgQEAgc3RhdGljIEpTVmFsdWUgaGFuZGxlUG9zdE1lc3Nh
Z2UoRE9NV2luZG93KiBpbXBsLCBFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgZG9UcmFuc2YKICAgICAg
ICAgICAgIHRhcmdldE9yaWdpbkFyZ0luZGV4ID0gMjsKICAgICAgICAgICAgIHRyYW5zZmVyYWJs
ZXNBcmdJbmRleCA9IDE7CiAgICAgICAgIH0KLSAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXko
ZXhlYywgZXhlYy0+YXJndW1lbnQodHJhbnNmZXJhYmxlc0FyZ0luZGV4KSwgbWVzc2FnZVBvcnRz
KTsKKyAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoZXhlYywgZXhlYy0+YXJndW1lbnQodHJh
bnNmZXJhYmxlc0FyZ0luZGV4KSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMpOwogICAgIH0K
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb1RyYW5zZmVyID8gJm1lc3NhZ2VQb3J0cyA6IDApOworICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1RyYW5zZmVy
ID8gJm1lc3NhZ2VQb3J0cyA6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9UcmFuc2ZlciA/ICZhcnJh
eUJ1ZmZlcnMgOiAwKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0
aW9uYXJ5LmNwcAppbmRleCBiZDA2MjE2Li5kNzkxM2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEpTRGlj
dGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgU2Ny
aXB0VmFsdWUmIHJlcwogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mIHJl
c3VsdCkKIHsKLSAgICByZXN1bHQgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVj
LCB2YWx1ZSwgMCk7CisgICAgcmVzdWx0ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
ZXhlYywgdmFsdWUsIDAsIDApOwogfQogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVl
KEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFsdWUsIFJlZlB0cjxET01XaW5kb3c+JiByZXN1bHQpCkBA
IC0xMjgsNyArMTI4LDggQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3Rh
dGUqLCBKU1ZhbHVlIHZhbHVlLCBSZWZQdHI8U3RvcmFnZT4mIHJlc3UKIAogdm9pZCBKU0RpY3Rp
b25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIE1lc3Nh
Z2VQb3J0QXJyYXkmIHJlc3VsdCkKIHsKLSAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCB2
YWx1ZSwgcmVzdWx0KTsKKyAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyczsKKyAgICBm
aWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCB2YWx1ZSwgcmVzdWx0LCBhcnJheUJ1ZmZlcnMpOwog
fQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKaW5kZXggNDgwNjU4Yi4uZTcyYzI1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCkBAIC0xODAsNyAr
MTgwLDcgQEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnN0YXRlKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QK
IAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIDApOworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAwLCAwKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0y
MDYsNyArMjA2LDcgQEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUqIGV4
ZWMpCiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUoRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGhpc3RvcnlTdGF0ZSA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAwKTsKKyAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgMCwgMCk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0
b20uY3BwCmluZGV4IDY0Yjk4OWMuLjY0ZmNlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTEwOSw5ICsxMDksMTEg
QEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBoYW5kbGVJbml0TWVzc2FnZUV2ZW50KEpTTWVzc2FnZUV2
ZW50KiBqc0V2ZW50LCBKU0M6OkV4ZWNTdGEKICAgICBjb25zdCBVU3RyaW5nJiBsYXN0RXZlbnRJ
ZEFyZyA9IGV4ZWMtPmFyZ3VtZW50KDUpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBET01XaW5kb3cqIHNvdXJjZUFyZyA9IHRvRE9NV2luZG93KGV4ZWMtPmFyZ3VtZW50KDYpKTsK
ICAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzOworICAgIE93blB0cjxB
cnJheUJ1ZmZlckFycmF5PiBhcnJheUJ1ZmZlcnM7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCg3
KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG1lc3NhZ2VQb3J0cyA9IGFkb3B0UHRy
KG5ldyBNZXNzYWdlUG9ydEFycmF5KTsKLSAgICAgICAgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoZXhl
YywgZXhlYy0+YXJndW1lbnQoNyksICptZXNzYWdlUG9ydHMpOworICAgICAgICBhcnJheUJ1ZmZl
cnMgPSBhZG9wdFB0cihuZXcgQXJyYXlCdWZmZXJBcnJheSk7CisgICAgICAgIGZpbGxNZXNzYWdl
UG9ydEFycmF5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDcpLCAqbWVzc2FnZVBvcnRzLCAqYXJyYXlC
dWZmZXJzKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAppbmRleCA3MTExNjZiLi43NmE4YzBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNFdmVudC5o
IgogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgpAQCAtNjcsMTIgKzY4LDEzIEBAIEpTQzo6
SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojp3ZWJraXRQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXR1cm4gaGFuZGxlUG9zdE1lc3NhZ2UoZXhlYywgaW1wbCgpKTsKIH0KIAot
dm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0QXJyYXkpCit2b2lkIGZpbGxNZXNzYWdl
UG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3Nh
Z2VQb3J0QXJyYXkmIHBvcnRBcnJheSwgQXJyYXlCdWZmZXJBcnJheSYgYXJyYXlCdWZmZXJzKQog
ewogICAgIC8vIENvbnZlcnQgZnJvbSB0aGUgcGFzc2VkLWluIEpTIGFycmF5LWxpa2Ugb2JqZWN0
IHRvIGEgTWVzc2FnZVBvcnRBcnJheS4KICAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVu
dHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQg
c2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYy4KICAgICBpZiAodmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkgewogICAgICAgICBwb3J0QXJyYXkucmVzaXplKDApOworICAgICAgICBhcnJh
eUJ1ZmZlcnMucmVzaXplKDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NCwxMSAr
OTYsMTcgQEAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9ydEEKIAogICAgICAgICAvLyBWYWxpZGF0aW9u
IG9mIE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQu
MS4xNS4KICAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBwb3J0ID0gdG9NZXNzYWdlUG9ydCh2
YWx1ZSk7Ci0gICAgICAgIGlmICghcG9ydCkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYyk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChwb3J0KQorICAgICAgICAg
ICAgcG9ydEFycmF5LmFwcGVuZChwb3J0LnJlbGVhc2UoKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIo
dmFsdWUpOworICAgICAgICAgICAgaWYgKGFycmF5QnVmZmVyKQorICAgICAgICAgICAgICAgIGFy
cmF5QnVmZmVycy5hcHBlbmQoYXJyYXlCdWZmZXIpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHBvcnRBcnJheS5hcHBlbmQocG9y
dC5yZWxlYXNlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCmluZGV4IDVhOWUwNGIuLmU3NmU3NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKQEAgLTQy
LDE1ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gSGVscGVyIGZ1bmN0aW9u
IHdoaWNoIHB1bGxzIHRoZSB2YWx1ZXMgb3V0IG9mIGEgSlMgc2VxdWVuY2UgYW5kIGludG8gYSBN
ZXNzYWdlUG9ydEFycmF5LgogICAgIC8vIEFsc28gdmFsaWRhdGVzIHRoZSBlbGVtZW50cyBwZXIg
c2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdlYklETCBzcGVjIGFuZCBzZWN0aW9u
IDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjLgogICAgIC8vIE1heSBnZW5lcmF0ZSBhbiBleGNlcHRp
b24gdmlhIHRoZSBwYXNzZWQgRXhlY1N0YXRlLgotICAgIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJy
YXkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmKTsKKyAg
ICB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBNZXNzYWdlUG9ydEFycmF5JiwgQXJyYXlCdWZmZXJBcnJheSYpOwogCiAgICAgLy8gSGVscGVy
IGZ1bmN0aW9uIHRvIGNvbnZlcnQgZnJvbSBKUyBwb3N0TWVzc2FnZSBhcmd1bWVudHMgdG8gV2Vi
Q29yZSBwb3N0TWVzc2FnZSBhcmd1bWVudHMuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAg
ICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgVCogaW1wbCkKICAgICB7CiAgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5
OwotICAgICAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwg
cG9ydEFycmF5KTsKLSAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
LCAmcG9ydEFycmF5KTsKKyAgICAgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlckFycmF5
OworICAgICAgICBmaWxsTWVzc2FnZVBvcnRBcnJheShleGVjLCBleGVjLT5hcmd1bWVudCgxKSwg
cG9ydEFycmF5LCBhcnJheUJ1ZmZlckFycmF5KTsKKyAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApLCAmcG9ydEFycmF5LCAmYXJyYXlCdWZmZXJBcnJheSk7CiAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU0M6Ompz
VW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNw
cAppbmRleCA3MjcyYTEwLi5mNzU4NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0VmFsdWUuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6aXNG
dW5jdGlvbigpIGNvbnN0CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTY3Jp
cHRWYWx1ZTo6c2VyaWFsaXplKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7Ci0gICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRlLCBqc1ZhbHVlKCksIDAsIHRocm93RXhjZXB0aW9u
cyk7CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHNjcmlwdFN0YXRl
LCBqc1ZhbHVlKCksIDAsIDAsIHRocm93RXhjZXB0aW9ucyk7CiB9CiAKIFNjcmlwdFZhbHVlIFNj
cmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRp
b25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggNzdjZDY1Yi4uN2M3ZDMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02MSw2ICs2
MSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvUmVnRXhwLmg+CiAjaW5jbHVkZSA8cnVudGltZS9SZWdFeHBPYmplY3QuaD4KKyNp
bmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0x
MDUsNiArMTA2LDcgQEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAgICBNZXNzYWdlUG9ydFJl
ZmVyZW5jZVRhZyA9IDIwLAogICAgIEFycmF5QnVmZmVyVGFnID0gMjEsCiAgICAgQXJyYXlCdWZm
ZXJWaWV3VGFnID0gMjIsCisgICAgQXJyYXlCdWZmZXJUcmFuc2ZlclRhZyA9IDIzLAogICAgIEVy
cm9yVGFnID0gMjU1CiB9OwogCkBAIC0xOTEsNiArMTkzLDcgQEAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGludCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKICAqICAgIHwgTWVzc2FnZVBvcnRS
ZWZlcmVuY2VUYWcgPHZhbHVlOnVpbnQzMl90PgogICogICAgfCBBcnJheUJ1ZmZlcgogICogICAg
fCBBcnJheUJ1ZmZlclZpZXdUYWcgQXJyYXlCdWZmZXJWaWV3U3VidGFnIDxieXRlT2Zmc2V0OnVp
bnQzMl90PiA8Ynl0ZUxlbmdodDp1aW50MzJfdD4gKEFycmF5QnVmZmVyIHwgT2JqZWN0UmVmZXJl
bmNlKQorICogICAgfCBBcnJheUJ1ZmZlclRyYW5zZmVyVGFnIDx2YWx1ZTp1aW50MzJfdD4KICAq
CiAgKiBTdHJpbmcgOi0KICAqICAgICAgRW1wdHlTdHJpbmdUYWcKQEAgLTMxNSw5ICszMTgsMTEg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBib29sIHdyaXRlTGl0dGxlRW5kaWFuKFZl
Y3Rvcjx1aW50OF90PiYgYnVmZmVyLCBjb24KIAogY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xv
bmVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU2VyaWFsaXphdGlvblJldHVybkNvZGUgc2Vy
aWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSog
bWVzc2FnZVBvcnRzLCBWZWN0b3I8dWludDhfdD4mIG91dCkKKyAgICBzdGF0aWMgU2VyaWFsaXph
dGlvblJldHVybkNvZGUgc2VyaWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQb3J0
QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlCdWZmZXJzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
JiBvdXQpCiAgICAgewotICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCBt
ZXNzYWdlUG9ydHMsIG91dCk7CisgICAgICAgIENsb25lU2VyaWFsaXplciBzZXJpYWxpemVyKGV4
ZWMsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBvdXQpOwogICAgICAgICByZXR1cm4gc2Vy
aWFsaXplci5zZXJpYWxpemUodmFsdWUpOwogICAgIH0KIApAQCAtMzQ2LDE5ICszNTEsMjkgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBDbG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRl
KiBleGVjLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIFZlY3Rvcjx1aW50OF90PiYg
b3V0KQorICAgIHR5cGVkZWYgSGFzaE1hcDxKU09iamVjdCosIHVpbnQzMl90PiBPYmplY3RQb29s
OworCisgICAgQ2xvbmVTZXJpYWxpemVyKEV4ZWNTdGF0ZSogZXhlYywgTWVzc2FnZVBvcnRBcnJh
eSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIFZlY3Rvcjx1
aW50OF90PiYgb3V0KQogICAgICAgICA6IENsb25lQmFzZShleGVjKQogICAgICAgICAsIG1fYnVm
ZmVyKG91dCkKICAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBVU3RyaW5nKCIiLCAw
KSkKICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJlbnRWZXJzaW9uKTsKLSAgICAgICAgaWYgKG1l
c3NhZ2VQb3J0cykgewotICAgICAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWVzc2FnZVBvcnRz
LT5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMtPmF0KGkpLmdldCgpKTsKLSAgICAg
ICAgICAgICAgICBpZiAodmFsdWUuZ2V0T2JqZWN0KCkpCi0gICAgICAgICAgICAgICAgICAgIG1f
dHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMuYWRkKHZhbHVlLmdldE9iamVjdCgpLCBpKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgZmlsbFRyYW5zZmVyTWFwKG1lc3NhZ2VQb3J0cywgbV90cmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0cyk7CisgICAgICAgIGZpbGxUcmFuc2Zlck1hcChhcnJheUJ1ZmZlcnMs
IG1fdHJhbnNmZXJyZWRBcnJheUJ1ZmZlcnMpOworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFz
cyBUPgorICAgIHZvaWQgZmlsbFRyYW5zZmVyTWFwKFZlY3RvcjxSZWZQdHI8VD4sIDE+KiBpbnB1
dCwgT2JqZWN0UG9vbCYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKCFpbnB1dCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlucHV0LT5zaXplKCk7IGkr
KykgeworICAgICAgICAgICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gdG9KUyhtX2V4ZWMsIGdsb2Jh
bE9iamVjdCwgaW5wdXQtPmF0KGkpLmdldCgpKTsKKyAgICAgICAgICAgIEpTQzo6SlNPYmplY3Qq
IG9iaiA9IHZhbHVlLmdldE9iamVjdCgpOworICAgICAgICAgICAgaWYgKG9iaiAmJiAhcmVzdWx0
LmNvbnRhaW5zKG9iaikpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChvYmosIGkpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC00NzUsNyArNDkwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGJvb2wgZHVtcEFycmF5QnVmZmVyVmlldyhKU09iamVjdCogb2JqKQorICAg
IGJvb2wgZHVtcEFycmF5QnVmZmVyVmlldyhKU09iamVjdCogb2JqLCBTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSYgY29kZSkKICAgICB7CiAgICAgICAgIHdyaXRlKEFycmF5QnVmZmVyVmlld1RhZyk7
CiAgICAgICAgIGlmIChvYmotPmluaGVyaXRzKCZKU0RhdGFWaWV3OjpzX2luZm8pKQpAQCAtNTA1
LDExICs1MjAsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGFycmF5QnVmZmVyVmlldy0+Ynl0ZU9mZnNldCgpKSk7CiAgICAgICAgIHdyaXRlKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihhcnJheUJ1ZmZlclZpZXctPmJ5dGVMZW5ndGgoKSkpOwogICAgICAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYXJyYXlCdWZmZXJWaWV3LT5idWZm
ZXIoKTsKKyAgICAgICAgaWYgKCFhcnJheUJ1ZmZlcikgeworICAgICAgICAgICAgY29kZSA9IFZh
bGlkYXRpb25FcnJvcjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAg
ICAgIEpTVmFsdWUgYnVmZmVyT2JqID0gdG9KUyhtX2V4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4obV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBhcnJheUJ1ZmZlci5n
ZXQoKSk7Ci0gICAgICAgIHJldHVybiBkdW1wSWZUZXJtaW5hbChidWZmZXJPYmopOworICAgICAg
ICByZXR1cm4gZHVtcElmVGVybWluYWwoYnVmZmVyT2JqLCBjb2RlKTsKICAgICB9CiAKLSAgICBi
b29sIGR1bXBJZlRlcm1pbmFsKEpTVmFsdWUgdmFsdWUpCisgICAgYm9vbCBkdW1wSWZUZXJtaW5h
bChKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYgY29kZSkKICAgICB7CiAg
ICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgICAgIGR1bXBJbW1lZGlhdGUo
dmFsdWUpOwpAQCAtNTk2LDE3ICs2MTUsMjYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBP
YmplY3RQb29sOjppdGVyYXRvciBpbmRleCA9IG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMuZmlu
ZChvYmopOwogICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPSBtX3RyYW5zZmVycmVkTWVzc2Fn
ZVBvcnRzLmVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHdyaXRlKE1lc3NhZ2VQb3J0UmVm
ZXJlbmNlVGFnKTsKLSAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaSA9IGluZGV4LT5zZWNv
bmQ7Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKGkpOworICAgICAgICAgICAgICAgICAgICB3
cml0ZShpbmRleC0+c2Vjb25kKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzKCZKU0FycmF5QnVmZmVyOjpzX2lu
Zm8pKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9
IHRvQXJyYXlCdWZmZXIob2JqKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPmlz
TmV1dGVyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlvbkVycm9y
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgT2JqZWN0UG9vbDo6aXRlcmF0b3IgaW5kZXggPSBtX3RyYW5zZmVycmVk
QXJyYXlCdWZmZXJzLmZpbmQob2JqKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT0gbV90
cmFuc2ZlcnJlZEFycmF5QnVmZmVycy5lbmQoKSkgeworICAgICAgICAgICAgICAgICAgICB3cml0
ZShBcnJheUJ1ZmZlclRyYW5zZmVyVGFnKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoaW5k
ZXgtPnNlY29uZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0T2JqZWN0SW50ZXJuYWwob2JqKSkg
Ly8gaGFuZGxlIGR1cGxpY2F0ZXMKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgd3JpdGUoQXJyYXlCdWZmZXJUYWcpOwotICAgICAgICAgICAgICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVyKG9iaik7CiAgICAg
ICAgICAgICAgICAgd3JpdGUoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAg
ICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCAqPihhcnJheUJ1ZmZlci0+ZGF0
YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC02MTQsNyArNjQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChvYmot
PmluaGVyaXRzKCZKU0FycmF5QnVmZmVyVmlldzo6c19pbmZvKSkgewogICAgICAgICAgICAgICAg
IGlmICghc3RhcnRPYmplY3RJbnRlcm5hbChvYmopKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZHVtcEFycmF5QnVmZmVyVmlldyhvYmop
OworICAgICAgICAgICAgICAgIHJldHVybiBkdW1wQXJyYXlCdWZmZXJWaWV3KG9iaiwgY29kZSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIENhbGxEYXRhIHVudXNlZERhdGE7CkBAIC03
NDksOSArNzc3LDkgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4mIG1f
YnVmZmVyOwotICAgIHR5cGVkZWYgSGFzaE1hcDxKU09iamVjdCosIHVpbnQzMl90PiBPYmplY3RQ
b29sOwogICAgIE9iamVjdFBvb2wgbV9vYmplY3RQb29sOwogICAgIE9iamVjdFBvb2wgbV90cmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0czsKKyAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJyZWRBcnJheUJ1
ZmZlcnM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgdWludDMyX3Qs
IElkZW50aWZpZXJSZXBIYXNoPiBTdHJpbmdDb25zdGFudFBvb2w7CiAgICAgU3RyaW5nQ29uc3Rh
bnRQb29sIG1fY29uc3RhbnRQb29sOwogICAgIElkZW50aWZpZXIgbV9lbXB0eUlkZW50aWZpZXI7
CkBAIC04MTQsNyArODQyLDEwIEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFs
aXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgd3JpdGUoaW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChkdW1wSWZUZXJtaW5h
bChpblZhbHVlKSkgeworICAgICAgICAgICAgICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHRl
cm1pbmFsQ29kZSA9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZDsKKyAgICAgICAgICAgICAgICBpZiAo
ZHVtcElmVGVybWluYWwoaW5WYWx1ZSwgdGVybWluYWxDb2RlKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAodGVybWluYWxDb2RlICE9IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0ZXJtaW5hbENvZGU7CiAgICAgICAgICAgICAgICAgICAg
IGluZGV4U3RhY2subGFzdCgpKys7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFy
dFZpc2l0TWVtYmVyOwogICAgICAgICAgICAgICAgIH0KQEAgLTg3MSwxMCArOTAyLDEzIEBAIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUg
aW4pCiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFRlcm1pbmF0ZSgpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gRXhpc3RpbmdFeGNlcHRpb25FcnJvcjsKIAotICAgICAgICAgICAgICAg
IGlmICghZHVtcElmVGVybWluYWwoaW5WYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZSB0ZXJtaW5hbENvZGUgPSBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7Cisg
ICAgICAgICAgICAgICAgaWYgKCFkdW1wSWZUZXJtaW5hbChpblZhbHVlLCB0ZXJtaW5hbENvZGUp
KSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRlU3RhY2suYXBwZW5kKE9iamVjdEVuZFZpc2l0
TWVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBzdGF0ZVVua25vd247CiAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU3VjY2Vzc2Z1
bGx5Q29tcGxldGVkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVybWluYWxDb2RlOwog
ICAgICAgICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjYXNlIE9iamVjdEVuZFZpc2l0TWVtYmVyOiB7CkBAIC04ODUsMTMgKzkxOSwxOCBAQCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGlu
KQogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRWaXNpdE1lbWJlcjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHN0YXRlVW5rbm93bjoKLSAgICAgICAgICAgIGNhc2UgU3RhdGVV
bmtub3duOgotICAgICAgICAgICAgICAgIGlmIChkdW1wSWZUZXJtaW5hbChpblZhbHVlKSkKKyAg
ICAgICAgICAgIGNhc2UgU3RhdGVVbmtub3duOiB7CisgICAgICAgICAgICAgICAgU2VyaWFsaXph
dGlvblJldHVybkNvZGUgdGVybWluYWxDb2RlID0gU3VjY2Vzc2Z1bGx5Q29tcGxldGVkOworICAg
ICAgICAgICAgICAgIGlmIChkdW1wSWZUZXJtaW5hbChpblZhbHVlLCB0ZXJtaW5hbENvZGUpKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbENvZGUgIT0gU3VjY2Vzc2Z1bGx5Q29t
cGxldGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm1pbmFsQ29kZTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgaWYgKGlzQXJyYXkoaW5WYWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYXJy
YXlTdGFydFN0YXRlOwogICAgICAgICAgICAgICAgIGdvdG8gb2JqZWN0U3RhcnRTdGF0ZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoc3RhdGVTdGFjay5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBicmVhazsKQEAgLTkxMSw2ICs5NTAsOCBAQCBTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShKU1ZhbHVlIGluKQogICAgIHJldHVy
biBTdWNjZXNzZnVsbHlDb21wbGV0ZWQ7CiB9CiAKK3R5cGVkZWYgVmVjdG9yPFdURjo6QXJyYXlC
dWZmZXJDb250ZW50cz4gQXJyYXlCdWZmZXJDb250ZW50c0FycmF5OworCiBjbGFzcyBDbG9uZURl
c2VyaWFsaXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBkZXNl
cmlhbGl6ZVN0cmluZyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKQEAgLTkzMiwxMiAr
OTczLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZyhzdHIuaW1wbCgpKTsKICAg
ICB9CiAKLSAgICBzdGF0aWMgRGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXplKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWVzc2FnZVBvcnRBcnJh
eSogbWVzc2FnZVBvcnRzLAorICAgIHN0YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJp
YWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJh
eSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkqIGFycmF5QnVmZmVyQ29u
dGVudHNBcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZm
ZXIuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VfcGFpcihqc051bGwoKSwgVW5zcGVj
aWZpZWRFcnJvcik7Ci0gICAgICAgIENsb25lRGVzZXJpYWxpemVyIGRlc2VyaWFsaXplcihleGVj
LCBnbG9iYWxPYmplY3QsIG1lc3NhZ2VQb3J0cywgYnVmZmVyKTsKKyAgICAgICAgQ2xvbmVEZXNl
cmlhbGl6ZXIgZGVzZXJpYWxpemVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXksIGJ1ZmZlcik7CiAgICAgICAgIGlmICghZGVzZXJpYWxp
emVyLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlX3BhaXIoSlNWYWx1ZSgpLCBW
YWxpZGF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm4gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXpl
KCk7CkBAIC05ODIsNyArMTAyNCw5IEBAIHByaXZhdGU6CiAgICAgICAgIHNpemVfdCBtX2luZGV4
OwogICAgIH07CiAKLSAgICBDbG9uZURlc2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCisgICAgQ2xvbmVEZXNlcmlhbGl6ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCAKKyAgICAgICAgICAg
ICAgICAgICAgICBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheSogYXJyYXlCdWZmZXJDb250ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKICAgICAgICAgOiBDbG9uZUJhc2UoZXhlYykK
ICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9pc0RP
TUdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QtPmluaGVyaXRzKCZKU0RPTUdsb2JhbE9iamVjdDo6
c19pbmZvKSkKQEAgLTk5MCw2ICsxMDM0LDggQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2VuZChi
dWZmZXIuZGF0YSgpICsgYnVmZmVyLnNpemUoKSkKICAgICAgICAgLCBtX3ZlcnNpb24oMHhGRkZG
RkZGRikKICAgICAgICAgLCBtX21lc3NhZ2VQb3J0cyhtZXNzYWdlUG9ydHMpCisgICAgICAgICwg
bV9hcnJheUJ1ZmZlckNvbnRlbnRzKGFycmF5QnVmZmVyQ29udGVudHMpCisgICAgICAgICwgbV9h
cnJheUJ1ZmZlcnMoYXJyYXlCdWZmZXJDb250ZW50cyA/IGFycmF5QnVmZmVyQ29udGVudHMtPnNp
emUoKSA6IDApCiAgICAgewogICAgICAgICBpZiAoIXJlYWQobV92ZXJzaW9uKSkKICAgICAgICAg
ICAgIG1fdmVyc2lvbiA9IDB4RkZGRkZGRkY7CkBAIC0xNDMyLDYgKzE0NzgsMTkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fZ2NCdWZmZXIuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJUcmFuc2Zl
clRhZzogeworICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7CisgICAgICAgICAgICBib29sIGlu
ZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOworICAgICAgICAgICAgaWYgKCFpbmRl
eFN1Y2Nlc3NmdWxseVJlYWQgfHwgaW5kZXggPj0gbV9hcnJheUJ1ZmZlcnMuc2l6ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbV9hcnJheUJ1ZmZlcnNbaW5kZXhd
KQorICAgICAgICAgICAgICAgIG1fYXJyYXlCdWZmZXJzW2luZGV4XSA9IEFycmF5QnVmZmVyOjpj
cmVhdGUobV9hcnJheUJ1ZmZlckNvbnRlbnRzLT5hdChpbmRleCkpOworCisgICAgICAgICAgICBy
ZXR1cm4gZ2V0SlNWYWx1ZShtX2FycmF5QnVmZmVyc1tpbmRleF0uZ2V0KCkpOworICAgICAgICB9
CiAgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJWaWV3VGFnOiB7CiAgICAgICAgICAgICBKU1ZhbHVl
IGFycmF5QnVmZmVyVmlldzsKICAgICAgICAgICAgIGlmICghcmVhZEFycmF5QnVmZmVyVmlldyhh
cnJheUJ1ZmZlclZpZXcpKSB7CkBAIC0xNDU0LDYgKzE1MTMsOCBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fdmVyc2lvbjsKICAgICBWZWN0b3I8Q2FjaGVkU3RyaW5nPiBtX2NvbnN0YW50UG9v
bDsKICAgICBNZXNzYWdlUG9ydEFycmF5KiBtX21lc3NhZ2VQb3J0czsKKyAgICBBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkqIG1fYXJyYXlCdWZmZXJDb250ZW50czsKKyAgICBBcnJheUJ1ZmZlckFy
cmF5IG1fYXJyYXlCdWZmZXJzOwogfTsKIAogRGVzZXJpYWxpemF0aW9uUmVzdWx0IENsb25lRGVz
ZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgpCkBAIC0xNjAzLDE3ICsxNjY0LDYxIEBAIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYgYnVm
ZmVyKQogICAgIG1fZGF0YS5zd2FwKGJ1ZmZlcik7CiB9CiAKLVBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgUGFzc093blB0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkKKyAg
ICA6IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkK
K3sKKyAgICBtX2RhdGEuc3dhcChidWZmZXIpOworfQorCitQYXNzT3duUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OnRyYW5zZmVyQXJyYXlCdWZmZXJzKAorICAgIEFycmF5QnVmZmVyQXJyYXkmIGFycmF5QnVm
ZmVycywgU2VyaWFsaXphdGlvblJldHVybkNvZGUmIGNvZGUpCit7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcnJheUJ1ZmZlcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGFycmF5
QnVmZmVyc1tpXS0+aXNOZXV0ZXJlZCgpKSB7CisgICAgICAgICAgICBjb2RlID0gVmFsaWRhdGlv
bkVycm9yOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBjb250ZW50cyA9IGFkb3B0UHRy
KG5ldyBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkoYXJyYXlCdWZmZXJzLnNpemUoKSkpOworCisg
ICAgSGFzaFNldDxXVEY6OkFycmF5QnVmZmVyKj4gdmlzaXRlZDsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFycmF5QnVmZmVycy5zaXplKCk7IGkrKykgeworICAgICAgICBWZWN0b3I8UmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gPiBuZXV0ZXJlZFZpZXdzOworCisgICAgICAgIGlmICh2aXNp
dGVkLmNvbnRhaW5zKGFycmF5QnVmZmVyc1tpXS5nZXQoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgdmlzaXRlZC5hZGQoYXJyYXlCdWZmZXJzW2ldLmdldCgpKTsKKworICAgICAg
ICBib29sIHJlc3VsdCA9IGFycmF5QnVmZmVyc1tpXS0+dHJhbnNmZXIoY29udGVudHMtPmF0KGkp
LCBuZXV0ZXJlZFZpZXdzKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNv
ZGUgPSBWYWxpZGF0aW9uRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gY29udGVudHMucmVsZWFzZSgpOworfQorCisKK1Bhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJh
eSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcjsKLSAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlID0gQ2xvbmVT
ZXJpYWxpemVyOjpzZXJpYWxpemUoZXhlYywgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYnVmZmVyKTsK
KyAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJp
YWxpemUoZXhlYywgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBidWZmZXIpOwor
CisgICAgT3duUHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5OworCisgICAgaWYgKGFycmF5QnVmZmVycyAmJiBzZXJpYWxpemF0aW9uRGlkQ29tcGxl
dGVTdWNjZXNzZnVsbHkoY29kZSkpCisgICAgICAgIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9
IHRyYW5zZmVyQXJyYXlCdWZmZXJzKCphcnJheUJ1ZmZlcnMsIGNvZGUpOworCiAgICAgaWYgKHRo
cm93RXhjZXB0aW9ucyA9PSBUaHJvd2luZykKICAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklm
U2VyaWFsaXphdGlvbkZhaWxlZChleGVjLCBjb2RlKTsKIAogICAgIGlmICghc2VyaWFsaXphdGlv
bkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KGNvZGUpKQogICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVy
KSk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZm
ZXIsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlKCkpKTsKIH0KIAogUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkK
QEAgLTE2MzEsMTIgKzE3MzYsMTMgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3QKIH0KIAogUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKEpTQ29udGV4dFJlZiBvcmlnaW5Db250ZXh0LCBKU1ZhbHVlUmVmIGFwaVZhbHVlLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJy
YXkqIGFycmF5QnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhvcmlnaW5Db250ZXh0KTsKICAgICBBUElFbnRyeVNoaW0g
ZW50cnlTaGltKGV4ZWMpOwogICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pTKGV4ZWMsIGFwaVZhbHVl
KTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzKTsK
KyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJh
eUJ1ZmZlcnMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICBpZiAo
ZXhjZXB0aW9uKQogICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4ZWMsIGV4ZWMtPmV4
Y2VwdGlvbigpKTsKQEAgLTE2NTAsNyArMTc1Niw3IEBAIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3Jp
CiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkNvbnRleHQsIEpTVmFsdWVSZWYgYXBpVmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIHJldHVybiBjcmVhdGUob3Jp
Z2luQ29udGV4dCwgYXBpVmFsdWUsIDAsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIGNyZWF0ZShv
cmlnaW5Db250ZXh0LCBhcGlWYWx1ZSwgMCwgMCwgZXhjZXB0aW9uKTsKIH0KIAogU3RyaW5nIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoKQpAQCAtMTY1OCwxMCArMTc2NCwxMSBAQCBT
dHJpbmcgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0b1N0cmluZygpCiAgICAgcmV0dXJuIENsb25l
RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZVN0cmluZyhtX2RhdGEpOwogfQogCi1KU1ZhbHVlIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCAKK0pTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpk
ZXNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVBvcnRB
cnJheSogbWVzc2FnZVBvcnRzLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9u
cykKIHsKLSAgICBEZXNlcmlhbGl6YXRpb25SZXN1bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6
ZXI6OmRlc2VyaWFsaXplKGV4ZWMsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBtX2RhdGEp
OworICAgIERlc2VyaWFsaXphdGlvblJlc3VsdCByZXN1bHQgPSBDbG9uZURlc2VyaWFsaXplcjo6
ZGVzZXJpYWxpemUoZXhlYywgZ2xvYmFsT2JqZWN0LCBtZXNzYWdlUG9ydHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2FycmF5QnVmZmVyQ29udGVudHNBcnJheS5nZXQoKSwgbV9kYXRhKTsKICAgICBpZiAodGhyb3dF
eGNlcHRpb25zID09IFRocm93aW5nKQogICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJp
YWxpemF0aW9uRmFpbGVkKGV4ZWMsIHJlc3VsdC5zZWNvbmQpOwogICAgIHJldHVybiByZXN1bHQu
Zmlyc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oCmluZGV4IDc1Y2U2OTQuLjNmOGRhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDEsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0OwogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lc3Nh
Z2VQb3J0PiwgMT4gTWVzc2FnZVBvcnRBcnJheTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxXVEY6
OkFycmF5QnVmZmVyPiwgMT4gQXJyYXlCdWZmZXJBcnJheTsKICAKIGVudW0gU2VyaWFsaXphdGlv
blJldHVybkNvZGUgewogICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAgLTU4LDggKzYwLDkg
QEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBw
dWJsaWMgUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNWYWx1ZSwgTWVzc2FnZVBvcnRBcnJheSosIFNlcmlhbGl6YXRpb25FcnJv
ck1vZGUgPSBUaHJvd2luZyk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBNZXNzYWdlUG9ydEFycmF5
KiwgIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIE1l
c3NhZ2VQb3J0QXJyYXkqLCBBcnJheUJ1ZmZlckFycmF5KiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0g
VGhyb3dpbmcpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
Y3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgTWVzc2FnZVBvcnRBcnJheSosIEFycmF5
QnVmZmVyQXJyYXkqLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJl
ZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwpAQCAtODgsMTEgKzkxLDE1
IEBAIHB1YmxpYzoKICAgICB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CiAKIHByaXZhdGU6Cisg
ICAgdHlwZWRlZiBWZWN0b3I8V1RGOjpBcnJheUJ1ZmZlckNvbnRlbnRzPiBBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk7CiAgICAgc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFs
aXphdGlvbkZhaWxlZChKU0M6OkV4ZWNTdGF0ZSosIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsK
ICAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemF0aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2Vy
aWFsaXphdGlvblJldHVybkNvZGUpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4gdHJhbnNmZXJBcnJheUJ1ZmZlcnMoQXJyYXlCdWZmZXJBcnJheSYsIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlJik7CiAgICAgCiAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYpOworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0
b3I8dW5zaWduZWQgY2hhcj4mLCBQYXNzT3duUHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4p
OwogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2RhdGE7CisgICAgT3duUHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4gbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>