<?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>33236</bug_id>
          
          <creation_ts>2010-01-05 16:29:39 -0800</creation_ts>
          <short_desc>Remove m_identifierTable pointer from UString</short_desc>
          <delta_ts>2010-01-06 11:34:39 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>177459</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-05 16:29:39 -0800</bug_when>
    <thetext>Currently every string holds a pointer so that during destruction, if a string has been used as an identifier, it can remove itself from the table.
By instead accessing the identifierTable via a thread specific tracking the table associated with the current globaldata, we can save the memory cost of this pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177465</commentid>
    <comment_count>1</comment_count>
      <attachid>45940</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-05 16:51:35 -0800</bug_when>
    <thetext>Created attachment 45940
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177479</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-05 17:17:52 -0800</bug_when>
    <thetext>Attachment 45940 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
JavaScriptCore/runtime/Identifier.cpp:270:  g_identifierTableSpecific is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/runtime/Identifier.h:156:  g_identifierTableSpecific is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/API/APIShims.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177528</commentid>
    <comment_count>3</comment_count>
      <attachid>45940</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-01-05 19:37:09 -0800</bug_when>
    <thetext>Comment on attachment 45940
The patch

&gt; +        (JSC::APICallbackShim::~APICallbackShim):
&gt; +
&gt; +            - change the API shims to trck the identifierTable of the current JSGlobalData.

MORE AS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177666</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-01-06 11:34:39 -0800</bug_when>
    <thetext>Transmitting file data ....................
Committed revision 52856.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45940</attachid>
            <date>2010-01-05 16:51:35 -0800</date>
            <delta_ts>2010-01-05 19:37:08 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>patch.ThreadGlobalData.6.txt</filename>
            <type>text/plain</type>
            <size>29275</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyODM4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODUgQEAKKzIwMTAtMDEtMDUgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzIzNgorICAgICAgICBSZW1vdmUgbV9pZGVudGlmaWVyVGFibGUgcG9pbnRl
