<?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>128625</bug_id>
          
          <creation_ts>2014-02-11 13:57:12 -0800</creation_ts>
          <short_desc>Add fast mapping from StringImpl to JSString</short_desc>
          <delta_ts>2014-02-18 19:16:36 -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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979596</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-02-11 13:57:12 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979611</commentid>
    <comment_count>1</comment_count>
      <attachid>223904</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-02-11 14:49:41 -0800</bug_when>
    <thetext>Created attachment 223904
Probably unsafe WRT static strings, workers, isolated worlds &amp; maybe JSC API too. But basic browsing seems to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979612</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-11 14:52:04 -0800</bug_when>
    <thetext>Attachment 223904 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSString.h:96:  The parameter name &quot;impl&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/heap/MarkedAllocator.h:46:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981630</commentid>
    <comment_count>3</comment_count>
      <attachid>224417</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-02-17 13:43:51 -0800</bug_when>
    <thetext>Created attachment 224417
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981631</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-17 13:44:30 -0800</bug_when>
    <thetext>Attachment 224417 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringImpl.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981649</commentid>
    <comment_count>5</comment_count>
      <attachid>224417</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-17 14:43:16 -0800</bug_when>
    <thetext>Comment on attachment 224417
Fix

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

I&apos;m not JSC ninja enough to do final review, so here&apos;s some minor comments. (This looks really awesome to me btw.)

&gt; Source/JavaScriptCore/runtime/JSString.cpp:305
&gt; +    impl-&gt;setWeakJSString(0);

0 -&gt; nullptr

