<?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>52869</bug_id>
          
          <creation_ts>2011-01-20 22:53:10 -0800</creation_ts>
          <short_desc>Web Inspector: switch page/Console implementation from InspectorController to InspectorInstrumentation</short_desc>
          <delta_ts>2011-01-22 00:20:58 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>52875</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mnaganov</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>337895</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-01-20 22:53:10 -0800</bug_when>
    <thetext>%subj%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337900</commentid>
    <comment_count>1</comment_count>
      <attachid>79700</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-01-20 23:09:52 -0800</bug_when>
    <thetext>Created attachment 79700
[patch] initial version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337901</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-20 23:16:54 -0800</bug_when>
    <thetext>Attachment 79700 did not build on gtk:
Build output: http://queues.webkit.org/results/7604260</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337902</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-20 23:23:22 -0800</bug_when>
    <thetext>Attachment 79700 did not build on qt:
Build output: http://queues.webkit.org/results/7522228</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337906</commentid>
    <comment_count>4</comment_count>
      <attachid>79701</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-01-20 23:39:50 -0800</bug_when>
    <thetext>Created attachment 79701
[patch] second iteration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337907</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-20 23:40:06 -0800</bug_when>
    <thetext>Attachment 79700 did not build on win:
Build output: http://queues.webkit.org/results/7602242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337916</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 00:09:37 -0800</bug_when>
    <thetext>Attachment 79700 did not build on mac:
Build output: http://queues.webkit.org/results/7539257</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337919</commentid>
    <comment_count>7</comment_count>
      <attachid>79701</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-21 00:20:25 -0800</bug_when>
    <thetext>Comment on attachment 79701
[patch] second iteration

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:571
&gt; +    return inspectorController-&gt;profilerAgent()-&gt;getCurrentUserInitiatedProfileName(incrementProfileNumber);

ProfilerAgent may be 0 here, r- for this.

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:142
&gt; +    static void addProfile(Page*, RefPtr&lt;ScriptProfile&gt;, ScriptCallStack*);

ScriptCallStack should be passed as PassOwnPtr since the profiler agent may want to store the callstack in a console message.

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:902
&gt; +    if (InspectorController* inspectorController = inspectorControllerForPage(page))

There was no check for InspectorController, I don&apos;t think it can be 0 here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337927</commentid>
    <comment_count>8</comment_count>
      <attachid>79707</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-01-21 01:06:45 -0800</bug_when>
    <thetext>Created attachment 79707
[patch] third iteration

