<?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>74341</bug_id>
          
          <creation_ts>2011-12-12 14:42:14 -0800</creation_ts>
          <short_desc>Start de-virtualizing destructors starting with JSCell and moving down</short_desc>
          <delta_ts>2011-12-18 12:22:46 -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>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>
          <dependson>74339</dependson>
          <blocked>74331</blocked>
    
    <blocked>74342</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>519491</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-12 14:42:14 -0800</bug_when>
    <thetext>In order to preserve the correctness across patches, we&apos;ll start de-virtualizing destructors starting with JSCell and moving down the hierarchy using the destroy functions.  Any class in the next level down that we haven&apos;t de-virtualized yet will receive a static destroy function that calls the virtual destructor for that subtree of the hierarchy.  Any class in the current level or above that has a non-empty destructor (i.e. it has members that require calls to their destructors or any other pre-existing logic) will receive a destroy method that statically calls that class&apos;s destructor, whether that destructor is implicitly or explicitly defined.  Any class with what C++ calls a non-trivial destructor will receive a COMPILE_ASSERT stating as much.  In a future patch sequence, we will move toward making all classes in the JSCell hierarchy have non-trivial destructors.  We must keep a virtual vtableAnchor() function rooted in JSCell to prevent objects from losing the vptrs, since we&apos;re not quite ready for them to disappear yet.

We will use

#pragma clang diagnostic push
#pragma clang diagnostic ignored &quot;-Wnon-virtual-dtor&quot;
// class declaration...
#pragma clang diagnostic pop

to avoid errors due to the fact that classes will still have a virtual method but no virtual destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519516</commentid>
    <comment_count>1</comment_count>
      <attachid>118864</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-12 14:52:53 -0800</bug_when>
    <thetext>Created attachment 118864
Start de-virtualizing destructors

No changelog (see bug 74331)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519549</commentid>
    <comment_count>2</comment_count>
      <attachid>118864</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-12 15:08:41 -0800</bug_when>
    <thetext>Comment on attachment 118864
Start de-virtualizing destructors

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

Remember to remove the #pragmas in your final patch.

&gt; Source/JavaScriptCore/heap/MarkedBlock.cpp:72
&gt; +    if (cell-&gt;classInfo() != &amp;JSFinalObject::s_info)

Use isJSFinalObject().

&gt; Source/JavaScriptCore/runtime/Executable.cpp:47
&gt; +    jsCast&lt;ExecutableBase*&gt;(cell)-&gt;~ExecutableBase();

Should be ExecutableBase::~ExecutableBase().

&gt; Source/JavaScriptCore/runtime/JSArray.cpp:280
&gt; +    ASSERT(classInfo()-&gt;isSubClassOf(&amp;JSArray::s_info));

I think this would read better as ASSERT(jsCast&lt;JSArray&gt;(this)).

&gt; Source/JavaScriptCore/runtime/JSByteArray.cpp:47
&gt; +    ASSERT(classInfo()-&gt;isSubClassOf(&amp;JSByteArray::s_info));

Ditto.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:90
&gt; +    jsCast&lt;JSObject*&gt;(cell)-&gt;~JSObject();

JSObject::~JSObject().

&gt; Source/JavaScriptCore/runtime/JSString.cpp:55
&gt; +    ASSERT(thisObject-&gt;classInfo() == &amp;JSString::s_info);

I think this ASSERT would be more readable as ASSERT(jsCast&lt;JSString&gt;(cell)).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118864</attachid>
            <date>2011-12-12 14:52:53 -0800</date>
            <delta_ts>2011-12-12 15:08:41 -0800</delta_ts>
            <desc>Start de-virtualizing destructors</desc>
            <filename>0007-Started-de-virtualizing-destructors-from-the-top-JSC.patch</filename>
            <type>text/plain</type>
            <size>23796</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">RnJvbSBkMjA5ZmU2NTA2OGZlOGRlOThjZjJkZTEzZTUyNDA4YjcwZjdmYWJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIEhhaG5lbmJlcmcgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KRGF0ZTogVHVlLCA2IERlYyAyMDExIDE2OjEzOjE4IC0wODAwClN1YmplY3Q6IFtQQVRDSCAw
