<?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>22528</bug_id>
          
          <creation_ts>2008-11-26 22:43:04 -0800</creation_ts>
          <short_desc>Move currentThreadStackBase() to WTF</short_desc>
          <delta_ts>2011-07-05 14:29:28 -0700</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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>26276</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>16401</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alp Toker">alp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>100517</commentid>
    <comment_count>0</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-11-26 22:43:04 -0800</bug_when>
    <thetext>currentThreadStackBase() is currently a static function in JavaScriptCore/runtime/Collector.cpp

The GObject DOM binding will implement a conservative stack-only GC for wrapper objects and C strings and needs a way to get the current thread stack base in the marking phase.

Since this code has delicate platform-specific conditionals and isn&apos;t JSC-specific, it&apos;s best split out and moved into WTF where it can be reused. Introducing a new header for GC utility functions will also pave the way for sharing more of the JSC collector implementation with DOM bindings and WebKit API layer code which could benefit from garbage collection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100518</commentid>
    <comment_count>1</comment_count>
      <attachid>25554</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-11-26 23:09:39 -0800</bug_when>
    <thetext>Created attachment 25554
Share utility code for GC implementations

        Split out JSC collector internals to WTF so the code can be shared
        with DOM bindings and WebKit API layer code implementing garbage
        collection.

        This patch splits out what&apos;s necessary to support the proposed
        conservative stack-only GC in the GObject C DOM binding.

 JavaScriptCore/AllInOneFile.cpp                     |    1 
 JavaScriptCore/ChangeLog                            |   25 ++++
 JavaScriptCore/GNUmakefile.am                       |    2 
 JavaScriptCore/JavaScriptCore.pri                   |    1 
 JavaScriptCore/JavaScriptCore.scons                 |    1 
 JavaScriptCore/JavaScriptCore.vcproj/WTF/WTF.vcproj |    8 +
 JavaScriptCore/JavaScriptCoreSources.bkl            |    1 
 JavaScriptCore/runtime/Collector.cpp                |   73 ------------
 JavaScriptCore/wtf/CollectorUtilities.cpp           |  117 ++++++++++++++++++++
 JavaScriptCore/wtf/CollectorUtilities.h             |   35 +++++
 WebCore/ChangeLog                                   |   17 ++
 WebCore/ForwardingHeaders/wtf/CollectorUtilities.h  |    1 
 WebCore/WebCore.vcproj/WebCore.vcproj               |    4 
 13 files changed, 214 insertions(+), 72 deletions(-)

Note that the patch doesn&apos;t add the new files to the XCode project files as I don&apos;t have access to the IDE right now. To the reviewer: Please update those files when landing this, or otherwise update the patch with the necessary changes so I can get them in. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100538</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-27 07:38:50 -0800</bug_when>
    <thetext>&gt; -static inline void* currentThreadStackBase()

I&apos;m wondering why this function was inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100599</commentid>
    <comment_count>3</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-11-28 06:42:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; -static inline void* currentThreadStackBase()
&gt; 
&gt; I&apos;m wondering why this function was inline.
&gt; 

I added CollectorUtilities.cpp to AllInOneFile.cpp just above Collector.cpp, guessing gcc will inline it if appropriate at -O3. If you&apos;re concerned it might affect performance, could you try running a perf test with this patch applied? I don&apos;t think inlining or not will affect the correctness of the result (this function is for finding the stack base, not stack pointer so it&apos;s fine as a function call).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100604</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-28 08:10:14 -0800</bug_when>
    <thetext>I agree, I have no idea why it was inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101515</commentid>
    <comment_count>5</comment_count>
      <attachid>25554</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-05 10:06:03 -0800</bug_when>
    <thetext>Comment on attachment 25554
Share utility code for GC implementations

I don&apos;t like the word &quot;utilities&quot; in a file name; it seems to be a word without meaning. I suggest calling this something like MachineStack.h.

If the macro is going to be in a header file, then I think it should be changed into an inline function that takes a const void*, so we don&apos;t have to add a WTF_ prefix to it.

Why include &lt;stdlib.h&gt;? I think all you need in this header is the type intptr_t, and that&apos;s not in &lt;stdlib.h&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432406</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-05 14:29:28 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 26276 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25554</attachid>
            <date>2008-11-26 23:09:39 -0800</date>
            <delta_ts>2010-06-10 16:22:40 -0700</delta_ts>
            <desc>Share utility code for GC implementations</desc>
            <filename>split-collector-nov27.patch</filename>
            <type>text/plain</type>
            <size>14661</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4ODE2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMDgtMTEtMjYgIEFscCBUb2tl
ciAgPGFscEBudWFudGkuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUy
OAorICAgICAgICBNb3ZlIGN1cnJlbnRUaHJlYWRTdGFja0Jhc2UoKSB0byBXVEYKKworICAgICAg
ICBTcGxpdCBvdXQgSlNDIGNvbGxlY3RvciBpbnRlcm5hbHMgdG8gV1RGIHNvIHRoZSBjb2RlIGNh
biBiZSBzaGFyZWQKKyAgICAgICAgd2l0aCBET00gYmluZGluZ3MgYW5kIFdlYktpdCBBUEkgbGF5
ZXIgY29kZSBpbXBsZW1lbnRpbmcgZ2FyYmFnZQorICAgICAgICBjb2xsZWN0aW9uLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggc3BsaXRzIG91dCB3aGF0J3MgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgdGhl
IHByb3Bvc2VkCisgICAgICAgIGNvbnNlcnZhdGl2ZSBzdGFjay1vbmx5IEdDIGluIHRoZSBHT2Jq
ZWN0IEMgRE9NIGJpbmRpbmcuCisKKyAgICAgICAgKiBBbGxJbk9uZUZpbGUuY3BwOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS5zY29uczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3By
b2ovV1RGL1dURi52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmVTb3VyY2VzLmJrbDoK
KyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5jcHA6CisgICAgICAgICogd3RmL0NvbGxlY3Rv
clV0aWxpdGllcy5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpjdXJyZW50VGhyZWFkU3RhY2tC
YXNlKToKKyAgICAgICAgKiB3dGYvQ29sbGVjdG9yVXRpbGl0aWVzLmg6IEFkZGVkLgorCiAyMDA4
LTExLTI2ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBObyByZXZp
ZXcsIGJ1aWxkIGZpeCBvbmx5LgpJbmRleDogSmF2YVNjcmlwdENvcmUvQWxsSW5PbmVGaWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BbGxJbk9uZUZpbGUuY3BwCShyZXZpc2lv
biAzODgxNCkKKysrIEphdmFTY3JpcHRDb3JlL0FsbEluT25lRmlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rv
ci5jcHAiCiAjaW5jbHVkZSAicnVudGltZS9Cb29sZWFuT2JqZWN0LmNwcCIKICNpbmNsdWRlICJy
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwIgorI2luY2x1ZGUgInd0Zi9Db2xsZWN0b3JVdGls
aXRpZXMuY3BwIgogI2luY2x1ZGUgInJ1bnRpbWUvQ29sbGVjdG9yLmNwcCIKICNpbmNsdWRlICJy
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCIKICNpbmNsdWRlICJydW50aW1lL0RhdGVDb25z
dHJ1Y3Rvci5jcHAiCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMzg4MTQpCisr
KyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMzkzLDYg
KzM5Myw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHJhY2luZy5oIFwKIAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwIFwK
IAlKYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuaCBcCisJSmF2YVNjcmlwdENvcmUvd3Rm
L0NvbGxlY3RvclV0aWxpdGllcy5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9Db2xsZWN0b3JV
dGlsaXRpZXMuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL0Zhc3RNYWxsb2MuY3BwIFwKIAlKYXZh
U2NyaXB0Q29yZS93dGYvRmFzdE1hbGxvYy5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvTWFsbG9j
Wm9uZVN1cHBvcnQuaCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCShyZXZpc2lv
biAzODgxNCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29ya2luZyBj
b3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHByb2ZpbGVyL1Byb2Zp
bGVOb2RlLmNwcCBcCiAgICAgcHJvZmlsZXIvUHJvZmlsZXIuY3BwIFwKICAgICBwcm9maWxlci9U
cmVlUHJvZmlsZS5jcHAgXAorICAgIHd0Zi9Db2xsZWN0b3JVdGlsaXRpZXMuY3BwIFwKICAgICB3
dGYvRmFzdE1hbGxvYy5jcHAgXAogICAgIHd0Zi9UaHJlYWRpbmdRdC5jcHAgXAogICAgIHd0Zi9x
dC9NYWluVGhyZWFkUXQuY3BwCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5z
Y29ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucwko
cmV2aXNpb24gMzg4MTQpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5zY29ucwko
d29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIHNvdXJjZXNbJ3dyZWMnXSA9IFsKIF0K
IHNvdXJjZXNbJ3d0ZiddID0gWwogICAgICd3dGYvQXNzZXJ0aW9ucy5jcHAnLAorICAgICd3dGYv
Q29sbGVjdG9yVXRpbGl0aWVzLmNwcCcsCiAgICAgJ3d0Zi9GYXN0TWFsbG9jLmNwcCcsCiAgICAg
J3d0Zi9IYXNoVGFibGUuY3BwJywKICAgICAnd3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAn
LApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVTb3VyY2VzLmJrbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZVNvdXJjZXMuYmtsCShyZXZpc2lv
biAzODgxNCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlU291cmNlcy5ia2wJKHdv
cmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsNyBAQCBTb3VyY2UgZmlsZXMgZm9yIEpTQ29yZS4K
ICAgICA8L3NldD4KICAgICA8c2V0IGFwcGVuZD0iMSIgdmFyPSJKU0NPUkVfV1RGX1NPVVJDRVMi
PgogICAgICAgICB3dGYvQXNzZXJ0aW9ucy5jcHAKKyAgICAgICAgd3RmL0NvbGxlY3RvclV0aWxp
dGllcy5jcHAKICAgICAgICAgd3RmL0Zhc3RNYWxsb2MuY3BwCiAgICAgICAgIHd0Zi9IYXNoVGFi
bGUuY3BwCiAgICAgICAgIHd0Zi9NYWluVGhyZWFkLmNwcApJbmRleDogSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvagkocmV2aXNpb24g
Mzg4MTQpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw2ICsyNTUsMTQgQEAKIAkJCT4NCiAJCTwvRmls
ZT4NCiAJCTxGaWxlDQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcQ29sbGVjdG9yVXRpbGl0
aWVzLmNwcCINCisJCQk+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5cd3RmXENvbGxlY3RvclV0aWxpdGllcy5oIg0KKwkJCT4NCisJCTwvRmlsZT4NCisJCTxG
aWxlDQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcRmFzdE1hbGxvYy5jcHAiDQogCQkJPg0K
IAkJPC9GaWxlPg0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAJKHJldmlz
aW9uIDM4ODE0KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHNldGptcC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHd0Zi9Db2xsZWN0
b3JVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMzkz
LDc2ICszOTQsNiBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZU51bWJlcihzaXplX3QgcykKICAgICBy
ZXR1cm4gaGVhcEFsbG9jYXRlPE51bWJlckhlYXA+KHMpOwogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQqIGN1cnJlbnRUaHJlYWRTdGFja0Jhc2UoKQotewotI2lmIFBMQVRGT1JNKERBUldJTikKLSAg
ICBwdGhyZWFkX3QgdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7Ci0gICAgcmV0dXJuIHB0aHJlYWRf
Z2V0X3N0YWNrYWRkcl9ucCh0aHJlYWQpOwotI2VsaWYgUExBVEZPUk0oV0lOX09TKSAmJiBQTEFU
Rk9STShYODYpICYmIENPTVBJTEVSKE1TVkMpCi0gICAgLy8gb2Zmc2V0IDB4MTggZnJvbSB0aGUg
RlMgc2VnbWVudCByZWdpc3RlciBnaXZlcyBhIHBvaW50ZXIgdG8KLSAgICAvLyB0aGUgdGhyZWFk
IGluZm9ybWF0aW9uIGJsb2NrIGZvciB0aGUgY3VycmVudCB0aHJlYWQKLSAgICBOVF9USUIqIHBU
aWI7Ci0gICAgX19hc20gewotICAgICAgICBNT1YgRUFYLCBGUzpbMThoXQotICAgICAgICBNT1Yg
cFRpYiwgRUFYCi0gICAgfQotICAgIHJldHVybiBzdGF0aWNfY2FzdDx2b2lkKj4ocFRpYi0+U3Rh
Y2tCYXNlKTsKLSNlbGlmIFBMQVRGT1JNKFdJTl9PUykgJiYgUExBVEZPUk0oWDg2XzY0KSAmJiBD
T01QSUxFUihNU1ZDKQotICAgIFBOVF9USUI2NCBwVGliID0gcmVpbnRlcnByZXRfY2FzdDxQTlRf
VElCNjQ+KE50Q3VycmVudFRlYigpKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ocFRpYi0+U3RhY2tCYXNlKTsKLSNlbGlmIFBMQVRGT1JNKFdJTl9PUykgJiYgUExBVEZPUk0o
WDg2KSAmJiBDT01QSUxFUihHQ0MpCi0gICAgLy8gb2Zmc2V0IDB4MTggZnJvbSB0aGUgRlMgc2Vn
bWVudCByZWdpc3RlciBnaXZlcyBhIHBvaW50ZXIgdG8KLSAgICAvLyB0aGUgdGhyZWFkIGluZm9y
bWF0aW9uIGJsb2NrIGZvciB0aGUgY3VycmVudCB0aHJlYWQKLSAgICBOVF9USUIqIHBUaWI7Ci0g
ICAgYXNtICggIm1vdmwgJSVmczoweDE4LCAlMFxuIgotICAgICAgICAgIDogIj1yIiAocFRpYikK
LSAgICAgICAgKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dm9pZCo+KHBUaWItPlN0YWNrQmFz
ZSk7Ci0jZWxpZiBQTEFURk9STShTT0xBUklTKQotICAgIHN0YWNrX3QgczsKLSAgICB0aHJfc3Rr
c2VnbWVudCgmcyk7Ci0gICAgcmV0dXJuIHMuc3Nfc3A7Ci0jZWxpZiBQTEFURk9STShPUEVOQlNE
KQotICAgIHB0aHJlYWRfdCB0aHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKLSAgICBzdGFja190IHN0
YWNrOwotICAgIHB0aHJlYWRfc3RhY2tzZWdfbnAodGhyZWFkLCAmc3RhY2spOwotICAgIHJldHVy
biBzdGFjay5zc19zcDsKLSNlbGlmIFBMQVRGT1JNKFVOSVgpCi0gICAgc3RhdGljIHZvaWQqIHN0
YWNrQmFzZSA9IDA7Ci0gICAgc3RhdGljIHNpemVfdCBzdGFja1NpemUgPSAwOwotICAgIHN0YXRp
YyBwdGhyZWFkX3Qgc3RhY2tUaHJlYWQ7Ci0gICAgcHRocmVhZF90IHRocmVhZCA9IHB0aHJlYWRf
c2VsZigpOwotICAgIGlmIChzdGFja0Jhc2UgPT0gMCB8fCB0aHJlYWQgIT0gc3RhY2tUaHJlYWQp
IHsKLSAgICAgICAgcHRocmVhZF9hdHRyX3Qgc2F0dHI7Ci0gICAgICAgIHB0aHJlYWRfYXR0cl9p
bml0KCZzYXR0cik7Ci0jaWYgSEFWRShQVEhSRUFEX05QX0gpCi0gICAgICAgIC8vIGUuZy4gb24g
RnJlZUJTRCA1LjQsIG5ldW5kb3JmQGtkZS5vcmcKLSAgICAgICAgcHRocmVhZF9hdHRyX2dldF9u
cCh0aHJlYWQsICZzYXR0cik7Ci0jZWxzZQotICAgICAgICAvLyBGSVhNRTogdGhpcyBmdW5jdGlv
biBpcyBub24tcG9ydGFibGU7IG90aGVyIFBPU0lYIHN5c3RlbXMgbWF5IGhhdmUgZGlmZmVyZW50
IG5wIGFsdGVybmF0aXZlcwotICAgICAgICBwdGhyZWFkX2dldGF0dHJfbnAodGhyZWFkLCAmc2F0
dHIpOwotI2VuZGlmCi0gICAgICAgIGludCByYyA9IHB0aHJlYWRfYXR0cl9nZXRzdGFjaygmc2F0
dHIsICZzdGFja0Jhc2UsICZzdGFja1NpemUpOwotICAgICAgICAodm9pZClyYzsgLy8gRklYTUU6
IERlYWwgd2l0aCBlcnJvciBjb2RlIHNvbWVob3c/IFNlZW1zIGZhdGFsLgotICAgICAgICBBU1NF
UlQoc3RhY2tCYXNlKTsKLSAgICAgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJnNhdHRyKTsKLSAg
ICAgICAgc3RhY2tUaHJlYWQgPSB0aHJlYWQ7Ci0gICAgfQotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjaGFyKj4oc3RhY2tCYXNlKSArIHN0YWNrU2l6ZTsKLSNlbGlmIFBMQVRGT1JNKFNZTUJJQU4p
Ci0gICAgc3RhdGljIHZvaWQqIHN0YWNrQmFzZSA9IDA7Ci0gICAgaWYgKHN0YWNrQmFzZSA9PSAw
KSB7Ci0gICAgICAgIFRUaHJlYWRTdGFja0luZm8gaW5mbzsKLSAgICAgICAgUlRocmVhZCB0aHJl
YWQ7Ci0gICAgICAgIHRocmVhZC5TdGFja0luZm8oaW5mbyk7Ci0gICAgICAgIHN0YWNrQmFzZSA9
ICh2b2lkKilpbmZvLmlCYXNlOwotICAgIH0KLSAgICByZXR1cm4gKHZvaWQqKXN0YWNrQmFzZTsK
LSNlbHNlCi0jZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIHN0YWNrIGJhc2Ugb24gdGhpcyBw
bGF0Zm9ybQotI2VuZGlmCi19Ci0KICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCiAK
IHN0YXRpYyBpbmxpbmUgUGxhdGZvcm1UaHJlYWQgZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkK
QEAgLTUzOCw4ICs0NjksNiBAQCB2b2lkIEhlYXA6OnJlZ2lzdGVyVGhyZWFkKCkKIAogI2VuZGlm
CiAKLSNkZWZpbmUgSVNfUE9JTlRFUl9BTElHTkVEKHApICgoKGludHB0cl90KShwKSAmIChzaXpl
b2YoY2hhciopIC0gMSkpID09IDApCi0KIC8vIGNlbGwgc2l6ZSBuZWVkcyB0byBiZSBhIHBvd2Vy
IG9mIHR3byBmb3IgdGhpcyB0byBiZSB2YWxpZAogI2RlZmluZSBJU19IQUxGX0NFTExfQUxJR05F
RChwKSAoKChpbnRwdHJfdCkocCkgJiAoQ0VMTF9NQVNLID4+IDEpKSA9PSAwKQogCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS93dGYvQ29sbGVjdG9yVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvQ29sbGVjdG9yVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMCkKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9Db2xsZWN0b3JVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDExNyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogIENvcHly
aWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb2xsZWN0b3JVdGlsaXRpZXMu
aCIKKworI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKKworI2lmIFBMQVRGT1JNKERBUldJTikKKyNp
bmNsdWRlIDxwdGhyZWFkLmg+CisjZWxpZiBQTEFURk9STShXSU5fT1MpCisjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2VsaWYgUExBVEZPUk0oVU5JWCkKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNs
dWRlIDx1bmlzdGQuaD4KKyNpZiBQTEFURk9STShTT0xBUklTKQorI2luY2x1ZGUgPHRocmVhZC5o
PgorI2Vsc2UKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKyNlbmRpZgorCisjaWYgSEFW
RShQVEhSRUFEX05QX0gpCisjaW5jbHVkZSA8cHRocmVhZF9ucC5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXVEYgeworCit2b2lkKiBjdXJyZW50VGhyZWFkU3RhY2tCYXNlKCkKK3sKKyNpZiBQTEFU
Rk9STShEQVJXSU4pCisgICAgcHRocmVhZF90IHRocmVhZCA9IHB0aHJlYWRfc2VsZigpOworICAg
IHJldHVybiBwdGhyZWFkX2dldF9zdGFja2FkZHJfbnAodGhyZWFkKTsKKyNlbGlmIFBMQVRGT1JN
KFdJTl9PUykgJiYgUExBVEZPUk0oWDg2KSAmJiBDT01QSUxFUihNU1ZDKQorICAgIC8vIG9mZnNl
dCAweDE4IGZyb20gdGhlIEZTIHNlZ21lbnQgcmVnaXN0ZXIgZ2l2ZXMgYSBwb2ludGVyIHRvCisg
ICAgLy8gdGhlIHRocmVhZCBpbmZvcm1hdGlvbiBibG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFk
CisgICAgTlRfVElCKiBwVGliOworICAgIF9fYXNtIHsKKyAgICAgICAgTU9WIEVBWCwgRlM6WzE4
aF0KKyAgICAgICAgTU9WIHBUaWIsIEVBWAorICAgIH0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dm9pZCo+KHBUaWItPlN0YWNrQmFzZSk7CisjZWxpZiBQTEFURk9STShXSU5fT1MpICYmIFBMQVRG
T1JNKFg4Nl82NCkgJiYgQ09NUElMRVIoTVNWQykKKyAgICBQTlRfVElCNjQgcFRpYiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UE5UX1RJQjY0PihOdEN1cnJlbnRUZWIoKSk7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBUaWItPlN0YWNrQmFzZSk7CisjZWxpZiBQTEFURk9STShXSU5f
T1MpICYmIFBMQVRGT1JNKFg4NikgJiYgQ09NUElMRVIoR0NDKQorICAgIC8vIG9mZnNldCAweDE4
IGZyb20gdGhlIEZTIHNlZ21lbnQgcmVnaXN0ZXIgZ2l2ZXMgYSBwb2ludGVyIHRvCisgICAgLy8g
dGhlIHRocmVhZCBpbmZvcm1hdGlvbiBibG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkCisgICAg
TlRfVElCKiBwVGliOworICAgIGFzbSAoICJtb3ZsICUlZnM6MHgxOCwgJTBcbiIKKyAgICAgICAg
ICA6ICI9ciIgKHBUaWIpCisgICAgICAgICk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHZvaWQq
PihwVGliLT5TdGFja0Jhc2UpOworI2VsaWYgUExBVEZPUk0oU09MQVJJUykKKyAgICBzdGFja190
IHM7CisgICAgdGhyX3N0a3NlZ21lbnQoJnMpOworICAgIHJldHVybiBzLnNzX3NwOworI2VsaWYg
UExBVEZPUk0oT1BFTkJTRCkKKyAgICBwdGhyZWFkX3QgdGhyZWFkID0gcHRocmVhZF9zZWxmKCk7
CisgICAgc3RhY2tfdCBzdGFjazsKKyAgICBwdGhyZWFkX3N0YWNrc2VnX25wKHRocmVhZCwgJnN0
YWNrKTsKKyAgICByZXR1cm4gc3RhY2suc3Nfc3A7CisjZWxpZiBQTEFURk9STShVTklYKQorICAg
IHN0YXRpYyB2b2lkKiBzdGFja0Jhc2UgPSAwOworICAgIHN0YXRpYyBzaXplX3Qgc3RhY2tTaXpl
ID0gMDsKKyAgICBzdGF0aWMgcHRocmVhZF90IHN0YWNrVGhyZWFkOworICAgIHB0aHJlYWRfdCB0
aHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKKyAgICBpZiAoc3RhY2tCYXNlID09IDAgfHwgdGhyZWFk
ICE9IHN0YWNrVGhyZWFkKSB7CisgICAgICAgIHB0aHJlYWRfYXR0cl90IHNhdHRyOworICAgICAg
ICBwdGhyZWFkX2F0dHJfaW5pdCgmc2F0dHIpOworI2lmIEhBVkUoUFRIUkVBRF9OUF9IKQorICAg
ICAgICAvLyBlLmcuIG9uIEZyZWVCU0QgNS40LCBuZXVuZG9yZkBrZGUub3JnCisgICAgICAgIHB0
aHJlYWRfYXR0cl9nZXRfbnAodGhyZWFkLCAmc2F0dHIpOworI2Vsc2UKKyAgICAgICAgLy8gRklY
TUU6IHRoaXMgZnVuY3Rpb24gaXMgbm9uLXBvcnRhYmxlOyBvdGhlciBQT1NJWCBzeXN0ZW1zIG1h
eSBoYXZlIGRpZmZlcmVudCBucCBhbHRlcm5hdGl2ZXMKKyAgICAgICAgcHRocmVhZF9nZXRhdHRy
X25wKHRocmVhZCwgJnNhdHRyKTsKKyNlbmRpZgorICAgICAgICBpbnQgcmMgPSBwdGhyZWFkX2F0
dHJfZ2V0c3RhY2soJnNhdHRyLCAmc3RhY2tCYXNlLCAmc3RhY2tTaXplKTsKKyAgICAgICAgKHZv
aWQpcmM7IC8vIEZJWE1FOiBEZWFsIHdpdGggZXJyb3IgY29kZSBzb21laG93PyBTZWVtcyBmYXRh
bC4KKyAgICAgICAgQVNTRVJUKHN0YWNrQmFzZSk7CisgICAgICAgIHB0aHJlYWRfYXR0cl9kZXN0
cm95KCZzYXR0cik7CisgICAgICAgIHN0YWNrVGhyZWFkID0gdGhyZWFkOworICAgIH0KKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KHN0YWNrQmFzZSkgKyBzdGFja1NpemU7CisjZWxpZiBQ
TEFURk9STShTWU1CSUFOKQorICAgIHN0YXRpYyB2b2lkKiBzdGFja0Jhc2UgPSAwOworICAgIGlm
IChzdGFja0Jhc2UgPT0gMCkgeworICAgICAgICBUVGhyZWFkU3RhY2tJbmZvIGluZm87CisgICAg
ICAgIFJUaHJlYWQgdGhyZWFkOworICAgICAgICB0aHJlYWQuU3RhY2tJbmZvKGluZm8pOworICAg
ICAgICBzdGFja0Jhc2UgPSAodm9pZCopaW5mby5pQmFzZTsKKyAgICB9CisgICAgcmV0dXJuICh2
b2lkKilzdGFja0Jhc2U7CisjZWxzZQorI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBzdGFj
ayBiYXNlIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXVEYK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Db2xsZWN0b3JVdGlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvQ29sbGVjdG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDAp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvQ29sbGVjdG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQu
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBXVEZfQ29sbGVj
dG9yVXRpbGl0aWVzX2gKKyNkZWZpbmUgV1RGX0NvbGxlY3RvclV0aWxpdGllc19oCisKKyNpbmNs
dWRlIDxzdGRsaWIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKyAgICB2b2lkKiBjdXJyZW50VGhy
ZWFkU3RhY2tCYXNlKCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OmN1cnJl
bnRUaHJlYWRTdGFja0Jhc2U7CisKKyNkZWZpbmUgSVNfUE9JTlRFUl9BTElHTkVEKHApICgoKGlu
dHB0cl90KShwKSAmIChzaXplb2YoY2hhciopIC0gMSkpID09IDApCisKKyNlbmRpZiAvKiBXVEZf
Q29sbGVjdG9yVXRpbGl0aWVzX2ggKi8KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzODgxNikKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDgtMTEtMjYgIEFscCBU
b2tlciAgPGFscEBudWFudGkuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjUyOAorICAgICAgICBNb3ZlIGN1cnJlbnRUaHJlYWRTdGFja0Jhc2UoKSB0byBXVEYKKworICAg
ICAgICBTcGxpdCBvdXQgSlNDIGNvbGxlY3RvciBpbnRlcm5hbHMgdG8gV1RGIHNvIHRoZSBjb2Rl
IGNhbiBiZSBzaGFyZWQKKyAgICAgICAgd2l0aCBET00gYmluZGluZ3MgYW5kIFdlYktpdCBBUEkg
bGF5ZXIgY29kZSBpbXBsZW1lbnRpbmcgZ2FyYmFnZQorICAgICAgICBjb2xsZWN0aW9uLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggc3BsaXRzIG91dCB3aGF0J3MgbmVjZXNzYXJ5IHRvIHN1cHBvcnQg
dGhlIHByb3Bvc2VkCisgICAgICAgIGNvbnNlcnZhdGl2ZSBzdGFjay1vbmx5IEdDIGluIHRoZSBH
T2JqZWN0IEMgRE9NIGJpbmRpbmcuCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYv
Q29sbGVjdG9yVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qOgorCiAyMDA4LTExLTI2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFz
LnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3Jn
ZSBTdGFpa29zLgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvQ29sbGVjdG9y
VXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
Q29sbGVjdG9yVXRpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9Db2xsZWN0b3JVdGlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBA
QAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbGxlY3RvclV0aWxpdGllcy5oPgpJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAzODgxNCkKKysrIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1
ODkzLDYgKzE1ODkzLDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxGb3J3YXJkaW5nSGVhZGVyc1x3dGZcQ29sbGVjdG9yVXRpbGl0
aWVzLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cRm9yd2FyZGluZ0hlYWRlcnNcd3RmXEZhc3RNYWxsb2MuaCINCiAJCQkJCT4NCiAJ
CQkJPC9GaWxlPg0K
</data>
<flag name="review"
          id="11890"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>