(In reply to comment #7)
&gt; (From update of attachment 79701 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79701&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:571
&gt; &gt; +    return inspectorController-&gt;profilerAgent()-&gt;getCurrentUserInitiatedProfileName(incrementProfileNumber);
&gt; 
&gt; ProfilerAgent may be 0 here, r- for this.

fixed.


&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.h:142
&gt; &gt; +    static void addProfile(Page*, RefPtr&lt;ScriptProfile&gt;, ScriptCallStack*);
&gt; 
&gt; ScriptCallStack should be passed as PassOwnPtr since the profiler agent may want to store the callstack in a console message.

There are 4 such functions which receiving ScriptCallStack by pointer.
These functions use script name and line number of top frame at the moment. 
This can be implemented in another patch if you want.

&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.h:902
&gt; &gt; +    if (InspectorController* inspectorController = inspectorControllerForPage(page))
&gt; 
&gt; There was no check for InspectorController, I don&apos;t think it can be 0 here.
It is a common practice in InspectorInstrumentation code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337931</commentid>
    <comment_count>9</comment_count>
      <attachid>79707</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-01-21 01:24:59 -0800</bug_when>
    <thetext>Comment on attachment 79707
[patch] third iteration

Clearing flags on attachment: 79707

Committed r76335: &lt;http://trac.webkit.org/changeset/76335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337932</commentid>
    <comment_count>10</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-01-21 01:25:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337940</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 01:58:13 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76335 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
fast/profiler/anonymous-event-handler.html
fast/profiler/anonymous-function-called-from-different-contexts.html
fast/profiler/anonymous-function-calls-built-in-functions.html
fast/profiler/anonymous-function-calls-eval.html
fast/profiler/anonymous-functions-with-display-names.html
fast/profiler/apply.html
fast/profiler/built-in-function-calls-anonymous.html
fast/profiler/built-in-function-calls-user-defined-function.html
fast/profiler/call-nodelist-as-function.html
fast/profiler/call.html
fast/profiler/calling-the-function-that-started-the-profiler-from-another-scope.html
fast/profiler/compare-multiple-profiles.html
fast/profiler/constructor.html
fast/profiler/dead-time.html
fast/profiler/document-dot-write.html
fast/profiler/event-handler.html
fast/profiler/execution-context-and-eval-on-same-line.html
fast/profiler/inline-event-handler.html
fast/profiler/many-calls-in-the-same-scope.html
fast/profiler/multiple-and-different-scoped-anonymous-function-calls.html
fast/profiler/multiple-and-different-scoped-function-calls.html
fast/profiler/multiple-anonymous-functions-called-from-the-same-function.html
fast/profiler/multiple-frames.html
fast/profiler/named-functions-with-display-names.html
fast/profiler/nested-anonymous-functon.html
fast/profiler/nested-start-and-stop-profiler.html
fast/profiler/one-execution-context.html
fast/profiler/profile-calls-in-included-file.html
fast/profiler/profile-with-no-title.html
fast/profiler/profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting.html
fast/profiler/profiling-from-a-nested-location.html
fast/profiler/simple-event-call.html
fast/profiler/simple-no-level-change.html
fast/profiler/start-and-stop-profiler-multiple-times.html
fast/profiler/start-and-stop-profiling-in-the-same-function.html
fast/profiler/stop-profiling-after-setTimeout.html
fast/profiler/stop-then-function-call.html
fast/profiler/two-execution-contexts.html
fast/profiler/user-defined-function-calls-built-in-functions.html
fast/profiler/window-dot-eval.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338535</commentid>
    <comment_count>12</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-01-22 00:20:58 -0800</bug_when>
    <thetext>actually landed as 

Committed r76344
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/page/Console.cpp
	M	Source/WebCore/inspector/InspectorController.cpp
	M	Source/WebCore/inspector/InspectorController.h
	M	Source/WebCore/inspector/InspectorInstrumentation.cpp
	M	Source/WebCore/inspector/InspectorInstrumentation.h
r76344 = 043f7d3c197b58cfab39413ffbdec0c6cf84955b (refs/remotes/trunk)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79700</attachid>
            <date>2011-01-20 23:09:52 -0800</date>
            <delta_ts>2011-01-20 23:39:50 -0800</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9834</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNDI2NzI4Li5iNzUxZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDEtMjAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHN3aXRjaCBwYWdlL0NvbnNvbGUgaW1wbGVtZW50YXRpb24gZnJvbSBJbnNwZWN0b3JD
b250cm9sbGVyIHRvIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KKworICAgICAgICBUaGVyZSBh
cmUgc29tZSBwbGFjZXMgaW4gV2ViQ29yZSB3aGVyZSB3ZSBzdGlsbCB1c2luZyBkaXJlY3QgSW5z
cGVjdG9yQ29udHJvbGxlciBjYWxscy4KKyAgICAgICAgVGhlIGlkZWEgaXMgdG8gcGFzcyBhbGwg
dGhlIEluc3BlY3RvciByZWxhdGVkIGNhbGxzIHZpYSBJbnNwZWN0b3JJbnN0cnVtZW50YWlvbiB3
aGljaCBpcyB0aGUKKyAgICAgICAgSW5zcGVjdG9yIGZhY2FkZSBmb3IgV2ViQ29yZS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI4NjkKKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRQcm9maWxlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9maWxl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJvZmlsZXJF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Z2V0
Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSk6CisgICAgICAgICogcGFnZS9Db25zb2xl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6cHJvZmlsZUVuZCk6CisKIDIwMTEtMDEtMjAgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBkMTFmNzIwLi41ODY2MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC05ODMsMjMgKzk4MywxMSBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZShQYXNzUmVm
UHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgbV9wcm9maWxlckFnZW50LT5hZGRQcm9maWxlKHBycFByb2ZpbGUsIGxpbmVOdW1i
ZXIsIHNvdXJjZVVSTCk7Ci19Ci0KIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aXNSZWNvcmRp
bmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJvZmlsZXJB
Z2VudC0+aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpOwogfQogCi1TdHJpbmcgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29s
IGluY3JlbWVudFByb2ZpbGVOdW1iZXIpCi17Ci0gICAgcmV0dXJuIG1fcHJvZmlsZXJBZ2VudC0+
Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShpbmNyZW1lbnRQcm9maWxlTnVtYmVy
KTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKQogewogICAgIGlmICghZW5hYmxlZCgpKQpAQCAtMTAxNiwxMSArMTAwNCw2IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKQogICAg
IG1fc3RhdGUtPnNldEJvb2xlYW4oSW5zcGVjdG9yU3RhdGU6OnVzZXJJbml0aWF0ZWRQcm9maWxp
bmcsIGZhbHNlKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjpwcm9maWxlckVuYWJs
ZWQoKSBjb25zdAotewotICAgIHJldHVybiBlbmFibGVkKCkgJiYgbV9wcm9maWxlckFnZW50LT5l
bmFibGVkKCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlUHJvZmlsZXIo
Ym9vbCBhbHdheXMsIGJvb2wgc2tpcFJlY29tcGlsZSkKIHsKICAgICBpZiAoYWx3YXlzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZGNk
ZjdiYy4uYWZlMzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCkBAIC0yMjcsMTYgKzIyNywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3
RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGJvdW5kaW5nQm94
LCBjb25zdCBGbG9hdFJlY3QmIG92ZXJsYXlSZWN0LCBXZWJDb3JlOjpTZXR0aW5ncyopIGNvbnN0
OwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgdm9pZCBhZGRQcm9maWxl
KFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKTsKICAgICBib29sIGlzUmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2Zp
bGUoKSBjb25zdDsKLSAgICBTdHJpbmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFt
ZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIgPSBmYWxzZSk7CiAgICAgdm9pZCBzdGFydFBy
b2ZpbGluZygpIHsgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7IH0KICAgICB2b2lkIHN0
YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZygpOwogICAgIHZvaWQgc3RvcFByb2ZpbGluZygpIHsg
c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsgfQogICAgIHZvaWQgc3RvcFVzZXJJbml0aWF0
ZWRQcm9maWxpbmcoKTsKICAgICB2b2lkIGVuYWJsZVByb2ZpbGVyKGJvb2wgYWx3YXlzID0gZmFs
c2UsIGJvb2wgc2tpcFJlY29tcGlsZSA9IGZhbHNlKTsKICAgICB2b2lkIGRpc2FibGVQcm9maWxl
cihib29sIGFsd2F5cyA9IGZhbHNlKTsKLSAgICBib29sIHByb2ZpbGVyRW5hYmxlZCgpIGNvbnN0
OwogCiAgICAgdm9pZCBzaG93QW5kRW5hYmxlRGVidWdnZXIoKTsKICAgICB2b2lkIGVuYWJsZURl
YnVnZ2VyKGJvb2wgYWx3YXlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYzI4YTgyYS4uMjYwMjc5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKQEAgLTU1Miw2ICs1NTIsMjQgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zcGVjdG9yQ28KICAg
ICBpZiAoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogcHJvZmlsZXJBZ2VudCA9IGluc3BlY3RvckNv
bnRyb2xsZXItPnByb2ZpbGVyQWdlbnQoKSkKICAgICAgICAgcHJvZmlsZXJBZ2VudC0+YWRkU3Rh
cnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwp
OwogfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkUHJvZmlsZUltcGwoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUmVmUHRyPFNjcmlwdFByb2Zp
bGU+IHByb2ZpbGUsIFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQoreworICAgIGlmIChJbnNw
ZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+
cHJvZmlsZXJBZ2VudCgpKSB7CisgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENh
bGxlciA9IGNhbGxTdGFjay0+YXQoMCk7CisgICAgICAgIHByb2ZpbGVyQWdlbnQtPmFkZFByb2Zp
bGUocHJvZmlsZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJM
KCkpOworICAgIH0KK30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVy
RW5hYmxlZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK3sK
KyAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlZCgpICYmIGluc3BlY3RvckNv
bnRyb2xsZXItPnByb2ZpbGVyQWdlbnQoKS0+ZW5hYmxlZCgpOworfQorCitTdHJpbmcgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBib29sIGluY3JlbWVu
dFByb2ZpbGVOdW1iZXIpCit7CisgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXItPnByb2Zp
bGVyQWdlbnQoKS0+Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShpbmNyZW1lbnRQ
cm9maWxlTnVtYmVyKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmlu
ZGV4IDI4ODY3Y2IuLjdhN2VlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBzdGF0aWMgdm9pZCBhZGRT
dGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGUoUGFnZSosIGNvbnN0IFN0cmluZyYgdGl0bGUs
IHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICBzdGF0
aWMgdm9pZCBhZGRQcm9maWxlKFBhZ2UqLCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIFNjcmlwdENh
bGxTdGFjayopOworICAgIHN0YXRpYyBib29sIHByb2ZpbGVyRW5hYmxlZChQYWdlKik7CisgICAg
c3RhdGljIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKFBhZ2UqLCBi
b29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJB
U0UpCkBAIC0yNDYsNiArMjQ5LDkgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQogICAgIHN0YXRpYyB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29u
c29sZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICBzdGF0aWMgdm9p
ZCBhZGRQcm9maWxlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgUmVmUHRyPFNjcmlwdFByb2Zp
bGU+LCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAgICBzdGF0aWMgYm9vbCBwcm9maWxlckVuYWJsZWRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICBzdGF0aWMgU3RyaW5nIGdldEN1cnJlbnRV
c2VySW5pdGlhdGVkUHJvZmlsZU5hbWVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBib29sIGlu
Y3JlbWVudFByb2ZpbGVOdW1iZXIpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCkBA
IC04ODEsNiArODg3LDMyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
YWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhCiAgICAgICAgIGFkZFN0
YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgdGl0
bGUsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAjZW5kaWYKIH0KKworaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9maWxlKFBhZ2UqIHBhZ2UsIFJlZlB0cjxTY3Jp
cHRQcm9maWxlPiBwcm9maWxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3sKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UocGFnZSkpCisgICAgICAgIGFk
ZFByb2ZpbGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHByb2ZpbGUsIGNhbGxTdGFjayk7Cisj
ZW5kaWYKK30KKworaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcm9maWxl
ckVuYWJsZWQoUGFnZSogcGFnZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJv
bGxlckZvclBhZ2UocGFnZSkpCisgICAgICAgIHJldHVybiBwcm9maWxlckVuYWJsZWRJbXBsKGlu
c3BlY3RvckNvbnRyb2xsZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxp
bmUgU3RyaW5nIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZShQYWdlKiBwYWdlLCBib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIpCit7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAg
ICAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpnZXRDdXJyZW50VXNlckluaXRp
YXRlZFByb2ZpbGVOYW1lSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpbmNyZW1lbnRQcm9maWxl
TnVtYmVyKTsKKyNlbmRpZgorICAgIHJldHVybiAiIjsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKQEAgLTkzNiw2ICs5NjgsNyBAQCBpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxl
ciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyV2l0aEZybwog
ICAgIH0KICAgICByZXR1cm4gMDsKIH0KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCmluZGV4IGQ0YWVkNDEuLjBjMTk0MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcApAQCAtMjYyLDIwICsyNjIsMTMgQEAgdm9pZCBDb25zb2xlOjpwcm9m
aWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxT
Y3JpcHQKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKTsKICAgICAvLyBGSVhNRTogbG9nIGEgY29uc29sZSBtZXNzYWdlIHdo
ZW4gcHJvZmlsaW5nIGlzIGRpc2FibGVkLgotICAgIGlmICghY29udHJvbGxlci0+cHJvZmlsZXJF
bmFibGVkKCkpCisgICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5h
YmxlZChwYWdlKSkKICAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAKICAgICBTdHJpbmcgcmVzb2x2
ZWRUaXRsZSA9IHRpdGxlOwogICAgIGlmICh0aXRsZS5pc051bGwoKSkgLy8gbm8gdGl0bGUgc28g
Z2l2ZSBpdCB0aGUgbmV4dCB1c2VyIGluaXRpYXRlZCBwcm9maWxlIHRpdGxlLgotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgICAgIHJlc29sdmVkVGl0bGUgPSBjb250cm9sbGVyLT5nZXRDdXJy
ZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKHRydWUpOwotI2Vsc2UKLSAgICAgICAgcmVzb2x2
ZWRUaXRsZSA9ICIiOwotI2VuZGlmCisgICAgICAgIHJlc29sdmVkVGl0bGUgPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUocGFnZSwg
dHJ1ZSk7CiAKICAgICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoc3RhdGUsIHJlc29sdmVkVGl0bGUp
OwogCkBAIC0yODksMjIgKzI4MiwxNSBAQCB2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcgogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpOwotICAgIGlmICghY29udHJvbGxlci0+cHJvZmlsZXJFbmFibGVkKCkpCisgICAgaWYgKCFJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZChwYWdlKSkKICAgICAgICAg
cmV0dXJuOwotI2VuZGlmCiAKICAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNj
cmlwdFByb2ZpbGVyOjpzdG9wKHN0YXRlLCB0aXRsZSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3Byb2ZpbGVzLmFwcGVuZChwcm9maWxlKTsKLQotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0g
Y2FsbFN0YWNrLT5hdCgwKTsKLSAgICBjb250cm9sbGVyLT5hZGRQcm9maWxlKHByb2ZpbGUsIGxh
c3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKLSNlbmRpZgor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkUHJvZmlsZShwYWdlLCBwcm9maWxlLCBj
YWxsU3RhY2suZ2V0KCkpOwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79701</attachid>
            <date>2011-01-20 23:39:50 -0800</date>
            <delta_ts>2011-01-21 01:06:45 -0800</delta_ts>
            <desc>[patch] second iteration</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9195</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNDI2NzI4Li5iNzUxZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDEtMjAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHN3aXRjaCBwYWdlL0NvbnNvbGUgaW1wbGVtZW50YXRpb24gZnJvbSBJbnNwZWN0b3JD
b250cm9sbGVyIHRvIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KKworICAgICAgICBUaGVyZSBh
cmUgc29tZSBwbGFjZXMgaW4gV2ViQ29yZSB3aGVyZSB3ZSBzdGlsbCB1c2luZyBkaXJlY3QgSW5z
cGVjdG9yQ29udHJvbGxlciBjYWxscy4KKyAgICAgICAgVGhlIGlkZWEgaXMgdG8gcGFzcyBhbGwg
dGhlIEluc3BlY3RvciByZWxhdGVkIGNhbGxzIHZpYSBJbnNwZWN0b3JJbnN0cnVtZW50YWlvbiB3
aGljaCBpcyB0aGUKKyAgICAgICAgSW5zcGVjdG9yIGZhY2FkZSBmb3IgV2ViQ29yZS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI4NjkKKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRQcm9maWxlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9maWxl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJvZmlsZXJF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Z2V0
Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSk6CisgICAgICAgICogcGFnZS9Db25zb2xl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6cHJvZmlsZUVuZCk6CisKIDIwMTEtMDEtMjAgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBkMTFmNzIwLi42NGI5NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC05ODMsMjMgKzk4MywxMSBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZShQYXNzUmVm
UHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgbV9wcm9maWxlckFnZW50LT5hZGRQcm9maWxlKHBycFByb2ZpbGUsIGxpbmVOdW1i
ZXIsIHNvdXJjZVVSTCk7Ci19Ci0KIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aXNSZWNvcmRp
bmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJvZmlsZXJB
Z2VudC0+aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpOwogfQogCi1TdHJpbmcgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29s
IGluY3JlbWVudFByb2ZpbGVOdW1iZXIpCi17Ci0gICAgcmV0dXJuIG1fcHJvZmlsZXJBZ2VudC0+
Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShpbmNyZW1lbnRQcm9maWxlTnVtYmVy
KTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKQogewogICAgIGlmICghZW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZGNkZjdiYy4uZWFhYTFlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yMjcs
OSArMjI3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBib3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBvdmVy
bGF5UmVjdCwgV2ViQ29yZTo6U2V0dGluZ3MqKSBjb25zdDsKIAogI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQotICAgIHZvaWQgYWRkUHJvZmlsZShQYXNzUmVmUHRyPFNjcmlwdFByb2Zp
bGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAg
Ym9vbCBpc1JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKCkgY29uc3Q7Ci0gICAgU3RyaW5n
IGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnRQcm9maWxl
TnVtYmVyID0gZmFsc2UpOwogICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoKSB7IHN0YXJ0VXNlcklu
aXRpYXRlZFByb2ZpbGluZygpOyB9CiAgICAgdm9pZCBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxp
bmcoKTsKICAgICB2b2lkIHN0b3BQcm9maWxpbmcoKSB7IHN0b3BVc2VySW5pdGlhdGVkUHJvZmls
aW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYzI4YTgyYS4uMjYwMjc5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAg
LTU1Miw2ICs1NTIsMjQgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZFN0YXJ0
UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zcGVjdG9yQ28KICAgICBpZiAoSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudCogcHJvZmlsZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPnBy
b2ZpbGVyQWdlbnQoKSkKICAgICAgICAgcHJvZmlsZXJBZ2VudC0+YWRkU3RhcnRQcm9maWxpbmdN
ZXNzYWdlVG9Db25zb2xlKHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkUHJvZmlsZUltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUs
IFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQoreworICAgIGlmIChJbnNwZWN0b3JQcm9maWxl
ckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+cHJvZmlsZXJBZ2Vu
dCgpKSB7CisgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxT
dGFjay0+YXQoMCk7CisgICAgICAgIHByb2ZpbGVyQWdlbnQtPmFkZFByb2ZpbGUocHJvZmlsZSwg
bGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOworICAgIH0K
K30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK3sKKyAgICByZXR1cm4g
aW5zcGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlZCgpICYmIGluc3BlY3RvckNvbnRyb2xsZXItPnBy
b2ZpbGVyQWdlbnQoKS0+ZW5hYmxlZCgpOworfQorCitTdHJpbmcgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBib29sIGluY3JlbWVudFByb2ZpbGVOdW1i
ZXIpCit7CisgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXItPnByb2ZpbGVyQWdlbnQoKS0+
Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShpbmNyZW1lbnRQcm9maWxlTnVtYmVy
KTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDI4ODY3Y2Iu
LjdhN2VlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEzOSw2ICsxMzksOSBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBzdGF0aWMgdm9pZCBhZGRTdGFydFByb2ZpbGlu
Z01lc3NhZ2VUb0NvbnNvbGUoUGFnZSosIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRQ
cm9maWxlKFBhZ2UqLCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIFNjcmlwdENhbGxTdGFjayopOwor
ICAgIHN0YXRpYyBib29sIHByb2ZpbGVyRW5hYmxlZChQYWdlKik7CisgICAgc3RhdGljIFN0cmlu
ZyBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKFBhZ2UqLCBib29sIGluY3JlbWVu
dFByb2ZpbGVOdW1iZXIpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCkBAIC0yNDYs
NiArMjQ5LDkgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQog
ICAgIHN0YXRpYyB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZUltcGwoSW5z
cGVjdG9yQ29udHJvbGxlciosIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRQcm9maWxl
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCBTY3JpcHRD
YWxsU3RhY2sqKTsKKyAgICBzdGF0aWMgYm9vbCBwcm9maWxlckVuYWJsZWRJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqKTsKKyAgICBzdGF0aWMgU3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVk
UHJvZmlsZU5hbWVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBib29sIGluY3JlbWVudFByb2Zp
bGVOdW1iZXIpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCkBAIC04ODEsNiArODg3
LDMyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkU3RhcnRQcm9m
aWxpbmdNZXNzYWdlVG9Db25zb2xlKFBhZ2UqIHBhCiAgICAgICAgIGFkZFN0YXJ0UHJvZmlsaW5n
TWVzc2FnZVRvQ29uc29sZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgdGl0bGUsIGxpbmVOdW1i
ZXIsIHNvdXJjZVVSTCk7CiAjZW5kaWYKIH0KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRQcm9maWxlKFBhZ2UqIHBhZ2UsIFJlZlB0cjxTY3JpcHRQcm9maWxlPiBw
cm9maWxlLCBTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKK3sKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
aW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2UocGFnZSkpCisgICAgICAgIGFkZFByb2ZpbGVJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIHByb2ZpbGUsIGNhbGxTdGFjayk7CisjZW5kaWYKK30KKwor
aW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcm9maWxlckVuYWJsZWQoUGFn
ZSogcGFnZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvclBhZ2Uo
cGFnZSkpCisgICAgICAgIHJldHVybiBwcm9maWxlckVuYWJsZWRJbXBsKGluc3BlY3RvckNvbnRy
b2xsZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgU3RyaW5nIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFt
ZShQYWdlKiBwYWdlLCBib29sIGluY3JlbWVudFByb2ZpbGVOdW1iZXIpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAgICByZXR1cm4g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyKTsKKyNl
bmRpZgorICAgIHJldHVybiAiIjsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
QEAgLTkzNiw2ICs5NjgsNyBAQCBpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyV2l0aEZybwogICAgIH0KICAgICBy
ZXR1cm4gMDsKIH0KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnNvbGUuY3BwCmluZGV4IGQ0YWVkNDEuLjBjMTk0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xl
LmNwcApAQCAtMjYyLDIwICsyNjIsMTMgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlKGNvbnN0IFN0
cmluZyYgdGl0bGUsIFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHQKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
SW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKTsKICAgICAvLyBGSVhNRTogbG9nIGEgY29uc29sZSBtZXNzYWdlIHdoZW4gcHJvZmlsaW5n
IGlzIGRpc2FibGVkLgotICAgIGlmICghY29udHJvbGxlci0+cHJvZmlsZXJFbmFibGVkKCkpCisg
ICAgaWYgKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZChwYWdlKSkK
ICAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAKICAgICBTdHJpbmcgcmVzb2x2ZWRUaXRsZSA9IHRp
dGxlOwogICAgIGlmICh0aXRsZS5pc051bGwoKSkgLy8gbm8gdGl0bGUgc28gZ2l2ZSBpdCB0aGUg
bmV4dCB1c2VyIGluaXRpYXRlZCBwcm9maWxlIHRpdGxlLgotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgICAgIHJlc29sdmVkVGl0bGUgPSBjb250cm9sbGVyLT5nZXRDdXJyZW50VXNlckluaXRp
YXRlZFByb2ZpbGVOYW1lKHRydWUpOwotI2Vsc2UKLSAgICAgICAgcmVzb2x2ZWRUaXRsZSA9ICIi
OwotI2VuZGlmCisgICAgICAgIHJlc29sdmVkVGl0bGUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUocGFnZSwgdHJ1ZSk7CiAKICAg
ICBTY3JpcHRQcm9maWxlcjo6c3RhcnQoc3RhdGUsIHJlc29sdmVkVGl0bGUpOwogCkBAIC0yODks
MjIgKzI4MiwxNSBAQCB2b2lkIENvbnNvbGU6OnByb2ZpbGVFbmQoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcgogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JDb250
cm9sbGVyKiBjb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGlm
ICghY29udHJvbGxlci0+cHJvZmlsZXJFbmFibGVkKCkpCisgICAgaWYgKCFJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZChwYWdlKSkKICAgICAgICAgcmV0dXJuOwotI2Vu
ZGlmCiAKICAgICBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVy
OjpzdG9wKHN0YXRlLCB0aXRsZSk7CiAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3Byb2ZpbGVzLmFwcGVuZChwcm9maWxlKTsKLQotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5h
dCgwKTsKLSAgICBjb250cm9sbGVyLT5hZGRQcm9maWxlKHByb2ZpbGUsIGxhc3RDYWxsZXIubGlu
ZU51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKLSNlbmRpZgorICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6YWRkUHJvZmlsZShwYWdlLCBwcm9maWxlLCBjYWxsU3RhY2suZ2V0
KCkpOwogfQogCiAjZW5kaWYK
</data>
<flag name="review"
          id="71118"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79707</attachid>
            <date>2011-01-21 01:06:45 -0800</date>
            <delta_ts>2011-01-21 01:24:59 -0800</delta_ts>
            <desc>[patch] third iteration</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9421</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNDI2NzI4Li5iNzUxZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDEtMjAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHN3aXRjaCBwYWdlL0NvbnNvbGUgaW1wbGVtZW50YXRpb24gZnJvbSBJbnNwZWN0b3JD
b250cm9sbGVyIHRvIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4KKworICAgICAgICBUaGVyZSBh
cmUgc29tZSBwbGFjZXMgaW4gV2ViQ29yZSB3aGVyZSB3ZSBzdGlsbCB1c2luZyBkaXJlY3QgSW5z
cGVjdG9yQ29udHJvbGxlciBjYWxscy4KKyAgICAgICAgVGhlIGlkZWEgaXMgdG8gcGFzcyBhbGwg
dGhlIEluc3BlY3RvciByZWxhdGVkIGNhbGxzIHZpYSBJbnNwZWN0b3JJbnN0cnVtZW50YWlvbiB3
aGljaCBpcyB0aGUKKyAgICAgICAgSW5zcGVjdG9yIGZhY2FkZSBmb3IgV2ViQ29yZS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI4NjkKKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjphZGRQcm9maWxlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lSW1wbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRQcm9maWxl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJvZmlsZXJF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Z2V0
Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSk6CisgICAgICAgICogcGFnZS9Db25zb2xl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OnByb2ZpbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uc29sZTo6cHJvZmlsZUVuZCk6CisKIDIwMTEtMDEtMjAgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCBkMTFmNzIwLi42NGI5NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC05ODMsMjMgKzk4MywxMSBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZENsb3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZShQYXNzUmVm
UHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgbV9wcm9maWxlckFnZW50LT5hZGRQcm9maWxlKHBycFByb2ZpbGUsIGxpbmVOdW1i
ZXIsIHNvdXJjZVVSTCk7Ci19Ci0KIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6aXNSZWNvcmRp
bmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcHJvZmlsZXJB
Z2VudC0+aXNSZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSgpOwogfQogCi1TdHJpbmcgSW5z
cGVjdG9yQ29udHJvbGxlcjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29s
IGluY3JlbWVudFByb2ZpbGVOdW1iZXIpCi17Ci0gICAgcmV0dXJuIG1fcHJvZmlsZXJBZ2VudC0+
Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShpbmNyZW1lbnRQcm9maWxlTnVtYmVy
KTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKQogewogICAgIGlmICghZW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZGNkZjdiYy4uZWFhYTFlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yMjcs
OSArMjI3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBib3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBvdmVy
bGF5UmVjdCwgV2ViQ29yZTo6U2V0dGluZ3MqKSBjb25zdDsKIAogI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQotICAgIHZvaWQgYWRkUHJvZmlsZShQYXNzUmVmUHRyPFNjcmlwdFByb2Zp
bGU+LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAg
Ym9vbCBpc1JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKCkgY29uc3Q7Ci0gICAgU3RyaW5n
IGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnRQcm9maWxl
TnVtYmVyID0gZmFsc2UpOwogICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoKSB7IHN0YXJ0VXNlcklu
aXRpYXRlZFByb2ZpbGluZygpOyB9CiAgICAgdm9pZCBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxp
bmcoKTsKICAgICB2b2lkIHN0b3BQcm9maWxpbmcoKSB7IHN0b3BVc2VySW5pdGlhdGVkUHJvZmls
aW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYzI4YTgyYS4uNWY4ZDEwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAg
LTU1Miw2ICs1NTIsMzMgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZFN0YXJ0
UHJvZmlsaW5nTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zcGVjdG9yQ28KICAgICBpZiAoSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudCogcHJvZmlsZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPnBy
b2ZpbGVyQWdlbnQoKSkKICAgICAgICAgcHJvZmlsZXJBZ2VudC0+YWRkU3RhcnRQcm9maWxpbmdN
ZXNzYWdlVG9Db25zb2xlKHRpdGxlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwogfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkUHJvZmlsZUltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUs
IFNjcmlwdENhbGxTdGFjayogY2FsbFN0YWNrKQoreworICAgIGlmIChJbnNwZWN0b3JQcm9maWxl
ckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+cHJvZmlsZXJBZ2Vu
dCgpKSB7CisgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxT
dGFjay0+YXQoMCk7CisgICAgICAgIHByb2ZpbGVyQWdlbnQtPmFkZFByb2ZpbGUocHJvZmlsZSwg
bGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOworICAgIH0K
K30KKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByb2ZpbGVyRW5hYmxlZEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK3sKKyAgICBpZiAoaW5z
cGVjdG9yQ29udHJvbGxlci0+ZW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBJbnNwZWN0b3JQcm9maWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQ29udHJv
bGxlci0+cHJvZmlsZXJBZ2VudCgpOworICAgIGlmICghcHJvZmlsZXJBZ2VudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHByb2ZpbGVyQWdlbnQtPmVuYWJsZWQoKTsKK30K
KworU3RyaW5nIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciwgYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyKQoreworICAgIGlmIChJbnNwZWN0b3JQcm9m
aWxlckFnZW50KiBwcm9maWxlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+cHJvZmlsZXJB
Z2VudCgpKQorICAgICAgICByZXR1cm4gcHJvZmlsZXJBZ2VudC0+Z2V0Q3VycmVudFVzZXJJbml0
aWF0ZWRQcm9maWxlTmFtZShpbmNyZW1lbnRQcm9maWxlTnVtYmVyKTsKKyAgICByZXR1cm4gIiI7
Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAyODg2N2NiLi43
YTdlZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCkBAIC0xMzksNiArMTM5LDkgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgc3RhdGljIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdN
ZXNzYWdlVG9Db25zb2xlKFBhZ2UqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgc3RhdGljIHZvaWQgYWRkUHJv
ZmlsZShQYWdlKiwgUmVmUHRyPFNjcmlwdFByb2ZpbGU+LCBTY3JpcHRDYWxsU3RhY2sqKTsKKyAg
ICBzdGF0aWMgYm9vbCBwcm9maWxlckVuYWJsZWQoUGFnZSopOworICAgIHN0YXRpYyBTdHJpbmcg
Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShQYWdlKiwgYm9vbCBpbmNyZW1lbnRQ
cm9maWxlTnVtYmVyKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQpAQCAtMjQ2LDYg
KzI0OSw5IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAg
ICBzdGF0aWMgdm9pZCBhZGRTdGFydFByb2ZpbGluZ01lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAgc3RhdGljIHZvaWQgYWRkUHJvZmlsZUlt
cGwoSW5zcGVjdG9yQ29udHJvbGxlciosIFJlZlB0cjxTY3JpcHRQcm9maWxlPiwgU2NyaXB0Q2Fs
bFN0YWNrKik7CisgICAgc3RhdGljIGJvb2wgcHJvZmlsZXJFbmFibGVkSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKik7CisgICAgc3RhdGljIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRpYXRlZFBy
b2ZpbGVOYW1lSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgYm9vbCBpbmNyZW1lbnRQcm9maWxl
TnVtYmVyKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFCQVNFKQpAQCAtODgxLDYgKzg4Nywz
MiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZFN0YXJ0UHJvZmls
aW5nTWVzc2FnZVRvQ29uc29sZShQYWdlKiBwYQogICAgICAgICBhZGRTdGFydFByb2ZpbGluZ01l
c3NhZ2VUb0NvbnNvbGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpdGxlLCBsaW5lTnVtYmVy
LCBzb3VyY2VVUkwpOwogI2VuZGlmCiB9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkUHJvZmlsZShQYWdlKiBwYWdlLCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gcHJv
ZmlsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCit7CisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBhZ2UpKQorICAgICAgICBhZGRQcm9maWxlSW1wbChp
bnNwZWN0b3JDb250cm9sbGVyLCBwcm9maWxlLCBjYWxsU3RhY2spOworI2VuZGlmCit9CisKK2lu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJvZmlsZXJFbmFibGVkKFBhZ2Uq
IHBhZ2UpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHBh
Z2UpKQorICAgICAgICByZXR1cm4gcHJvZmlsZXJFbmFibGVkSW1wbChpbnNwZWN0b3JDb250cm9s
bGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5lIFN0cmluZyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUo
UGFnZSogcGFnZSwgYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyKQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShwYWdlKSkKKyAgICAgICAgcmV0dXJuIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFt
ZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaW5jcmVtZW50UHJvZmlsZU51bWJlcik7CisjZW5k
aWYKKyAgICByZXR1cm4gIiI7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBA
IC05MzYsNiArOTY4LDcgQEAgaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlcldpdGhGcm8KICAgICB9CiAgICAgcmV0
dXJuIDA7CiB9CisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b25zb2xlLmNwcAppbmRleCBkNGFlZDQxLi4wYzE5NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5j
cHAKQEAgLTI2MiwyMCArMjYyLDEzIEBAIHZvaWQgQ29uc29sZTo6cHJvZmlsZShjb25zdCBTdHJp
bmcmIHRpdGxlLCBTY3JpcHRTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIElu
c3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCk7CiAgICAgLy8gRklYTUU6IGxvZyBhIGNvbnNvbGUgbWVzc2FnZSB3aGVuIHByb2ZpbGluZyBp
cyBkaXNhYmxlZC4KLSAgICBpZiAoIWNvbnRyb2xsZXItPnByb2ZpbGVyRW5hYmxlZCgpKQorICAg
IGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcm9maWxlckVuYWJsZWQocGFnZSkpCiAg
ICAgICAgIHJldHVybjsKLSNlbmRpZgogCiAgICAgU3RyaW5nIHJlc29sdmVkVGl0bGUgPSB0aXRs
ZTsKICAgICBpZiAodGl0bGUuaXNOdWxsKCkpIC8vIG5vIHRpdGxlIHNvIGdpdmUgaXQgdGhlIG5l
eHQgdXNlciBpbml0aWF0ZWQgcHJvZmlsZSB0aXRsZS4KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgICAgICByZXNvbHZlZFRpdGxlID0gY29udHJvbGxlci0+Z2V0Q3VycmVudFVzZXJJbml0aWF0
ZWRQcm9maWxlTmFtZSh0cnVlKTsKLSNlbHNlCi0gICAgICAgIHJlc29sdmVkVGl0bGUgPSAiIjsK
LSNlbmRpZgorICAgICAgICByZXNvbHZlZFRpdGxlID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKHBhZ2UsIHRydWUpOwogCiAgICAg
U2NyaXB0UHJvZmlsZXI6OnN0YXJ0KHN0YXRlLCByZXNvbHZlZFRpdGxlKTsKIApAQCAtMjg5LDIy
ICsyODIsMTUgQEAgdm9pZCBDb25zb2xlOjpwcm9maWxlRW5kKGNvbnN0IFN0cmluZyYgdGl0bGUs
IFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3IKICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVjdG9yQ29udHJv
bGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpZiAo
IWNvbnRyb2xsZXItPnByb2ZpbGVyRW5hYmxlZCgpKQorICAgIGlmICghSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpwcm9maWxlckVuYWJsZWQocGFnZSkpCiAgICAgICAgIHJldHVybjsKLSNlbmRp
ZgogCiAgICAgUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHByb2ZpbGUgPSBTY3JpcHRQcm9maWxlcjo6
c3RvcChzdGF0ZSwgdGl0bGUpOwogICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9wcm9maWxlcy5hcHBlbmQocHJvZmlsZSk7Ci0KLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgbGFzdENhbGxlciA9IGNhbGxTdGFjay0+YXQo
MCk7Ci0gICAgY29udHJvbGxlci0+YWRkUHJvZmlsZShwcm9maWxlLCBsYXN0Q2FsbGVyLmxpbmVO
dW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmFkZFByb2ZpbGUocGFnZSwgcHJvZmlsZSwgY2FsbFN0YWNrLmdldCgp
KTsKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>