Ny8xOF0gU3RhcnRlZCBkZS12aXJ0dWFsaXppbmcgZGVzdHJ1Y3RvcnMgZnJvbSB0aGUgdG9wCiAo
SlNDZWxsKSBkb3duIHRvIHRoZSBmaXJzdCBsZXZlIGJlbG93IEpTQ2VsbC4gIFdpbGwKIGNvbnRp
bnVlIGluIHNtYWxsIGNodW5rcy4gIEFsc28gYWRkZWQgbmV3IGFzc2VydGlvbgogdG8gZW5zdXJl
IHRoYXQgY2xhc3NlcyBoYXZlIHRyaXZpYWwgZGVzdHJ1Y3RvcnMgd2hlbgogZXhwZWN0ZWQuCgot
LS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgICAgICAgICAgIHwg
ICAgMyArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCAgICAg
ICAgIHwgICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAgICAgICAgfCAgICA5ICsrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oICAgICAgICAgfCAgICAzICsrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcCAgICAgfCAgICAyICsrCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCAgICAgICB8ICAgIDUgKysrKysKIC4uLi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcCAgIHwgICAgMiArKwogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaCAgfCAgICA1ICsrKysr
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCAgICAgICAgICB8ICAg
IDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmNwcCAgICAg
IHwgICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCAgICAg
ICAgICAgfCAgICA4ICsrKysrKystCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaCAgICAgICAgICAgICB8ICAgMTcgKysrKysrKysrLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCAgICAgICAgIHwgICAgOSArKysrKysrKysKIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggICAgICAgICAgIHwgICAgNCAr
KystCiAuLi4vcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAgICAgICAgICAgICB8
ICAgIDUgKysrKysKIC4uLi9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAgICAgICAg
ICAgICAgIHwgICAgOSArKysrKysrKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmNwcCAgICAgICAgIHwgICAxMCArKysrKysrKy0tCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oICAgICAgICAgICB8ICAgMTAgKysrKysrKystLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCAgICAgICAgICAgfCAgICA0ICsrKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oICAgICAgICAgICAgIHwgICAg
NyArKysrKystCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmNwcCAg
ICAgICB8ICAgIDggKysrKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaCAgICAgICAgIHwgICAgOSArKysrKysrLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5jcHAgICAgICAgIHwgICAgMyArKy0KIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oICAgICAgICAgIHwgICAgOSArKysrKysrLS0KIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCAgIHwgICAgMyArKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmggICAgIHwgICAg
NyArKysrKystCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaCAgICAgICAg
ICAgICB8ICAgIDYgKysrKysrCiAyNyBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKSwg
MzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAK
aW5kZXggYTJlMjYyZS4uNjNkMDIyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCkBAIC0zMjksNyArMzI5LDkgQEAgX19aTjNKU0M4SlNPYmplY3QyNGdldE93blBy
b3BlcnR5RGVzY3JpcHRvckVQUzBfUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXIKIF9f
Wk4zSlNDOEpTT2JqZWN0MjVnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RVBOU182SlNDZWxsRVBO
U185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzhKU09iamVjdDNwdXRF
UE5TXzZKU0NlbGxFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJFTlNfN0pTVmFsdWVF
Uk5TXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjNKU0M4SlNPYmplY3Q2c19pbmZvRQorX19aTjNK
U0M4SlNPYmplY3Q3ZGVzdHJveUVQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDOEpTT2JqZWN0OWNsYXNz
TmFtZUVQS1MwXworX19aTjNKU0M4SlNPYmplY3REMkV2CiBfX1pOM0pTQzhKU1N0cmluZzZzX2lu
Zm9FCiBfX1pOM0pTQzhQcm9maWxlcjEzc3RvcFByb2ZpbGluZ0VQTlNfOUV4ZWNTdGF0ZUVSS05T
XzdVU3RyaW5nRQogX19aTjNKU0M4UHJvZmlsZXIxNHN0YXJ0UHJvZmlsaW5nRVBOU185RXhlY1N0
YXRlRVJLTlNfN1VTdHJpbmdFCkBAIC02MjYsNiArNjI4LDcgQEAgX19aVFZOM0pTQzE1SlNXcmFw
cGVyT2JqZWN0RQogX19aVFZOM0pTQzE1V2Vha0hhbmRsZU93bmVyRQogX19aVFZOM0pTQzE2SW50
ZXJuYWxGdW5jdGlvbkUKIF9fWlRWTjNKU0MxNkpTVmFyaWFibGVPYmplY3RFCitfX1pUVk4zSlND
NkpTQ2VsbEUKIF9fWlRWTjNKU0M4RGVidWdnZXJFCiBfX1pUVk4zSlNDOEpTT2JqZWN0RQogX19a
VFZOM0pTQzhKU1N0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmNwcAppbmRleCAzZmNhYTRkLi5mMjUyOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCkBAIC02OSw3ICs2OSw3IEBAIGlubGluZSB2b2lkIE1hcmtlZEJs
b2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqIGNlbGwpCiAjaWYgRU5BQkxFKFNJTVBMRV9IRUFQ
X1BST0ZJTElORykKICAgICBtX2hlYXAtPm1fZGVzdHJveWVkVHlwZUNvdW50cy5jb3VudFZQdHIo
dnB0cik7CiAjZW5kaWYKLSAgICBpZiAoY2VsbC0+dW52YWxpZGF0ZWRDbGFzc0luZm8oKSAhPSAm
SlNGaW5hbE9iamVjdDo6c19pbmZvKQorICAgIGlmIChjZWxsLT5jbGFzc0luZm8oKSAhPSAmSlNG
aW5hbE9iamVjdDo6c19pbmZvKQogICAgICAgICBjZWxsLT5tZXRob2RUYWJsZSgpLT5kZXN0cm95
KGNlbGwpOwogCiAgICAgY2VsbC0+emFwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IDY0ZTkyZTguLmFhNDcwMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0zOCw2ICszOCwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEV4ZWN1dGFibGVCYXNlOjpzX2luZm8g
PSB7ICJFeGVjdXRhYmxlIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShFeGVjdXRhYmxl
QmFzZSkgfTsKIAorRXhlY3V0YWJsZUJhc2U6On5FeGVjdXRhYmxlQmFzZSgpCit7Cit9CisKK3Zv
aWQgRXhlY3V0YWJsZUJhc2U6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2FzdDxF
eGVjdXRhYmxlQmFzZSo+KGNlbGwpLT5+RXhlY3V0YWJsZUJhc2UoKTsKK30KKwogaW5saW5lIHZv
aWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZSgpCiB7CiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCA2Mzk1ODQzLi5hMWRm
Y2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC03
Nyw2ICs3Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBKU0NlbGwgQmFzZTsKIAorICAgICAgICB2aXJ0dWFsIH5FeGVjdXRhYmxlQmFzZSgpOworICAg
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOworCiAgICAgICAgIGJvb2wgaXNIb3N0
RnVuY3Rpb24oKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoKG1fbnVtUGFy
YW1ldGVyc0ZvckNhbGwgPT0gTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCkgPT0gKG1fbnVtUGFyYW1l
dGVyc0ZvckNvbnN0cnVjdCA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAppbmRleCAxN2NiYjQ0Li45
MjAzOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FTU0VSVF9IQVNf
VFJJVklBTF9ERVNUUlVDVE9SKEdldHRlclNldHRlcik7CisKIGNvbnN0IENsYXNzSW5mbyBHZXR0
ZXJTZXR0ZXI6OnNfaW5mbyA9IHsgIkdldHRlclNldHRlciIsIDAsIDAsIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoR2V0dGVyU2V0dGVyKSB9OwogCiB2b2lkIEdldHRlclNldHRlcjo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCBkNWFhYjgxLi41MWQxYWM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaApAQCAtMzIs
NiArMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTT2JqZWN0OwogCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1Xbm9uLXZpcnR1YWwtZHRvciIKKwogICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJuYWwgdmFs
dWUgb2JqZWN0IHdoaWNoIHN0b3JlcyBnZXR0ZXIgYW5kIHNldHRlciBmdW5jdGlvbnMKICAgICAv
LyBmb3IgYSBwcm9wZXJ0eS4KICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXIgOiBwdWJsaWMgSlNDZWxs
IHsKQEAgLTcxLDYgKzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmll
cjxKU09iamVjdD4gbV9zZXR0ZXI7ICAKICAgICB9OwogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCisKICAgICBHZXR0ZXJTZXR0ZXIqIGFzR2V0dGVyU2V0dGVyKEpTVmFsdWUpOwogCiAg
ICAgaW5saW5lIEdldHRlclNldHRlciogYXNHZXR0ZXJTZXR0ZXIoSlNWYWx1ZSB2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNw
cAppbmRleCBiMWIzM2Y1Li44NTE3MDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihKU0FQSVZhbHVl
V3JhcHBlcik7CisKIGNvbnN0IENsYXNzSW5mbyBKU0FQSVZhbHVlV3JhcHBlcjo6c19pbmZvID0g
eyAiQVBJIFdyYXBwZXIiLCAwLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQVBJVmFsdWVX
cmFwcGVyKSB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCmluZGV4IDczZWZhYWUuLmQzNTNjYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFw
cGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBw
ZXIuaApAQCAtMzAsNiArMzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV25v
bi12aXJ0dWFsLWR0b3IiCisKICAgICBjbGFzcyBKU0FQSVZhbHVlV3JhcHBlciA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICBmcmllbmQgSlNWYWx1ZSBqc0FQSVZhbHVlV3JhcHBlcihFeGVjU3Rh
dGUqLCBKU1ZhbHVlKTsKICAgICBwdWJsaWM6CkBAIC02OCw2ICs3MSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV92YWx1ZTsKICAgICB9OwogCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAgICBpbmxpbmUgSlNWYWx1ZSBqc0FQSVZh
bHVlV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAg
ICByZXR1cm4gSlNBUElWYWx1ZVdyYXBwZXI6OmNyZWF0ZShleGVjLCB2YWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IDA0NDY1NmUuLmQ5NzlhMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgdm9pZCBKU0FycmF5OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IEpTVmFsdWUqIHZhbHVlcywgc2kKIAogSlNBcnJheTo6fkpTQXJyYXkoKQog
ewotICAgIEFTU0VSVCh1bnZhbGlkYXRlZENsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoJkpTQXJy
YXk6OnNfaW5mbykpOworICAgIEFTU0VSVChjbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKCZKU0Fy
cmF5OjpzX2luZm8pKTsKICAgICBjaGVja0NvbnNpc3RlbmN5KERlc3RydWN0b3JDb25zaXN0ZW5j
eUNoZWNrKTsKIAogICAgIGRlbGV0ZSBtX3N0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKaW5kZXggYWI5YTIy
MS4uNmYxNzBlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
eXRlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFy
cmF5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBKU0J5dGVBcnJheTo6SlNCeXRlQXJyYXkoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnl0ZUFycmF5KiBzdG9yYQogI2lmICFB
U1NFUlRfRElTQUJMRUQKIEpTQnl0ZUFycmF5Ojp+SlNCeXRlQXJyYXkoKQogewotICAgIEFTU0VS
VCh1bnZhbGlkYXRlZENsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoJkpTQnl0ZUFycmF5OjpzX2lu
Zm8pKTsKKyAgICBBU1NFUlQoY2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZigmSlNCeXRlQXJyYXk6
OnNfaW5mbykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCmluZGV4IDEzMjI0ZTUuLmJiNTFjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmNwcApAQCAtMzEsOSArMzEsMTUgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
K0FTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKEpTQ2VsbCk7CisKK3ZvaWQgSlNDZWxsOjp2
dGFibGVBbmNob3IoKQoreworfQorCiB2b2lkIEpTQ2VsbDo6ZGVzdHJveShKU0NlbGwqIGNlbGwp
CiB7Ci0gICAgY2VsbC0+fkpTQ2VsbCgpOworICAgIGNlbGwtPkpTQ2VsbDo6fkpTQ2VsbCgpOwog
fQogCiBib29sIEpTQ2VsbDo6Z2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgVVN0cmluZyZzdHJp
bmdWYWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXgg
ZGIxOGJiYi4uM2VlNGJiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
QEAgLTU3LDYgKzU3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFR5cGVkQXJyYXlGbG9h
dDY0CiAgICAgfTsKIAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV25vbi12aXJ0dWFsLWR0b3IiCisKICAgICBjbGFzcyBK
U0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKICAgICAgICAgZnJpZW5kIGNs
YXNzIE1hcmtlZEJsb2NrOwpAQCAtNzMsNyArNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IHByb3RlY3RlZDoKICAgICAgICAgSlNDZWxsKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwot
ICAgICAgICB2aXJ0dWFsIH5KU0NlbGwoKTsgLy8gSW52b2tlZCBieSBHQyBmaW5hbGl6YXRpb24u
CisgICAgICAgIHZpcnR1YWwgdm9pZCB2dGFibGVBbmNob3IoKTsKICAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHB1YmxpYzoKQEAgLTEwOSw3ICsxMTIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBPYmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0aGUg
dG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgogICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0OwotICAgICAgICBjb25zdCBDbGFzc0luZm8qIHVudmFsaWRhdGVkQ2xh
c3NJbmZvKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogdmFsaWRhdGVkQ2xhc3NJ
bmZvKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNv
bnN0OwogICAgICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUpOwpAQCAtMTc2LDcgKzE3OSw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICB9OwotICAgIAorCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAgICBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoQ3JlYXRp
bmdFYXJseUNlbGxUYWcpCiAgICAgewogICAgIH0KQEAgLTE5MiwxNiArMTk3LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIGlu
bGluZSBKU0NlbGw6On5KU0NlbGwoKQotICAgIHsKLSAgICB9Ci0KICAgICBpbmxpbmUgU3RydWN0
dXJlKiBKU0NlbGw6OnN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9z
dHJ1Y3R1cmUuZ2V0KCk7CiAgICAgfQogCi0gICAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlND
ZWxsOjp1bnZhbGlkYXRlZENsYXNzSW5mbygpIGNvbnN0CisgICAgaW5saW5lIGNvbnN0IENsYXNz
SW5mbyogSlNDZWxsOjpjbGFzc0luZm8oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
Y2xhc3NJbmZvOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcAppbmRleCAxNGYwOTM1Li40NzUwZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCkBAIC04MSw2ICs4MSwxNSBAQCB2b2lkIEpTT2JqZWN0OjpmaW5h
bGl6ZShKU0NlbGwqIGNlbGwpCiAgICAgZGVsZXRlIFtdIGpzQ2FzdDxKU09iamVjdCo+KGNlbGwp
LT5tX3Byb3BlcnR5U3RvcmFnZS5nZXQoKTsKIH0KIAorSlNPYmplY3Q6On5KU09iamVjdCgpCit7
Cit9CisKK3ZvaWQgSlNPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIGpzQ2Fz
dDxKU09iamVjdCo+KGNlbGwpLT5+SlNPYmplY3QoKTsKK30KKwogdm9pZCBKU09iamVjdDo6dnRh
YmxlQW5jaG9yKCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CmluZGV4IGM1ZGVhMmQuLmExNzcwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaApAQCAtODAsNiArODAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKKyAgICAgICAgdmlydHVhbCB+SlNPYmpl
Y3QoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTUxOSw3ICs1MjEsNyBAQCBpbmxpbmUg
Ym9vbCBKU0NlbGw6OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKIAogaW5s
aW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRhYmxlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gJnVudmFsaWRhdGVkQ2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOworICAgIHJldHVy
biAmY2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOwogfQogCiAvLyB0aGlzIG1ldGhvZCBpcyBoZXJl
IHRvIGJlIGFmdGVyIHRoZSBpbmxpbmUgZGVjbGFyYXRpb24gb2YgSlNDZWxsOjppbmhlcml0cwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcAppbmRleCBmNDMxMDQyLi43MjA3YTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcApA
QCAtODEsNiArODEsMTEgQEAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKICAgICByZXR1cm4ganNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjsKIH0KIAordm9pZCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBqc0Nhc3Q8SlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cio+KGNlbGwpLT5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp+SlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cigpOworfQorCiBKU1ZhbHVlIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmdldChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBiYXNlLCBzaXplX3QgaSkKIHsKICAgICBKU1ZhbHVlIGlkZW50aWZp
ZXIgPSBtX2pzU3RyaW5nc1tpXS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCA5N2E1MDMyLi5hNmJk
MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC0zOSw2ICszOSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdub24t
dmlydHVhbC1kdG9yIgorCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1Ymxp
YyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogCkBAIC01Miw3ICs1NSw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaXRlcmF0b3ItPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3I7
CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0Nl
bGwqKTsKKyAgICAgICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
Q29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgJnNfaW5mbyk7CkBAIC0xMDMs
NiArMTA4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFy
cmllcjxVbmtub3duPiA+IG1fanNTdHJpbmdzOwogICAgIH07CiAKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKKwogICAgIGlubGluZSB2b2lkIFN0cnVjdHVyZTo6c2V0RW51bWVyYXRpb25D
YWNoZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVu
dW1lcmF0aW9uQ2FjaGUpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlzRGljdGlvbmFyeSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCAzMmY5NTVm
Li45OGNmZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3Bw
CkBAIC00NSw5ICs0NSwxNSBAQCB2b2lkIEpTU3RyaW5nOjpSb3BlQnVpbGRlcjo6ZXhwYW5kKCkK
ICAgICBhcHBlbmQoanNTdHJpbmcpOwogfQogCi1KU1N0cmluZzo6fkpTU3RyaW5nKCkKK3ZvaWQg
SlNTdHJpbmc6OnZ0YWJsZUFuY2hvcigpCiB7Ci0gICAgQVNTRVJUKHVudmFsaWRhdGVkQ2xhc3NJ
bmZvKCkgPT0gJkpTU3RyaW5nOjpzX2luZm8pOworfQorCit2b2lkIEpTU3RyaW5nOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1N0cmluZyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1N0
cmluZyo+KGNlbGwpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSAmSlNT
dHJpbmc6OnNfaW5mbyk7CisgICAgdGhpc09iamVjdC0+SlNTdHJpbmc6On5KU1N0cmluZygpOwog
fQogCiB2b2lkIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRl
eCA1MjM5OGRkLi4yNTgxMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgKQEAgLTU5LDYgKzU5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBKU1N0cmluZyog
anNTdHJpbmdCdWlsZGVyKEpTR2xvYmFsRGF0YSopOwogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xbm9uLXZpcnR1YWwt
ZHRvciIKKwogICAgIGNsYXNzIEpTX0VYUE9SVENMQVNTIEpTU3RyaW5nIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtNjksNiArNzIs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCisg
ICAgICAgIHZpcnR1YWwgdm9pZCB2dGFibGVBbmNob3IoKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKKwogICAgICAgICBjbGFzcyBSb3BlQnVpbGRlciB7CiAgICAgICAg
IHB1YmxpYzoKICAgICAgICAgICAgIFJvcGVCdWlsZGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKQEAgLTE5Nyw4ICsyMDMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBuZXdTdHJpbmc7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5KU1N0cmluZygpOwot
CiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIHZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKGlzUm9wZSgpKQpAQCAtMjc3LDYgKzI4MSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNT
dGF0ZSosIEpTU3RyaW5nKiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAg
IH07CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKwogICAgIEpTU3RyaW5nKiBhc1N0
cmluZyhKU1ZhbHVlKTsKIAogICAgIC8vIFdoZW4gYW4gb2JqZWN0IGlzIGNyZWF0ZWQgZnJvbSBh
IGRpZmZlcmVudCBETEwsIE1TVkMgY2hhbmdlcyB2cHRyIHRvIGEgImxvY2FsIiBvbmUgcmlnaHQg
YWZ0ZXIgaW52b2tpbmcgYSBjb25zdHJ1Y3RvciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuY3BwCmluZGV4IDA1ZGYzMmIuLjU5NGIyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtMjQ4LDExICsyNDgsMTMgQEAgdm9pZCBSZWdFeHA6
OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgbV9udW1T
dWJwYXR0ZXJucyA9IHBhdHRlcm4ubV9udW1TdWJwYXR0ZXJuczsKIH0KIAotUmVnRXhwOjp+UmVn
RXhwKCkKK3ZvaWQgUmVnRXhwOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKKyAgICBSZWdFeHAq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwKj4oY2VsbCk7CiAjaWYgUkVHRVhQX0ZVTkNfVEVT
VF9EQVRBX0dFTgogICAgIFJlZ0V4cEZ1bmN0aW9uYWxUZXN0Q29sbGVjdG9yOjpnZXQoKS0+Y2xl
YXJSZWdFeHAodGhpcyk7CiAjZW5kaWYKKyAgICB0aGlzT2JqZWN0LT5SZWdFeHA6On5SZWdFeHAo
KTsKIH0KIAogUmVnRXhwKiBSZWdFeHA6OmNyZWF0ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3Mg
ZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IGFhM2E2MWYu
LjU0NjMwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0zNywx
MiArMzcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBSZWdFeHBGbGFncyByZWdFeHBGbGFn
cyhjb25zdCBVU3RyaW5nJik7CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdub24tdmlydHVhbC1kdG9yIgorCiAgICAg
Y2xhc3MgUmVnRXhwIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBl
ZGVmIEpTQ2VsbCBCYXNlOwogCiAgICAgICAgIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShKU0dsb2Jh
bERhdGEmLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7Ci0gICAgICAgIH5S
ZWdFeHAoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgICAg
ICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnR2xvYmFsOyB9CiAg
ICAgICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBGbGFnSWdu
b3JlQ2FzZTsgfQpAQCAtMTExLDYgKzExNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBP
d25QdHI8UmVnRXhwUmVwcmVzZW50YXRpb24+IG1fcmVwcmVzZW50YXRpb247CiAgICAgfTsKIAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIFJlZ0V4cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hh
aW4uY3BwCmluZGV4IDc5ZjJhN2EuLjI2NDA4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uY3BwCkBAIC0yOSw5ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1TY29wZUNoYWluTm9kZTo6flNjb3BlQ2hhaW5Ob2RlKCkKLXsKLX0KK0FTU0VSVF9I
QVNfVFJJVklBTF9ERVNUUlVDVE9SKFNjb3BlQ2hhaW5Ob2RlKTsKIAogI2lmbmRlZiBOREVCVUcK
IApAQCAtNTcsNiArNTUsMTAgQEAgdm9pZCBTY29wZUNoYWluTm9kZTo6cHJpbnQoKQogCiBjb25z
dCBDbGFzc0luZm8gU2NvcGVDaGFpbk5vZGU6OnNfaW5mbyA9IHsgIlNjb3BlQ2hhaW5Ob2RlIiwg
MCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTY29wZUNoYWluTm9kZSkgfTsKIAordm9pZCBT
Y29wZUNoYWluTm9kZTo6dnRhYmxlQW5jaG9yKCkKK3sKK30KKwogaW50IFNjb3BlQ2hhaW5Ob2Rl
Ojpsb2NhbERlcHRoKCkKIHsKICAgICBpbnQgc2NvcGVEZXB0aCA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKaW5kZXggNDgzODVkMC4uZDhhMWVkMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaApAQCAtMzMsNiArMzMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAg
Y2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xbm9uLXZpcnR1YWwtZHRvciIKKwog
ICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgU2NvcGVDaGFpbk5vZGUoU2NvcGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBv
YmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCkBAIC00NSw4ICs0OCw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIH5TY29wZUNoYWlu
Tm9kZSgpOwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICAgICAgewpAQCAtNTQsNiArNTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpOwogICAgICAgICB9CiAKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHZ0YWJsZUFuY2hvcigpOworCiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCkBAIC0xMjksNiArMTMyLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBtX25vZGU7CiAgICAgfTsKIAorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAorCiAgICAgaW5saW5lIFNjb3BlQ2hhaW5JdGVyYXRvciBTY29w
ZUNoYWluTm9kZTo6YmVnaW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIFNjb3BlQ2hhaW5JdGVy
YXRvcih0aGlzKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAppbmRleCA2YjRjYTJiLi5kZGE4YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTIxOCw4ICsyMTgsOSBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCiAg
ICAgICAgIG1fZ2xvYmFsT2JqZWN0LnNldChnbG9iYWxEYXRhLCB0aGlzLCBwcmV2aW91cy0+bV9n
bG9iYWxPYmplY3QuZ2V0KCkpOwogfQogCi1TdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUoKQordm9pZCBT
dHJ1Y3R1cmU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogeworICAgIGpzQ2FzdDxTdHJ1Y3R1cmUq
PihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpt
YXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggNWRhYmM2OS4uOWE5YTEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTUwLDYgKzUw
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CiAgICAgY2xh
c3MgU2xvdFZpc2l0b3I7CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdub24tdmlydHVhbC1kdG9yIgorCiAgICAgY2xh
c3MgU3RydWN0dXJlIDogcHVibGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBmcmll
bmQgY2xhc3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOwpAQCAtMTAzLDcgKzEwNiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIFN0cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKIAotICAgICAgICB+U3RydWN0dXJlKCk7
CisgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICAgICAgLy8gVGhl
c2Ugc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAgCiAgICAgICAgIHNpemVfdCBhZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsK
QEAgLTI5MCw2ICsyOTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9z
dGF0aWNGdW5jdGlvblJlaWZpZWQ7CiAgICAgfTsKIAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAorCiAgICAgaW5saW5lIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNfaW5mbyk7CkBAIC0zMzksNyAr
MzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fc3RydWN0dXJlLnNldChnbG9iYWxE
YXRhLCB0aGlzLCBzdHJ1Y3R1cmUpOwogICAgIH0KIAotICAgIGlubGluZSBjb25zdCBDbGFzc0lu
Zm8qIEpTQ2VsbDo6Y2xhc3NJbmZvKCkgY29uc3QKKyAgICBpbmxpbmUgY29uc3QgQ2xhc3NJbmZv
KiBKU0NlbGw6OnZhbGlkYXRlZENsYXNzSW5mbygpIGNvbnN0CiAgICAgewogI2lmIEVOQUJMRShH
Q19WQUxJREFUSU9OKQogICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQo
KS0+Y2xhc3NJbmZvKCkgPT0gbV9jbGFzc0luZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCmluZGV4IDNhMDg1NjkuLmFmYjJkOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAK
QEAgLTM5LDggKzM5LDkgQEAgU3RydWN0dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9CiAKLVN0cnVjdHVy
ZUNoYWluOjp+U3RydWN0dXJlQ2hhaW4oKQordm9pZCBTdHJ1Y3R1cmVDaGFpbjo6ZGVzdHJveShK
U0NlbGwqIGNlbGwpCiB7CisgICAganNDYXN0PFN0cnVjdHVyZUNoYWluKj4oY2VsbCktPlN0cnVj
dHVyZUNoYWluOjp+U3RydWN0dXJlQ2hhaW4oKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmVDaGFpbjo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKaW5kZXggMjgxZjYw
Mi4uNGZmZWNlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVDaGFpbi5oCkBAIC0zOSw2ICszOSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
U3RydWN0dXJlOwogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xbm9uLXZpcnR1YWwtZHRvciIKKwogICAgIGNsYXNzIFN0
cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAKQEAgLTc1LDEwICs3OCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwotICAgICAg
ICB+U3RydWN0dXJlQ2hhaW4oKTsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3Rv
cjsKICAgICB9OwogCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gU3RydWN0dXJlQ2hhaW5faApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0Fzc2VydGlvbnMuaAppbmRleCBkNGY1ZDgwLi4yYjNkNzk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzgzLDQgKzM4MywxMCBAQCB3aGlsZSAoMCkKICNk
ZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGNsYXNzSW5mbykgZG8geyAo
dm9pZClvYmplY3Q7ICh2b2lkKWNsYXNzSW5mbzsgfSB3aGlsZSAoMCkKICNlbmRpZgogCisjaWYg
Q09NUElMRVIoQ0xBTkcpCisjZGVmaW5lIEFTU0VSVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKGts
YXNzKSBDT01QSUxFX0FTU0VSVChfX2hhc190cml2aWFsX2Rlc3RydWN0b3Ioa2xhc3MpLCBrbGFz
cyMjX2hhc190cml2aWFsX2Rlc3RydWN0b3JfY2hlY2spCisjZWxzZQorI2RlZmluZSBBU1NFUlRf
SEFTX1RSSVZJQUxfREVTVFJVQ1RPUihrbGFzcykKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX0Fz
c2VydGlvbnNfaCAqLwotLSAKMS43LjQuNAoK
</data>
<flag name="review"
          id="118723"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>