<?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>95498</bug_id>
          
          <creation_ts>2012-08-30 14:08:50 -0700</creation_ts>
          <short_desc>[New Multicolumn] Implement unforced breaking in columns</short_desc>
          <delta_ts>2012-08-31 08:46:48 -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>Layout and Rendering</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="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>709017</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-08-30 14:08:50 -0700</bug_when>
    <thetext>Implement proper unforced breaking inside columns. Lines and objects now break across boundaries correctly. Unforced breaks work. Forced ones are muddled and still use region rather than column. I&apos;ll cover that in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709029</commentid>
    <comment_count>1</comment_count>
      <attachid>161556</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-08-30 14:22:12 -0700</bug_when>
    <thetext>Created attachment 161556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709043</commentid>
    <comment_count>2</comment_count>
      <attachid>161556</attachid>
    <who name="">mitz</who>
    <bug_when>2012-08-30 14:45:34 -0700</bug_when>
    <thetext>Comment on attachment 161556
Patch

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

&gt; Source/WebCore/ChangeLog:36
&gt; +        thus forcing us to repaginate everythign.

typo: everythign

&gt; Source/WebCore/ChangeLog:42
&gt; +        Always return the last region if it&apos;s a set, regardless of the extendLastRegion boolan.

typo: boolan

&gt; Source/WebCore/rendering/RenderBlock.cpp:1455
&gt; +    } else if (isRenderFlowThread()) {
&gt; +        pageLogicalHeight = 1; // This is just a hack to always make sure we have a page logical height.
&gt; +        pageLogicalHeightChanged = toRenderFlowThread(this)-&gt;pageLogicalHeightChanged();

I’d like to see RenderBlock doing less testing for known subclasses of itself and more calling virtual functions that have overrides in those subclasses. This is a general comment, though, and you don’t need to address it in this iteration.

&gt; Source/WebCore/rendering/RenderRegion.h:111
&gt; +    // The top of the nearest page inside the region. For RenderRegions, this is just the logical top of the
&gt; +    // flow thread portion we contain. For sets, we have to figure out the top of the nearest column or
&gt; +    // page.

“nearest” could imply that we search in both directions, but we never return the top of a page that’s *after* the offset, do we?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709663</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-08-31 08:46:48 -0700</bug_when>
    <thetext>Landed in r127267.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161556</attachid>
            <date>2012-08-30 14:22:12 -0700</date>
            <delta_ts>2012-08-30 14:45:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21122</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNzE4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDEyLTA4LTMwICBEYXZpZCBI
eWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KKworICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBJbXBs
ZW1lbnQgdW5mb3JjZWQgYnJlYWtpbmcgaW4gdGhlIG5ldyBjb2x1bW4gbGF5b3V0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0OTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgdW5mb3JjZWQgYnJlYWtpbmcgZm9yIGxpbmVzIGFuZCBvYmplY3RzIGluc2lkZSBjb2x1
bW5zLiBGb3JjZWQgYnJlYWtzIGFyZQorICAgICAgICBub3QgeWV0IGhhbmRsZWQgcHJvcGVybHkg
YW5kIHdpbGwgYmUgY292ZXJlZCBpbiBhIHNlcGFyYXRlIHBhdGNoLgorCisgICAgICAgICogcmVu
ZGVyaW5nL0xheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpM
YXlvdXRTdGF0ZSk6CisgICAgICAgIEVsaW1pbmF0ZSB0aGUgZmxvdyB0aHJlYWQgY29uc3RydWN0
b3IgZm9yIExheW91dFN0YXRlLiBGbG93IHRocmVhZHMgd2VyZSBkb2luZyBhIGRvdWJsZSBwdXNo
IG9mCisgICAgICAgIGxheW91dCBzdGF0ZXMsIG9uY2UgaW4gUmVuZGVyRmxvd1RocmVhZDo6bGF5
b3V0KCkgYW5kIHRoZW4gYWdhaW4gaW4gUmVuZGVyQmxvY2s6OmxheW91dCgpLiBUaGlzCisgICAg
ICAgIGRvdWJsZSBwdXNoIHdhcyB1bm5lY2Vzc2FyeSwgc28gSSByZWZhY3RvcmVkIHRoZSBjb2Rl
IHRvIGVuc3VyZSB0aGUgUmVuZGVyQmxvY2sgcHVzaCBkb2VzIHRoZQorICAgICAgICByaWdodCB0
aGluZyBmb3IgUmVuZGVyRmxvd1RocmVhZHMuCisKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAoTGF5b3V0U3RhdGUpOgorICAg
ICAgICBFbGltaW5hdGUgdGhlIGZsb3cgdGhyZWFkIGNvbnN0cnVjdG9yIGZvciBMYXlvdXRTdGF0
ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6Y2hlY2tGb3JQYWdpbmF0aW9uTG9naWNhbEhlaWdodENoYW5nZSk6
CisgICAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGhhbmRsZXMgUmVuZGVyRmxvd1RocmVhZHMgYW5k
IHByb3Blcmx5IHNldHMgYSBub24temVybyBwYWdlIGhlaWdodCBhcyB3ZWxsCisgICAgICAgIGFz
IHF1ZXJ5aW5nIHRoZSBmbG93IHRocmVhZCB0byBhc2sgaWYgdGhlIHBhZ2luYXRpb24gbG9naWNh
bCBoZWlnaHQgaGFzIGNoYW5nZWQuIFRoZSBmbG93IHRocmVhZAorICAgICAgICBoYXMgYSBuZXcg
bWVtYmVyIHRoYXQgaXQgc2V0cyBpbiBsYXlvdXQoKSBzbyB0aGF0IGl0IGNhbiBhbnN3ZXIgdGhp
cyBxdWVzdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Omhhc05leHRQYWdl
KToKKyAgICAgICAgTWFrZSBzdXJlIFJlbmRlclJlZ2lvblNldHMgYWx3YXlzIGNsYWltIHRvIGhh
dmUgYSBuZXh0IHBhZ2Ugd2hlbiB0aGV5IGFyZSB0aGUgbGFzdCByZWdpb24sIHNpbmNlCisgICAg
ICAgIHdlIGtub3cgY29sdW1ucy9wYWdlcyBjYW4gYWx3YXlzIGdlbmVyYXRlIGFkZGl0aW9uYWwg
Ym94ZXMgYXMgbmVlZGVkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVh
ZCk6CisgICAgICAgIEFkZCB0aGUgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgbWVtYmVyIHZh
cmlhYmxlIGZvciB0cmFja2luZyB3aGV0aGVyIHJlZ2lvbnMgY2hhbmdlZCBkaW1lbnNpb25zLAor
ICAgICAgICB0aHVzIGZvcmNpbmcgdXMgdG8gcmVwYWdpbmF0ZSBldmVyeXRoaWduLgorCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQpOgorICAgICAgICBSZW1vdmUg
dGhlIHJlZHVuZGFudCBwdXNoIG9mIGxheW91dCBzdGF0ZSBub3cgdGhhdCBSZW5kZXJCbG9jaydz
IGNvdmVycyBpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVnaW9u
QXRCbG9ja09mZnNldCk6CisgICAgICAgIEFsd2F5cyByZXR1cm4gdGhlIGxhc3QgcmVnaW9uIGlm
IGl0J3MgYSBzZXQsIHJlZ2FyZGxlc3Mgb2YgdGhlIGV4dGVuZExhc3RSZWdpb24gYm9vbGFuLgor
ICAgICAgICBUaGlzIHJlZmxlY3RzIHRoZSBmYWN0IHRoYXQgdGhlIGxhc3QgcmVnaW9uIHNldCBj
YW4gYWx3YXlzIGdlbmVyYXRlIG5ldyBwYWdlL2NvbHVtbiBib3hlcy4KKworICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQpOgorICAgICAg
ICBSZWZhY3RvcmVkIHRvIGNhbGwgaW50byB0aGUgcmVnaW9uIGl0IGZpbmRzIGZvciBhIGdpdmVu
IG9mZnNldCwgc28gdGhhdCB0aGUgcmVnaW9uIGl0c2VsZgorICAgICAgICBjYW4gYW5zd2VyIHRo
ZSBxdWVzdGlvbiBvZiB3aGVyZSB0aGUgdG9wIG9mIHRoZSBwYWdlIGlzLiBUaGlzIGVuYWJsZXMg
c2V0cyB0byByZXR1cm4gdGhlIHRvcCBvZgorICAgICAgICBzcGVjaWZpYyBjb2x1bW5zL3BhZ2Vz
IHdpdGhpbiB0aGUgc2V0LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpw
YWdlUmVtYWluaW5nTG9naWNhbEhlaWdodEZvck9mZnNldCk6CisgICAgICAgIENoYW5nZWQgdG8g
YmUgd3JpdHRlbiBpbiB0ZXJtcyBvZiBwYWdlTG9naWNhbFRvcCBhbmQgcGFnZUxvZ2ljYWxIZWln
aHQgc28gdGhhdCBpdCBjb3JyZWN0bHkgdXNlcworICAgICAgICBvbmx5IHRoZSBjdXJyZW50IGNv
bHVtbi9wYWdlIHdoZW4gZGV0ZXJtaW5pbmcgcmVtYWluaW5nIGhlaWdodC4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisgICAgICAgIEFkZGVkIHBhZ2VMb2dpY2Fs
SGVpZ2h0Q2hhbmdlZCgpIHNvIHRoYXQgUmVuZGVyQmxvY2sgY2FuIGFzayB0aGUgZmxvdyB0aHJl
YWQgaWYgaXRzIHJlZ2lvbnMgY2hhbmdlZAorICAgICAgICBkaW1lbnNpb25zLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTXVsdGlDb2x1bW5CbG9jazo6Y2hlY2tGb3JQYWdpbmF0aW9uTG9naWNhbEhlaWdo
dENoYW5nZSk6CisgICAgICAgIFR3ZWFrZWQgdG8gbm8gbG9uZ2VyIHR1cm4gb24gcGFnaW5hdGlv
biwgc2luY2UgdGhlIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCBkb2VzIHRoYXQgYW5kIHdl
CisgICAgICAgIHdhbnQgdG8gYXZvaWQgYSBkb3VibGUgcHVzaCBvZiBwYWdpbmF0ZWQgc3RhdGVz
LiBJbnN0ZWFkIGl0IG5vdyBqdXN0IHNldHMgdGhlIGNvbHVtbiBoZWlnaHQgYWhlYWQKKyAgICAg
ICAgb2YgdGltZSBzbyB0aGF0IHRoZSBSZW5kZXJNdWx0aUNvbHVtblNldHMga25vdyBob3cgYmln
IHRoZWlyIGNvbHVtbnMgYXJlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWdl
TG9naWNhbFRvcEZvck9mZnNldCk6CisgICAgICAgIFN1YmNsYXNzZWQgdG8gcmV0dXJuIHRoZSB0
b3Agb2YgYSBzcGVjaWZpYyBjb2x1bW4uCisKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oOgorICAgICAgICBBZGQgdGhlIHN1YmNs
YXNzZWQgbWV0aG9kIGZvciBwYWdlTG9naWNhbFRvcEZvck9mZnNldC4KKyAgICAgICAgCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZWdpb246OnBhZ2VMb2dpY2FsVG9wRm9yT2Zmc2V0KToKKyAgICAgICAgVGhlIGNvZGUgZnJv
bSBSZW5kZXJGbG93OjpwYWdlTG9naWNhbFRvcEZvck9mZnNldCBtb3ZlZCBoZXJlLiBKdXN0IHJl
dHVybnMgdGhlIHRvcCBvZiB0aGUgZmxvdworICAgICAgICB0aHJlYWQgcG9ydGlvbiByZWN0IGlu
IHRoZSByZWdpb24gKHNhbWUgYXMgYmVmb3JlKS4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVnaW9uOjpsYXlvdXQpOgorICAgICAgICBDaGFuZ2VkIHRvIGNoZWNrIG9ubHkgdGhlIHBhZ2Ug
bG9naWNhbCB3aWR0aCBhbmQgaGVpZ2h0LCBzaW5jZSB3ZSBvbmx5IGNvbnNpZGVyIGEgcmVnaW9u
IGFzCisgICAgICAgIGludmFsaWRhdGluZyBob3cgeW91IGJyZWFrIGlmIHRoZXJlIGlzIGFuIGFj
dHVhbCBwYWdlIGhlaWdodCBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVn
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmlzUmVuZGVyUmVnaW9uU2V0
KToKKyAgICAgICAgQWRkZWQgYW4gaXNSZW5kZXJSZWdpb25TZXQoKSB2aXJ0dWFsIGZ1bmN0aW9u
IHNvIHRoYXQgd2UgY2FuIHRlc3QgZm9yIHNldHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyUmVnaW9uU2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb25TZXQ6OmlzUmVu
ZGVyUmVnaW9uU2V0KToKKyAgICAgICAgU3ViY2xhc3NlZCBpc1JlbmRlclJlZ2lvblNldCgpIHRv
IHJldHVybiB0cnVlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAgICAgIChMYXlvdXRTdGF0ZU1haW50
YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGVNYWludGFpbmVyOjpwdXNoKToK
KyAgICAgICAgUmVtb3ZlIHRoZSBwdXNoZXMgb2YgTGF5b3V0U3RhdGUgdGhhdCB3ZXJlIHNwZWNp
ZmljIHRvIFJlbmRlckZsb3dUaHJlYWRzLgorCiAyMDEyLTA4LTMwICBSb2IgQnVpcyAgPHJidWlz
QHJpbS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBTdXBwcmVzcyBBTkdMRSBjb21waWxhdGlvbiB3
YXJuaW5ncwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuY3BwCShy
ZXZpc2lvbiAxMjcwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIExheW91dFN0YXRlOjpMYXlvdXRT
dGF0ZShMYXlvdXRTdGF0ZSogcHIKIAogICAgIC8vIElmIHdlIGVzdGFibGlzaCBhIG5ldyBwYWdl
IGhlaWdodCwgdGhlbiBjYWNoZSB0aGUgb2Zmc2V0IHRvIHRoZSB0b3Agb2YgdGhlIGZpcnN0IHBh
Z2UuCiAgICAgLy8gV2UgY2FuIGNvbXBhcmUgdGhpcyBsYXRlciBvbiB0byBmaWd1cmUgb3V0IHdo
YXQgcGFydCBvZiB0aGUgcGFnZSB3ZSdyZSBhY3R1YWxseSBvbiwKLSAgICBpZiAocGFnZUxvZ2lj
YWxIZWlnaHQgfHwgbV9jb2x1bW5JbmZvKSB7CisgICAgaWYgKHBhZ2VMb2dpY2FsSGVpZ2h0IHx8
IG1fY29sdW1uSW5mbyB8fCByZW5kZXJlci0+aXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKICAgICAg
ICAgbV9wYWdlTG9naWNhbEhlaWdodCA9IHBhZ2VMb2dpY2FsSGVpZ2h0OwogICAgICAgICBib29s
IGlzRmxpcHBlZCA9IHJlbmRlcmVyLT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9k
ZSgpOwogICAgICAgICBtX3BhZ2VPZmZzZXQgPSBMYXlvdXRTaXplKG1fbGF5b3V0T2Zmc2V0Lndp
ZHRoKCkgKyAoIWlzRmxpcHBlZCA/IHJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyByZW5kZXJlci0+
cGFkZGluZ0xlZnQoKSA6IHJlbmRlcmVyLT5ib3JkZXJSaWdodCgpICsgcmVuZGVyZXItPnBhZGRp
bmdSaWdodCgpKSwKQEAgLTEwOSw3ICsxMDksNyBAQCBMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUo
TGF5b3V0U3RhdGUqIHByCiAKICAgICBtX2xheW91dERlbHRhID0gbV9uZXh0LT5tX2xheW91dERl
bHRhOwogICAgIAotICAgIG1faXNQYWdpbmF0ZWQgPSBtX3BhZ2VMb2dpY2FsSGVpZ2h0IHx8IG1f
Y29sdW1uSW5mbzsKKyAgICBtX2lzUGFnaW5hdGVkID0gbV9wYWdlTG9naWNhbEhlaWdodCB8fCBt
X2NvbHVtbkluZm8gfHwgcmVuZGVyZXItPmlzUmVuZGVyRmxvd1RocmVhZCgpOwogCiAgICAgaWYg
KGxpbmVHcmlkKCkgJiYgcmVuZGVyZXItPmhhc0NvbHVtbnMoKSAmJiByZW5kZXJlci0+c3R5bGUo
KS0+aGFzSW5saW5lQ29sdW1uQXhpcygpKQogICAgICAgICBjb21wdXRlTGluZUdyaWRQYWdpbmF0
aW9uT3JpZ2luKHJlbmRlcmVyKTsKQEAgLTEyMSwyMyArMTIxLDYgQEAgTGF5b3V0U3RhdGU6Okxh
eW91dFN0YXRlKExheW91dFN0YXRlKiBwcgogICAgIC8vIEZJWE1FOiA8aHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NDM+IEFwcGx5IGNvbnRyb2wgY2xpcCBpZiBwcmVz
ZW50LgogfQogCi1MYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUqIHByZXYsIFJl
bmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIGJvb2wgcmVnaW9uc0NoYW5nZWQpCi0gICAgOiBt
X2NsaXBwZWQoZmFsc2UpCi0gICAgLCBtX2lzUGFnaW5hdGVkKHRydWUpCi0gICAgLCBtX3BhZ2VM
b2dpY2FsSGVpZ2h0KDEpIC8vIFVzZSBhIGZha2UgaGVpZ2h0IGhlcmUuIFRoYXQgdmFsdWUgaXMg
bm90IGltcG9ydGFudCwganVzdCBuZWVkcyB0byBiZSBub24temVyby4KLSAgICAsIG1fcGFnZUxv
Z2ljYWxIZWlnaHRDaGFuZ2VkKHJlZ2lvbnNDaGFuZ2VkKQotICAgICwgbV9jb2x1bW5JbmZvKDAp
Ci0gICAgLCBtX2xpbmVHcmlkKDApCi0gICAgLCBtX25leHQocHJldikKLSNpZm5kZWYgTkRFQlVH
Ci0gICAgLCBtX3JlbmRlcmVyKGZsb3dUaHJlYWQpCi0jZW5kaWYKLXsKLSNpZmRlZiBOREVCVUcK
LSAgICBVTlVTRURfUEFSQU0oZmxvd1RocmVhZCk7Ci0jZW5kaWYKLX0KLQogTGF5b3V0U3RhdGU6
OkxheW91dFN0YXRlKFJlbmRlck9iamVjdCogcm9vdCkKICAgICA6IG1fY2xpcHBlZChmYWxzZSkK
ICAgICAsIG1faXNQYWdpbmF0ZWQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5b3V0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
TGF5b3V0U3RhdGUuaAkocmV2aXNpb24gMTI3MDUxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheW91dFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIExheW91dFN0YXRlKExheW91dFN0YXRlKiwgUmVuZGVyQm94KiwgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBMYXlvdXRVbml0IHBhZ2VIZWlnaHQsIGJvb2wgcGFnZUhl
aWdodENoYW5nZWQsIENvbHVtbkluZm8qKTsKLSAgICBMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSos
IFJlbmRlckZsb3dUaHJlYWQqLCBib29sIHJlZ2lvbnNDaGFuZ2VkKTsKICAgICBMYXlvdXRTdGF0
ZShSZW5kZXJPYmplY3QqKTsKIAogICAgIHZvaWQgZGVzdHJveShSZW5kZXJBcmVuYSopOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAxMjcw
NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDUwLDYgKzE0NTAsOSBAQCB2b2lkIFJlbmRlckJsb2NrOjpjaGVja0ZvclBh
Z2luYXRpb25Mb2dpCiAgICAgICAgICAgICBjb2xJbmZvLT5jbGVhckZvcmNlZEJyZWFrcygpOwog
CiAgICAgICAgIGNvbEluZm8tPnNldFBhZ2luYXRpb25Vbml0KHBhZ2luYXRpb25Vbml0KCkpOwor
ICAgIH0gZWxzZSBpZiAoaXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgcGFnZUxvZ2lj
YWxIZWlnaHQgPSAxOyAvLyBUaGlzIGlzIGp1c3QgYSBoYWNrIHRvIGFsd2F5cyBtYWtlIHN1cmUg
d2UgaGF2ZSBhIHBhZ2UgbG9naWNhbCBoZWlnaHQuCisgICAgICAgIHBhZ2VMb2dpY2FsSGVpZ2h0
Q2hhbmdlZCA9IHRvUmVuZGVyRmxvd1RocmVhZCh0aGlzKS0+cGFnZUxvZ2ljYWxIZWlnaHRDaGFu
Z2VkKCk7CiAgICAgfQogfQogCkBAIC02ODgwLDcgKzY4ODMsNyBAQCBib29sIFJlbmRlckJsb2Nr
OjpoYXNOZXh0UGFnZShMYXlvdXRVbml0CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAocmVnaW9uLT5pc0xhc3RSZWdpb24oKSkKLSAgICAgICAgcmV0dXJu
IHJlZ2lvbi0+c3R5bGUoKS0+cmVnaW9uT3ZlcmZsb3coKSA9PSBCcmVha1JlZ2lvbk92ZXJmbG93
CisgICAgICAgIHJldHVybiByZWdpb24tPmlzUmVuZGVyUmVnaW9uU2V0KCkgfHwgcmVnaW9uLT5z
dHlsZSgpLT5yZWdpb25PdmVyZmxvdygpID09IEJyZWFrUmVnaW9uT3ZlcmZsb3cKICAgICAgICAg
ICAgIHx8IChwYWdlQm91bmRhcnlSdWxlID09IEluY2x1ZGVQYWdlQm91bmRhcnkgJiYgcGFnZU9m
ZnNldCA9PSByZWdpb24tPm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuY3BwCShyZXZpc2lvbiAxMjcwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcg
QEAgUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVyRmxvd1RocmVhZChOb2RlKgogICAgICwgbV9vdmVy
c2V0KHRydWUpCiAgICAgLCBtX2hhc1JlZ2lvbnNXaXRoU3R5bGluZyhmYWxzZSkKICAgICAsIG1f
ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudChmYWxzZSkKKyAgICAsIG1fcGFnZUxvZ2lj
YWxIZWlnaHRDaGFuZ2VkKGZhbHNlKQogewogICAgIEFTU0VSVChub2RlLT5kb2N1bWVudCgpLT5j
c3NSZWdpb25zRW5hYmxlZCgpKTsKICAgICBzZXRJc0Fub255bW91cyhmYWxzZSk7CkBAIC0xMzIs
NyArMTMzLDcgQEAgcHJpdmF0ZToKIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQog
ewotICAgIGJvb2wgcmVnaW9uc0NoYW5nZWQgPSBtX3JlZ2lvbnNJbnZhbGlkYXRlZCAmJiBldmVy
SGFkTGF5b3V0KCk7CisgICAgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBtX3JlZ2lvbnNJ
bnZhbGlkYXRlZCAmJiBldmVySGFkTGF5b3V0KCk7CiAgICAgaWYgKG1fcmVnaW9uc0ludmFsaWRh
dGVkKSB7CiAgICAgICAgIG1fcmVnaW9uc0ludmFsaWRhdGVkID0gZmFsc2U7CiAgICAgICAgIG1f
aGFzVmFsaWRSZWdpb25zID0gZmFsc2U7CkBAIC0xODQsMTUgKzE4NSwxNSBAQCB2b2lkIFJlbmRl
ckZsb3dUaHJlYWQ6OmxheW91dCgpCiAgICAgfQogCiAgICAgQ3VycmVudFJlbmRlckZsb3dUaHJl
YWRNYWludGFpbmVyIGN1cnJlbnRGbG93VGhyZWFkU2V0dGVyKHRoaXMpOwotICAgIExheW91dFN0
YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCksIHRoaXMsIHJlZ2lvbnNDaGFuZ2VkKTsK
ICAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7Ci0gICAgc3RhdGVQdXNoZXIucG9wKCk7Ci0gICAg
Ci0gICAgaWYgKHNob3VsZERpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQoKSkKLSAgICAg
ICAgZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpOwotICAgICAgICAKKworICAgIG1f
cGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkID0gZmFsc2U7CisKICAgICBpZiAobGFzdFJlZ2lvbigp
KQogICAgICAgICBsYXN0UmVnaW9uKCktPmV4cGFuZFRvRW5jb21wYXNzRmxvd1RocmVhZENvbnRl
bnRzSWZOZWVkZWQoKTsKKworICAgIGlmIChzaG91bGREaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0
ZUV2ZW50KCkpCisgICAgICAgIGRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQoKTsKIH0K
IAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbFdpZHRoKCkKQEAgLTM2NSwx
MSArMzY2LDEwIEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uQXQKICAg
ICAgICAgICAgIHJldHVybiByZWdpb247CiAKICAgICAgICAgTGF5b3V0UmVjdCByZWdpb25SZWN0
ID0gcmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKTsKLQogICAgICAgICBpZiAoKHVzZUhv
cml6b250YWxXcml0aW5nTW9kZSAmJiBvZmZzZXQgPCByZWdpb25SZWN0Lm1heFkoKSkgfHwgKCF1
c2VIb3Jpem9udGFsV3JpdGluZ01vZGUgJiYgb2Zmc2V0IDwgcmVnaW9uUmVjdC5tYXhYKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIHJlZ2lvbjsKIAotICAgICAgICBpZiAoZXh0ZW5kTGFzdFJlZ2lv
bikKKyAgICAgICAgaWYgKGV4dGVuZExhc3RSZWdpb24gfHwgcmVnaW9uLT5pc1JlbmRlclJlZ2lv
blNldCgpKQogICAgICAgICAgICAgbGFzdFZhbGlkUmVnaW9uID0gcmVnaW9uOwogICAgIH0KIApA
QCAtMzc5LDkgKzM3OSw3IEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9u
QXQKIExheW91dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6cGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQo
TGF5b3V0VW5pdCBvZmZzZXQpIGNvbnN0CiB7CiAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSBy
ZWdpb25BdEJsb2NrT2Zmc2V0KG9mZnNldCk7Ci0gICAgaWYgKCFyZWdpb24pCi0gICAgICAgIHJl
dHVybiBaRVJPX0xBWU9VVF9VTklUOwotICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gcmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS55KCkgOiByZWdpb24tPmZsb3dU
aHJlYWRQb3J0aW9uUmVjdCgpLngoKTsKKyAgICByZXR1cm4gcmVnaW9uID8gcmVnaW9uLT5wYWdl
TG9naWNhbFRvcEZvck9mZnNldChvZmZzZXQpIDogWkVST19MQVlPVVRfVU5JVDsKIH0KIAogTGF5
b3V0VW5pdCBSZW5kZXJGbG93VGhyZWFkOjpwYWdlTG9naWNhbFdpZHRoRm9yT2Zmc2V0KExheW91
dFVuaXQgb2Zmc2V0KSBjb25zdApAQCAtNDAxLDE0ICszOTksMTUgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJGbG93VGhyZWFkOjpwYWdlUmVtYWluaQogICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gcmVn
aW9uQXRCbG9ja09mZnNldChvZmZzZXQpOwogICAgIGlmICghcmVnaW9uKQogICAgICAgICByZXR1
cm4gWkVST19MQVlPVVRfVU5JVDsKLQotICAgIExheW91dFVuaXQgcmVnaW9uTG9naWNhbEJvdHRv
bSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9u
UmVjdCgpLm1heFkoKSA6IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkubWF4WCgpOwot
ICAgIExheW91dFVuaXQgcmVtYWluaW5nSGVpZ2h0ID0gcmVnaW9uTG9naWNhbEJvdHRvbSAtIG9m
ZnNldDsKKyAgICAKKyAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsVG9wID0gcmVnaW9uLT5wYWdl
TG9naWNhbFRvcEZvck9mZnNldChvZmZzZXQpOworICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxI
ZWlnaHQgPSByZWdpb24tPnBhZ2VMb2dpY2FsSGVpZ2h0KCk7CisgICAgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEJvdHRvbSA9IHBhZ2VMb2dpY2FsVG9wICsgcGFnZUxvZ2ljYWxIZWlnaHQ7CisgICAg
TGF5b3V0VW5pdCByZW1haW5pbmdIZWlnaHQgPSBwYWdlTG9naWNhbEJvdHRvbSAtIG9mZnNldDsK
ICAgICBpZiAocGFnZUJvdW5kYXJ5UnVsZSA9PSBJbmNsdWRlUGFnZUJvdW5kYXJ5KSB7CiAgICAg
ICAgIC8vIElmIEluY2x1ZGVQYWdlQm91bmRhcnkgaXMgc2V0LCB0aGUgbGluZSBleGFjdGx5IG9u
IHRoZSB0b3AgZWRnZSBvZiBhCiAgICAgICAgIC8vIHJlZ2lvbiB3aWxsIGFjdCBhcyBiZWluZyBw
YXJ0IG9mIHRoZSBwcmV2aW91cyByZWdpb24uCi0gICAgICAgIExheW91dFVuaXQgcmVnaW9uSGVp
Z2h0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRp
b25SZWN0KCkuaGVpZ2h0KCkgOiByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLndpZHRo
KCk7Ci0gICAgICAgIHJlbWFpbmluZ0hlaWdodCA9IGludE1vZChyZW1haW5pbmdIZWlnaHQsIHJl
Z2lvbkhlaWdodCk7CisgICAgICAgIHJlbWFpbmluZ0hlaWdodCA9IGludE1vZChyZW1haW5pbmdI
ZWlnaHQsIHBhZ2VMb2dpY2FsSGVpZ2h0KTsKICAgICB9CiAgICAgcmV0dXJuIHJlbWFpbmluZ0hl
aWdodDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJl
YWQuaAkocmV2aXNpb24gMTI3MDUxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsb3dUaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw4IEBAIHB1YmxpYzoK
ICAgICAvLyBDaGVjayBpZiB0aGUgb2JqZWN0IGlzIGluIHJlZ2lvbiBhbmQgdGhlIHJlZ2lvbiBp
cyBwYXJ0IG9mIHRoaXMgZmxvdyB0aHJlYWQuCiAgICAgYm9vbCBvYmplY3RJbkZsb3dSZWdpb24o
Y29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyUmVnaW9uKikgY29uc3Q7CiAKKyAgICBi
b29sIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUxvZ2lj
YWxIZWlnaHRDaGFuZ2VkOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCA9IDA7CiAKQEAgLTE4MCw2ICsxODIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBtX292ZXJzZXQ7CiAgICAgYm9vbCBtX2hhc1JlZ2lvbnNXaXRoU3R5bGluZzsK
ICAgICBib29sIG1fZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudDsKKyAgICBib29sIG1f
cGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkOwogfTsKIAogaW5saW5lIFJlbmRlckZsb3dUaHJlYWQq
IHRvUmVuZGVyRmxvd1RocmVhZChSZW5kZXJPYmplY3QqIG9iamVjdCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHAJKHJl
dmlzaW9uIDEyNzA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNv
bHVtbkJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMjMgKzc4LDE5IEBAIGJvb2wgUmVu
ZGVyTXVsdGlDb2x1bW5CbG9jazo6cmVjb21wdXRlTG8KICAgICByZXR1cm4gcmVsYXlvdXRDaGls
ZHJlbjsKIH0KIAotdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkJsb2NrOjpjaGVja0ZvclBhZ2luYXRp
b25Mb2dpY2FsSGVpZ2h0Q2hhbmdlKExheW91dFVuaXQmIHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29s
JiBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQsIGJvb2wmIGhhc1NwZWNpZmllZFBhZ2VMb2dpY2Fs
SGVpZ2h0KQordm9pZCBSZW5kZXJNdWx0aUNvbHVtbkJsb2NrOjpjaGVja0ZvclBhZ2luYXRpb25M
b2dpY2FsSGVpZ2h0Q2hhbmdlKExheW91dFVuaXQmIC8qcGFnZUxvZ2ljYWxIZWlnaHQqLywgYm9v
bCYgLypwYWdlTG9naWNhbEhlaWdodENoYW5nZWQqLywgYm9vbCYgLypoYXNTcGVjaWZpZWRQYWdl
TG9naWNhbEhlaWdodCovKQogewotICAgIC8vIFdlIG5lZWQgdG8gZ28gYWhlYWQgYW5kIHNldCBv
dXIgZXhwbGljaXQgcGFnZSBoZWlnaHQgaWYgb25lIGV4aXN0cywgc28gdGhhdCB3ZSBjYW4KLSAg
ICAvLyBhdm9pZCBkb2luZyBtdWx0aXBsZSBsYXlvdXQgcGFzc2VzLgorICAgIC8vIFdlIGRvbid0
IGFjdHVhbGx5IHVwZGF0ZSBhbnkgb2YgdGhlIHZhcmlhYmxlcy4gV2UganVzdCBzdWJjbGFzc2Vk
IHRvIGFkanVzdCBvdXIgY29sdW1uIGhlaWdodC4KICAgICBjb21wdXRlTG9naWNhbEhlaWdodCgp
OwogICAgIExheW91dFVuaXQgbmV3Q29udGVudExvZ2ljYWxIZWlnaHQgPSBjb250ZW50TG9naWNh
bEhlaWdodCgpOwogICAgIGlmIChuZXdDb250ZW50TG9naWNhbEhlaWdodCA+IFpFUk9fTEFZT1VU
X1VOSVQpIHsKLSAgICAgICAgcGFnZUxvZ2ljYWxIZWlnaHQgPSBuZXdDb250ZW50TG9naWNhbEhl
aWdodDsKLSAgICAgICAgaGFzU3BlY2lmaWVkUGFnZUxvZ2ljYWxIZWlnaHQgPSB0cnVlOworICAg
ICAgICAvLyBUaGUgcmVnaW9ucyB3aWxsIGJlIGludmFsaWRhdGVkIHdoZW4gd2UgbGF5IHRoZW0g
b3V0IGFuZCB0aGV5IGNoYW5nZSBzaXplIHRvCisgICAgICAgIC8vIHRoZSBuZXcgY29sdW1uIGhl
aWdodC4KKyAgICAgICAgaWYgKGNvbHVtbkhlaWdodCgpICE9IG5ld0NvbnRlbnRMb2dpY2FsSGVp
Z2h0KQorICAgICAgICAgICAgc2V0Q29sdW1uSGVpZ2h0KG5ld0NvbnRlbnRMb2dpY2FsSGVpZ2h0
KTsKICAgICB9CiAgICAgc2V0TG9naWNhbEhlaWdodChaRVJPX0xBWU9VVF9VTklUKTsKIAotICAg
IGlmIChjb2x1bW5IZWlnaHQoKSAhPSBwYWdlTG9naWNhbEhlaWdodCAmJiBldmVySGFkTGF5b3V0
KCkpIHsKLSAgICAgICAgc2V0Q29sdW1uSGVpZ2h0KHBhZ2VMb2dpY2FsSGVpZ2h0KTsKLSAgICAg
ICAgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgLy8g
U2V0IHVwIG91ciBjb2x1bW4gc2V0cy4KICAgICBlbnN1cmVDb2x1bW5TZXRzKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHAJKHJldmlzaW9uIDEyNzA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDEzIEBAIFJlbmRl
ck11bHRpQ29sdW1uU2V0OjpSZW5kZXJNdWx0aUNvbHVtblMKIHsKIH0KIAorTGF5b3V0VW5pdCBS
ZW5kZXJNdWx0aUNvbHVtblNldDo6cGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQoTGF5b3V0VW5pdCBv
ZmZzZXQpIGNvbnN0Cit7CisgICAgTGF5b3V0VW5pdCBwb3J0aW9uTG9naWNhbFRvcCA9IChpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gZmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpIDogZmxv
d1RocmVhZFBvcnRpb25SZWN0KCkueCgpKTsKKyAgICB1bnNpZ25lZCBjb2x1bW5JbmRleCA9IChv
ZmZzZXQgLSBwb3J0aW9uTG9naWNhbFRvcCkgLyBjb21wdXRlZENvbHVtbkhlaWdodCgpOworICAg
IHJldHVybiBwb3J0aW9uTG9naWNhbFRvcCArIGNvbHVtbkluZGV4ICogY29tcHV0ZWRDb2x1bW5I
ZWlnaHQoKTsKK30KKwogdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y29tcHV0ZUxvZ2ljYWxX
aWR0aCgpCiB7CiAgICAgLy8gT3VyIGxvZ2ljYWwgd2lkdGggc3RhcnRzIG9mZiBtYXRjaGluZyB0
aGUgY29sdW1uIGJsb2NrIGl0c2VsZi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCShyZXZpc2lvbiAxMjcwNTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzEsNiArNzEsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWdlTG9n
aWNhbFdpZHRoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jb21wdXRlZENvbHVtbldpZHRo
OyB9CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV9jb21wdXRlZENvbHVtbkhlaWdodDsgfQogCisgICAgdmlydHVhbCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsVG9wRm9yT2Zmc2V0KExheW91dFVuaXQgb2Zmc2V0KSBjb25z
dCBPVkVSUklERTsKKyAgICAKICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGNoYW5nZSBvbmNlIHdl
IGhhdmUgY29sdW1uIHNldHMgY29uc3RyYWluZWQgYnkgZW5jbG9zaW5nIHBhZ2VzLCBldGMuCiAg
ICAgdmlydHVhbCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRPZkFsbEZsb3dUaHJlYWRDb250ZW50
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9jb21wdXRlZENvbHVtbkhlaWdodDsgfQogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAJKHJldmlz
aW9uIDEyNzA1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDExIEBAIExheW91dFJlY3QgUmVuZGVyUmVn
aW9uOjpvdmVyZmxvd1JlY3RGb3IKICAgICByZXR1cm4gY2xpcFJlY3Q7CiB9CiAKK0xheW91dFVu
aXQgUmVuZGVyUmVnaW9uOjpwYWdlTG9naWNhbFRvcEZvck9mZnNldChMYXlvdXRVbml0IC8qIG9m
ZnNldCAqLykgY29uc3QKK3sKKyAgICByZXR1cm4gZmxvd1RocmVhZCgpLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpID8gZmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpIDogZmxvd1RocmVhZFBv
cnRpb25SZWN0KCkueCgpOworfQorCiBib29sIFJlbmRlclJlZ2lvbjo6aXNGaXJzdFJlZ2lvbigp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVmFsaWQoKSAmJiBtX2Zsb3dUaHJlYWQpOwpAQCAtMTg2
LDcgKzE5MSw3IEBAIHZvaWQgUmVuZGVyUmVnaW9uOjpsYXlvdXQoKQogICAgICAgICBMYXlvdXRS
ZWN0IG9sZFJlZ2lvblJlY3QoZmxvd1RocmVhZFBvcnRpb25SZWN0KCkpOwogICAgICAgICBpZiAo
IWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICBvbGRSZWdpb25SZWN0ID0g
b2xkUmVnaW9uUmVjdC50cmFuc3Bvc2VkUmVjdCgpOwotICAgICAgICBpZiAob2xkUmVnaW9uUmVj
dC53aWR0aCgpICE9IHBhZ2VMb2dpY2FsV2lkdGgoKSB8fCBvbGRSZWdpb25SZWN0LmhlaWdodCgp
ICE9IGxvZ2ljYWxIZWlnaHRPZkFsbEZsb3dUaHJlYWRDb250ZW50KCkpCisgICAgICAgIGlmIChv
bGRSZWdpb25SZWN0LndpZHRoKCkgIT0gcGFnZUxvZ2ljYWxXaWR0aCgpIHx8IG9sZFJlZ2lvblJl
Y3QuaGVpZ2h0KCkgIT0gcGFnZUxvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgICAgIG1fZmxvd1Ro
cmVhZC0+aW52YWxpZGF0ZVJlZ2lvbnMoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgJKHJldmlzaW9uIDEyNzA1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDggKzEw
NiwxNiBAQCBwdWJsaWM6CiAgICAgLy8gb3IgY29sdW1ucyBhZGRlZCB0b2dldGhlci4KICAgICB2
aXJ0dWFsIExheW91dFVuaXQgbG9naWNhbEhlaWdodE9mQWxsRmxvd1RocmVhZENvbnRlbnQoKSBj
b25zdDsKIAorICAgIC8vIFRoZSB0b3Agb2YgdGhlIG5lYXJlc3QgcGFnZSBpbnNpZGUgdGhlIHJl
Z2lvbi4gRm9yIFJlbmRlclJlZ2lvbnMsIHRoaXMgaXMganVzdCB0aGUgbG9naWNhbCB0b3Agb2Yg
dGhlCisgICAgLy8gZmxvdyB0aHJlYWQgcG9ydGlvbiB3ZSBjb250YWluLiBGb3Igc2V0cywgd2Ug
aGF2ZSB0byBmaWd1cmUgb3V0IHRoZSB0b3Agb2YgdGhlIG5lYXJlc3QgY29sdW1uIG9yCisgICAg
Ly8gcGFnZS4KKyAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQo
TGF5b3V0VW5pdCBvZmZzZXQpIGNvbnN0OworICAgIAogICAgIHZpcnR1YWwgdm9pZCBleHBhbmRU
b0VuY29tcGFzc0Zsb3dUaHJlYWRDb250ZW50c0lmTmVlZGVkKCkge307CiAKKyAgICAvLyBXaGV0
aGVyIG9yIG5vdCB0aGlzIHJlZ2lvbiBpcyBhIHNldC4KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJSZWdpb25TZXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIAogcHJvdGVjdGVkOgog
ICAgIHZvaWQgc2V0UmVnaW9uT2JqZWN0c1JlZ2lvblN0eWxlKCk7CiAgICAgdm9pZCByZXN0b3Jl
UmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgJKHJldmlzaW9uIDEyNzA1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiAr
NTUsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBleHBhbmRUb0VuY29tcGFzc0Zsb3dU
aHJlYWRDb250ZW50c0lmTmVlZGVkKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCA9IDA7CisgICAgCisgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyUmVnaW9uU2V0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAkocmV2aXNpb24gMTI3MDUxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTYsMTEgKzgxNiw2IEBAIHZvaWQgUmVu
ZGVyVmlldzo6cHVzaExheW91dFN0YXRlKFJlbmRlck8KICAgICBtX2xheW91dFN0YXRlID0gbmV3
IChyZW5kZXJBcmVuYSgpKSBMYXlvdXRTdGF0ZShyb290KTsKIH0KIAotdm9pZCBSZW5kZXJWaWV3
OjpwdXNoTGF5b3V0U3RhdGUoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCwgYm9vbCByZWdp
b25zQ2hhbmdlZCkKLXsKLSAgICBtX2xheW91dFN0YXRlID0gbmV3IChyZW5kZXJBcmVuYSgpKSBM
YXlvdXRTdGF0ZShtX2xheW91dFN0YXRlLCBmbG93VGhyZWFkLCByZWdpb25zQ2hhbmdlZCk7Ci19
Ci0KIGJvb2wgUmVuZGVyVmlldzo6c2hvdWxkRGlzYWJsZUxheW91dFN0YXRlRm9yU3VidHJlZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCogbyA9IHJl
bmRlcmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShyZXZpc2lv
biAxMjcwNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTEsMTcgKzM1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RpZENy
ZWF0ZUxheW91dFN0YXRlKGZhbHNlKQogICAgIHsKICAgICB9Ci0gICAgCi0gICAgTGF5b3V0U3Rh
dGVNYWludGFpbmVyKFJlbmRlclZpZXcqIHZpZXcsIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQsIGJvb2wgcmVnaW9uc0NoYW5nZWQpCi0gICAgICAgIDogbV92aWV3KHZpZXcpCi0gICAgICAg
ICwgbV9kaXNhYmxlZChmYWxzZSkKLSAgICAgICAgLCBtX2RpZFN0YXJ0KGZhbHNlKQotICAgICAg
ICAsIG1fZGlkRW5kKGZhbHNlKQotICAgICAgICAsIG1fZGlkQ3JlYXRlTGF5b3V0U3RhdGUoZmFs
c2UpCi0gICAgewotICAgICAgICBwdXNoKGZsb3dUaHJlYWQsIHJlZ2lvbnNDaGFuZ2VkKTsKLSAg
ICB9Ci0gICAgCisKICAgICB+TGF5b3V0U3RhdGVNYWludGFpbmVyKCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX2RpZFN0YXJ0ID09IG1fZGlkRW5kKTsgICAvLyBpZiB0aGlzIGZpcmVzLCBpdCBt
ZWFucyB0aGF0IHNvbWVvbmUgZGlkIGEgcHVzaCgpLCBidXQgZm9yZ290IHRvIHBvcCgpLgpAQCAt
Mzc2LDE0ICszNjYsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3ZpZXctPmRpc2FibGVMYXlv
dXRTdGF0ZSgpOwogICAgICAgICBtX2RpZFN0YXJ0ID0gdHJ1ZTsKICAgICB9Ci0gICAgCi0gICAg
dm9pZCBwdXNoKFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQsIGJvb2wgcmVnaW9uc0NoYW5n
ZWQpCi0gICAgewotICAgICAgICBBU1NFUlQoIW1fZGlkU3RhcnQpOwotICAgICAgICBtX3ZpZXct
PnB1c2hMYXlvdXRTdGF0ZShmbG93VGhyZWFkLCByZWdpb25zQ2hhbmdlZCk7Ci0gICAgICAgIG1f
ZGlkQ3JlYXRlTGF5b3V0U3RhdGUgPSB0cnVlOwotICAgICAgICBtX2RpZFN0YXJ0ID0gdHJ1ZTsK
LSAgICB9CiAKICAgICB2b2lkIHBvcCgpCiAgICAgewo=
</data>
<flag name="review"
          id="172403"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>