&gt; Source/JavaScriptCore/runtime/JSString.h:66
&gt; +        class WeakOwner : public WeakHandleOwner {

final

&gt; Source/JavaScriptCore/runtime/JSString.h:68
&gt; +            virtual void finalize(Handle&lt;Unknown&gt;, void* context);

override

&gt; Source/JavaScriptCore/runtime/JSString.h:413
&gt; +    inline JSString* jsStringWithWeakOwner(VM* vm, const String&amp; s)

&apos;s&apos; is kind of an unWebKitty variable name but I guess it&apos;s okay in this context.

&gt; Source/JavaScriptCore/runtime/JSString.h:418
&gt; +        // If this vm is not allowed weakly own strings just call jsString.

allowed *to*

&gt; Source/JavaScriptCore/runtime/JSString.h:427
&gt; +            impl-&gt;setWeakJSString(0);

0 -&gt; nullptr

&gt; Source/JavaScriptCore/runtime/VM.cpp:173
&gt; +    , jsStringWeakOwner(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:169
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:187
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:205
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:219
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:233
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:247
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:260
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:274
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:288
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:306
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WTF/wtf/text/StringImpl.h:326
&gt; +        , m_weakJSString(0)

0 -&gt; nullptr

&gt; Source/WebCore/bindings/js/DOMWrapperWorld.h:-36
&gt; -typedef JSC::WeakGCMap&lt;StringImpl*, JSC::JSString, PtrHash&lt;StringImpl*&gt;&gt; JSStringCache;

I guess we don&apos;t need the WeakGCMap.h include after this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981656</commentid>
    <comment_count>6</comment_count>
      <attachid>224417</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-02-17 14:59:35 -0800</bug_when>
    <thetext>Comment on attachment 224417
Fix

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

r=me

&gt; Source/JavaScriptCore/runtime/VM.h:227
&gt; +        WeakHandleOwner* jsStringWeakOwner;

This should be OwnPtr, even though we currently only use this for the leaked VM, to avoid too many cross-cutting memory management assumptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981723</commentid>
    <comment_count>7</comment_count>
      <attachid>224447</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-02-17 17:04:14 -0800</bug_when>
    <thetext>Created attachment 224447
Already reviewed, just for EWS &amp; giggles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981744</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-17 18:06:11 -0800</bug_when>
    <thetext>Attachment 224447 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringImpl.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982200</commentid>
    <comment_count>9</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-02-18 19:16:36 -0800</bug_when>
    <thetext>Transmitting file data ..............
Committed revision 164347.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223904</attachid>
            <date>2014-02-11 14:49:41 -0800</date>
            <delta_ts>2014-02-17 13:43:51 -0800</delta_ts>
            <desc>Probably unsafe WRT static strings, workers, isolated worlds &amp; maybe JSC API too. But basic browsing seems to work.</desc>
            <filename>128625.1.patch</filename>
            <type>text/plain</type>
            <size>11329</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDE2MzgyMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiAr
OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNf
dGltZUNoZWNrUmVzb2x1dGlvbiA9IDE2OwogCiAgICAgICAgIHN0YXRpYyBib29sIGlzTGl2ZShj
b25zdCB2b2lkKik7CisgICAgICAgIHN0YXRpYyBib29sIGlzUmVhbGx5TGl2ZShjb25zdCB2b2lk
Kik7CiAgICAgICAgIHN0YXRpYyBib29sIGlzTWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAg
c3RhdGljIGJvb2wgdGVzdEFuZFNldE1hcmtlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHN0YXRp
YyB2b2lkIHNldE1hcmtlZChjb25zdCB2b2lkKik7CkBAIC0zNjgsNiArMzY5LDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5p
c0xpdmVDZWxsKGNlbGwpOwogICAgIH0KIAorICAgIGlubGluZSBib29sIEhlYXA6OmlzUmVhbGx5
TGl2ZShjb25zdCB2b2lkKiBjZWxsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE1hcmtlZEJsb2Nr
OjpibG9ja0ZvcihjZWxsKS0+aXNSZWFsbHlMaXZlKGNlbGwpOworICAgIH0KKwogICAgIGlubGlu
ZSBib29sIEhlYXA6OmlzTWFya2VkKGNvbnN0IHZvaWQqIGNlbGwpCiAgICAgewogICAgICAgICBy
ZXR1cm4gTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5pc01hcmtlZChjZWxsKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lv
biAxNjM4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0
KEhlYXAqLCBNYXJrZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgTWFya2VkQmxvY2s6OkRlc3Ry
dWN0b3JUeXBlKTsKIAogICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwotICAg
CisKKyAgIE1hcmtlZEJsb2NrOjpGcmVlQ2VsbCogaGVhZE9mRnJlZUxpc3QoKSBjb25zdCB7IHJl
dHVybiBtX2ZyZWVMaXN0LmhlYWQ7IH0KKwogcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKHNpemVfdCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGUo
c2l6ZV90KTsKQEAgLTEzNyw2ICsxMzksMjYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+
IGlubGluZSB2b2lkIAogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzUmVh
bGx5TGl2ZShjb25zdCB2b2lkKiBjZWxsKQoreworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAg
IGNhc2UgQWxsb2NhdGVkOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgTWFya2Vk
OgorICAgICAgICByZXR1cm4gbV9tYXJrcy5nZXQoYXRvbU51bWJlcihjZWxsKSk7CisKKyAgICBj
YXNlIEZyZWVMaXN0ZWQ6CisgICAgICAgIHJldHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKGNl
bGwpKSB8fCBjZWxsID4gbV9hbGxvY2F0b3ItPmhlYWRPZkZyZWVMaXN0KCk7CisKKyAgICBjYXNl
IE5ldzoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgJKHJldmlzaW9uIDE2MzgyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAg
Ym9vbCBpc0xpdmUoY29uc3QgSlNDZWxsKik7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25z
dCB2b2lkKik7CisgICAgICAgIGJvb2wgaXNSZWFsbHlMaXZlKGNvbnN0IHZvaWQqKTsKICAgICAg
ICAgdm9pZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTWFya2Vk
KGNvbnN0IHZvaWQqKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCShyZXZpc2lvbiAxNjM4MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgfkpTU3RyaW5nKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKFN0cmluZ0ltcGwqIGltcGwgPSBtX3ZhbHVlLmltcGwoKSkK
KyAgICAgICAgICAgICAgICBpbXBsLT5zZXRKU1N0cmluZ0RhdGEoMCk7CisgICAgICAgIH0KKwog
ICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgc2l6ZV90IGxlbmd0aCkKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3ZhbHVlLmlzTnVsbCgpKTsKQEAgLTQwNSw2ICs0
MTEsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRl
KCp2bSwgcy5pbXBsKCkpOwogICAgIH0KIAorICAgIGlubGluZSBKU1N0cmluZyoganNTdHJpbmdG
b3JET00oVk0qIHZtLCBjb25zdCBTdHJpbmcmIHMpCisgICAgeworICAgICAgICBTdHJpbmdJbXBs
KiBpbXBsID0gcy5pbXBsKCk7CisgICAgICAgIGlmICh2b2lkKiBqc1N0cmluZ0RhdGEgPSBpbXBs
LT5qc1N0cmluZ0RhdGEoKSkgeworICAgICAgICAgICAgaWYgKHZtLT5oZWFwLmlzUmVhbGx5TGl2
ZShqc1N0cmluZ0RhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0
cmluZyo+KGpzU3RyaW5nRGF0YSk7CisgICAgICAgICAgICBpbXBsLT5zZXRKU1N0cmluZ0RhdGEo
MCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaW50IHNpemUgPSBzLmxlbmd0aCgpOworICAg
ICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5lbXB0
eVN0cmluZygpOworICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgICAgICBVQ2hhciBj
ID0gcy5jaGFyYWN0ZXJBdCgwKTsKKyAgICAgICAgICAgIGlmIChjIDw9IG1heFNpbmdsZUNoYXJh
Y3RlclN0cmluZykKKyAgICAgICAgICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5n
bGVDaGFyYWN0ZXJTdHJpbmcoYyk7CisgICAgICAgIH0KKyAgICAgICAgSlNTdHJpbmcqIHN0cmlu
ZyA9IEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBzLmltcGwoKSk7CisKKyAgICAgICAgaW1wbC0+c2V0
SlNTdHJpbmdEYXRhKHN0cmluZyk7CisgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgfQorCiAg
ICAgaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KiBzLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChvZmZzZXQgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMtPmxlbmd0aCgpKSk7CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAJKHJldmlzaW9uIDE2MzgyMCkKKysrIFNvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCi1DT01Q
SUxFX0FTU0VSVChzaXplb2YoU3RyaW5nSW1wbCkgPT0gMiAqIHNpemVvZihpbnQpICsgMyAqIHNp
emVvZih2b2lkKiksIFN0cmluZ0ltcGxfc2hvdWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKFN0cmluZ0ltcGwpID09IDIgKiBzaXplb2YoaW50KSArIDQgKiBzaXplb2Yodm9p
ZCopLCBTdHJpbmdJbXBsX3Nob3VsZF9zdGF5X3NtYWxsKTsKIAogI2lmZGVmIFNUUklOR19TVEFU
UwogU3RyaW5nU3RhdHMgU3RyaW5nSW1wbDo6bV9zdHJpbmdTdGF0czsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxNjM4MjApCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nKQogICAg
ICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGExNihjaGFyYWN0ZXJzKQor
ICAgICAgICAsIG1fanNTdHJpbmdEYXRhKDApCiAgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19o
YXNoRmxhZ0lzSWRlbnRpZmllciB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAgLy8gRW5z
dXJlIHRoYXQgdGhlIGhhc2ggaXMgY29tcHV0ZWQgc28gdGhhdCBBdG9taWNTdHJpbmdIYXNoIGNh
biBjYWxsIGV4aXN0aW5nSGFzaCgpCkBAIC0xNzksNiArMTgwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcpCiAgICAgICAgICwg
bV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycykKKyAgICAgICAg
LCBtX2pzU3RyaW5nRGF0YSgwKQogICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4
Qml0QnVmZmVyIHwgc19oYXNoRmxhZ0lzSWRlbnRpZmllciB8IEJ1ZmZlck93bmVkKQogICAgIHsK
ICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGhhc2ggaXMgY29tcHV0ZWQgc28gdGhhdCBBdG9t
aWNTdHJpbmdIYXNoIGNhbiBjYWxsIGV4aXN0aW5nSGFzaCgpCkBAIC0xOTYsNiArMTk4LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAg
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgodGFpbFBvaW50ZXI8TENo
YXI+KCkpCisgICAgICAgICwgbV9qc1N0cmluZ0RhdGEoMCkKICAgICAgICAgLCBtX2hhc2hBbmRG
bGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fZGF0YTgpOwpAQCAtMjA5LDYgKzIxMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
IDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKICAgICAgICAgLCBtX2RhdGExNih0YWlsUG9pbnRlcjxVQ2hhcj4oKSkKKyAgICAgICAg
LCBtX2pzU3RyaW5nRGF0YSgwKQogICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlckludGVy
bmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKQEAgLTIyMiw2ICsyMjYsNyBA
QCBwcml2YXRlOgogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAg
ICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzLmxl
YWtQdHIoKSkKKyAgICAgICAgLCBtX2pzU3RyaW5nRGF0YSgwKQogICAgICAgICAsIG1faGFzaEFu
ZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyT3duZWQpCiAgICAgewogICAgICAg
ICBBU1NFUlQobV9kYXRhOCk7CkBAIC0yMzUsNiArMjQwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
OiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNoYXJhY3RlcnMpCisgICAgICAgICwgbV9qc1N0cmlu
Z0RhdGEoMCkKICAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CkBAIC0yNDcsNiArMjUzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycykKKyAgICAgICAgLCBt
X2pzU3RyaW5nRGF0YSgwKQogICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0
QnVmZmVyIHwgQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7
CkBAIC0yNjAsNiArMjY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVm
Q291bnRJbmNyZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1f
ZGF0YTE2KGNoYXJhY3RlcnMubGVha1B0cigpKQorICAgICAgICAsIG1fanNTdHJpbmdEYXRhKDAp
CiAgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVyT3duZWQpCiAgICAgewogICAgICAgICBB
U1NFUlQobV9kYXRhMTYpOwpAQCAtMjczLDYgKzI4MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIDog
bV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMpCisgICAgICAgICwgbV9qc1N0cmluZ0Rh
dGEoMCkKICAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1
ZmZlclN1YnN0cmluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChpczhCaXQoKSk7CkBAIC0yOTAs
NiArMjk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNy
ZW1lbnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KGNo
YXJhY3RlcnMpCisgICAgICAgICwgbV9qc1N0cmluZ0RhdGEoMCkKICAgICAgICAgLCBtX2hhc2hB
bmRGbGFncyhCdWZmZXJTdWJzdHJpbmcpCiAgICAgewogICAgICAgICBBU1NFUlQoIWlzOEJpdCgp
KTsKQEAgLTMwOSw2ICszMTksNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBXZSBleHBlY3QgbV9s
ZW5ndGggdG8gYmUgaW5pdGlhbGl6ZWQgdG8gMCBhcyB3ZSB1c2UgaXQKICAgICAgICAgLy8gdG8g
cmVwcmVzZW50IGEgbnVsbCB0ZXJtaW5hdGVkIGJ1ZmZlci4KICAgICAgICAgLCBtX2RhdGE4KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigmbV9sZW5ndGgpKQorICAgICAgICAsIG1fanNT
dHJpbmdEYXRhKDApCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CiAgICAgICAgIC8v
IFNldCB0aGUgaGFzaCBlYXJseSwgc28gdGhhdCBhbGwgZW1wdHkgdW5pcXVlIFN0cmluZ0ltcGxz
IGhhdmUgYSBoYXNoLApAQCAtNjEyLDYgKzYyMyw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWZD
b3VudCA9IHRlbXBSZWZDb3VudDsKICAgICB9CiAKKyAgICB2b2lkKiBqc1N0cmluZ0RhdGEoKSBj
b25zdCB7IHJldHVybiBtX2pzU3RyaW5nRGF0YTsgfQorICAgIHZvaWQgc2V0SlNTdHJpbmdEYXRh
KHZvaWQqIGpzU3RyaW5nRGF0YSkgeyBtX2pzU3RyaW5nRGF0YSA9IGpzU3RyaW5nRGF0YTsgfQor
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpOwogCiAg
ICAgLy8gRklYTUU6IERvZXMgdGhpcyByZWFsbHkgYmVsb25nIGluIFN0cmluZ0ltcGw/CkBAIC04
NTEsNiArODY1LDcgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBtX3JlZkNvdW50OwogICAg
ICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKICAgICAgICAgY29uc3QgTENoYXIqIG1fZGF0YTg7Cisg
ICAgICAgIHZvaWQqIG1fanNTdHJpbmdEYXRhOwogICAgICAgICBtdXRhYmxlIFVDaGFyKiBtX2Nv
cHlEYXRhMTY7CiAgICAgICAgIHVuc2lnbmVkIG1faGFzaEFuZEZsYWdzOwogCkBAIC04NzYsNiAr
ODkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgTENoYXIqIG1fZGF0YTg7CiAgICAgICAg
IGNvbnN0IFVDaGFyKiBtX2RhdGExNjsKICAgICB9OworICAgIHZvaWQqIG1fanNTdHJpbmdEYXRh
OwogICAgIG11dGFibGUgVUNoYXIqIG1fY29weURhdGExNjsKICAgICBtdXRhYmxlIHVuc2lnbmVk
IG1faGFzaEFuZEZsYWdzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVdyYXBwZXJXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvRE9NV3JhcHBlcldvcmxkLmNwcAkocmV2aXNpb24gMTYzODIwKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NyArNTMsNyBAQCBET01XcmFwcGVyV29ybGQ6On5ET01XcmFwcGVyV29ybGQoKQogdm9pZCBET01X
cmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBlcnMoKQogewogICAgIG1fd3JhcHBlcnMuY2xlYXIoKTsK
LSAgICBtX3N0cmluZ0NhY2hlLmNsZWFyKCk7CisvLyAgICBtX3N0cmluZ0NhY2hlLmNsZWFyKCk7
CiAKICAgICAvLyBUaGVzZSBpdGVtcyBhcmUgY3JlYXRlZCBsYXppbHkuCiAgICAgd2hpbGUgKCFt
X3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxscy5pc0VtcHR5KCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAkocmV2aXNpb24gMTYz
ODIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IGNh
biB3ZSBtYWtlIHRoaXMgcHJpdmF0ZT8KICAgICBET01PYmplY3RXcmFwcGVyTWFwIG1fd3JhcHBl
cnM7Ci0gICAgSlNTdHJpbmdDYWNoZSBtX3N0cmluZ0NhY2hlOworLy8gICAgSlNTdHJpbmdDYWNo
ZSBtX3N0cmluZ0NhY2hlOwogICAgIEhhc2hNYXA8Q1NTVmFsdWUqLCB2b2lkKj4gbV9jc3NWYWx1
ZVJvb3RzOwogCiAgICAgYm9vbCBpc05vcm1hbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOb3JtYWw7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZp
c2lvbiAxNjM4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNTk0LDExICs1OTQsMTIgQEAgaW5saW5lIEpTQzo6SlNWYWx1
ZSBqc1N0cmluZ1dpdGhDYWNoZShKUwogICAgICAgICB9CiAgICAgfQogCi0gICAgSlNTdHJpbmdD
YWNoZSYgc3RyaW5nQ2FjaGUgPSBjdXJyZW50V29ybGQoZXhlYykubV9zdHJpbmdDYWNoZTsKLSAg
ICBKU1N0cmluZ0NhY2hlOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gc3RyaW5nQ2FjaGUuYWRkKHN0
cmluZ0ltcGwsIG51bGxwdHIpOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAg
ICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IEpTQzo6anNTdHJpbmcoZXhlYywgU3RyaW5n
KHN0cmluZ0ltcGwpKTsKLSAgICByZXR1cm4gSlNDOjpKU1ZhbHVlKGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuZ2V0KCkpOworLy8gICAgSlNTdHJpbmdDYWNoZSYgc3RyaW5nQ2FjaGUgPSBjdXJy
ZW50V29ybGQoZXhlYykubV9zdHJpbmdDYWNoZTsKKy8vICAgIEpTU3RyaW5nQ2FjaGU6OkFkZFJl
c3VsdCBhZGRSZXN1bHQgPSBzdHJpbmdDYWNoZS5hZGQoc3RyaW5nSW1wbCwgbnVsbHB0cik7Cisv
LyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisvLyAgICAgICAgYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSA9IEpTQzo6anNTdHJpbmcoZXhlYywgU3RyaW5nKHN0cmluZ0ltcGwpKTsKKy8v
ICAgIHJldHVybiBKU0M6OkpTVmFsdWUoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSk7
CisgICAgcmV0dXJuIEpTQzo6anNTdHJpbmdGb3JET00oJmV4ZWMtPnZtKCksIHMpOwogfQogCiBp
bmxpbmUgU3RyaW5nIHByb3BlcnR5TmFtZVRvU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3Ry
aW5nLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvU3Rh
dGljU3RyaW5nLnBtCShyZXZpc2lvbiAxNjM4MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbQkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBA
QCBzdGF0aWMgU3RyaW5nSW1wbDo6U3RhdGljQVNDSUlMaXRlcmFsICR7CiAgICAgJGxlbmd0aCwK
ICAgICAke25hbWV9U3RyaW5nOCwKICAgICAwLAorICAgIDAsCiAgICAgU3RyaW5nSW1wbDo6U3Rh
dGljQVNDSUlMaXRlcmFsOjpzX2luaXRpYWxGbGFncyB8ICgke2hhc2h9IDw8IFN0cmluZ0ltcGw6
OlN0YXRpY0FTQ0lJTGl0ZXJhbDo6c19oYXNoU2hpZnQpCiB9OwogRU5ECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224417</attachid>
            <date>2014-02-17 13:43:51 -0800</date>
            <delta_ts>2014-02-17 17:04:14 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>128625.3.patch</filename>
            <type>text/plain</type>
            <size>16815</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MjQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE0LTAyLTE3ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgZmFzdCBtYXBwaW5nIGZyb20gU3RyaW5nSW1wbCB0byBKU1N0cmluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjI1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OldlYWtPd25lcjo6ZmluYWxp
emUpOgorICAgICAgICAgICAgLSBvbmNlIHRoZSBKU1N0cmluZyB3ZWFrbHkgb3duZWQgYnkgYSBT
dHJpbmdJbXBsIGJlY29tZWQgdW5yZWFjaGFibGUgcmVtb3ZlIHRoZSBXZWFrSW1wbC4KKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OmpzU3RyaW5nV2l0aFdlYWtP
d25lcik6CisgICAgICAgICAgICAtIGNyZWF0ZSBhIEpTU3RyaW5nIHdyYXBwaW5nIGEgU3RyaW5n
SW1wbCwgYW5kIHdlYWtseSBjYWNoZXMgdGhlIEpTU3RyaW5nIG9uIHRoZSBTdHJpbmdJbXBsLgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAg
ICAgICAgLSBpbml0aWFsaXplIGpzU3RyaW5nV2Vha093bmVyLgorICAgICAgICAoSlNDOjpWTTo6
Y3JlYXRlTGVha2VkRm9yTWFpblRocmVhZCk6CisgICAgICAgICAgICAtIGluaXRpYWxpemUganNT
dHJpbmdXZWFrT3duZXIgLSB0aGUgbWFpbiB0aHJlYWQgZ2V0cyB0byB1c2UgdGhlIHdlYWsgcG9p
bnRlcgorICAgICAgICAgICAgICBvbiBTdHJpbmdJbXBsIHRvIGNhY2hlIGEgSlNTdHJpbmcgd3Jh
cHBlci4KKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICAgICAtIHJlbmFtZWQgY3Jl
YXRlTGVha2VkIC0+IGNyZWF0ZUxlYWtlZEZvck1haW5UaHJlYWQgdG8gbWFrZSBpdCBjbGVhciB0
aGlzCisgICAgICAgICAgICAgIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gY3JldGFlIHRoZSBtYWlu
IHRocmVhZCBWTS4KKwogMjAxNC0wMi0xNyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVp
YUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093
blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTY0MDg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTgsNCArMjk4LDExIEBAIGJvb2wgSlNTdHJpbmc6OmdldFN0cmluZ1Byb3Bl
cnR5RGVzY3JpcHQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSlNTdHJpbmc6OldlYWtP
d25lcjo6ZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KQoreworICAgIFN0
cmluZ0ltcGwqIGltcGwgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oY29udGV4dCk7CisgICAg
V2Vha1NldDo6ZGVhbGxvY2F0ZShpbXBsLT53ZWFrSlNTdHJpbmcoKSk7CisgICAgaW1wbC0+c2V0
V2Vha0pTU3RyaW5nKDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTY0MDg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
NjMsNiArNjMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZyA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKKyAgICAgICAgY2xhc3MgV2Vha093bmVyIDogcHVi
bGljIFdlYWtIYW5kbGVPd25lciB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIHZpcnR1
YWwgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgICAg
ICB9OworCiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBW
TTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNwZWNpYWxpemVkVGh1bmtKSVQ7CkBAIC00MDUsNiAr
NDEwLDI4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gSlNTdHJpbmc6OmNyZWF0
ZSgqdm0sIHMuaW1wbCgpKTsKICAgICB9CiAKKyAgICBpbmxpbmUgSlNTdHJpbmcqIGpzU3RyaW5n
V2l0aFdlYWtPd25lcihWTSogdm0sIGNvbnN0IFN0cmluZyYgcykKKyAgICB7CisgICAgICAgIFdl
YWtIYW5kbGVPd25lcioganNTdHJpbmdXZWFrT3duZXIgPSB2bS0+anNTdHJpbmdXZWFrT3duZXI7
CisgICAgICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzLmltcGwoKTsKKworICAgICAgICAvLyBJZiB0
aGlzIHZtIGlzIG5vdCBhbGxvd2VkIHdlYWtseSBvd24gc3RyaW5ncyBqdXN0IGNhbGwganNTdHJp
bmcuCisgICAgICAgIGlmICghanNTdHJpbmdXZWFrT3duZXIgfHwgIWltcGwpCisgICAgICAgICAg
ICByZXR1cm4ganNTdHJpbmcodm0sIHMpOworCisgICAgICAgIC8vIENoZWNrIGZvciBhbiBleGlz
dGluZyB3ZWFrbHkgb3duZWQgSlNTdHJpbmcuCisgICAgICAgIGlmIChXZWFrSW1wbCogd2Vha0lt
cGwgPSBpbXBsLT53ZWFrSlNTdHJpbmcoKSkgeworICAgICAgICAgICAgaWYgKHdlYWtJbXBsLT5z
dGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKQorICAgICAgICAgICAgICAgIHJldHVybiBhc1N0cmlu
Zyh3ZWFrSW1wbC0+anNWYWx1ZSgpKTsKKyAgICAgICAgICAgIFdlYWtTZXQ6OmRlYWxsb2NhdGUo
d2Vha0ltcGwpOworICAgICAgICAgICAgaW1wbC0+c2V0V2Vha0pTU3RyaW5nKDApOworICAgICAg
ICB9CisKKyAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzU3RyaW5nKHZtLCBzKTsKKyAgICAg
ICAgaW1wbC0+c2V0V2Vha0pTU3RyaW5nKFdlYWtTZXQ6OmFsbG9jYXRlKHN0cmluZywganNTdHJp
bmdXZWFrT3duZXIsIGltcGwpKTsKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICB9CisKICAg
ICBpbmxpbmUgSlNTdHJpbmcqIGpzU3Vic3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcq
IHMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNT
RVJUKG9mZnNldCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy0+bGVuZ3RoKCkpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2NDA4OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcw
LDYgKzE3MCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICAsIGV4ZWN1dGFibGVBbGxvY2F0b3IoKnRoaXMpCiAjZW5kaWYKICAgICAsIGhlYXAodGhpcywg
aGVhcFR5cGUpCisgICAgLCBqc1N0cmluZ1dlYWtPd25lcigwKQogICAgICwgdm1UeXBlKHZtVHlw
ZSkKICAgICAsIGNsaWVudERhdGEoMCkKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6Om5v
Q2FsbGVyKCkpCkBAIC00MDMsOSArNDA0LDExIEBAIFBhc3NSZWZQdHI8Vk0+IFZNOjpjcmVhdGUo
SGVhcFR5cGUgaGVhcFQKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZNKERlZmF1bHQsIGhlYXBU
eXBlKSk7CiB9CiAKLVBhc3NSZWZQdHI8Vk0+IFZNOjpjcmVhdGVMZWFrZWQoSGVhcFR5cGUgaGVh
cFR5cGUpCitQYXNzUmVmUHRyPFZNPiBWTTo6Y3JlYXRlTGVha2VkRm9yTWFpblRocmVhZChIZWFw
VHlwZSBoZWFwVHlwZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKGhlYXBUeXBlKTsKKyAgICBWTSog
dm0gPSBuZXcgVk0oRGVmYXVsdCwgaGVhcFR5cGUpOworICAgIHZtLT5qc1N0cmluZ1dlYWtPd25l
ciA9IG5ldyBKU1N0cmluZzo6V2Vha093bmVyOworICAgIHJldHVybiBhZG9wdFJlZih2bSk7CiB9
CiAKIGJvb2wgVk06OnNoYXJlZEluc3RhbmNlRXhpc3RzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTY0MDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDggKzE4NCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7
CiAgICAgcHVibGljOgogICAgICAgICAvLyBXZWJDb3JlIGhhcyBhIG9uZS10by1vbmUgbWFwcGlu
ZyBvZiB0aHJlYWRzIHRvIFZNczsKLSAgICAgICAgLy8gZWl0aGVyIGNyZWF0ZSgpIG9yIGNyZWF0
ZUxlYWtlZCgpIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlCi0gICAgICAgIC8vIG9uIGEgdGhy
ZWFkLCB0aGlzIGlzIHRoZSAnZGVmYXVsdCcgVk0gKGl0IHVzZXMgdGhlCisgICAgICAgIC8vIGVp
dGhlciBjcmVhdGUoKSBvciBjcmVhdGVMZWFrZWRGb3JNYWluVGhyZWFkKCkgc2hvdWxkIG9ubHkg
YmUKKyAgICAgICAgLy8gY2FsbGVkIG9uY2Ugb24gYSB0aHJlYWQsIHRoaXMgaXMgdGhlICdkZWZh
dWx0JyBWTSAoaXQgdXNlcyB0aGUKICAgICAgICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcg
dW5pcXVpbmcgdGFibGUgZnJvbSB3dGZUaHJlYWREYXRhKS4KICAgICAgICAgLy8gQVBJIGNvbnRl
eHRzIGNyZWF0ZWQgdXNpbmcgdGhlIG5ldyBjb250ZXh0IGdyb3VwIGF3YXJlIGludGVyZmFjZQog
ICAgICAgICAvLyBjcmVhdGUgQVBJQ29udGV4dEdyb3VwIG9iamVjdHMgd2hpY2ggcmVxdWlyZSBs
ZXNzIGxvY2tpbmcgb2YgSlNDCkBAIC0yMDMsNyArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBWTSYgc2hhcmVkSW5zdGFuY2UoKTsKIAog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxWTT4gY3JlYXRlKEhl
YXBUeXBlID0gU21hbGxIZWFwKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBh
c3NSZWZQdHI8Vk0+IGNyZWF0ZUxlYWtlZChIZWFwVHlwZSA9IFNtYWxsSGVhcCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPFZNPiBjcmVhdGVMZWFrZWRGb3JN
YWluVGhyZWFkKEhlYXBUeXBlID0gU21hbGxIZWFwKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8Vk0+IGNyZWF0ZUNvbnRleHRHcm91cChIZWFwVHlwZSA9IFNtYWxsSGVhcCk7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIH5WTSgpOwogCkBAIC0yMjIsNyArMjIyLDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAvLyBUaGUgaGVhcCBzaG91bGQgYmUganVzdCBhZnRlciBleGVjdXRh
YmxlQWxsb2NhdG9yIGFuZCBiZWZvcmUgb3RoZXIgbWVtYmVycyB0byBlbnN1cmUgdGhhdCBpdCdz
CiAgICAgICAgIC8vIGRlc3RydWN0ZWQgYWZ0ZXIgYWxsIHRoZSBvYmplY3RzIHRoYXQgcmVmZXJl
bmNlIGl0LgogICAgICAgICBIZWFwIGhlYXA7Ci0gICAgICAgIAorCisgICAgICAgIC8vIFVzZWQg
dG8gbWFuYWdlIHdlYWsgcmVmZXJlbmNlcyBmcm9tIFN0cmluZ0ltcGxzIHRvIEpTU3RyaW5ncy4K
KyAgICAgICAgV2Vha0hhbmRsZU93bmVyKiBqc1N0cmluZ1dlYWtPd25lcjsKKwogI2lmIEVOQUJM
RShERkdfSklUKQogICAgICAgICBPd25QdHI8REZHOjpMb25nTGl2ZWRTdGF0ZT4gZGZnU3RhdGU7
CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MjQ2KQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAx
NC0wMi0xNyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGZhc3QgbWFwcGluZyBmcm9tIFN0cmluZ0ltcGwgdG8gSlNTdHJpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODYyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB3ZWFrIHBvaW50
ZXIgZnJvbSBTdHJpbmdJbXBsIHRvIEpTU3RyaW5nLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6On5TdHJpbmdJbXBsKToKKyAg
ICAgICAgICAgIC0gQVNTRVJUIG1fd2Vha0pTU3RyaW5nIGlzIG51bGwuCisgICAgICAgICogd3Rm
L3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpTdHJpbmdJbXBs
KToKKyAgICAgICAgICAgIC0gaW5pdGlhbGl6ZSBtX3dlYWtKU1N0cmluZy4KKyAgICAgICAgKFdU
Rjo6U3RyaW5nSW1wbDo6d2Vha0pTU3RyaW5nKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
c2V0V2Vha0pTU3RyaW5nKToKKyAgICAgICAgICAgIC0gYWRkZWQgYWNlc3NvcnMgZm9yIG1fd2Vh
a0pTU3RyaW5nLgorCiAyMDE0LTAyLTE3ICBSeWFuIExvcnRpZSAgPGRlc3J0QGRlc3J0LmNhPgog
CiAgICAgICAgIEVuYWJsZSBERkdfSklUIG9uIEZyZWVCU0QKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmNwcAkocmV2aXNpb24gMTY0MDg4KQorKysgU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2Ug
V1RGIHsKIAogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKLUNPTVBJTEVfQVNTRVJUKHNpemVv
ZihTdHJpbmdJbXBsKSA9PSAyICogc2l6ZW9mKGludCkgKyAzICogc2l6ZW9mKHZvaWQqKSwgU3Ry
aW5nSW1wbF9zaG91bGRfc3RheV9zbWFsbCk7CitDT01QSUxFX0FTU0VSVChzaXplb2YoU3RyaW5n
SW1wbCkgPT0gMiAqIHNpemVvZihpbnQpICsgNCAqIHNpemVvZih2b2lkKiksIFN0cmluZ0ltcGxf
c2hvdWxkX3N0YXlfc21hbGwpOwogCiAjaWZkZWYgU1RSSU5HX1NUQVRTCiBTdHJpbmdTdGF0cyBT
dHJpbmdJbXBsOjptX3N0cmluZ1N0YXRzOwpAQCAtMTEwLDYgKzExMCw3IEBAIHZvaWQgU3RyaW5n
U3RhdHM6OnByaW50U3RhdHMoKQogU3RyaW5nSW1wbDo6flN0cmluZ0ltcGwoKQogewogICAgIEFT
U0VSVCghaXNTdGF0aWMoKSk7CisgICAgQVNTRVJUKCFtX3dlYWtKU1N0cmluZyk7CiAKICAgICBT
VFJJTkdfU1RBVFNfUkVNT1ZFX1NUUklORyh0aGlzKTsKIApJbmRleDogU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgJKHJldmlzaW9uIDE2NDA4OCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RydWN0IElkZW50aWZpZXJDCiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFy
VHJhbnNsYXRvcjsKIH0KIAorbmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgV2Vha0ltcGw7Cit9
CisKIG5hbWVzcGFjZSBXVEYgewogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3I7CkBAIC0xNjIs
NiArMTY2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRGbGFn
SXNTdGF0aWNTdHJpbmcpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1f
ZGF0YTE2KGNoYXJhY3RlcnMpCisgICAgICAgICwgbV93ZWFrSlNTdHJpbmcoMCkKICAgICAgICAg
LCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnSXNJZGVudGlmaWVyIHwgQnVmZmVyT3duZWQpCiAg
ICAgewogICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaGFzaCBpcyBjb21wdXRlZCBzbyB0aGF0
IEF0b21pY1N0cmluZ0hhc2ggY2FuIGNhbGwgZXhpc3RpbmdIYXNoKCkKQEAgLTE3OSw2ICsxODQs
NyBAQCBwcml2YXRlOgogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEZsYWdJc1N0YXRp
Y1N0cmluZykKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChj
aGFyYWN0ZXJzKQorICAgICAgICAsIG1fd2Vha0pTU3RyaW5nKDApCiAgICAgICAgICwgbV9oYXNo
QW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBzX2hhc2hGbGFnSXNJZGVudGlmaWVyIHwg
QnVmZmVyT3duZWQpCiAgICAgewogICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgaGFzaCBpcyBj
b21wdXRlZCBzbyB0aGF0IEF0b21pY1N0cmluZ0hhc2ggY2FuIGNhbGwgZXhpc3RpbmdIYXNoKCkK
QEAgLTE5Niw2ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZD
b3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9k
YXRhOCh0YWlsUG9pbnRlcjxMQ2hhcj4oKSkKKyAgICAgICAgLCBtX3dlYWtKU1N0cmluZygwKQog
ICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVySW50
ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhOCk7CkBAIC0yMDksNiArMjE2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAg
ICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTE2KHRhaWxQb2ludGVy
PFVDaGFyPigpKQorICAgICAgICAsIG1fd2Vha0pTU3RyaW5nKDApCiAgICAgICAgICwgbV9oYXNo
QW5kRmxhZ3MoQnVmZmVySW50ZXJuYWwpCiAgICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYp
OwpAQCAtMjIyLDYgKzIzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV9yZWZDb3VudChzX3Jl
ZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBt
X2RhdGE4KGNoYXJhY3RlcnMubGVha1B0cigpKQorICAgICAgICAsIG1fd2Vha0pTU3RyaW5nKDAp
CiAgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJP
d25lZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGE4KTsKQEAgLTIzNSw2ICsyNDQsNyBA
QCBwcml2YXRlOgogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAg
ICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykK
KyAgICAgICAgLCBtX3dlYWtKU1N0cmluZygwKQogICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1
ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKQEAgLTI0Nyw2
ICsyNTcsNyBAQCBwcml2YXRlOgogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3Jl
bWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFy
YWN0ZXJzKQorICAgICAgICAsIG1fd2Vha0pTU3RyaW5nKDApCiAgICAgICAgICwgbV9oYXNoQW5k
RmxhZ3Moc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX2RhdGE4KTsKQEAgLTI2MCw2ICsyNzEsNyBAQCBwcml2YXRlOgogICAgICAg
ICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChs
ZW5ndGgpCiAgICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycy5sZWFrUHRyKCkpCisgICAgICAg
ICwgbV93ZWFrSlNTdHJpbmcoMCkKICAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJPd25l
ZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CkBAIC0yNzMsNiArMjg1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAg
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycykKKyAg
ICAgICAgLCBtX3dlYWtKU1N0cmluZygwKQogICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFz
aEZsYWc4Qml0QnVmZmVyIHwgQnVmZmVyU3Vic3RyaW5nKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGlzOEJpdCgpKTsKQEAgLTI5MCw2ICszMDMsNyBAQCBwcml2YXRlOgogICAgICAgICA6IG1fcmVm
Q291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAg
ICAgICAgICwgbV9kYXRhMTYoY2hhcmFjdGVycykKKyAgICAgICAgLCBtX3dlYWtKU1N0cmluZygw
KQogICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlclN1YnN0cmluZykKICAgICB7CiAgICAg
ICAgIEFTU0VSVCghaXM4Qml0KCkpOwpAQCAtMzA5LDYgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIC8vIFdlIGV4cGVjdCBtX2xlbmd0aCB0byBiZSBpbml0aWFsaXplZCB0byAwIGFzIHdlIHVz
ZSBpdAogICAgICAgICAvLyB0byByZXByZXNlbnQgYSBudWxsIHRlcm1pbmF0ZWQgYnVmZmVyLgog
ICAgICAgICAsIG1fZGF0YTgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCZtX2xlbmd0
aCkpCisgICAgICAgICwgbV93ZWFrSlNTdHJpbmcoMCkKICAgICB7CiAgICAgICAgIEFTU0VSVCht
X2RhdGE4KTsKICAgICAgICAgLy8gU2V0IHRoZSBoYXNoIGVhcmx5LCBzbyB0aGF0IGFsbCBlbXB0
eSB1bmlxdWUgU3RyaW5nSW1wbHMgaGF2ZSBhIGhhc2gsCkBAIC02MTIsNiArNjI3LDkgQEAgcHVi
bGljOgogICAgICAgICBtX3JlZkNvdW50ID0gdGVtcFJlZkNvdW50OwogICAgIH0KIAorICAgIEpT
Qzo6V2Vha0ltcGwqIHdlYWtKU1N0cmluZygpIHsgcmV0dXJuIG1fd2Vha0pTU3RyaW5nOyB9Cisg
ICAgdm9pZCBzZXRXZWFrSlNTdHJpbmcoSlNDOjpXZWFrSW1wbCogd2Vha0pTU3RyaW5nKSB7IG1f
d2Vha0pTU3RyaW5nID0gd2Vha0pTU3RyaW5nOyB9CisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCk7CiAKICAgICAvLyBGSVhNRTogRG9lcyB0aGlzIHJl
YWxseSBiZWxvbmcgaW4gU3RyaW5nSW1wbD8KQEAgLTg1MSw2ICs4NjksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHVuc2lnbmVkIG1fcmVmQ291bnQ7CiAgICAgICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwog
ICAgICAgICBjb25zdCBMQ2hhciogbV9kYXRhODsKKyAgICAgICAgSlNDOjpXZWFrSW1wbCogbV93
ZWFrSlNTdHJpbmc7CiAgICAgICAgIG11dGFibGUgVUNoYXIqIG1fY29weURhdGExNjsKICAgICAg
ICAgdW5zaWduZWQgbV9oYXNoQW5kRmxhZ3M7CiAKQEAgLTg3Niw2ICs4OTUsNyBAQCBwcml2YXRl
OgogICAgICAgICBjb25zdCBMQ2hhciogbV9kYXRhODsKICAgICAgICAgY29uc3QgVUNoYXIqIG1f
ZGF0YTE2OwogICAgIH07CisgICAgSlNDOjpXZWFrSW1wbCogbV93ZWFrSlNTdHJpbmc7CiAgICAg
bXV0YWJsZSBVQ2hhciogbV9jb3B5RGF0YTE2OwogICAgIG11dGFibGUgdW5zaWduZWQgbV9oYXNo
QW5kRmxhZ3M7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MjQ2KQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTQt
MDItMTcgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBmYXN0IG1hcHBpbmcgZnJvbSBTdHJpbmdJbXBsIHRvIEpTU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIEpTU3RyaW5n
Q2FjaGUgZnJvbSBXZWJDb3JlOyBjYWxsIEpTQzo6anNTdHJpbmdXaXRoV2Vha093bmVyIGluc3Rl
YWQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpjbGVhcldyYXBwZXJzKToKKyAgICAgICAgICAg
IC0gcmVtb3ZlZCBKU1N0cmluZ0NhY2hlLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBw
ZXJXb3JsZC5oOgorICAgICAgICAgICAgLSByZW1vdmVkIEpTU3RyaW5nQ2FjaGUuCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpqc1N0cmlu
Z1dpdGhDYWNoZSk6CisgICAgICAgICAgICAtIGNhbGwganNTdHJpbmdXaXRoV2Vha093bmVyIGlu
c2VhZCBvZiB1c2luZyBKU1N0cmluZ0NhY2hlLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1v
blZNKToKKyAgICAgICAgICAgIC0gcmVuYW1lZCBjcmVhdGVMZWFrZWQgLT4gY3JlYXRlTGVha2Vk
Rm9yTWFpblRocmVhZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5w
bToKKyAgICAgICAgKEdlbmVyYXRlU3RyaW5ncyk6CisgICAgICAgICAgICAtIFN0cmluZ0ltcGwg
aGFzIGFuIGFkZGl0aW9uYWwgZmllbGQuCisKIDIwMTQtMDItMTcgIFNlcmdpbyBDb3JyZWlhICA8
c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXBsYWNlIHVzZXMgb2Yg
UGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0
b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxk
LmNwcAkocmV2aXNpb24gMTY0MDg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9N
V3JhcHBlcldvcmxkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNiBAQCBET01XcmFw
cGVyV29ybGQ6On5ET01XcmFwcGVyV29ybGQoKQogdm9pZCBET01XcmFwcGVyV29ybGQ6OmNsZWFy
V3JhcHBlcnMoKQogewogICAgIG1fd3JhcHBlcnMuY2xlYXIoKTsKLSAgICBtX3N0cmluZ0NhY2hl
LmNsZWFyKCk7CiAKICAgICAvLyBUaGVzZSBpdGVtcyBhcmUgY3JlYXRlZCBsYXppbHkuCiAgICAg
d2hpbGUgKCFtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxscy5pc0VtcHR5KCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaAkocmV2
aXNpb24gMTY0MDg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldv
cmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAgY2xhc3MgSlNET01XcmFwcGVy
OwogY2xhc3MgU2NyaXB0Q29udHJvbGxlcjsKIAogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBKU0M6
OldlYWs8SlNDOjpKU09iamVjdD4+IERPTU9iamVjdFdyYXBwZXJNYXA7Ci10eXBlZGVmIEpTQzo6
V2Vha0dDTWFwPFN0cmluZ0ltcGwqLCBKU0M6OkpTU3RyaW5nLCBQdHJIYXNoPFN0cmluZ0ltcGwq
Pj4gSlNTdHJpbmdDYWNoZTsKIAogY2xhc3MgRE9NV3JhcHBlcldvcmxkIDogcHVibGljIFJlZkNv
dW50ZWQ8RE9NV3JhcHBlcldvcmxkPiB7CiBwdWJsaWM6CkBAIC01MSw3ICs1MCw2IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEZJWE1FOiBjYW4gd2UgbWFrZSB0aGlzIHByaXZhdGU/CiAgICAgRE9NT2Jq
ZWN0V3JhcHBlck1hcCBtX3dyYXBwZXJzOwotICAgIEpTU3RyaW5nQ2FjaGUgbV9zdHJpbmdDYWNo
ZTsKICAgICBIYXNoTWFwPENTU1ZhbHVlKiwgdm9pZCo+IG1fY3NzVmFsdWVSb290czsKIAogICAg
IGJvb2wgaXNOb3JtYWwoKSBjb25zdCB7IHJldHVybiBtX2lzTm9ybWFsOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNpb24gMTY0MDg4KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5NCwxMSArNTk0LDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ1dpdGhD
YWNoZShKUwogICAgICAgICB9CiAgICAgfQogCi0gICAgSlNTdHJpbmdDYWNoZSYgc3RyaW5nQ2Fj
aGUgPSBjdXJyZW50V29ybGQoZXhlYykubV9zdHJpbmdDYWNoZTsKLSAgICBKU1N0cmluZ0NhY2hl
OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gc3RyaW5nQ2FjaGUuYWRkKHN0cmluZ0ltcGwsIG51bGxw
dHIpOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSA9IEpTQzo6anNTdHJpbmcoZXhlYywgU3RyaW5nKHN0cmluZ0ltcGwpKTsK
LSAgICByZXR1cm4gSlNDOjpKU1ZhbHVlKGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkp
OworICAgIHJldHVybiBKU0M6OmpzU3RyaW5nV2l0aFdlYWtPd25lcigmZXhlYy0+dm0oKSwgcyk7
CiB9CiAKIGlubGluZSBTdHJpbmcgcHJvcGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAxNjQwODgpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyAr
MjE1LDcgQEAgVk0qIEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKQogI2VuZGlmCiAgICAgaWYg
KCF2bSkgewogICAgICAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7
Ci0gICAgICAgIHZtID0gVk06OmNyZWF0ZUxlYWtlZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKKyAg
ICAgICAgdm0gPSBWTTo6Y3JlYXRlTGVha2VkRm9yTWFpblRocmVhZChMYXJnZUhlYXApLmxlYWtS
ZWYoKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIFBhc3NPd25QdHI8V2ViU2FmZUdDQWN0
aXZpdHlDYWxsYmFjaz4gYWN0aXZpdHlDYWxsYmFjayA9IFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OmNyZWF0ZSgmdm0tPmhlYXApOwogICAgICAgICB2bS0+aGVhcC5zZXRBY3Rpdml0eUNhbGxi
YWNrKGFjdGl2aXR5Q2FsbGJhY2spOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9TdGF0aWNTdHJpbmcucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0JKHJldmlzaW9uIDE2NDA4OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvU3RhdGljU3RyaW5nLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCw3IEBAIHN0YXRpYyBTdHJpbmdJbXBsOjpTdGF0aWNBU0NJSUxpdGVyYWwgJHsK
ICAgICAkbGVuZ3RoLAogICAgICR7bmFtZX1TdHJpbmc4LAogICAgIDAsCisgICAgMCwKICAgICBT
dHJpbmdJbXBsOjpTdGF0aWNBU0NJSUxpdGVyYWw6OnNfaW5pdGlhbEZsYWdzIHwgKCR7aGFzaH0g
PDwgU3RyaW5nSW1wbDo6U3RhdGljQVNDSUlMaXRlcmFsOjpzX2hhc2hTaGlmdCkKIH07CiBFTkQK
</data>
<flag name="review"
          id="248504"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224447</attachid>
            <date>2014-02-17 17:04:14 -0800</date>
            <delta_ts>2014-02-17 17:04:14 -0800</delta_ts>
            <desc>Already reviewed, just for EWS &amp; giggles.</desc>
            <filename>128625.4.patch</filename>
            <type>text/plain</type>
            <size>16734</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MjQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE0LTAyLTE3ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgZmFzdCBtYXBwaW5nIGZyb20gU3RyaW5nSW1wbCB0byBKU1N0cmluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjI1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4gJiBBbmRyZWFzIEtsaW5nLgorCisgICAg
ICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpXZWFr
T3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgICAgIC0gb25jZSB0aGUgSlNTdHJpbmcgd2Vha2x5
IG93bmVkIGJ5IGEgU3RyaW5nSW1wbCBiZWNvbWVkIHVucmVhY2hhYmxlIHJlbW92ZSB0aGUgV2Vh
a0ltcGwuCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpqc1N0
cmluZ1dpdGhXZWFrT3duZXIpOgorICAgICAgICAgICAgLSBjcmVhdGUgYSBKU1N0cmluZyB3cmFw
cGluZyBhIFN0cmluZ0ltcGwsIGFuZCB3ZWFrbHkgY2FjaGVzIHRoZSBKU1N0cmluZyBvbiB0aGUg
U3RyaW5nSW1wbC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06
OlZNKToKKyAgICAgICAgICAgIC0gaW5pdGlhbGl6ZSBqc1N0cmluZ1dlYWtPd25lci4KKyAgICAg
ICAgKEpTQzo6Vk06OmNyZWF0ZUxlYWtlZEZvck1haW5UaHJlYWQpOgorICAgICAgICAgICAgLSBp
bml0aWFsaXplIGpzU3RyaW5nV2Vha093bmVyIC0gdGhlIG1haW4gdGhyZWFkIGdldHMgdG8gdXNl
IHRoZSB3ZWFrIHBvaW50ZXIKKyAgICAgICAgICAgICAgb24gU3RyaW5nSW1wbCB0byBjYWNoZSBh
IEpTU3RyaW5nIHdyYXBwZXIuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAgICAg
LSByZW5hbWVkIGNyZWF0ZUxlYWtlZCAtPiBjcmVhdGVMZWFrZWRGb3JNYWluVGhyZWFkIHRvIG1h
a2UgaXQgY2xlYXIgdGhpcworICAgICAgICAgICAgICBzaG91bGQgb25seSBiZSB1c2VkIHRvIGNy
ZXRhZSB0aGUgbWFpbiB0aHJlYWQgVk0uCisKIDIwMTQtMDItMTcgIFNlcmdpbyBDb3JyZWlhICA8
c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXBsYWNlIHVzZXMgb2Yg
UGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0
b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHJl
dmlzaW9uIDE2NDA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDQgKzI5OCwxMSBAQCBib29sIEpTU3RyaW5nOjpn
ZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEpT
U3RyaW5nOjpXZWFrT3duZXI6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4
dCkKK3sKKyAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KGNv
bnRleHQpOworICAgIFdlYWtTZXQ6OmRlYWxsb2NhdGUoaW1wbC0+d2Vha0pTU3RyaW5nKCkpOwor
ICAgIGltcGwtPnNldFdlYWtKU1N0cmluZyhudWxscHRyKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlz
aW9uIDE2NDA4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBwdWJsaWM6CisgICAgICAgIGNs
YXNzIFdlYWtPd25lciBmaW5hbCA6IHB1YmxpYyBXZWFrSGFuZGxlT3duZXIgeworICAgICAgICBw
dWJsaWM6CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+
LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICAgICAgfTsKKwogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgVk07CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBTcGVjaWFsaXplZFRodW5rSklUOwpAQCAtNDA1LDYgKzQxMCwyOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGUoKnZtLCBzLmltcGwoKSk7CiAgICAg
fQogCisgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmluZ1dpdGhXZWFrT3duZXIoVk0qIHZtLCBj
b25zdCBTdHJpbmcmIHMpCisgICAgeworICAgICAgICBXZWFrSGFuZGxlT3duZXIqIGpzU3RyaW5n
V2Vha093bmVyID0gdm0tPmpzU3RyaW5nV2Vha093bmVyLmdldCgpOworICAgICAgICBTdHJpbmdJ
bXBsKiBpbXBsID0gcy5pbXBsKCk7CisKKyAgICAgICAgLy8gSWYgdGhpcyB2bSBpcyBub3QgYWxs
b3dlZCB0byB3ZWFrbHkgb3duIHN0cmluZ3MganVzdCBjYWxsIGpzU3RyaW5nLgorICAgICAgICBp
ZiAoIWpzU3RyaW5nV2Vha093bmVyIHx8ICFpbXBsKQorICAgICAgICAgICAgcmV0dXJuIGpzU3Ry
aW5nKHZtLCBzKTsKKworICAgICAgICAvLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgd2Vha2x5IG93
bmVkIEpTU3RyaW5nLgorICAgICAgICBpZiAoV2Vha0ltcGwqIHdlYWtJbXBsID0gaW1wbC0+d2Vh
a0pTU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIGlmICh3ZWFrSW1wbC0+c3RhdGUoKSA9PSBXZWFr
SW1wbDo6TGl2ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcod2Vha0ltcGwtPmpz
VmFsdWUoKSk7CisgICAgICAgICAgICBXZWFrU2V0OjpkZWFsbG9jYXRlKHdlYWtJbXBsKTsKKyAg
ICAgICAgICAgIGltcGwtPnNldFdlYWtKU1N0cmluZyhudWxscHRyKTsKKyAgICAgICAgfQorCisg
ICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBqc1N0cmluZyh2bSwgcyk7CisgICAgICAgIGltcGwt
PnNldFdlYWtKU1N0cmluZyhXZWFrU2V0OjphbGxvY2F0ZShzdHJpbmcsIGpzU3RyaW5nV2Vha093
bmVyLCBpbXBsKSk7CisgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgfQorCiAgICAgaW5saW5l
IEpTU3RyaW5nKiBqc1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChvZmZz
ZXQgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMtPmxlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNjQwODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw5ICs0MDMs
MTEgQEAgUGFzc1JlZlB0cjxWTT4gVk06OmNyZWF0ZShIZWFwVHlwZSBoZWFwVAogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgVk0oRGVmYXVsdCwgaGVhcFR5cGUpKTsKIH0KIAotUGFzc1JlZlB0cjxW
TT4gVk06OmNyZWF0ZUxlYWtlZChIZWFwVHlwZSBoZWFwVHlwZSkKK1Bhc3NSZWZQdHI8Vk0+IFZN
OjpjcmVhdGVMZWFrZWRGb3JNYWluVGhyZWFkKEhlYXBUeXBlIGhlYXBUeXBlKQogewotICAgIHJl
dHVybiBjcmVhdGUoaGVhcFR5cGUpOworICAgIFZNKiB2bSA9IG5ldyBWTShEZWZhdWx0LCBoZWFw
VHlwZSk7CisgICAgdm0tPmpzU3RyaW5nV2Vha093bmVyID0gYWRvcHRQdHIobmV3IEpTU3RyaW5n
OjpXZWFrT3duZXIpOworICAgIHJldHVybiBhZG9wdFJlZih2bSk7CiB9CiAKIGJvb2wgVk06OnNo
YXJlZEluc3RhbmNlRXhpc3RzKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
cmV2aXNpb24gMTY0MDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
d29ya2luZyBjb3B5KQpAQCAtMTg0LDggKzE4NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgcHVibGljOgog
ICAgICAgICAvLyBXZWJDb3JlIGhhcyBhIG9uZS10by1vbmUgbWFwcGluZyBvZiB0aHJlYWRzIHRv
IFZNczsKLSAgICAgICAgLy8gZWl0aGVyIGNyZWF0ZSgpIG9yIGNyZWF0ZUxlYWtlZCgpIHNob3Vs
ZCBvbmx5IGJlIGNhbGxlZCBvbmNlCi0gICAgICAgIC8vIG9uIGEgdGhyZWFkLCB0aGlzIGlzIHRo
ZSAnZGVmYXVsdCcgVk0gKGl0IHVzZXMgdGhlCisgICAgICAgIC8vIGVpdGhlciBjcmVhdGUoKSBv
ciBjcmVhdGVMZWFrZWRGb3JNYWluVGhyZWFkKCkgc2hvdWxkIG9ubHkgYmUKKyAgICAgICAgLy8g
Y2FsbGVkIG9uY2Ugb24gYSB0aHJlYWQsIHRoaXMgaXMgdGhlICdkZWZhdWx0JyBWTSAoaXQgdXNl
cyB0aGUKICAgICAgICAgLy8gdGhyZWFkJ3MgZGVmYXVsdCBzdHJpbmcgdW5pcXVpbmcgdGFibGUg
ZnJvbSB3dGZUaHJlYWREYXRhKS4KICAgICAgICAgLy8gQVBJIGNvbnRleHRzIGNyZWF0ZWQgdXNp
bmcgdGhlIG5ldyBjb250ZXh0IGdyb3VwIGF3YXJlIGludGVyZmFjZQogICAgICAgICAvLyBjcmVh
dGUgQVBJQ29udGV4dEdyb3VwIG9iamVjdHMgd2hpY2ggcmVxdWlyZSBsZXNzIGxvY2tpbmcgb2Yg
SlNDCkBAIC0yMDMsNyArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBWTSYgc2hhcmVkSW5zdGFuY2UoKTsKIAogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxWTT4gY3JlYXRlKEhlYXBUeXBlID0gU21hbGxI
ZWFwKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NSZWZQdHI8Vk0+IGNy
ZWF0ZUxlYWtlZChIZWFwVHlwZSA9IFNtYWxsSGVhcCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBQYXNzUmVmUHRyPFZNPiBjcmVhdGVMZWFrZWRGb3JNYWluVGhyZWFkKEhlYXBU
eXBlID0gU21hbGxIZWFwKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Vk0+IGNyZWF0ZUNv
bnRleHRHcm91cChIZWFwVHlwZSA9IFNtYWxsSGVhcCk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIH5WTSgpOwogCkBAIC0yMjIsNyArMjIyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAvLyBUaGUgaGVhcCBzaG91bGQgYmUganVzdCBhZnRlciBleGVjdXRhYmxlQWxsb2NhdG9yIGFu
ZCBiZWZvcmUgb3RoZXIgbWVtYmVycyB0byBlbnN1cmUgdGhhdCBpdCdzCiAgICAgICAgIC8vIGRl
c3RydWN0ZWQgYWZ0ZXIgYWxsIHRoZSBvYmplY3RzIHRoYXQgcmVmZXJlbmNlIGl0LgogICAgICAg
ICBIZWFwIGhlYXA7Ci0gICAgICAgIAorCisgICAgICAgIC8vIFVzZWQgdG8gbWFuYWdlIHdlYWsg
cmVmZXJlbmNlcyBmcm9tIFN0cmluZ0ltcGxzIHRvIEpTU3RyaW5ncy4KKyAgICAgICAgT3duUHRy
PFdlYWtIYW5kbGVPd25lcj4ganNTdHJpbmdXZWFrT3duZXI7CisKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAgICAgT3duUHRyPERGRzo6TG9uZ0xpdmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDI0NikKKysrIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTQtMDItMTcg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBmYXN0IG1hcHBpbmcgZnJvbSBTdHJpbmdJbXBsIHRvIEpTU3RyaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2MjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZiBHYXJlbiAmIEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgQWRkIHdlYWsg
cG9pbnRlciBmcm9tIFN0cmluZ0ltcGwgdG8gSlNTdHJpbmcuCisKKyAgICAgICAgKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6flN0cmluZ0ltcGwp
OgorICAgICAgICAgICAgLSBBU1NFUlQgbV93ZWFrSlNTdHJpbmcgaXMgbnVsbC4KKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OlN0cmlu
Z0ltcGwpOgorICAgICAgICAgICAgLSBpbml0aWFsaXplIG1fd2Vha0pTU3RyaW5nLgorICAgICAg
ICAoV1RGOjpTdHJpbmdJbXBsOjp3ZWFrSlNTdHJpbmcpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpzZXRXZWFrSlNTdHJpbmcpOgorICAgICAgICAgICAgLSBhZGRlZCBhY2Vzc29ycyBmb3Ig
bV93ZWFrSlNTdHJpbmcuCisKIDIwMTQtMDItMTcgIFJ5YW4gTG9ydGllICA8ZGVzcnRAZGVzcnQu
Y2E+CiAKICAgICAgICAgRW5hYmxlIERGR19KSVQgb24gRnJlZUJTRApJbmRleDogU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwCShyZXZpc2lvbiAxNjQwODgpCisrKyBTb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVz
cGFjZSBXVEYgewogCiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAotQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFN0cmluZ0ltcGwpID09IDIgKiBzaXplb2YoaW50KSArIDMgKiBzaXplb2Yodm9pZCop
LCBTdHJpbmdJbXBsX3Nob3VsZF9zdGF5X3NtYWxsKTsKK0NPTVBJTEVfQVNTRVJUKHNpemVvZihT
dHJpbmdJbXBsKSA9PSAyICogc2l6ZW9mKGludCkgKyA0ICogc2l6ZW9mKHZvaWQqKSwgU3RyaW5n
SW1wbF9zaG91bGRfc3RheV9zbWFsbCk7CiAKICNpZmRlZiBTVFJJTkdfU1RBVFMKIFN0cmluZ1N0
YXRzIFN0cmluZ0ltcGw6Om1fc3RyaW5nU3RhdHM7CkBAIC0xMTAsNiArMTEwLDcgQEAgdm9pZCBT
dHJpbmdTdGF0czo6cHJpbnRTdGF0cygpCiBTdHJpbmdJbXBsOjp+U3RyaW5nSW1wbCgpCiB7CiAg
ICAgQVNTRVJUKCFpc1N0YXRpYygpKTsKKyAgICBBU1NFUlQoIW1fd2Vha0pTU3RyaW5nKTsKIAog
ICAgIFNUUklOR19TVEFUU19SRU1PVkVfU1RSSU5HKHRoaXMpOwogCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTY0MDg4KQorKysgU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDEwIEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckMKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9t
VUNoYXJUcmFuc2xhdG9yOwogfQogCituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBXZWFrSW1w
bDsKK30KKwogbmFtZXNwYWNlIFdURiB7CiAKIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvcjsKQEAg
LTE2Miw2ICsxNjYsNyBAQCBwcml2YXRlOgogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3Vu
dEZsYWdJc1N0YXRpY1N0cmluZykKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAg
ICwgbV9kYXRhMTYoY2hhcmFjdGVycykKKyAgICAgICAgLCBtX3dlYWtKU1N0cmluZyhudWxscHRy
KQogICAgICAgICAsIG1faGFzaEFuZEZsYWdzKHNfaGFzaEZsYWdJc0lkZW50aWZpZXIgfCBCdWZm
ZXJPd25lZCkKICAgICB7CiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBoYXNoIGlzIGNvbXB1
dGVkIHNvIHRoYXQgQXRvbWljU3RyaW5nSGFzaCBjYW4gY2FsbCBleGlzdGluZ0hhc2goKQpAQCAt
MTc5LDYgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50
RmxhZ0lzU3RhdGljU3RyaW5nKQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAg
LCBtX2RhdGE4KGNoYXJhY3RlcnMpCisgICAgICAgICwgbV93ZWFrSlNTdHJpbmcobnVsbHB0cikK
ICAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZs
YWdJc0lkZW50aWZpZXIgfCBCdWZmZXJPd25lZCkKICAgICB7CiAgICAgICAgIC8vIEVuc3VyZSB0
aGF0IHRoZSBoYXNoIGlzIGNvbXB1dGVkIHNvIHRoYXQgQXRvbWljU3RyaW5nSGFzaCBjYW4gY2Fs
bCBleGlzdGluZ0hhc2goKQpAQCAtMTk2LDYgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIDog
bV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKICAgICAgICAgLCBtX2RhdGE4KHRhaWxQb2ludGVyPExDaGFyPigpKQorICAgICAgICAsIG1f
d2Vha0pTU3RyaW5nKG51bGxwdHIpCiAgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19oYXNoRmxh
ZzhCaXRCdWZmZXIgfCBCdWZmZXJJbnRlcm5hbCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2Rh
dGE4KTsKQEAgLTIwOSw2ICsyMTYsNyBAQCBwcml2YXRlOgogICAgICAgICA6IG1fcmVmQ291bnQo
c19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAg
ICwgbV9kYXRhMTYodGFpbFBvaW50ZXI8VUNoYXI+KCkpCisgICAgICAgICwgbV93ZWFrSlNTdHJp
bmcobnVsbHB0cikKICAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhCdWZmZXJJbnRlcm5hbCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtX2RhdGExNik7CkBAIC0yMjIsNiArMjMwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1lbnQpCiAgICAgICAgICwg
bV9sZW5ndGgobGVuZ3RoKQogICAgICAgICAsIG1fZGF0YTgoY2hhcmFjdGVycy5sZWFrUHRyKCkp
CisgICAgICAgICwgbV93ZWFrSlNTdHJpbmcobnVsbHB0cikKICAgICAgICAgLCBtX2hhc2hBbmRG
bGFncyhzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlck93bmVkKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fZGF0YTgpOwpAQCAtMjM1LDYgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIDog
bV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKICAgICAgICAgLCBtX2RhdGExNihjaGFyYWN0ZXJzKQorICAgICAgICAsIG1fd2Vha0pTU3Ry
aW5nKG51bGxwdHIpCiAgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVySW50ZXJuYWwpCiAg
ICAgewogICAgICAgICBBU1NFUlQobV9kYXRhMTYpOwpAQCAtMjQ3LDYgKzI1Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIDogbV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAs
IG1fbGVuZ3RoKGxlbmd0aCkKICAgICAgICAgLCBtX2RhdGE4KGNoYXJhY3RlcnMpCisgICAgICAg
ICwgbV93ZWFrSlNTdHJpbmcobnVsbHB0cikKICAgICAgICAgLCBtX2hhc2hBbmRGbGFncyhzX2hh
c2hGbGFnOEJpdEJ1ZmZlciB8IEJ1ZmZlckludGVybmFsKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fZGF0YTgpOwpAQCAtMjYwLDYgKzI3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV9yZWZD
b3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAg
ICAgICAgLCBtX2RhdGExNihjaGFyYWN0ZXJzLmxlYWtQdHIoKSkKKyAgICAgICAgLCBtX3dlYWtK
U1N0cmluZyhudWxscHRyKQogICAgICAgICAsIG1faGFzaEFuZEZsYWdzKEJ1ZmZlck93bmVkKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fZGF0YTE2KTsKQEAgLTI3Myw2ICsyODUsNyBAQCBwcml2
YXRlOgogICAgICAgICA6IG1fcmVmQ291bnQoc19yZWZDb3VudEluY3JlbWVudCkKICAgICAgICAg
LCBtX2xlbmd0aChsZW5ndGgpCiAgICAgICAgICwgbV9kYXRhOChjaGFyYWN0ZXJzKQorICAgICAg
ICAsIG1fd2Vha0pTU3RyaW5nKG51bGxwdHIpCiAgICAgICAgICwgbV9oYXNoQW5kRmxhZ3Moc19o
YXNoRmxhZzhCaXRCdWZmZXIgfCBCdWZmZXJTdWJzdHJpbmcpCiAgICAgewogICAgICAgICBBU1NF
UlQoaXM4Qml0KCkpOwpAQCAtMjkwLDYgKzMwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIDogbV9y
ZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkK
ICAgICAgICAgLCBtX2RhdGExNihjaGFyYWN0ZXJzKQorICAgICAgICAsIG1fd2Vha0pTU3RyaW5n
KG51bGxwdHIpCiAgICAgICAgICwgbV9oYXNoQW5kRmxhZ3MoQnVmZmVyU3Vic3RyaW5nKQogICAg
IHsKICAgICAgICAgQVNTRVJUKCFpczhCaXQoKSk7CkBAIC0zMDksNiArMzIzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gV2UgZXhwZWN0IG1fbGVuZ3RoIHRvIGJlIGluaXRpYWxpemVkIHRvIDAg
YXMgd2UgdXNlIGl0CiAgICAgICAgIC8vIHRvIHJlcHJlc2VudCBhIG51bGwgdGVybWluYXRlZCBi
dWZmZXIuCiAgICAgICAgICwgbV9kYXRhOChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
Jm1fbGVuZ3RoKSkKKyAgICAgICAgLCBtX3dlYWtKU1N0cmluZyhudWxscHRyKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fZGF0YTgpOwogICAgICAgICAvLyBTZXQgdGhlIGhhc2ggZWFybHksIHNv
IHRoYXQgYWxsIGVtcHR5IHVuaXF1ZSBTdHJpbmdJbXBscyBoYXZlIGEgaGFzaCwKQEAgLTYxMiw2
ICs2MjcsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVmQ291bnQgPSB0ZW1wUmVmQ291bnQ7CiAg
ICAgfQogCisgICAgSlNDOjpXZWFrSW1wbCogd2Vha0pTU3RyaW5nKCkgeyByZXR1cm4gbV93ZWFr
SlNTdHJpbmc7IH0KKyAgICB2b2lkIHNldFdlYWtKU1N0cmluZyhKU0M6OldlYWtJbXBsKiB3ZWFr
SlNTdHJpbmcpIHsgbV93ZWFrSlNTdHJpbmcgPSB3ZWFrSlNTdHJpbmc7IH0KKwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKIAogICAgIC8vIEZJWE1F
OiBEb2VzIHRoaXMgcmVhbGx5IGJlbG9uZyBpbiBTdHJpbmdJbXBsPwpAQCAtODUxLDYgKzg2OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgbV9yZWZDb3VudDsKICAgICAgICAgdW5zaWdu
ZWQgbV9sZW5ndGg7CiAgICAgICAgIGNvbnN0IExDaGFyKiBtX2RhdGE4OworICAgICAgICBKU0M6
OldlYWtJbXBsKiBtX3dlYWtKU1N0cmluZzsKICAgICAgICAgbXV0YWJsZSBVQ2hhciogbV9jb3B5
RGF0YTE2OwogICAgICAgICB1bnNpZ25lZCBtX2hhc2hBbmRGbGFnczsKIApAQCAtODc2LDYgKzg5
NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IExDaGFyKiBtX2RhdGE4OwogICAgICAgICBj
b25zdCBVQ2hhciogbV9kYXRhMTY7CiAgICAgfTsKKyAgICBKU0M6OldlYWtJbXBsKiBtX3dlYWtK
U1N0cmluZzsKICAgICBtdXRhYmxlIFVDaGFyKiBtX2NvcHlEYXRhMTY7CiAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX2hhc2hBbmRGbGFnczsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjQy
NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNyBAQAorMjAxNC0wMi0xNyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGZhc3QgbWFwcGluZyBmcm9tIFN0cmluZ0ltcGwgdG8gSlNT
dHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
ODYyNQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuICYgQW5kcmVhcyBLbGluZy4K
KworICAgICAgICBSZW1vdmVkIEpTU3RyaW5nQ2FjaGUgZnJvbSBXZWJDb3JlOyBjYWxsIEpTQzo6
anNTdHJpbmdXaXRoV2Vha093bmVyIGluc3RlYWQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9E
T01XcmFwcGVyV29ybGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpj
bGVhcldyYXBwZXJzKToKKyAgICAgICAgICAgIC0gcmVtb3ZlZCBKU1N0cmluZ0NhY2hlLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAgICAgLSByZW1v
dmVkIEpTU3RyaW5nQ2FjaGUuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6
CisgICAgICAgIChXZWJDb3JlOjpqc1N0cmluZ1dpdGhDYWNoZSk6CisgICAgICAgICAgICAtIGNh
bGwganNTdHJpbmdXaXRoV2Vha093bmVyIGluc2VhZCBvZiB1c2luZyBKU1N0cmluZ0NhY2hlLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKToKKyAgICAgICAgICAgIC0gcmVuYW1lZCBj
cmVhdGVMZWFrZWQgLT4gY3JlYXRlTGVha2VkRm9yTWFpblRocmVhZC4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbToKKyAgICAgICAgKEdlbmVyYXRlU3RyaW5ncyk6
CisgICAgICAgICAgICAtIFN0cmluZ0ltcGwgaGFzIGFuIGFkZGl0aW9uYWwgZmllbGQuCisKIDIw
MTQtMDItMTcgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4K
IAogICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVu
aXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAkocmV2aXNpb24gMTY0MDg4KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNyArNTMsNiBAQCBET01XcmFwcGVyV29ybGQ6On5ET01XcmFwcGVyV29ybGQoKQog
dm9pZCBET01XcmFwcGVyV29ybGQ6OmNsZWFyV3JhcHBlcnMoKQogewogICAgIG1fd3JhcHBlcnMu
Y2xlYXIoKTsKLSAgICBtX3N0cmluZ0NhY2hlLmNsZWFyKCk7CiAKICAgICAvLyBUaGVzZSBpdGVt
cyBhcmUgY3JlYXRlZCBsYXppbHkuCiAgICAgd2hpbGUgKCFtX3NjcmlwdENvbnRyb2xsZXJzV2l0
aFdpbmRvd1NoZWxscy5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01XcmFwcGVyV29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01XcmFwcGVyV29ybGQuaAkocmV2aXNpb24gMTY0MDg4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDYgQEAgY2xhc3MgSlNET01XcmFwcGVyOwogY2xhc3MgU2NyaXB0Q29udHJvbGxlcjsKIAog
dHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4+IERPTU9iamVj
dFdyYXBwZXJNYXA7Ci10eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFN0cmluZ0ltcGwqLCBKU0M6OkpT
U3RyaW5nLCBQdHJIYXNoPFN0cmluZ0ltcGwqPj4gSlNTdHJpbmdDYWNoZTsKIAogY2xhc3MgRE9N
V3JhcHBlcldvcmxkIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV3JhcHBlcldvcmxkPiB7CiBwdWJs
aWM6CkBAIC01MSw3ICs1MCw2IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBjYW4gd2UgbWFr
ZSB0aGlzIHByaXZhdGU/CiAgICAgRE9NT2JqZWN0V3JhcHBlck1hcCBtX3dyYXBwZXJzOwotICAg
IEpTU3RyaW5nQ2FjaGUgbV9zdHJpbmdDYWNoZTsKICAgICBIYXNoTWFwPENTU1ZhbHVlKiwgdm9p
ZCo+IG1fY3NzVmFsdWVSb290czsKIAogICAgIGJvb2wgaXNOb3JtYWwoKSBjb25zdCB7IHJldHVy
biBtX2lzTm9ybWFsOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAkocmV2aXNpb24gMTY0MDg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5NCwxMSArNTk0LDcgQEAgaW5saW5l
IEpTQzo6SlNWYWx1ZSBqc1N0cmluZ1dpdGhDYWNoZShKUwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgSlNTdHJpbmdDYWNoZSYgc3RyaW5nQ2FjaGUgPSBjdXJyZW50V29ybGQoZXhlYykubV9zdHJp
bmdDYWNoZTsKLSAgICBKU1N0cmluZ0NhY2hlOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gc3RyaW5n
Q2FjaGUuYWRkKHN0cmluZ0ltcGwsIG51bGxwdHIpOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IEpTQzo6anNTdHJpbmco
ZXhlYywgU3RyaW5nKHN0cmluZ0ltcGwpKTsKLSAgICByZXR1cm4gSlNDOjpKU1ZhbHVlKGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBKU0M6OmpzU3RyaW5nV2l0
aFdlYWtPd25lcigmZXhlYy0+dm0oKSwgcyk7CiB9CiAKIGlubGluZSBTdHJpbmcgcHJvcGVydHlO
YW1lVG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAx
NjQwODgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDcgQEAgVk0qIEpTRE9NV2luZG93QmFzZTo6
Y29tbW9uVk0oKQogI2VuZGlmCiAgICAgaWYgKCF2bSkgewogICAgICAgICBTY3JpcHRDb250cm9s
bGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgICAgIHZtID0gVk06OmNyZWF0ZUxlYWtl
ZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKKyAgICAgICAgdm0gPSBWTTo6Y3JlYXRlTGVha2VkRm9y
TWFpblRocmVhZChMYXJnZUhlYXApLmxlYWtSZWYoKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
ICAgIFBhc3NPd25QdHI8V2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjaz4gYWN0aXZpdHlDYWxsYmFj
ayA9IFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSgmdm0tPmhlYXApOwogICAgICAg
ICB2bS0+aGVhcC5zZXRBY3Rpdml0eUNhbGxiYWNrKGFjdGl2aXR5Q2FsbGJhY2spOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0JKHJl
dmlzaW9uIDE2NDA4OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvU3RhdGlj
U3RyaW5nLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHN0YXRpYyBTdHJpbmdJ
bXBsOjpTdGF0aWNBU0NJSUxpdGVyYWwgJHsKICAgICAkbGVuZ3RoLAogICAgICR7bmFtZX1TdHJp
bmc4LAogICAgIDAsCisgICAgbnVsbHB0ciwKICAgICBTdHJpbmdJbXBsOjpTdGF0aWNBU0NJSUxp
dGVyYWw6OnNfaW5pdGlhbEZsYWdzIHwgKCR7aGFzaH0gPDwgU3RyaW5nSW1wbDo6U3RhdGljQVND
SUlMaXRlcmFsOjpzX2hhc2hTaGlmdCkKIH07CiBFTkQK
</data>

          </attachment>
      

    </bug>

</bugzilla>