ciBmcm9tIFVTdHJpbmcKKworICAgICAgICBDdXJyZW50bHkgZXZlcnkgc3RyaW5nIGhvbGRzIGEg
cG9pbnRlciBzbyB0aGF0IGR1cmluZyBkZXN0cnVjdGlvbiwKKyAgICAgICAgaWYgYSBzdHJpbmcg
aGFzIGJlZW4gdXNlZCBhcyBhbiBpZGVudGlmaWVyLCBpdCBjYW4gcmVtb3ZlIGl0c2VsZgorICAg
ICAgICBmcm9tIHRoZSB0YWJsZS4gIEJ5IGluc3RlYWQgYWNjZXNzaW5nIHRoZSBpZGVudGlmaWVy
VGFibGUgdmlhIGEKKyAgICAgICAgdGhyZWFkIHNwZWNpZmljIHRyYWNraW5nIHRoZSB0YWJsZSBh
c3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKKyAgICAgICAgZ2xvYmFsZGF0YSwgd2UgY2FuIHNh
dmUgdGhlIG1lbW9yeSBjb3N0IG9mIHRoaXMgcG9pbnRlci4KKworICAgICAgICAqIEFQSS9BUElT
aGltcy5oOgorICAgICAgICAoSlNDOjpBUElFbnRyeVNoaW1XaXRob3V0TG9jazo6QVBJRW50cnlT
aGltV2l0aG91dExvY2spOgorICAgICAgICAoSlNDOjpBUElFbnRyeVNoaW1XaXRob3V0TG9jazo6
fkFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKToKKyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tTaGlt
OjpBUElDYWxsYmFja1NoaW0pOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja1NoaW06On5BUElD
YWxsYmFja1NoaW0pOgorCisgICAgICAgICAgICAtIGNoYW5nZSB0aGUgQVBJIHNoaW1zIHRvIHRy
Y2sgdGhlIGlkZW50aWZpZXJUYWJsZSBvZiB0aGUgY3VycmVudCBKU0dsb2JhbERhdGEuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTQ29udGV4dEdyb3VwQ3Jl
YXRlKToKKworICAgICAgICAgICAgLSB1cGRhdGUgY3JlYXRpb24gb2YgSlNHbG9iYWxEYXRhIGZv
ciBBUEkgdXNhZ2UgdG8gdXNlIG5ldyBjcmVhdGUgbWV0aG9kLgorICAgICAgICAgICAgLSBmaXgg
c2hpbSBpbnN0YW5jaWF0aW9uIGJ1ZyBpbiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tcGxl
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKEpTQzo6ZXZh
bHVhdGUpOgorCisgICAgICAgICAgICAtIGFkZCBhc3NlcnRzIHRvIGNoZWNrIHRoZSBpZGVudGlm
aWVyVGFibGUgaXMgYmVpbmcgdHJhY2tlZCBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBydW50aW1l
L0lkZW50aWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6On5JZGVudGlm
aWVyVGFibGUpOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyVGFibGU6OmFkZCk6CisgICAgICAg
IChKU0M6OklkZW50aWZpZXI6OnJlbW92ZSk6CisgICAgICAgIChKU0M6OklkZW50aWZpZXI6OmNo
ZWNrU2FtZUlkZW50aWZpZXJUYWJsZSk6CisgICAgICAgIChKU0M6OmNyZWF0ZUlkZW50aWZpZXJU
YWJsZVNwZWNpZmljQ2FsbGJhY2spOgorICAgICAgICAoSlNDOjpjcmVhdGVJZGVudGlmaWVyVGFi
bGVTcGVjaWZpYyk6CisgICAgICAgIChKU0M6OmNyZWF0ZURlZmF1bHREYXRhU3BlY2lmaWMpOgor
CisgICAgICAgICAgICAtIFVzZSBjdXJyZW50SWRlbnRpZmllclRhYmxlKCkgaW5zdGVhZCBvZiBV
U3RyaW5nSW1wbDo6bV9pZGVudGlmaWVyVGFibGUuCisgICAgICAgICAgICAtIERlZmluZSBtZXRo
b2RzIHRvIGFjY2VzcyB0aGUgdGhyZWFkIHNwZWNpZmljIGlkZW50aWZpZXIgdGFibGVzLgorCisg
ICAgICAgICogcnVudGltZS9JZGVudGlmaWVyLmg6CisgICAgICAgIChKU0M6OlRocmVhZElkZW50
aWZpZXJUYWJsZURhdGE6OlRocmVhZElkZW50aWZpZXJUYWJsZURhdGEpOgorICAgICAgICAoSlND
OjpkZWZhdWx0SWRlbnRpZmllclRhYmxlKToKKyAgICAgICAgKEpTQzo6c2V0RGVmYXVsdElkZW50
aWZpZXJUYWJsZSk6CisgICAgICAgIChKU0M6OmN1cnJlbnRJZGVudGlmaWVyVGFibGUpOgorICAg
ICAgICAoSlNDOjpzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKToKKyAgICAgICAgKEpTQzo6cmVz
ZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKToKKworICAgICAgICAgICAgLSBEZWNsYXJlIG1ldGhv
ZHMgdG8gYWNjZXNzIHRoZSB0aHJlYWQgc3BlY2lmaWMgaWRlbnRpZmllciB0YWJsZXMuCisKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6Y3JlYXRlTm9uRGVmYXVsdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6Y3Jl
YXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZSk6CisKKyAg
ICAgICAgICAgIC0gY3JlYXRpb24gb2YgSlNHbG9iYWxEYXRhIG9iamVjdHMsIG90aGVyIHRoYW4g
Zm9yIEFQSSB1c2FnZSwgYXNzb2NpYXRlIHRoZW1zZWx2ZXMgd2l0aCB0aGUgY3VycmVudCB0aHJl
YWQuCisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRp
bWUvVVN0cmluZ0ltcGwuY3BwOgorICAgICAgICAoSlNDOjpVU3RyaW5nSW1wbDo6ZGVzdHJveSk6
CisKKyAgICAgICAgICAgIC0gZGVzdHJveSgpIG1ldGhvZCBzaG91bGQgYmUgdXNpbmcgaXNJZGVu
dGlmaWVyKCkuCisKKyAgICAgICAgKiBydW50aW1lL1VTdHJpbmdJbXBsLmg6CisgICAgICAgIChK
U0M6OlVTdHJpbmdJbXBsOjppc0lkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpVU3RyaW5nSW1w
bDo6c2V0SXNJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6VVN0cmluZ0ltcGw6OmNoZWNrQ29u
c2lzdGVuY3kpOgorICAgICAgICAoSlNDOjpVU3RyaW5nSW1wbDo6VVN0cmluZ0ltcGwpOgorCisg
ICAgICAgICAgICAtIHJlcGxhY2UgbV9pZGVudGlmaWVyVGFibGUgd2l0aCBhIHNpbmdsZSBtX2lz
SWRlbnRpZmllciBiaXQuCisKKyAgICAgICAgKiB3dGYvU3RyaW5nSGFzaEZ1bmN0aW9ucy5oOgor
ICAgICAgICAoV1RGOjpzdHJpbmdIYXNoKToKKworICAgICAgICAgICAgLSBjaGFuZ2Ugc3RyaW5n
IGhhc2ggcmVzdWx0IGZyb20gMzItYml0IHRvIDMxLWJpdCwgdG8gZnJlZSBhIGJpdCBpbiBVU3Ry
aW5nSW1wbCBmb3IgbV9pc0lkZW50aWZpZXIuCisKIDIwMDktMTItMjUgUGF0cmljayBHYW5zdGVy
ZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRl
bC4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDUyODIzKQorKysg
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYs
NyArMTE2LDcgQEAgX19aTjNKU0MxMkpTR2xvYmFsRGF0YTEzc3RhcnRTYW1wbGluZ0V2CiBfX1pO
M0pTQzEySlNHbG9iYWxEYXRhMTRkdW1wU2FtcGxlRGF0YUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4z
SlNDMTJKU0dsb2JhbERhdGExNHJlc2V0RGF0ZUNhY2hlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERh
dGExNHNoYXJlZEluc3RhbmNlRXYKLV9fWk4zSlNDMTJKU0dsb2JhbERhdGE2Y3JlYXRlRWIKK19f
Wk4zSlNDMTJKU0dsb2JhbERhdGE2Y3JlYXRlRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGFEMUV2
CiBfX1pOM0pTQzEyU2FtcGxpbmdUb29sNXNldHVwRXYKIF9fWk4zSlNDMTJTbWFsbFN0cmluZ3Mx
N2NyZWF0ZUVtcHR5U3RyaW5nRVBOU18xMkpTR2xvYmFsRGF0YUUKQEAgLTE4MSw2ICsxODEsOCBA
QCBfX1pOM0pTQzIzb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmdFUE5TXzlFCiBfX1pOM0pTQzIzc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3RFUE5TXzlFeGVjU3RhdGVFUEtOU185SGFzaEVudHJ5RVBOU184
SlNPYmplY3RFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNKU0My
NGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMjVldmFs
dWF0ZUluR2xvYmFsQ2FsbEZyYW1lRVJLTlNfN1VTdHJpbmdFUk5TXzdKU1ZhbHVlRVBOU18xNEpT
R2xvYmFsT2JqZWN0RQorX19aTjNKU0MyNWdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWNFCitfX1pO
M0pTQzI5Y3JlYXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWNFdgogX19aTjNKU0MzNWNyZWF0ZUlu
dGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4zSlND
M05hTkUKIF9fWk4zSlNDNEhlYXAxNHByaW1hcnlIZWFwRW5kRXYKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL0FQSS9BUElTaGltcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9BUElT
aGltcy5oCShyZXZpc2lvbiA1MjgyMykKKysrIEphdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTUgQEAKICNpZm5kZWYgQVBJU2hpbXNfaAog
I2RlZmluZSBBUElTaGltc19oCiAKLSNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJK
U0xvY2suaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrIHsKIHByb3RlY3RlZDoKICAgICBBUElFbnRyeVNo
aW1XaXRob3V0TG9jayhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGJvb2wgcmVnaXN0ZXJUaHJl
YWQpCisgICAgICAgIDogbV9lbnRyeUlkZW50aWZpZXJUYWJsZShzZXRDdXJyZW50SWRlbnRpZmll
clRhYmxlKGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZSkpCiAgICAgewogICAgICAgICBpZiAo
cmVnaXN0ZXJUaHJlYWQpCiAgICAgICAgICAgICBnbG9iYWxEYXRhLT5oZWFwLnJlZ2lzdGVyVGhy
ZWFkKCk7CkBAIC00MSw3ICs0MiwxMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB+QVBJRW50cnlTaGlt
V2l0aG91dExvY2soKQogICAgIHsKKyAgICAgICAgc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZSht
X2VudHJ5SWRlbnRpZmllclRhYmxlKTsKICAgICB9CisKK3ByaXZhdGU6CisgICAgSWRlbnRpZmll
clRhYmxlKiBtX2VudHJ5SWRlbnRpZmllclRhYmxlOwogfTsKIAogY2xhc3MgQVBJRW50cnlTaGlt
IDogcHVibGljIEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrIHsKQEAgLTY4LDE3ICs3MywyMSBAQCBj
bGFzcyBBUElDYWxsYmFja1NoaW0gewogcHVibGljOgogICAgIEFQSUNhbGxiYWNrU2hpbShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgICAgIDogbV9kcm9wQWxsTG9ja3MoZXhlYykKKyAgICAgICAgLCBt
X2dsb2JhbERhdGEoJmV4ZWMtPmdsb2JhbERhdGEoKSkKICAgICB7CisgICAgICAgIHJlc2V0Q3Vy
cmVudElkZW50aWZpZXJUYWJsZSgpOwogICAgIH0KIAogICAgIH5BUElDYWxsYmFja1NoaW0oKQog
ICAgIHsKKyAgICAgICAgc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShtX2dsb2JhbERhdGEtPmlk
ZW50aWZpZXJUYWJsZSk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIEpTTG9jazo6RHJvcEFsbExv
Y2tzIG1fZHJvcEFsbExvY2tzOworICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwogfTsK
IAogfQogCi0jZW5kaWYgLy8gQVBJU2hpbXNfaAorI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gNTI4MjMpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBDcmVhdGUoKQog
ewogICAgIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICByZXR1cm4gdG9SZWYoSlNHbG9iYWxE
YXRhOjpjcmVhdGUoKS5yZWxlYXNlUmVmKCkpOworICAgIHJldHVybiB0b1JlZihKU0dsb2JhbERh
dGE6OmNyZWF0ZU5vbkRlZmF1bHQoKS5yZWxlYXNlUmVmKCkpOwogfQogCiBKU0NvbnRleHRHcm91
cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKU0NvbnRleHRHcm91cFJlZiBncm91cCkKQEAgLTg1
LDcgKzg1LDggQEAgSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZQogCiAg
ICAgSlNMb2NrIGxvY2soTG9ja0ZvclJlYWwpOwogICAgIFJlZlB0cjxKU0dsb2JhbERhdGE+IGds
b2JhbERhdGEgPSBncm91cCA/IFBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPih0b0pTKGdyb3VwKSkg
OiBKU0dsb2JhbERhdGE6OmNyZWF0ZSgpOwotICAgIEFQSUVudHJ5U2hpbShnbG9iYWxEYXRhLmdl
dCgpLCBmYWxzZSk7CisKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGdsb2JhbERhdGEuZ2V0
KCksIGZhbHNlKTsKIAogI2lmIEVOQUJMRShKU0NfTVVMVElQTEVfVEhSRUFEUykKICAgICBnbG9i
YWxEYXRhLT5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOwpJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCShyZXZpc2lvbiA1MjgyMykKKysrIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiBDb21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQogewogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwor
ICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IGN1cnJlbnRJ
ZGVudGlmaWVyVGFibGUoKSk7CiAKICAgICBSZWZQdHI8UHJvZ3JhbUV4ZWN1dGFibGU+IHByb2dy
YW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7CkBAIC00OCw2ICs0OSw3IEBA
IENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjLCAKIENvbXBsZXRpb24gZXZh
bHVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluJiBzY29wZUNoYWluLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIEpTTG9jayBsb2NrKGV4
ZWMpOworICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IGN1
cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CiAKICAgICBSZWZQdHI8UHJvZ3JhbUV4ZWN1dGFibGU+
IHByb2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAg
SlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y29tcGlsZShleGVjLCBzY29wZUNoYWluLm5vZGUo
KSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDUy
ODIzKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KIAordXNpbmcgV1RGOjpUaHJlYWRTcGVjaWZpYzsKKwogbmFt
ZXNwYWNlIEpTQyB7CiAKIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgUmVmUHRyPFVTdHJp
bmc6OlJlcD4sIFB0ckhhc2g8Y29uc3QgY2hhcio+ID4gTGl0ZXJhbElkZW50aWZpZXJUYWJsZTsK
QEAgLTM4LDEzICs0MCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBIYXNoU2V0PFVTdHJp
bmc6OlJlcCo+OjppdGVyYXRvciBlbmQgPSBtX3RhYmxlLmVuZCgpOwogICAgICAgICBmb3IgKEhh
c2hTZXQ8VVN0cmluZzo6UmVwKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3RhYmxlLmJlZ2luKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICAoKml0ZXIpLT5zZXRJZGVudGlmaWVyVGFi
bGUoMCk7CisgICAgICAgICAgICAoKml0ZXIpLT5zZXRJc0lkZW50aWZpZXIoZmFsc2UpOwogICAg
IH0KICAgICAKICAgICBzdGQ6OnBhaXI8SGFzaFNldDxVU3RyaW5nOjpSZXAqPjo6aXRlcmF0b3Is
IGJvb2w+IGFkZChVU3RyaW5nOjpSZXAqIHZhbHVlKQogICAgIHsKICAgICAgICAgc3RkOjpwYWly
PEhhc2hTZXQ8VVN0cmluZzo6UmVwKj46Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3RhYmxl
LmFkZCh2YWx1ZSk7Ci0gICAgICAgICgqcmVzdWx0LmZpcnN0KS0+c2V0SWRlbnRpZmllclRhYmxl
KHRoaXMpOworICAgICAgICAoKnJlc3VsdC5maXJzdCktPnNldElzSWRlbnRpZmllcih0cnVlKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTUyLDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHN0ZDo6cGFpcjxIYXNoU2V0PFVTdHJpbmc6OlJlcCo+OjppdGVyYXRvciwgYm9vbD4g
YWRkKFUgdmFsdWUpCiAgICAgewogICAgICAgICBzdGQ6OnBhaXI8SGFzaFNldDxVU3RyaW5nOjpS
ZXAqPjo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fdGFibGUuYWRkPFUsIFY+KHZhbHVlKTsK
LSAgICAgICAgKCpyZXN1bHQuZmlyc3QpLT5zZXRJZGVudGlmaWVyVGFibGUodGhpcyk7CisgICAg
ICAgICgqcmVzdWx0LmZpcnN0KS0+c2V0SXNJZGVudGlmaWVyKHRydWUpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIApAQCAtMjM4LDE5ICsyNDAsMTkgQEAgUGFzc1JlZlB0cjxVU3Ry
aW5nOjpSZXA+IElkZW50aWZpZXI6OmFkZAogCiB2b2lkIElkZW50aWZpZXI6OnJlbW92ZShVU3Ry
aW5nOjpSZXAqIHIpCiB7Ci0gICAgci0+aWRlbnRpZmllclRhYmxlKCktPnJlbW92ZShyKTsKKyAg
ICBjdXJyZW50SWRlbnRpZmllclRhYmxlKCktPnJlbW92ZShyKTsKIH0KIAogI2lmbmRlZiBOREVC
VUcKIAotdm9pZCBJZGVudGlmaWVyOjpjaGVja1NhbWVJZGVudGlmaWVyVGFibGUoRXhlY1N0YXRl
KiBleGVjLCBVU3RyaW5nOjpSZXAqIHJlcCkKK3ZvaWQgSWRlbnRpZmllcjo6Y2hlY2tTYW1lSWRl
bnRpZmllclRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgVVN0cmluZzo6UmVwKikKIHsKLSAgICBBU1NF
UlQocmVwLT5pZGVudGlmaWVyVGFibGUoKSA9PSBleGVjLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmll
clRhYmxlKTsKKyAgICBBU1NFUlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJUYWJsZSA9
PSBjdXJyZW50SWRlbnRpZmllclRhYmxlKCkpOwogfQogCi12b2lkIElkZW50aWZpZXI6OmNoZWNr
U2FtZUlkZW50aWZpZXJUYWJsZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFVTdHJpbmc6OlJl
cCogcmVwKQordm9pZCBJZGVudGlmaWVyOjpjaGVja1NhbWVJZGVudGlmaWVyVGFibGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBVU3RyaW5nOjpSZXAqKQogewotICAgIEFTU0VSVChyZXAtPmlk
ZW50aWZpZXJUYWJsZSgpID09IGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZSk7CisgICAgQVNT
RVJUKGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZSA9PSBjdXJyZW50SWRlbnRpZmllclRhYmxl
KCkpOwogfQogCiAjZWxzZQpAQCAtMjY1LDQgKzI2NywzMCBAQCB2b2lkIElkZW50aWZpZXI6OmNo
ZWNrU2FtZUlkZW50aWZpZXJUYWJsCiAKICNlbmRpZgogCitUaHJlYWRTcGVjaWZpYzxUaHJlYWRJ
ZGVudGlmaWVyVGFibGVEYXRhPiogZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyA9IDA7CisKKyNp
ZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCisKK3B0aHJlYWRfb25jZV90IGNyZWF0ZUlk
ZW50aWZpZXJUYWJsZVNwZWNpZmljT25jZSA9IFBUSFJFQURfT05DRV9JTklUOwordm9pZCBjcmVh
dGVJZGVudGlmaWVyVGFibGVTcGVjaWZpY0NhbGxiYWNrKCkKK3sKKyAgICBBU1NFUlQoIWdfaWRl
bnRpZmllclRhYmxlU3BlY2lmaWMpOworICAgIGdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWMgPSBu
ZXcgVGhyZWFkU3BlY2lmaWM8VGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YT4oKTsKK30KK3ZvaWQg
Y3JlYXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWMoKQoreworICAgIHB0aHJlYWRfb25jZSgmY3Jl
YXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWNPbmNlLCBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVj
aWZpY0NhbGxiYWNrKTsKKyAgICBBU1NFUlQoZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyk7Cit9
CisKKyNlbHNlIAorCit2b2lkIGNyZWF0ZURlZmF1bHREYXRhU3BlY2lmaWMoKQoreworICAgIEFT
U0VSVCghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyk7CisgICAgZ19pZGVudGlmaWVyVGFibGVT
cGVjaWZpYyA9IG5ldyBUaHJlYWRTcGVjaWZpYzxUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhPigp
OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaAkocmV2aXNpb24gNTI4MjMpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lkZW50aWZpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmlu
ZSBJZGVudGlmaWVyX2gKIAogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIlRo
cmVhZFNwZWNpZmljLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTE0MSw2ICsxNDIsNjcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgSWRlbnRpZmllclRhYmxl
KiBjcmVhdGVJZGVudGlmaWVyVGFibGUoKTsKICAgICB2b2lkIGRlbGV0ZUlkZW50aWZpZXJUYWJs
ZShJZGVudGlmaWVyVGFibGUqKTsKIAorICAgIHN0cnVjdCBUaHJlYWRJZGVudGlmaWVyVGFibGVE
YXRhIHsKKyAgICAgICAgVGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YSgpCisgICAgICAgICAgICA6
IGRlZmF1bHRJZGVudGlmaWVyVGFibGUoMCkKKyAgICAgICAgICAgICwgY3VycmVudElkZW50aWZp
ZXJUYWJsZSgwKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBJZGVudGlmaWVyVGFi
bGUqIGRlZmF1bHRJZGVudGlmaWVyVGFibGU7CisgICAgICAgIElkZW50aWZpZXJUYWJsZSogY3Vy
cmVudElkZW50aWZpZXJUYWJsZTsKKyAgICB9OworCisgICAgZXh0ZXJuIFdURjo6VGhyZWFkU3Bl
Y2lmaWM8VGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YT4qIGdfaWRlbnRpZmllclRhYmxlU3BlY2lm
aWM7CisgICAgdm9pZCBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZpYygpOworCisgICAgaW5s
aW5lIElkZW50aWZpZXJUYWJsZSogZGVmYXVsdElkZW50aWZpZXJUYWJsZSgpCisgICAgeworICAg
ICAgICBpZiAoIWdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWMpCisgICAgICAgICAgICBjcmVhdGVJ
ZGVudGlmaWVyVGFibGVTcGVjaWZpYygpOworICAgICAgICBUaHJlYWRJZGVudGlmaWVyVGFibGVE
YXRhJiBkYXRhID0gKipnX2lkZW50aWZpZXJUYWJsZVNwZWNpZmljOworCisgICAgICAgIHJldHVy
biBkYXRhLmRlZmF1bHRJZGVudGlmaWVyVGFibGU7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQg
c2V0RGVmYXVsdElkZW50aWZpZXJUYWJsZShJZGVudGlmaWVyVGFibGUqIGlkZW50aWZpZXJUYWJs
ZSkKKyAgICB7CisgICAgICAgIGlmICghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYykKKyAgICAg
ICAgICAgIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljKCk7CisgICAgICAgIFRocmVhZElk
ZW50aWZpZXJUYWJsZURhdGEmIGRhdGEgPSAqKmdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWM7CisK
KyAgICAgICAgZGF0YS5kZWZhdWx0SWRlbnRpZmllclRhYmxlID0gaWRlbnRpZmllclRhYmxlOwor
ICAgIH0KKworICAgIGlubGluZSBJZGVudGlmaWVyVGFibGUqIGN1cnJlbnRJZGVudGlmaWVyVGFi
bGUoKQorICAgIHsKKyAgICAgICAgaWYgKCFnX2lkZW50aWZpZXJUYWJsZVNwZWNpZmljKQorICAg
ICAgICAgICAgY3JlYXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWMoKTsKKyAgICAgICAgVGhyZWFk
SWRlbnRpZmllclRhYmxlRGF0YSYgZGF0YSA9ICoqZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYzsK
KworICAgICAgICByZXR1cm4gZGF0YS5jdXJyZW50SWRlbnRpZmllclRhYmxlOworICAgIH0KKwor
ICAgIGlubGluZSBJZGVudGlmaWVyVGFibGUqIHNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoSWRl
bnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGUpCisgICAgeworICAgICAgICBpZiAoIWdfaWRl
bnRpZmllclRhYmxlU3BlY2lmaWMpCisgICAgICAgICAgICBjcmVhdGVJZGVudGlmaWVyVGFibGVT
cGVjaWZpYygpOworICAgICAgICBUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhJiBkYXRhID0gKipn
X2lkZW50aWZpZXJUYWJsZVNwZWNpZmljOworCisgICAgICAgIElkZW50aWZpZXJUYWJsZSogb2xk
SWRlbnRpZmllclRhYmxlID0gZGF0YS5jdXJyZW50SWRlbnRpZmllclRhYmxlOworICAgICAgICBk
YXRhLmN1cnJlbnRJZGVudGlmaWVyVGFibGUgPSBpZGVudGlmaWVyVGFibGU7CisgICAgICAgIHJl
dHVybiBvbGRJZGVudGlmaWVyVGFibGU7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgcmVzZXRD
dXJyZW50SWRlbnRpZmllclRhYmxlKCkKKyAgICB7CisgICAgICAgIGlmICghZ19pZGVudGlmaWVy
VGFibGVTcGVjaWZpYykKKyAgICAgICAgICAgIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmlj
KCk7CisgICAgICAgIFRocmVhZElkZW50aWZpZXJUYWJsZURhdGEmIGRhdGEgPSAqKmdfaWRlbnRp
ZmllclRhYmxlU3BlY2lmaWM7CisKKyAgICAgICAgZGF0YS5jdXJyZW50SWRlbnRpZmllclRhYmxl
ID0gZGF0YS5kZWZhdWx0SWRlbnRpZmllclRhYmxlOworICAgIH0KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBJZGVudGlmaWVyX2gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDUyODIzKQorKysgSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAK
ICNpbmNsdWRlICJKU05vdEFuT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKLSNpbmNsdWRlICJQYXJz
ZXIuaCIKICNpbmNsdWRlICJMZXhlci5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUg
Ik5vZGVzLmgiCisjaW5jbHVkZSAiUGFyc2VyLmgiCiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExF
X1RIUkVBRFMpCiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMjAyLDkgKzIwMiwxNyBA
QCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogICAgIGRlbGV0ZSBjbGllbnREYXRhOwog
fQogCi1QYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUoYm9vbCBp
c1NoYXJlZCkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZU5v
bkRlZmF1bHQoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKGZhbHNl
LCBWUHRyU2V0KCkpKTsKK30KKworUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFsRGF0
YTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xvYmFsRGF0YShpc1No
YXJlZCwgVlB0clNldCgpKSk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gbmV3IEpT
R2xvYmFsRGF0YShmYWxzZSwgVlB0clNldCgpKTsKKyAgICBzZXREZWZhdWx0SWRlbnRpZmllclRh
YmxlKGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZSk7CisgICAgc2V0Q3VycmVudElkZW50aWZp
ZXJUYWJsZShnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUpOworICAgIHJldHVybiBhZG9wdFJl
ZihnbG9iYWxEYXRhKTsKIH0KIAogUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFsRGF0
YTo6Y3JlYXRlTGVha2VkKCkKQEAgLTIyNCw3ICsyMzIsNyBAQCBKU0dsb2JhbERhdGEmIEpTR2xv
YmFsRGF0YTo6c2hhcmVkSW5zdGFuCiB7CiAgICAgSlNHbG9iYWxEYXRhKiYgaW5zdGFuY2UgPSBz
aGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgaWYgKCFpbnN0YW5jZSkgewotICAgICAgICBp
bnN0YW5jZSA9IGNyZWF0ZSh0cnVlKS5yZWxlYXNlUmVmKCk7CisgICAgICAgIGluc3RhbmNlID0g
bmV3IEpTR2xvYmFsRGF0YSh0cnVlLCBWUHRyU2V0KCkpOwogI2lmIEVOQUJMRShKU0NfTVVMVElQ
TEVfVEhSRUFEUykKICAgICAgICAgaW5zdGFuY2UtPm1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJl
YWRzKCk7CiAjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAko
cmV2aXNpb24gNTI4MjMpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Myw4ICs5Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgYm9vbCBzaGFyZWRJbnN0YW5jZUV4aXN0cygpOwogICAgICAgICBzdGF0aWMgSlNH
bG9iYWxEYXRhJiBzaGFyZWRJbnN0YW5jZSgpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEpTR2xvYmFsRGF0YT4gY3JlYXRlKGJvb2wgaXNTaGFyZWQgPSBmYWxzZSk7CisgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlKCk7CiAgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTGVha2VkKCk7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTm9uRGVmYXVsdCgpOwogICAgICAgICB+SlNH
bG9iYWxEYXRhKCk7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdJbXBsLmNwcAkocmV2aXNpb24gNTI4MjMpCisrKyBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNyArNjQsNyBAQCB2b2lkIFVTdHJpbmdJbXBsOjpkZXN0cm95KCkKICAgICBBU1NFUlQoIWlz
U3RhdGljKCkpOwogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIAotICAgIGlmIChpZGVudGlmaWVy
VGFibGUoKSkKKyAgICBpZiAoaXNJZGVudGlmaWVyKCkpCiAgICAgICAgIElkZW50aWZpZXI6OnJl
bW92ZSh0aGlzKTsKIAogICAgIGlmIChidWZmZXJPd25lcnNoaXAoKSAhPSBCdWZmZXJJbnRlcm5h
bCkgewpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nSW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0ltcGwuaAkocmV2aXNpb24gNTI4
MjMpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNyw5ICsxMzcsOCBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
IHsgaWYgKCFtX2hhc2gpIG1faGFzaCA9IGNvbXB1dGVIYXNoKGRhdGEoKSwgbV9sZW5ndGgpOyBy
ZXR1cm4gbV9oYXNoOyB9CiAgICAgdW5zaWduZWQgY29tcHV0ZWRIYXNoKCkgY29uc3QgeyBBU1NF
UlQobV9oYXNoKTsgcmV0dXJuIG1faGFzaDsgfSAvLyBmYXN0IHBhdGggZm9yIElkZW50aWZpZXJz
CiAgICAgdm9pZCBzZXRIYXNoKHVuc2lnbmVkIGhhc2gpIHsgQVNTRVJUKGhhc2ggPT0gY29tcHV0
ZUhhc2goZGF0YSgpLCBtX2xlbmd0aCkpOyBtX2hhc2ggPSBoYXNoOyB9IC8vIGZhc3QgcGF0aCBm
b3IgSWRlbnRpZmllcnMKLSAgICBib29sIGlzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllclRhYmxlOyB9Ci0gICAgSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGUo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJUYWJsZTsgfQotICAgIHZvaWQgc2V0SWRlbnRp
ZmllclRhYmxlKElkZW50aWZpZXJUYWJsZSogdGFibGUpIHsgQVNTRVJUKCFpc1N0YXRpYygpKTsg
bV9pZGVudGlmaWVyVGFibGUgPSB0YWJsZTsgfQorICAgIGJvb2wgaXNJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pc0lkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldElzSWRlbnRpZmllcihi
b29sIGlzSWRlbnRpZmllcikgeyBtX2lzSWRlbnRpZmllciA9IGlzSWRlbnRpZmllcjsgfQogCiAg
ICAgVVN0cmluZ0ltcGwqIHJlZigpIHsgbV9yZWZDb3VudCArPSBzX3JlZkNvdW50SW5jcmVtZW50
OyByZXR1cm4gdGhpczsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkZXJlZigpIHsgaWYgKCEo
bV9yZWZDb3VudCAtPSBzX3JlZkNvdW50SW5jcmVtZW50KSkgZGVzdHJveSgpOyB9CkBAIC0xNzMs
NyArMTcyLDcgQEAgcHVibGljOgogICAgICAgICAvLyBUaGVyZSBpcyBubyByZWN1cnNpb24gb2Yg
c3Vic3RyaW5ncy4KICAgICAgICAgQVNTRVJUKGJ1ZmZlck93bmVyU3RyaW5nKCktPmJ1ZmZlck93
bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7CiAgICAgICAgIC8vIFN0YXRpYyBzdHJpbmdz
IGNhbm5vdCBiZSBwdXQgaW4gaWRlbnRpZmllciB0YWJsZXMsIGJlY2F1c2UgdGhleSBhcmUgZ2xv
YmFsbHkgc2hhcmVkLgotICAgICAgICBBU1NFUlQoIWlzU3RhdGljKCkgfHwgIWlkZW50aWZpZXJU
YWJsZSgpKTsKKyAgICAgICAgQVNTRVJUKCFpc1N0YXRpYygpIHx8ICFpc0lkZW50aWZpZXIoKSk7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTkzLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fcmVmQ291bnQoc19yZWZDb3VudEluY3Jl
bWVudCkKICAgICAgICAgLCBtX2hhc2goMCkKLSAgICAgICAgLCBtX2lkZW50aWZpZXJUYWJsZSgw
KQorICAgICAgICAsIG1faXNJZGVudGlmaWVyKGZhbHNlKQogICAgICAgICAsIG1fZGF0YUJ1ZmZl
cigwLCBvd25lcnNoaXApCiAgICAgewogICAgICAgICBBU1NFUlQoKG93bmVyc2hpcCA9PSBCdWZm
ZXJJbnRlcm5hbCkgfHwgKG93bmVyc2hpcCA9PSBCdWZmZXJPd25lZCkpOwpAQCAtMjA5LDcgKzIw
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1f
cmVmQ291bnQoc19zdGF0aWNSZWZDb3VudEluaXRpYWxWYWx1ZSkKICAgICAgICAgLCBtX2hhc2go
MCkKLSAgICAgICAgLCBtX2lkZW50aWZpZXJUYWJsZSgwKQorICAgICAgICAsIG1faXNJZGVudGlm
aWVyKGZhbHNlKQogICAgICAgICAsIG1fZGF0YUJ1ZmZlcigwLCBCdWZmZXJPd25lZCkKICAgICB7
CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTIyMSw3ICsyMjAsNyBAQCBwcml2YXRl
OgogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX3JlZkNvdW50KHNfcmVm
Q291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9oYXNoKDApCi0gICAgICAgICwgbV9pZGVudGlm
aWVyVGFibGUoMCkKKyAgICAgICAgLCBtX2lzSWRlbnRpZmllcihmYWxzZSkKICAgICAgICAgLCBt
X2RhdGFCdWZmZXIoYmFzZS5yZWxlYXNlUmVmKCksIEJ1ZmZlclN1YnN0cmluZykKICAgICB7CiAg
ICAgICAgIC8vIERvIHVzZSBzdGF0aWMgc3RyaW5ncyBhcyBhIGJhc2UgZm9yIHN1YnN0cmluZ3M7
IFVudHlwZWRQdHJBbmRCaXRmaWVsZCBhc3N1bWVzCkBAIC0yMzgsNyArMjM3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9yZWZDb3VudChzX3Jl
ZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1faGFzaCgwKQotICAgICAgICAsIG1faWRlbnRp
ZmllclRhYmxlKDApCisgICAgICAgICwgbV9pc0lkZW50aWZpZXIoZmFsc2UpCiAgICAgICAgICwg
bV9kYXRhQnVmZmVyKHNoYXJlZEJ1ZmZlci5yZWxlYXNlUmVmKCksIEJ1ZmZlclNoYXJlZCkKICAg
ICB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTI2OCw4ICsyNjcsOCBAQCBwcml2
YXRlOgogICAgIFVDaGFyKiBtX2RhdGE7CiAgICAgaW50IG1fbGVuZ3RoOwogICAgIHVuc2lnbmVk
IG1fcmVmQ291bnQ7Ci0gICAgbXV0YWJsZSB1bnNpZ25lZCBtX2hhc2g7Ci0gICAgSWRlbnRpZmll
clRhYmxlKiBtX2lkZW50aWZpZXJUYWJsZTsKKyAgICBtdXRhYmxlIHVuc2lnbmVkIG1faGFzaCA6
IDMxOworICAgIG11dGFibGUgdW5zaWduZWQgbV9pc0lkZW50aWZpZXIgOiAxOwogICAgIFVudHlw
ZWRQdHJBbmRCaXRmaWVsZCBtX2RhdGFCdWZmZXI7CiAKICAgICBKU19FWFBPUlREQVRBIHN0YXRp
YyBVU3RyaW5nSW1wbCogc19udWxsOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1N0cmluZ0hh
c2hGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvU3RyaW5nSGFz
aEZ1bmN0aW9ucy5oCShyZXZpc2lvbiA1MjgyMykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9TdHJp
bmdIYXNoRnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDExICs2MCwxMyBAQCBpbmxp
bmUgdW5zaWduZWQgc3RyaW5nSGFzaChjb25zdCBVQ2hhciogCiAgICAgaGFzaCArPSBoYXNoID4+
IDE1OwogICAgIGhhc2ggXj0gaGFzaCA8PCAxMDsKIAorICAgIGhhc2ggJj0gMHg3ZmZmZmZmZjsK
KwogICAgIC8vIHRoaXMgYXZvaWRzIGV2ZXIgcmV0dXJuaW5nIGEgaGFzaCBjb2RlIG9mIDAsIHNp
bmNlIHRoYXQgaXMgdXNlZCB0bwogICAgIC8vIHNpZ25hbCAiaGFzaCBub3QgY29tcHV0ZWQgeWV0
IiwgdXNpbmcgYSB2YWx1ZSB0aGF0IGlzIGxpa2VseSB0byBiZQogICAgIC8vIGVmZmVjdGl2ZWx5
IHRoZSBzYW1lIGFzIDAgd2hlbiB0aGUgbG93IGJpdHMgYXJlIG1hc2tlZAogICAgIGlmIChoYXNo
ID09IDApCi0gICAgICAgIGhhc2ggPSAweDgwMDAwMDAwOworICAgICAgICBoYXNoID0gMHg0MDAw
MDAwMDsKIAogICAgIHJldHVybiBoYXNoOwogfQpAQCAtOTgsMTEgKzEwMCwxMyBAQCBpbmxpbmUg
dW5zaWduZWQgc3RyaW5nSGFzaChjb25zdCBjaGFyKiBkCiAgICAgaGFzaCArPSBoYXNoID4+IDE1
OwogICAgIGhhc2ggXj0gaGFzaCA8PCAxMDsKIAorICAgIGhhc2ggJj0gMHg3ZmZmZmZmZjsKKwog
ICAgIC8vIHRoaXMgYXZvaWRzIGV2ZXIgcmV0dXJuaW5nIGEgaGFzaCBjb2RlIG9mIDAsIHNpbmNl
IHRoYXQgaXMgdXNlZCB0bwogICAgIC8vIHNpZ25hbCAiaGFzaCBub3QgY29tcHV0ZWQgeWV0Iiwg
dXNpbmcgYSB2YWx1ZSB0aGF0IGlzIGxpa2VseSB0byBiZQogICAgIC8vIGVmZmVjdGl2ZWx5IHRo
ZSBzYW1lIGFzIDAgd2hlbiB0aGUgbG93IGJpdHMgYXJlIG1hc2tlZAogICAgIGlmIChoYXNoID09
IDApCi0gICAgICAgIGhhc2ggPSAweDgwMDAwMDAwOworICAgICAgICBoYXNoID0gMHg0MDAwMDAw
MDsKIAogICAgIHJldHVybiBoYXNoOwogfQpAQCAtMTM3LDExICsxNDEsMTMgQEAgaW5saW5lIHVu
c2lnbmVkIHN0cmluZ0hhc2goY29uc3QgY2hhciogZAogICAgIGhhc2ggKz0gaGFzaCA+PiAxNTsK
ICAgICBoYXNoIF49IGhhc2ggPDwgMTA7CiAKKyAgICBoYXNoICY9IDB4N2ZmZmZmZmY7CisKICAg
ICAvLyBUaGlzIGF2b2lkcyBldmVyIHJldHVybmluZyBhIGhhc2ggY29kZSBvZiAwLCBzaW5jZSB0
aGF0IGlzIHVzZWQgdG8KICAgICAvLyBzaWduYWwgImhhc2ggbm90IGNvbXB1dGVkIHlldCIsIHVz
aW5nIGEgdmFsdWUgdGhhdCBpcyBsaWtlbHkgdG8gYmUKICAgICAvLyBlZmZlY3RpdmVseSB0aGUg
c2FtZSBhcyAwIHdoZW4gdGhlIGxvdyBiaXRzIGFyZSBtYXNrZWQuCiAgICAgaWYgKGhhc2ggPT0g
MCkKLSAgICAgICAgaGFzaCA9IDB4ODAwMDAwMDA7CisgICAgICAgIGhhc2ggPSAweDQwMDAwMDAw
OwogCiAgICAgcmV0dXJuIGhhc2g7CiB9CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MjgzOCkK
KysrIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4
IEBACisyMDEwLTAxLTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMyMzYKKyAgICAgICAgUmVtb3Zl
IG1faWRlbnRpZmllclRhYmxlIHBvaW50ZXIgZnJvbSBVU3RyaW5nCisKKyAgICAgICAgQWRkIEFQ
SSBzaGltcyBzaW1pbGFyIHRvIHRob3NlIHVzZWQgaW4gdGhlIEpTQyBBUEkgdG8gdHJhY2sgdGhl
IGN1cnJlbnQgaWRlbnRpZmllclRhYmxlLgorCisgICAgICAgICogSlNCYXNlLmNwcDoKKyAgICAg
ICAgKEpTQmFzZTo6UmVsZWFzZSk6CisgICAgICAgICogSlNVdGlscy5jcHA6CisgICAgICAgIChK
U09iamVjdEtKU1ZhbHVlKToKKyAgICAgICAgKEtKU1ZhbHVlVG9DRlR5cGVJbnRlcm5hbCk6Cisg
ICAgICAgICh1bnByb3RlY3RHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNHbHVlQVBJRW50cnk6
OkpTR2x1ZUFQSUVudHJ5KToKKyAgICAgICAgKEpTR2x1ZUFQSUVudHJ5Ojp+SlNHbHVlQVBJRW50
cnkpOgorICAgICAgICAoSlNHbHVlQVBJQ2FsbGJhY2s6OkpTR2x1ZUFQSUNhbGxiYWNrKToKKyAg
ICAgICAgKEpTR2x1ZUFQSUNhbGxiYWNrOjp+SlNHbHVlQVBJQ2FsbGJhY2spOgorICAgICAgICAq
IEpTVXRpbHMuaDoKKyAgICAgICAgKiBKU1ZhbHVlV3JhcHBlci5jcHA6CisgICAgICAgIChKU1Zh
bHVlV3JhcHBlcjo6SlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU1ZhbHVl
V3JhcHBlcjo6SlNPYmplY3RDb3B5UHJvcGVydHkpOgorICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6
OkpTT2JqZWN0U2V0UHJvcGVydHkpOgorICAgICAgICAoSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0
Q2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlDRlZh
bHVlKToKKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS5jcHA6CisgICAgICAgIChKU1J1bkNyZWF0
ZSk6CisgICAgICAgIChKU1J1bkV2YWx1YXRlKToKKyAgICAgICAgKEpTUnVuQ2hlY2tTeW50YXgp
OgorICAgICAgICAoSlNDb2xsZWN0KToKKyAgICAgICAgKiBKYXZhU2NyaXB0R2x1ZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFVzZXJPYmplY3RJbXAuY3BwOgorICAgICAg
ICAoVXNlck9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24pOgorCiAyMDEwLTAxLTA0ICBHYXZpbiBC
YXJyYWNsb3VnaCA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9KU0Jhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRHbHVlL0pTQmFzZS5jcHAJKHJldmlzaW9uIDUyODIzKQorKysgSmF2YVNj
cmlwdEdsdWUvSlNCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lk
IEpTQmFzZTo6UmVsZWFzZSgpCiB7CiAgICAgaWYgKC0tZlJldGFpbkNvdW50ID09IDApCiAgICAg
ewotICAgICAgICBKU0xvY2sgbG9jayhMb2NrRm9yUmVhbCk7CisgICAgICAgIEpTR2x1ZUFQSUVu
dHJ5IGVudHJ5OwogICAgICAgICBkZWxldGUgdGhpczsKICAgICB9CiB9CkluZGV4OiBKYXZhU2Ny
aXB0R2x1ZS9KU1V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KU1V0aWxz
LmNwcAkocmV2aXNpb24gNTI4MjMpCisrKyBKYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIEpTVXNlck9iamVjdCogS0pTVmFsdWVUb0pT
T2JqZWN0KEpTVmFsdWUKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIEpTVmFsdWUgSlNPYmplY3RLSlNW
YWx1ZShKU1VzZXJPYmplY3QqIHB0cikKIHsKLSAgICBKU0xvY2sgbG9jayhMb2NrRm9yUmVhbCk7
CisgICAgSlNHbHVlQVBJRW50cnkgZW50cnk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5k
ZWZpbmVkKCk7CiAgICAgaWYgKHB0cikKQEAgLTIwMyw3ICsyMDMsNyBAQCBDRlR5cGVSZWYgS0pT
VmFsdWVUb0NGVHlwZUludGVybmFsKEpTVmFsCiAKICAgICBDRlR5cGVSZWYgcmVzdWx0ID0gMDsK
IAotICAgIEpTTG9jayBsb2NrKExvY2tGb3JSZWFsKTsKKyAgICBKU0dsdWVBUElFbnRyeSBlbnRy
eTsKIAogICAgICAgICBpZiAoaW5WYWx1ZS5pc0Jvb2xlYW4oKSkKICAgICAgICAgICAgIHsKQEAg
LTM5NCw3ICszOTQsNyBAQCBzdGF0aWMgcHRocmVhZF9vbmNlX3QgZ2xvYmFsT2JqZWN0S2V5T25j
CiAKIHN0YXRpYyB2b2lkIHVucHJvdGVjdEdsb2JhbE9iamVjdCh2b2lkKiBkYXRhKSAKIHsKLSAg
ICBKU0xvY2sgbG9jayhMb2NrRm9yUmVhbCk7CisgICAgSlNHbHVlQVBJRW50cnkgZW50cnk7CiAg
ICAgZ2NVbnByb3RlY3Qoc3RhdGljX2Nhc3Q8SlNHbHVlR2xvYmFsT2JqZWN0Kj4oZGF0YSkpOwog
fQogCkBAIC00MjQsMyArNDI0LDI2IEBAIEV4ZWNTdGF0ZSogZ2V0VGhyZWFkR2xvYmFsRXhlY1N0
YXRlKCkKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVybiBleGVjOwogfQor
CitKU0dsdWVBUElFbnRyeTo6SlNHbHVlQVBJRW50cnkoKQorICAgIDogbV9sb2NrKExvY2tGb3JS
ZWFsKQorICAgICwgbV9zdG9yZWRJZGVudGlmaWVyVGFibGUoY3VycmVudElkZW50aWZpZXJUYWJs
ZSgpKQoreworICAgIHNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2V0VGhyZWFkR2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJUYWJsZSk7Cit9CisK
K0pTR2x1ZUFQSUVudHJ5Ojp+SlNHbHVlQVBJRW50cnkoKQoreworICAgIHNldEN1cnJlbnRJZGVu
dGlmaWVyVGFibGUobV9zdG9yZWRJZGVudGlmaWVyVGFibGUpOworfQorCitKU0dsdWVBUElDYWxs
YmFjazo6SlNHbHVlQVBJQ2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQorICAgIDogbV9kcm9wTG9j
a3MoZXhlYykKK3sKKyAgICByZXNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoKTsKK30KKworSlNH
bHVlQVBJQ2FsbGJhY2s6On5KU0dsdWVBUElDYWxsYmFjaygpCit7CisgICAgc2V0Q3VycmVudElk
ZW50aWZpZXJUYWJsZShnZXRUaHJlYWRHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLT5nbG9i
YWxEYXRhKCkuaWRlbnRpZmllclRhYmxlKTsKK30KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0pTVXRp
bHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmgJKHJldmlzaW9uIDUy
ODIzKQorKysgSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29sbGVjdG9yLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bXBsZXRpb24uaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNPYmplY3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dsb2JhbE9iamVjdC5oPgpA
QCAtNzYsNSArNzcsMjMgQEAgZW51bSB7CiAgICAga0pTVXNlck9iamVjdERhdGFUeXBlQ0ZUeXBl
CiB9OwogCitjbGFzcyBKU0dsdWVBUElFbnRyeSB7CitwdWJsaWM6CisgICAgSlNHbHVlQVBJRW50
cnkoKTsKKyAgICB+SlNHbHVlQVBJRW50cnkoKTsKKworcHJpdmF0ZToKKyAgICBKU0xvY2sgbV9s
b2NrOworICAgIElkZW50aWZpZXJUYWJsZSogbV9zdG9yZWRJZGVudGlmaWVyVGFibGU7Cit9Owor
CitjbGFzcyBKU0dsdWVBUElDYWxsYmFjayB7CitwdWJsaWM6CisgICAgSlNHbHVlQVBJQ2FsbGJh
Y2soRXhlY1N0YXRlKik7CisgICAgfkpTR2x1ZUFQSUNhbGxiYWNrKCk7CisKK3ByaXZhdGU6Cisg
ICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgbV9kcm9wTG9ja3M7Cit9OwogCiAjZW5kaWYKSW5kZXg6
IEphdmFTY3JpcHRHbHVlL0pTVmFsdWVXcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0R2x1ZS9KU1ZhbHVlV3JhcHBlci5jcHAJKHJldmlzaW9uIDUyODIzKQorKysgSmF2YVNjcmlw
dEdsdWUvSlNWYWx1ZVdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBA
IHZvaWQgSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0RGlzcG9zZSh2b2kKIAogQ0ZBcnJheVJlZiBK
U1ZhbHVlV3JhcHBlcjo6SlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyh2b2lkICpkYXRhKQogewot
ICAgIEpTTG9jayBsb2NrKExvY2tGb3JSZWFsKTsKKyAgICBKU0dsdWVBUElFbnRyeSBlbnRyeTsK
IAogICAgIENGTXV0YWJsZUFycmF5UmVmIHJlc3VsdCA9IDA7CiAgICAgSlNWYWx1ZVdyYXBwZXIq
IHB0ciA9IChKU1ZhbHVlV3JhcHBlciopZGF0YTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBDRkFycmF5
UmVmIEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHlQCiAKIEpTT2JqZWN0UmVmIEpTVmFsdWVX
cmFwcGVyOjpKU09iamVjdENvcHlQcm9wZXJ0eSh2b2lkICpkYXRhLCBDRlN0cmluZ1JlZiBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgSlNMb2NrIGxvY2soTG9ja0ZvclJlYWwpOworICAgIEpTR2x1ZUFQ
SUVudHJ5IGVudHJ5OwogCiAgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gMDsKICAgICBKU1ZhbHVl
V3JhcHBlciogcHRyID0gKEpTVmFsdWVXcmFwcGVyKilkYXRhOwpAQCAtMTI2LDcgKzEyNiw3IEBA
IEpTT2JqZWN0UmVmIEpTVmFsdWVXcmFwcGVyOjpKU09iamVjdENvcHkKIAogdm9pZCBKU1ZhbHVl
V3JhcHBlcjo6SlNPYmplY3RTZXRQcm9wZXJ0eSh2b2lkICpkYXRhLCBDRlN0cmluZ1JlZiBwcm9w
ZXJ0eU5hbWUsIEpTT2JqZWN0UmVmIGpzVmFsdWUpCiB7Ci0gICAgSlNMb2NrIGxvY2soTG9ja0Zv
clJlYWwpOworICAgIEpTR2x1ZUFQSUVudHJ5IGVudHJ5OwogCiAgICAgSlNWYWx1ZVdyYXBwZXIq
IHB0ciA9IChKU1ZhbHVlV3JhcHBlciopZGF0YTsKICAgICBpZiAocHRyKQpAQCAtMTQxLDcgKzE0
MSw3IEBAIHZvaWQgSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0U2V0UHJvcGVydHkKIAogSlNPYmpl
Y3RSZWYgSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q2FsbEZ1bmN0aW9uKHZvaWQgKmRhdGEsIEpT
T2JqZWN0UmVmIHRoaXNPYmosIENGQXJyYXlSZWYgYXJncykKIHsKLSAgICBKU0xvY2sgbG9jayhM
b2NrRm9yUmVhbCk7CisgICAgSlNHbHVlQVBJRW50cnkgZW50cnk7CiAKICAgICBKU09iamVjdFJl
ZiByZXN1bHQgPSAwOwogICAgIEpTVmFsdWVXcmFwcGVyKiBwdHIgPSAoSlNWYWx1ZVdyYXBwZXIq
KWRhdGE7CkBAIC0xODEsNyArMTgxLDcgQEAgSlNPYmplY3RSZWYgSlNWYWx1ZVdyYXBwZXI6OkpT
T2JqZWN0Q2FsbAogCiBDRlR5cGVSZWYgSlNWYWx1ZVdyYXBwZXI6OkpTT2JqZWN0Q29weUNGVmFs
dWUodm9pZCAqZGF0YSkKIHsKLSAgICBKU0xvY2sgbG9jayhMb2NrRm9yUmVhbCk7CisgICAgSlNH
bHVlQVBJRW50cnkgZW50cnk7CiAKICAgICBDRlR5cGVSZWYgcmVzdWx0ID0gMDsKICAgICBKU1Zh
bHVlV3JhcHBlciogcHRyID0gKEpTVmFsdWVXcmFwcGVyKilkYXRhOwpJbmRleDogSmF2YVNjcmlw
dEdsdWUvSmF2YVNjcmlwdEdsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ph
dmFTY3JpcHRHbHVlLmNwcAkocmV2aXNpb24gNTI4MjMpCisrKyBKYXZhU2NyaXB0R2x1ZS9KYXZh
U2NyaXB0R2x1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw3ICsyNDYsNyBAQCBKU1J1blJl
ZiBKU1J1bkNyZWF0ZShDRlN0cmluZ1JlZiBqc1NvdXJjCiAgICAgSlNSdW5SZWYgcmVzdWx0ID0g
MDsKICAgICBpZiAoanNTb3VyY2UpCiAgICAgewotICAgICAgICBKU0xvY2sgbG9jayhMb2NrRm9y
UmVhbCk7CisgICAgICAgIEpTR2x1ZUFQSUVudHJ5IGVudHJ5OwogICAgICAgICByZXN1bHQgPSAo
SlNSdW5SZWYpIG5ldyBKU1J1bihqc1NvdXJjZSwgaW5GbGFncyk7CiAgICAgfQogICAgIHJldHVy
biByZXN1bHQ7CkBAIC0yOTEsNyArMjkxLDcgQEAgSlNPYmplY3RSZWYgSlNSdW5FdmFsdWF0ZShK
U1J1blJlZiByZWYpCiAgICAgSlNSdW4qIHB0ciA9IChKU1J1biopcmVmOwogICAgIGlmIChwdHIp
CiAgICAgewotICAgICAgICBKU0xvY2sgbG9jayhMb2NrRm9yUmVhbCk7CisgICAgICAgIEpTR2x1
ZUFQSUVudHJ5IGVudHJ5OwogICAgICAgICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBwdHItPkV2
YWx1YXRlKCk7CiAgICAgICAgIGlmIChjb21wbGV0aW9uLmlzVmFsdWVDb21wbGV0aW9uKCkpCiAg
ICAgICAgIHsKQEAgLTMyNSw3ICszMjUsNyBAQCBib29sIEpTUnVuQ2hlY2tTeW50YXgoSlNSdW5S
ZWYgcmVmKQogICAgIEpTUnVuKiBwdHIgPSAoSlNSdW4qKXJlZjsKICAgICBpZiAocHRyKQogICAg
IHsKLSAgICAgICAgICAgIEpTTG9jayBsb2NrKExvY2tGb3JSZWFsKTsKKyAgICAgICAgICAgIEpT
R2x1ZUFQSUVudHJ5IGVudHJ5OwogICAgICAgICAgICAgcmVzdWx0ID0gcHRyLT5DaGVja1N5bnRh
eCgpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQg
SlNDb2xsZWN0KCkKIHsKICAgICBpbml0aWFsaXplVGhyZWFkaW5nKCk7CiAKLSAgICBKU0xvY2sg
bG9jayhMb2NrRm9yUmVhbCk7CisgICAgSlNHbHVlQVBJRW50cnkgZW50cnk7CiAgICAgSGVhcCog
aGVhcCA9IGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpLT5oZWFwKCk7CiAgICAgaWYgKCFoZWFw
LT5pc0J1c3koKSkKICAgICAgICAgaGVhcC0+Y29sbGVjdEFsbEdhcmJhZ2UoKTsKSW5kZXg6IEph
dmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRH
bHVlL1VzZXJPYmplY3RJbXAuY3BwCShyZXZpc2lvbiA1MjgyMykKKysrIEphdmFTY3JpcHRHbHVl
L1VzZXJPYmplY3RJbXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEpTVmFs
dWUgVXNlck9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24oRXgKIAogICAgICAgICBKU1VzZXJPYmpl
Y3QqIGpzUmVzdWx0OwogICAgICAgICB7IC8vIHNjb3BlCi0gICAgICAgICAgICBKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wTG9ja3MoZXhlYyk7CisgICAgICAgICAgICBKU0dsdWVBUElDYWxsYmFj
ayBhcGlDYWxsYmFjayhleGVjKTsKIAogICAgICAgICAgICAgLy8gZ2V0Q2FsbERhdGEgc2hvdWxk
IGhhdmUgZ3VhcmRlZCBhZ2FpbnN0IGEgTlVMTCBmSlNVc2VyT2JqZWN0LgogICAgICAgICAgICAg
YXNzZXJ0KGZKU1VzZXJPYmplY3QpOwpJbmRleDogSmF2YVNjcmlwdEdsdWUvSmF2YVNjcmlwdEds
dWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1
ZS9KYXZhU2NyaXB0R2x1ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1Mjgy
MykKKysrIEphdmFTY3JpcHRHbHVlL0phdmFTY3JpcHRHbHVlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUzNyw5ICs1MzcsNyBAQAogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDOTA1MUEx
MEJBOUYzMDUwMDgxRTlEMCAvKiBKYXZhU2NyaXB0R2x1ZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7Ci0JCQkJQlVJTERfVkFSSUFOVFMgPSAoCi0JCQkJCW5vcm1hbCwKLQkJCQkp
OworCQkJCUJVSUxEX1ZBUklBTlRTID0gbm9ybWFsOwogCQkJCVNFQ1RPUkRFUl9GTEFHUyA9ICgK
IAkJCQkJIi1zZWN0b3JkZXIiLAogCQkJCQlfX1RFWFQsCg==
</data>
<flag name="review"
          id="28116"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>