<?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>212740</bug_id>
          
          <creation_ts>2020-06-04 06:04:25 -0700</creation_ts>
          <short_desc>[GTK] MiniBrowser: use GAction API for actions and shortcuts in preparation for GTK4</short_desc>
          <delta_ts>2020-06-05 02:06:14 -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>WebKitGTK</component>
          <version>WebKit 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>210100</blocked>
    
    <blocked>210276</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1659060</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-04 06:04:25 -0700</bug_when>
    <thetext>Make MiniBrowser a GtkApplication and BrowserWindow a GtkApplicationWindow to easily install actions and shortcuts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659061</commentid>
    <comment_count>1</comment_count>
      <attachid>401017</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-04 06:06:33 -0700</bug_when>
    <thetext>Created attachment 401017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659522</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-05 02:06:14 -0700</bug_when>
    <thetext>Committed r262608: &lt;https://trac.webkit.org/changeset/262608&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401017</attachid>
            <date>2020-06-04 06:06:33 -0700</date>
            <delta_ts>2020-06-04 11:57:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>mb-actions.diff</filename>
            <type>text/plain</type>
            <size>63385</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNjVm
NzJmODkxOTUuLmY5NzY1YTliZGZiNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTA2LTA0ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBNaW5pQnJv
d3NlcjogdXNlIEdBY3Rpb24gQVBJIGZvciBhY3Rpb25zIGFuZCBzaG9ydGN1dHMgaW4gcHJlcGFy
YXRpb24gZm9yIEdUSzQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMjc0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgTWluaUJyb3dzZXIgYSBHdGtBcHBsaWNhdGlvbiBhbmQgQnJvd3NlcldpbmRv
dyBhIEd0a0FwcGxpY2F0aW9uV2luZG93IHRvIGVhc2lseSBpbnN0YWxsIGFjdGlvbnMgYW5kIHNo
b3J0Y3V0cy4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyTWFpbi5jOiBSZW1v
dmVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyTWFpbi5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmM6CisgICAgICAgIChz
ZWFyY2hQcmV2aW91c0J1dHRvbkNhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaE5leHRCdXR0b25D
YWxsYmFjayk6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuaDoK
KyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jOgorICAgICAgICAqIE1pbmlC
cm93c2VyL2d0ay9Ccm93c2VyVGFiLmg6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYzoKKyAgICAgICAgKHJlbG9hZE9yU3RvcENhbGxiYWNrKToKKyAgICAgICAgKGdv
QmFja0NhbGxiYWNrKToKKyAgICAgICAgKGdvRm9yd2FyZENhbGxiYWNrKToKKyAgICAgICAgKHNl
dHRpbmdzQ2FsbGJhY2spOgorICAgICAgICAoYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25N
ZW51KToKKyAgICAgICAgKGJyb3dzZXJXaW5kb3dUcnlDbG9zZUN1cnJlbnRXZWJWaWV3KToKKyAg
ICAgICAgKGJyb3dzZXJXaW5kb3dUcnlDbG9zZSk6CisgICAgICAgICh3ZWJWaWV3Q3JlYXRlKToK
KyAgICAgICAgKGJyb3dzZXJXaW5kb3dVcGRhdGVab29tQWN0aW9ucyk6CisgICAgICAgICh3ZWJW
aWV3Wm9vbUxldmVsQ2hhbmdlZCk6CisgICAgICAgICh6b29tSW5DYWxsYmFjayk6CisgICAgICAg
ICh6b29tT3V0Q2FsbGJhY2spOgorICAgICAgICAoZGVmYXVsdFpvb21DYWxsYmFjayk6CisgICAg
ICAgIChzZWFyY2hDYWxsYmFjayk6CisgICAgICAgIChuZXdUYWJDYWxsYmFjayk6CisgICAgICAg
ICh0b2dnbGVXZWJJbnNwZWN0b3IpOgorICAgICAgICAob3BlblByaXZhdGVXaW5kb3cpOgorICAg
ICAgICAoZm9jdXNMb2NhdGlvbkJhcik6CisgICAgICAgIChyZWxvYWRQYWdlKToKKyAgICAgICAg
KHJlbG9hZFBhZ2VJZ25vcmluZ0NhY2hlKToKKyAgICAgICAgKHN0b3BQYWdlTG9hZCk6CisgICAg
ICAgIChsb2FkSG9tZVBhZ2UpOgorICAgICAgICAodG9nZ2xlRnVsbFNjcmVlbik6CisgICAgICAg
IChwcmludFBhZ2UpOgorICAgICAgICAoZWRpdGluZ0FjdGlvbkNhbGxiYWNrKToKKyAgICAgICAg
KHR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKToKKyAgICAgICAgKGJyb3dzZXJXaW5kb3dGaW5hbGl6
ZSk6CisgICAgICAgIChicm93c2VyV2luZG93U2V0dXBFZGl0b3JUb29sYmFySXRlbSk6CisgICAg
ICAgIChicm93c2VyV2luZG93U2V0dXBUb29sYmFySXRlbSk6CisgICAgICAgIChicm93c2VyV2lu
ZG93RGVsZXRlRXZlbnQpOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3dfbmV3KToKKyAgICAgICAg
KGJyb3dzZXJfd2luZG93X2FwcGVuZF92aWV3KToKKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2dl
dF9vcl9jcmVhdGVfd2ViX3ZpZXdfZm9yX2F1dG9tYXRpb24pOgorICAgICAgICAoYnJvd3Nlcl93
aW5kb3dfY3JlYXRlX3dlYl92aWV3X2luX25ld190YWJfZm9yX2F1dG9tYXRpb24pOgorICAgICAg
ICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93Lmg6CisgICAgICAgICogTWluaUJyb3dz
ZXIvZ3RrL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9tYWluLmM6
CisgICAgICAgIChjcmVhdGVXZWJWaWV3Rm9yQXV0b21hdGlvbkluV2luZG93Q2FsbGJhY2spOgor
ICAgICAgICAoY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25JblRhYkNhbGxiYWNrKToKKyAgICAg
ICAgKGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2spOgorICAgICAgICAoc3RhcnR1cCk6CisgICAg
ICAgIChhY3RpdmF0ZSk6CisgICAgICAgIChtYWluKToKKwogMjAyMC0wNi0wMiAgS2VpdGggUm9s
bGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IEZFQVRVUkVTX0RFRklO
RVMgcmVsYXRlZCBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3Nlck1haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyTWFpbi5jCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNThmMTMwNGVkNzIuLjAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nlck1haW4uYworKysgL2Rldi9udWxsCkBAIC0xLDUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgIkJyb3dzZXJNYWluLmgiCi0KLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5
OCwgMCkKLXN0YXRpYyBHTWFpbkxvb3AgKm1haW5Mb29wOwotI2VuZGlmCi0KLXZvaWQgYnJvd3Nl
cl9tYWluKCkKLXsKLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKLSAgICBtYWluTG9v
cCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKLSAgICBnX21haW5fbG9vcF9ydW4obWFp
bkxvb3ApOwotI2Vsc2UKLSAgICBndGtfbWFpbigpOwotI2VuZGlmCi19Ci0KLXZvaWQgYnJvd3Nl
cl9tYWluX3F1aXQoKQotewotI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQotICAgIGdf
bWFpbl9sb29wX3F1aXQobWFpbkxvb3ApOwotICAgIGdfbWFpbl9sb29wX3VucmVmKG1haW5Mb29w
KTsKLSNlbHNlCi0gICAgZ3RrX21haW5fcXVpdCgpOwotI2VuZGlmCi19CmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nlck1haW4uaCBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyTWFpbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmNkODAzN2Ew
ZWEuLjAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nlck1haW4u
aAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBCcm93c2VyTWFpbl9oCi0jZGVmaW5l
IEJyb3dzZXJNYWluX2gKLQotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLQotR19CRUdJTl9ERUNMUwot
Ci12b2lkIGJyb3dzZXJfbWFpbih2b2lkKTsKLXZvaWQgYnJvd3Nlcl9tYWluX3F1aXQodm9pZCk7
Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBCcm93c2VyTWFpbl9oICovCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5jIGIvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYwppbmRleCAxZDVjN2M4YTg4MTguLjcwYmI4OTY5
NzQxMCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIu
YworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5jCkBAIC0xMTQs
MTQgKzExNCwxNCBAQCBzdGF0aWMgdm9pZCBzZWFyY2hFbnRyeUFjdGl2YXRlZENhbGxiYWNrKEJy
b3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKICAgICBzZWFyY2hOZXh0KHNlYXJjaEJhcik7CiB9
CiAKLXN0YXRpYyB2b2lkIHNlYXJjaFByZXZCdXR0b25DbGlja2VkQ2FsbGJhY2soQnJvd3NlclNl
YXJjaEJhciAqc2VhcmNoQmFyKQorc3RhdGljIHZvaWQgc2VhcmNoUHJldmlvdXNCdXR0b25DYWxs
YmFjayhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVy
IHVzZXJEYXRhKQogewotICAgIHNlYXJjaFByZXZpb3VzKHNlYXJjaEJhcik7CisgICAgc2VhcmNo
UHJldmlvdXMoQlJPV1NFUl9TRUFSQ0hfQkFSKHVzZXJEYXRhKSk7CiB9CiAKLXN0YXRpYyB2b2lk
IHNlYXJjaE5leHRCdXR0b25DbGlja2VkQ2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNo
QmFyKQorc3RhdGljIHZvaWQgc2VhcmNoTmV4dEJ1dHRvbkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24g
KmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAg
c2VhcmNoTmV4dChzZWFyY2hCYXIpOworICAgIHNlYXJjaE5leHQoQlJPV1NFUl9TRUFSQ0hfQkFS
KHVzZXJEYXRhKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNlYXJjaE1lbnVDaGVja0J1dHRvblRvZ2ds
ZWRDYWxsYmFjayhCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCkBAIC0xMzksOCArMTM5LDE4
IEBAIHN0YXRpYyB2b2lkIGZpbmRDb250cm9sbGVyRm91bmRUZXh0Q2FsbGJhY2soQnJvd3NlclNl
YXJjaEJhciAqc2VhcmNoQmFyKQogICAgIHNldEZhaWxlZFN0eWxlRm9yRW50cnkoc2VhcmNoQmFy
LCBGQUxTRSk7CiB9CiAKK3N0YXRpYyBjb25zdCBHQWN0aW9uRW50cnkgYWN0aW9uc1tdID0gewor
ICAgIHsgIm5leHQiLCBzZWFyY2hOZXh0QnV0dG9uQ2FsbGJhY2ssIE5VTEwsIE5VTEwsIE5VTEws
IHsgMCB9IH0sCisgICAgeyAicHJldmlvdXMiLCBzZWFyY2hQcmV2aW91c0J1dHRvbkNhbGxiYWNr
LCBOVUxMLCBOVUxMLCBOVUxMLCB7IDAgfSB9LAorfTsKKwogc3RhdGljIHZvaWQgYnJvd3Nlcl9z
ZWFyY2hfYmFyX2luaXQoQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQogeworICAgIEdTaW1w
bGVBY3Rpb25Hcm91cCAqYWN0aW9uR3JvdXAgPSBnX3NpbXBsZV9hY3Rpb25fZ3JvdXBfbmV3KCk7
CisgICAgZ19hY3Rpb25fbWFwX2FkZF9hY3Rpb25fZW50cmllcyhHX0FDVElPTl9NQVAoYWN0aW9u
R3JvdXApLCBhY3Rpb25zLCBHX05fRUxFTUVOVFMoYWN0aW9ucyksIHNlYXJjaEJhcik7CisgICAg
Z3RrX3dpZGdldF9pbnNlcnRfYWN0aW9uX2dyb3VwKEdUS19XSURHRVQoc2VhcmNoQmFyKSwgImZp
bmQiLCBHX0FDVElPTl9HUk9VUChhY3Rpb25Hcm91cCkpOworICAgIGdfb2JqZWN0X3VucmVmKGFj
dGlvbkdyb3VwKTsKKwogICAgIGd0a193aWRnZXRfc2V0X2hleHBhbmQoR1RLX1dJREdFVChzZWFy
Y2hCYXIpLCBUUlVFKTsKIAogICAgIEd0a1Rvb2xJdGVtICp0b29sSXRlbSA9IGd0a190b29sX2l0
ZW1fbmV3KCk7CkBAIC0xNjcsMTIgKzE3NywxNCBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3NlYXJj
aF9iYXJfaW5pdChCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCiAKICAgICBzZWFyY2hCYXIt
PnByZXZCdXR0b24gPSBndGtfYnV0dG9uX25ld19mcm9tX2ljb25fbmFtZSgiZ28tdXAiLCBHVEtf
SUNPTl9TSVpFX1NNQUxMX1RPT0xCQVIpOwogICAgIEd0a0J1dHRvbiAqYnV0dG9uID0gR1RLX0JV
VFRPTihzZWFyY2hCYXItPnByZXZCdXR0b24pOworICAgIGd0a19hY3Rpb25hYmxlX3NldF9hY3Rp
b25fbmFtZShHVEtfQUNUSU9OQUJMRShidXR0b24pLCAiZmluZC5wcmV2aW91cyIpOwogICAgIGd0
a19idXR0b25fc2V0X3JlbGllZihidXR0b24sIEdUS19SRUxJRUZfTk9ORSk7CiAgICAgZ3RrX3dp
ZGdldF9zZXRfZm9jdXNfb25fY2xpY2soc2VhcmNoQmFyLT5wcmV2QnV0dG9uLCBGQUxTRSk7CiAg
ICAgZ3RrX2JveF9wYWNrX3N0YXJ0KGhCb3hCdXR0b25zLCBzZWFyY2hCYXItPnByZXZCdXR0b24s
IEZBTFNFLCBGQUxTRSwgMCk7CiAKICAgICBzZWFyY2hCYXItPm5leHRCdXR0b24gPSBndGtfYnV0
dG9uX25ld19mcm9tX2ljb25fbmFtZSgiZ28tZG93biIsIEdUS19JQ09OX1NJWkVfU01BTExfVE9P
TEJBUik7CiAgICAgYnV0dG9uID0gR1RLX0JVVFRPTihzZWFyY2hCYXItPm5leHRCdXR0b24pOwor
ICAgIGd0a19hY3Rpb25hYmxlX3NldF9hY3Rpb25fbmFtZShHVEtfQUNUSU9OQUJMRShidXR0b24p
LCAiZmluZC5uZXh0Iik7CiAgICAgZ3RrX2J1dHRvbl9zZXRfcmVsaWVmKGJ1dHRvbiwgR1RLX1JF
TElFRl9OT05FKTsKICAgICBndGtfd2lkZ2V0X3NldF9mb2N1c19vbl9jbGljayhzZWFyY2hCYXIt
Pm5leHRCdXR0b24sIEZBTFNFKTsKICAgICBndGtfYm94X3BhY2tfc3RhcnQoaEJveEJ1dHRvbnMs
IHNlYXJjaEJhci0+bmV4dEJ1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKQEAgLTE5OCw4ICsyMTAs
NiBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3NlYXJjaF9iYXJfaW5pdChCcm93c2VyU2VhcmNoQmFy
ICpzZWFyY2hCYXIpCiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJhci0+ZW50
cnksICJpY29uLXJlbGVhc2UiLCBHX0NBTExCQUNLKHNlYXJjaEVudHJ5Q2xlYXJJY29uUmVsZWFz
ZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CiAgICAgZ19zaWduYWxfY29ubmVjdF9hZnRlcihzZWFy
Y2hCYXItPmVudHJ5LCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoRW50cnlDaGFuZ2VkQ2Fs
bGJhY2spLCBzZWFyY2hCYXIpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZWFyY2hC
YXItPmVudHJ5LCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKHNlYXJjaEVudHJ5QWN0aXZhdGVkQ2Fs
bGJhY2spLCBzZWFyY2hCYXIpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZWFyY2hC
YXItPm5leHRCdXR0b24sICJjbGlja2VkIiwgR19DQUxMQkFDSyhzZWFyY2hOZXh0QnV0dG9uQ2xp
Y2tlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
c2VhcmNoQmFyLT5wcmV2QnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoUHJldkJ1
dHRvbkNsaWNrZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CiAgICAgZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKHNlYXJjaEJhci0+Y2FzZUNoZWNrQnV0dG9uLCAidG9nZ2xlZCIsIEdfQ0FMTEJBQ0so
c2VhcmNoTWVudUNoZWNrQnV0dG9uVG9nZ2xlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKICAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2VhcmNoQmFyLT5iZWdnaW5pZ1dvcmRDaGVja0J1dHRv
biwgInRvZ2dsZWQiLCBHX0NBTExCQUNLKHNlYXJjaE1lbnVDaGVja0J1dHRvblRvZ2dsZWRDYWxs
YmFjayksIHNlYXJjaEJhcik7CiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJh
ci0+Y2FwaXRhbEFzQmVnZ2luaWdXb3JkQ2hlY2tCdXR0b24sICJ0b2dnbGVkIiwgR19DQUxMQkFD
SyhzZWFyY2hNZW51Q2hlY2tCdXR0b25Ub2dnbGVkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOwpAQCAt
MjUxLDE4ICsyNjEsNiBAQCBHdGtXaWRnZXQgKmJyb3dzZXJfc2VhcmNoX2Jhcl9uZXcoV2ViS2l0
V2ViVmlldyAqd2ViVmlldykKICAgICByZXR1cm4gc2VhcmNoQmFyOwogfQogCi12b2lkIGJyb3dz
ZXJfc2VhcmNoX2Jhcl9hZGRfYWNjZWxlcmF0b3JzKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJh
ciwgR3RrQWNjZWxHcm91cCAqYWNjZWxHcm91cCkKLXsKLSAgICBnX3JldHVybl9pZl9mYWlsKEJS
T1dTRVJfSVNfU0VBUkNIX0JBUihzZWFyY2hCYXIpKTsKLSAgICBnX3JldHVybl9pZl9mYWlsKEdU
S19JU19BQ0NFTF9HUk9VUChhY2NlbEdyb3VwKSk7Ci0KLSAgICBndGtfd2lkZ2V0X2FkZF9hY2Nl
bGVyYXRvcihzZWFyY2hCYXItPm5leHRCdXR0b24sICJjbGlja2VkIiwgYWNjZWxHcm91cCwgR0RL
X0tFWV9GMywgMCwgR1RLX0FDQ0VMX1ZJU0lCTEUpOwotICAgIGd0a193aWRnZXRfYWRkX2FjY2Vs
ZXJhdG9yKHNlYXJjaEJhci0+bmV4dEJ1dHRvbiwgImNsaWNrZWQiLCBhY2NlbEdyb3VwLCBHREtf
S0VZX0csIEdES19DT05UUk9MX01BU0ssIEdUS19BQ0NFTF9WSVNJQkxFKTsKLQotICAgIGd0a193
aWRnZXRfYWRkX2FjY2VsZXJhdG9yKHNlYXJjaEJhci0+cHJldkJ1dHRvbiwgImNsaWNrZWQiLCBh
Y2NlbEdyb3VwLCBHREtfS0VZX0YzLCBHREtfU0hJRlRfTUFTSywgR1RLX0FDQ0VMX1ZJU0lCTEUp
OwotICAgIGd0a193aWRnZXRfYWRkX2FjY2VsZXJhdG9yKHNlYXJjaEJhci0+cHJldkJ1dHRvbiwg
ImNsaWNrZWQiLCBhY2NlbEdyb3VwLCBHREtfS0VZX0csIEdES19TSElGVF9NQVNLIHwgR0RLX0NP
TlRST0xfTUFTSywgR1RLX0FDQ0VMX1ZJU0lCTEUpOwotfQotCiB2b2lkIGJyb3dzZXJfc2VhcmNo
X2Jhcl9vcGVuKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKIHsKICAgICBnX3JldHVybl9p
Zl9mYWlsKEJST1dTRVJfSVNfU0VBUkNIX0JBUihzZWFyY2hCYXIpKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmggYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlclNlYXJjaEJhci5oCmluZGV4IDliYWEyMmU3ODgxMS4uOTQ1NDE5YTkzYWU1
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmgKQEAgLTUwLDcgKzUw
LDYgQEAgc3RydWN0IF9Ccm93c2VyU2VhcmNoQmFyQ2xhc3MgewogR1R5cGUgYnJvd3Nlcl9zZWFy
Y2hfYmFyX2dldF90eXBlKHZvaWQpOwogCiBHdGtXaWRnZXQgKmJyb3dzZXJfc2VhcmNoX2Jhcl9u
ZXcoV2ViS2l0V2ViVmlldyAqKTsKLXZvaWQgYnJvd3Nlcl9zZWFyY2hfYmFyX2FkZF9hY2NlbGVy
YXRvcnMoQnJvd3NlclNlYXJjaEJhciAqLCBHdGtBY2NlbEdyb3VwICopOwogdm9pZCBicm93c2Vy
X3NlYXJjaF9iYXJfb3BlbihCcm93c2VyU2VhcmNoQmFyICopOwogdm9pZCBicm93c2VyX3NlYXJj
aF9iYXJfY2xvc2UoQnJvd3NlclNlYXJjaEJhciAqKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
VGFiLmMKaW5kZXggNzg2MWNhMTRiMjY3Li5lYmU0N2FkNzg2ZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJUYWIuYwpAQCAtNjM5LDE2ICs2MzksNiBAQCB2b2lkIGJyb3dzZXJfdGFiX3N0b3Bf
c2VhcmNoKEJyb3dzZXJUYWIgKnRhYikKICNlbmRpZgogfQogCi0jaWYgIUdUS19DSEVDS19WRVJT
SU9OKDMsIDk4LCAwKQotdm9pZCBicm93c2VyX3RhYl9hZGRfYWNjZWxlcmF0b3JzKEJyb3dzZXJU
YWIgKnRhYiwgR3RrQWNjZWxHcm91cCAqYWNjZWxHcm91cCkKLXsKLSAgICBnX3JldHVybl9pZl9m
YWlsKEJST1dTRVJfSVNfVEFCKHRhYikpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoR1RLX0lTX0FD
Q0VMX0dST1VQKGFjY2VsR3JvdXApKTsKLQotICAgIGJyb3dzZXJfc2VhcmNoX2Jhcl9hZGRfYWNj
ZWxlcmF0b3JzKHRhYi0+c2VhcmNoQmFyLCBhY2NlbEdyb3VwKTsKLX0KLSNlbmRpZgotCiBzdGF0
aWMgZ2Jvb2xlYW4gZnVsbFNjcmVlbk1lc3NhZ2VUaW1lb3V0Q2FsbGJhY2soQnJvd3NlclRhYiAq
dGFiKQogewogICAgIGd0a193aWRnZXRfaGlkZSh0YWItPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWwp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuaCBiL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmgKaW5kZXggYzUwYTgwOTdlMDI4Li5mMjZkNWNh
MjZjOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmgKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuaApAQCAtNTEsOSArNTEsNiBAQCB2
b2lkIGJyb3dzZXJfdGFiX3NldF9zdGF0dXNfdGV4dChCcm93c2VyVGFiKiwgY29uc3QgY2hhciog
dGV4dCk7CiB2b2lkIGJyb3dzZXJfdGFiX3RvZ2dsZV9pbnNwZWN0b3IoQnJvd3NlclRhYiopOwog
dm9pZCBicm93c2VyX3RhYl9zdGFydF9zZWFyY2goQnJvd3NlclRhYiopOwogdm9pZCBicm93c2Vy
X3RhYl9zdG9wX3NlYXJjaChCcm93c2VyVGFiKik7Ci0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMs
IDk4LCAwKQotdm9pZCBicm93c2VyX3RhYl9hZGRfYWNjZWxlcmF0b3JzKEJyb3dzZXJUYWIqLCBH
dGtBY2NlbEdyb3VwKik7Ci0jZW5kaWYKIHZvaWQgYnJvd3Nlcl90YWJfZW50ZXJfZnVsbHNjcmVl
bihCcm93c2VyVGFiKik7CiB2b2lkIGJyb3dzZXJfdGFiX2xlYXZlX2Z1bGxzY3JlZW4oQnJvd3Nl
clRhYiopOwogdm9pZCBicm93c2VyX3RhYl9zZXRfYmFja2dyb3VuZF9jb2xvcihCcm93c2VyVGFi
KiwgR2RrUkdCQSopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggMWRl
MjE0Y2Q0NjNhLi41OGQxYzA0MTJiZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5k
b3cuYwpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkJyb3dzZXJXaW5kb3cuaCIKIAogI2lu
Y2x1ZGUgIkJyb3dzZXJEb3dubG9hZHNCYXIuaCIKLSNpbmNsdWRlICJCcm93c2VyTWFpbi5oIgog
I2luY2x1ZGUgIkJyb3dzZXJTZWFyY2hCYXIuaCIKICNpbmNsdWRlICJCcm93c2VyU2V0dGluZ3NE
aWFsb2cuaCIKICNpbmNsdWRlICJCcm93c2VyVGFiLmgiCkBAIC0zOSwyNCArMzgsMTYgQEAKICNp
bmNsdWRlIDxzdHJpbmcuaD4KIAogc3RydWN0IF9Ccm93c2VyV2luZG93IHsKLSAgICBHdGtXaW5k
b3cgcGFyZW50OworICAgIEd0a0FwcGxpY2F0aW9uV2luZG93IHBhcmVudDsKIAogICAgIFdlYktp
dFdlYkNvbnRleHQgKndlYkNvbnRleHQ7CiAKLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgs
IDApCi0gICAgR3RrQWNjZWxHcm91cCAqYWNjZWxHcm91cDsKLSNlbmRpZgogICAgIEd0a1dpZGdl
dCAqbWFpbkJveDsKICAgICBHdGtXaWRnZXQgKnRvb2xiYXI7CiAgICAgR3RrV2lkZ2V0ICp1cmlF
bnRyeTsKICAgICBHdGtXaWRnZXQgKmJhY2tJdGVtOwogICAgIEd0a1dpZGdldCAqZm9yd2FyZEl0
ZW07Ci0gICAgR3RrV2lkZ2V0ICp6b29tSW5JdGVtOwotICAgIEd0a1dpZGdldCAqem9vbU91dEl0
ZW07Ci0gICAgR3RrV2lkZ2V0ICpib2xkSXRlbTsKLSAgICBHdGtXaWRnZXQgKml0YWxpY0l0ZW07
Ci0gICAgR3RrV2lkZ2V0ICp1bmRlcmxpbmVJdGVtOwotICAgIEd0a1dpZGdldCAqc3RyaWtldGhy
b3VnaEl0ZW07CisgICAgR3RrV2lkZ2V0ICplZGl0VG9vbGJhcjsKICAgICBHdGtXaWRnZXQgKnNl
dHRpbmdzRGlhbG9nOwogICAgIEd0a1dpZGdldCAqbm90ZWJvb2s7CiAgICAgQnJvd3NlclRhYiAq
YWN0aXZlVGFiOwpAQCAtNzYsNyArNjcsNyBAQCBzdHJ1Y3QgX0Jyb3dzZXJXaW5kb3cgewogfTsK
IAogc3RydWN0IF9Ccm93c2VyV2luZG93Q2xhc3MgewotICAgIEd0a1dpbmRvd0NsYXNzIHBhcmVu
dDsKKyAgICBHdGtBcHBsaWNhdGlvbldpbmRvd0NsYXNzIHBhcmVudDsKIH07CiAKIHN0YXRpYyBj
b25zdCBjaGFyICpkZWZhdWx0V2luZG93VGl0bGUgPSAiV2ViS2l0R1RLIE1pbmlCcm93c2VyIjsK
QEAgLTg0LDkgKzc1LDggQEAgc3RhdGljIGNvbnN0IGdkb3VibGUgbWluaW11bVpvb21MZXZlbCA9
IDAuNTsKIHN0YXRpYyBjb25zdCBnZG91YmxlIG1heGltdW1ab29tTGV2ZWwgPSAzOwogc3RhdGlj
IGNvbnN0IGdkb3VibGUgZGVmYXVsdFpvb21MZXZlbCA9IDE7CiBzdGF0aWMgY29uc3QgZ2RvdWJs
ZSB6b29tU3RlcCA9IDEuMjsKLXN0YXRpYyBHTGlzdCAqd2luZG93TGlzdDsKIAotR19ERUZJTkVf
VFlQRShCcm93c2VyV2luZG93LCBicm93c2VyX3dpbmRvdywgR1RLX1RZUEVfV0lORE9XKQorR19E
RUZJTkVfVFlQRShCcm93c2VyV2luZG93LCBicm93c2VyX3dpbmRvdywgR1RLX1RZUEVfQVBQTElD
QVRJT05fV0lORE9XKQogCiBzdGF0aWMgY2hhciAqZ2V0RXh0ZXJuYWxVUkkoY29uc3QgY2hhciAq
dXJpKQogewpAQCAtMTE4LDggKzEwOCw5IEBAIHN0YXRpYyB2b2lkIGFjdGl2YXRlVXJpRW50cnlD
YWxsYmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgKTsKIH0KIAotc3RhdGljIHZvaWQg
cmVsb2FkT3JTdG9wQ2FsbGJhY2soQnJvd3NlcldpbmRvdyAqd2luZG93KQorc3RhdGljIHZvaWQg
cmVsb2FkT3JTdG9wQ2FsbGJhY2soR1NpbXBsZUFjdGlvbiAqYWN0aW9uLCBHVmFyaWFudCAqcGFy
YW1ldGVyLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKKyAgICBCcm93c2VyV2luZG93ICp3aW5kb3cg
PSBCUk9XU0VSX1dJTkRPVyh1c2VyRGF0YSk7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9
IGJyb3dzZXJfdGFiX2dldF93ZWJfdmlldyh3aW5kb3ctPmFjdGl2ZVRhYik7CiAgICAgaWYgKHdl
YmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKQogICAgICAgICB3ZWJraXRfd2ViX3Zp
ZXdfc3RvcF9sb2FkaW5nKHdlYlZpZXcpOwpAQCAtMTI3LDIxICsxMTgsMjIgQEAgc3RhdGljIHZv
aWQgcmVsb2FkT3JTdG9wQ2FsbGJhY2soQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgICAgICB3
ZWJraXRfd2ViX3ZpZXdfcmVsb2FkKHdlYlZpZXcpOwogfQogCi1zdGF0aWMgdm9pZCBnb0JhY2tD
YWxsYmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cpCitzdGF0aWMgdm9pZCBnb0JhY2tDYWxsYmFj
ayhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVyIHVz
ZXJEYXRhKQogewotICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRf
d2ViX3ZpZXcod2luZG93LT5hY3RpdmVUYWIpOworICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcg
PSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXcoQlJPV1NFUl9XSU5ET1codXNlckRhdGEpLT5hY3Rp
dmVUYWIpOwogICAgIHdlYmtpdF93ZWJfdmlld19nb19iYWNrKHdlYlZpZXcpOwogfQogCi1zdGF0
aWMgdm9pZCBnb0ZvcndhcmRDYWxsYmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cpCitzdGF0aWMg
dm9pZCBnb0ZvcndhcmRDYWxsYmFjayhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpw
YXJhbWV0ZXIsIGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIFdlYktpdFdlYlZpZXcgKndlYlZp
ZXcgPSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXcod2luZG93LT5hY3RpdmVUYWIpOworICAgIFdl
YktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXcoQlJPV1NFUl9X
SU5ET1codXNlckRhdGEpLT5hY3RpdmVUYWIpOwogICAgIHdlYmtpdF93ZWJfdmlld19nb19mb3J3
YXJkKHdlYlZpZXcpOwogfQogCiAjaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQotc3Rh
dGljIHZvaWQgc2V0dGluZ3NDYWxsYmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cpCitzdGF0aWMg
dm9pZCBzZXR0aW5nc0NhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBh
cmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CisgICAgQnJvd3NlcldpbmRvdyAqd2luZG93
ID0gQlJPV1NFUl9XSU5ET1codXNlckRhdGEpOwogICAgIGlmICh3aW5kb3ctPnNldHRpbmdzRGlh
bG9nKSB7CiAgICAgICAgIGd0a193aW5kb3dfcHJlc2VudChHVEtfV0lORE9XKHdpbmRvdy0+c2V0
dGluZ3NEaWFsb2cpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjY0LDggKzI1NiwxMCBAQCBzdGF0
aWMgR3RrV2lkZ2V0ICpicm93c2VyV2luZG93Q3JlYXRlQmFja0ZvcndhcmRNZW51KEJyb3dzZXJX
aW5kb3cgKndpbmRvdywgR0xpcwogc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmln
YXRpb25NZW51KEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2ViS2l0QmFja0ZvcndhcmRMaXN0ICpi
YWNrRm9yd2FyZGxpc3QpCiB7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGJyb3dzZXJf
dGFiX2dldF93ZWJfdmlldyh3aW5kb3ctPmFjdGl2ZVRhYik7Ci0gICAgZ3RrX3dpZGdldF9zZXRf
c2Vuc2l0aXZlKHdpbmRvdy0+YmFja0l0ZW0sIHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh3
ZWJWaWV3KSk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKHdpbmRvdy0+Zm9yd2FyZEl0
ZW0sIHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9yd2FyZCh3ZWJWaWV3KSk7CisgICAgR0FjdGlv
biAqYWN0aW9uID0gZ19hY3Rpb25fbWFwX2xvb2t1cF9hY3Rpb24oR19BQ1RJT05fTUFQKHdpbmRv
dyksICJnby1iYWNrIik7CisgICAgZ19zaW1wbGVfYWN0aW9uX3NldF9lbmFibGVkKEdfU0lNUExF
X0FDVElPTihhY3Rpb24pLCB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2JhY2sod2ViVmlldykpOwor
ICAgIGFjdGlvbiA9IGdfYWN0aW9uX21hcF9sb29rdXBfYWN0aW9uKEdfQUNUSU9OX01BUCh3aW5k
b3cpLCAiZ28tZm9yd2FyZCIpOworICAgIGdfc2ltcGxlX2FjdGlvbl9zZXRfZW5hYmxlZChHX1NJ
TVBMRV9BQ1RJT04oYWN0aW9uKSwgd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHdlYlZp
ZXcpKTsKIAogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKICAgICBHTGlzdCAqbGlz
dCA9IGdfbGlzdF9yZXZlcnNlKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19saXN0
X3dpdGhfbGltaXQoYmFja0ZvcndhcmRsaXN0LCAxMCkpOwpAQCAtMjgwLDE1ICsyNzQsMTcgQEAg
c3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25NZW51KEJyb3dzZXJXaW5k
b3cgKndpbmRvdywgV2ViS2l0QmFja0YKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBicm93c2Vy
V2luZG93VHJ5Q2xvc2VDdXJyZW50V2ViVmlldyhCcm93c2VyV2luZG93ICp3aW5kb3cpCitzdGF0
aWMgdm9pZCBicm93c2VyV2luZG93VHJ5Q2xvc2VDdXJyZW50V2ViVmlldyhHU2ltcGxlQWN0aW9u
ICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVyIHVzZXJEYXRhKQogeworICAg
IEJyb3dzZXJXaW5kb3cgKndpbmRvdyA9IEJST1dTRVJfV0lORE9XKHVzZXJEYXRhKTsKICAgICBp
bnQgY3VycmVudFBhZ2UgPSBndGtfbm90ZWJvb2tfZ2V0X2N1cnJlbnRfcGFnZShHVEtfTk9URUJP
T0sod2luZG93LT5ub3RlYm9vaykpOwogICAgIEJyb3dzZXJUYWIgKnRhYiA9IChCcm93c2VyVGFi
ICopZ3RrX25vdGVib29rX2dldF9udGhfcGFnZShHVEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9v
ayksIGN1cnJlbnRQYWdlKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfdHJ5X2Nsb3NlKGJyb3dzZXJf
dGFiX2dldF93ZWJfdmlldyh0YWIpKTsKIH0KIAotc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1Ry
eUNsb3NlKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3N0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dU
cnlDbG9zZShHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2lu
dGVyIHVzZXJEYXRhKQogeworICAgIEJyb3dzZXJXaW5kb3cgKndpbmRvdyA9IEJST1dTRVJfV0lO
RE9XKHVzZXJEYXRhKTsKICAgICBHU0xpc3QgKndlYlZpZXdzID0gTlVMTDsKICAgICBpbnQgbiA9
IGd0a19ub3RlYm9va19nZXRfbl9wYWdlcyhHVEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vaykp
OwogICAgIGludCBpOwpAQCAtMzcwLDYgKzM2Niw3IEBAIHN0YXRpYyBHdGtXaWRnZXQgKndlYlZp
ZXdDcmVhdGUoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiAq
CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhuZXdXZWJWaWV3LCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKIAogICAgIEd0a1dpZGdldCAqbmV3V2luZG93
ID0gYnJvd3Nlcl93aW5kb3dfbmV3KEdUS19XSU5ET1cod2luZG93KSwgd2luZG93LT53ZWJDb250
ZXh0KTsKKyAgICBndGtfd2luZG93X3NldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKG5ld1dpbmRv
dyksIGd0a193aW5kb3dfZ2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cod2luZG93KSkpOwogICAg
IGJyb3dzZXJfd2luZG93X2FwcGVuZF92aWV3KEJST1dTRVJfV0lORE9XKG5ld1dpbmRvdyksIG5l
d1dlYlZpZXcpOwogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyhHVEtfV0lER0VUKG5ld1dlYlZp
ZXcpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcsICJyZWFkeS10by1zaG93Iiwg
R19DQUxMQkFDSyh3ZWJWaWV3UmVhZHlUb1Nob3cpLCBuZXdXaW5kb3cpOwpAQCAtNDg4LDE3ICs0
ODUsMTUgQEAgc3RhdGljIGdib29sZWFuIHNjcm9sbEV2ZW50Q2FsbGJhY2soV2ViS2l0V2ViVmll
dyAqd2ViVmlldywgY29uc3QgR2RrRXZlbnRTY3JvbGwKIAogc3RhdGljIHZvaWQgYnJvd3Nlcldp
bmRvd1VwZGF0ZVpvb21BY3Rpb25zKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKLSNpZiAhR1RL
X0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCi0gICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKHdp
bmRvdy0+em9vbUluSXRlbSwgYnJvd3NlcldpbmRvd0Nhblpvb21Jbih3aW5kb3cpKTsKLSAgICBn
dGtfd2lkZ2V0X3NldF9zZW5zaXRpdmUod2luZG93LT56b29tT3V0SXRlbSwgYnJvd3NlcldpbmRv
d0Nhblpvb21PdXQod2luZG93KSk7Ci0jZW5kaWYKKyAgICBHQWN0aW9uICphY3Rpb24gPSBnX2Fj
dGlvbl9tYXBfbG9va3VwX2FjdGlvbihHX0FDVElPTl9NQVAod2luZG93KSwgInpvb20taW4iKTsK
KyAgICBnX3NpbXBsZV9hY3Rpb25fc2V0X2VuYWJsZWQoR19TSU1QTEVfQUNUSU9OKGFjdGlvbiks
IGJyb3dzZXJXaW5kb3dDYW5ab29tSW4od2luZG93KSk7CisgICAgYWN0aW9uID0gZ19hY3Rpb25f
bWFwX2xvb2t1cF9hY3Rpb24oR19BQ1RJT05fTUFQKHdpbmRvdyksICJ6b29tLW91dCIpOworICAg
IGdfc2ltcGxlX2FjdGlvbl9zZXRfZW5hYmxlZChHX1NJTVBMRV9BQ1RJT04oYWN0aW9uKSwgYnJv
d3NlcldpbmRvd0Nhblpvb21PdXQod2luZG93KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYlZpZXda
b29tTGV2ZWxDaGFuZ2VkKEdPYmplY3QgKm9iamVjdCwgR1BhcmFtU3BlYyAqcGFyYW1TcGVjLCBC
cm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAw
KQogICAgIGJyb3dzZXJXaW5kb3dVcGRhdGVab29tQWN0aW9ucyh3aW5kb3cpOwotI2VuZGlmCiB9
CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZVVyaUVudHJ5SWNvbihCcm93c2VyV2luZG93ICp3aW5kb3cp
CkBAIC01NDksMzEgKzU0NCwzMiBAQCBzdGF0aWMgdm9pZCB3ZWJWaWV3SXNMb2FkaW5nQ2hhbmdl
ZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBHUGFyYW1TcGVjICpwYXJhbVNwZQogICAgIGdfb2Jq
ZWN0X3NldChHX09CSkVDVCh3aW5kb3ctPnJlbG9hZE9yU3RvcEJ1dHRvbiksICJsYWJlbCIsIGlz
TG9hZGluZyA/ICJTdG9wIiA6ICJSZWxvYWQiLCAiaWNvbi1uYW1lIiwgaXNMb2FkaW5nID8gInBy
b2Nlc3Mtc3RvcCIgOiAidmlldy1yZWZyZXNoIiwgTlVMTCk7CiB9CiAKLSNpZiAhR1RLX0NIRUNL
X1ZFUlNJT04oMywgOTgsIDApCi1zdGF0aWMgdm9pZCB6b29tSW5DYWxsYmFjayhCcm93c2VyV2lu
ZG93ICp3aW5kb3cpCitzdGF0aWMgdm9pZCB6b29tSW5DYWxsYmFjayhHU2ltcGxlQWN0aW9uICph
Y3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIGJy
b3dzZXJXaW5kb3dab29tSW4od2luZG93KTsKKyAgICBicm93c2VyV2luZG93Wm9vbUluKEJST1dT
RVJfV0lORE9XKHVzZXJEYXRhKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHpvb21PdXRDYWxsYmFjayhC
cm93c2VyV2luZG93ICp3aW5kb3cpCitzdGF0aWMgdm9pZCB6b29tT3V0Q2FsbGJhY2soR1NpbXBs
ZUFjdGlvbiAqYWN0aW9uLCBHVmFyaWFudCAqcGFyYW1ldGVyLCBncG9pbnRlciB1c2VyRGF0YSkK
IHsKLSAgICBicm93c2VyV2luZG93Wm9vbU91dCh3aW5kb3cpOworICAgIGJyb3dzZXJXaW5kb3da
b29tT3V0KEJST1dTRVJfV0lORE9XKHVzZXJEYXRhKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRlZmF1
bHRab29tQ2FsbGJhY2soQnJvd3NlcldpbmRvdyAqd2luZG93KQorc3RhdGljIHZvaWQgZGVmYXVs
dFpvb21DYWxsYmFjayhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIs
IGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93
c2VyX3RhYl9nZXRfd2ViX3ZpZXcod2luZG93LT5hY3RpdmVUYWIpOworICAgIFdlYktpdFdlYlZp
ZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXcoQlJPV1NFUl9XSU5ET1codXNl
ckRhdGEpLT5hY3RpdmVUYWIpOwogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3
ZWJWaWV3LCBkZWZhdWx0Wm9vbUxldmVsKTsKIH0KIAotc3RhdGljIHZvaWQgc2VhcmNoQ2FsbGJh
Y2soQnJvd3NlcldpbmRvdyAqd2luZG93KQorI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwg
MCkKK3N0YXRpYyB2b2lkIHNlYXJjaENhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1Zh
cmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgYnJvd3Nlcl90YWJf
c3RhcnRfc2VhcmNoKHdpbmRvdy0+YWN0aXZlVGFiKTsKKyAgICBicm93c2VyX3RhYl9zdGFydF9z
ZWFyY2goQlJPV1NFUl9XSU5ET1codXNlckRhdGEpLT5hY3RpdmVUYWIpOwogfQogI2VuZGlmCiAK
LXN0YXRpYyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3N0YXRp
YyB2b2lkIG5ld1RhYkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBh
cmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CisgICAgQnJvd3NlcldpbmRvdyAqd2luZG93
ID0gQlJPV1NFUl9XSU5ET1codXNlckRhdGEpOwogICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcg
PSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXcod2luZG93LT5hY3RpdmVUYWIpOwogICAgIGlmICh3
ZWJraXRfd2ViX3ZpZXdfaXNfZWRpdGFibGUod2ViVmlldykpCiAgICAgICAgIHJldHVybjsKQEAg
LTU4OCwxMyArNTg0LDE0IEBAIHN0YXRpYyB2b2lkIG5ld1RhYkNhbGxiYWNrKEJyb3dzZXJXaW5k
b3cgKndpbmRvdykKICAgICBndGtfbm90ZWJvb2tfc2V0X2N1cnJlbnRfcGFnZShHVEtfTk9URUJP
T0sod2luZG93LT5ub3RlYm9vayksIC0xKTsKIH0KIAotc3RhdGljIHZvaWQgdG9nZ2xlV2ViSW5z
cGVjdG9yKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3N0YXRpYyB2b2lkIHRvZ2dsZVdlYkluc3Bl
Y3RvcihHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVy
IHVzZXJEYXRhKQogewotICAgIGJyb3dzZXJfdGFiX3RvZ2dsZV9pbnNwZWN0b3Iod2luZG93LT5h
Y3RpdmVUYWIpOworICAgIGJyb3dzZXJfdGFiX3RvZ2dsZV9pbnNwZWN0b3IoQlJPV1NFUl9XSU5E
T1codXNlckRhdGEpLT5hY3RpdmVUYWIpOwogfQogCi1zdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdp
bmRvdyhCcm93c2VyV2luZG93ICp3aW5kb3cpCitzdGF0aWMgdm9pZCBvcGVuUHJpdmF0ZVdpbmRv
dyhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVyIHVz
ZXJEYXRhKQogeworICAgIEJyb3dzZXJXaW5kb3cgKndpbmRvdyA9IEJST1dTRVJfV0lORE9XKHVz
ZXJEYXRhKTsKICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dl
Yl92aWV3KHdpbmRvdy0+YWN0aXZlVGFiKTsKICAgICBXZWJLaXRXZWJWaWV3ICpuZXdXZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKICAg
ICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcp
LApAQCAtNjA0LDQ0ICs2MDEsNDggQEAgc3RhdGljIHZvaWQgb3BlblByaXZhdGVXaW5kb3coQnJv
d3NlcldpbmRvdyAqd2luZG93KQogICAgICAgICAiaXMtY29udHJvbGxlZC1ieS1hdXRvbWF0aW9u
Iiwgd2Via2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3KSwK
ICAgICAgICAgTlVMTCkpOwogICAgIEd0a1dpZGdldCAqbmV3V2luZG93ID0gYnJvd3Nlcl93aW5k
b3dfbmV3KEdUS19XSU5ET1cod2luZG93KSwgd2luZG93LT53ZWJDb250ZXh0KTsKKyAgICBndGtf
d2luZG93X3NldF9hcHBsaWNhdGlvbihHVEtfV0lORE9XKG5ld1dpbmRvdyksIGd0a193aW5kb3df
Z2V0X2FwcGxpY2F0aW9uKEdUS19XSU5ET1cod2luZG93KSkpOwogICAgIGJyb3dzZXJfd2luZG93
X2FwcGVuZF92aWV3KEJST1dTRVJfV0lORE9XKG5ld1dpbmRvdyksIG5ld1dlYlZpZXcpOwogICAg
IGd0a193aWRnZXRfZ3JhYl9mb2N1cyhHVEtfV0lER0VUKG5ld1dlYlZpZXcpKTsKICAgICBndGtf
d2lkZ2V0X3Nob3coR1RLX1dJREdFVChuZXdXaW5kb3cpKTsKIH0KIAotc3RhdGljIHZvaWQgZm9j
dXNMb2NhdGlvbkJhcihCcm93c2VyV2luZG93ICp3aW5kb3cpCitzdGF0aWMgdm9pZCBmb2N1c0xv
Y2F0aW9uQmFyKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3Bv
aW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKHdpbmRvdy0+dXJp
RW50cnkpOworICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyhCUk9XU0VSX1dJTkRPVyh1c2VyRGF0
YSktPnVyaUVudHJ5KTsKIH0KIAotc3RhdGljIHZvaWQgcmVsb2FkUGFnZShCcm93c2VyV2luZG93
ICp3aW5kb3cpCitzdGF0aWMgdm9pZCByZWxvYWRQYWdlKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwg
R1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgV2ViS2l0V2Vi
VmlldyAqd2ViVmlldyA9IGJyb3dzZXJfdGFiX2dldF93ZWJfdmlldyh3aW5kb3ctPmFjdGl2ZVRh
Yik7CisgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGJyb3dzZXJfdGFiX2dldF93ZWJfdmll
dyhCUk9XU0VSX1dJTkRPVyh1c2VyRGF0YSktPmFjdGl2ZVRhYik7CiAgICAgd2Via2l0X3dlYl92
aWV3X3JlbG9hZCh3ZWJWaWV3KTsKIH0KIAotc3RhdGljIHZvaWQgcmVsb2FkUGFnZUlnbm9yaW5n
Q2FjaGUoQnJvd3NlcldpbmRvdyAqd2luZG93KQorc3RhdGljIHZvaWQgcmVsb2FkUGFnZUlnbm9y
aW5nQ2FjaGUoR1NpbXBsZUFjdGlvbiAqYWN0aW9uLCBHVmFyaWFudCAqcGFyYW1ldGVyLCBncG9p
bnRlciB1c2VyRGF0YSkKIHsKLSAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90
YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZlVGFiKTsKKyAgICBXZWJLaXRXZWJWaWV3ICp3
ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KEJST1dTRVJfV0lORE9XKHVzZXJEYXRh
KS0+YWN0aXZlVGFiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVsb2FkX2J5cGFzc19jYWNoZSh3
ZWJWaWV3KTsKIH0KIAotc3RhdGljIHZvaWQgc3RvcFBhZ2VMb2FkKEJyb3dzZXJXaW5kb3cgKndp
bmRvdykKK3N0YXRpYyB2b2lkIHN0b3BQYWdlTG9hZChHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdW
YXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVyIHVzZXJEYXRhKQogeworICAgIEJyb3dzZXJXaW5k
b3cgKndpbmRvdyA9IEJST1dTRVJfV0lORE9XKHVzZXJEYXRhKTsKICAgICBicm93c2VyX3RhYl9z
dG9wX3NlYXJjaCh3aW5kb3ctPmFjdGl2ZVRhYik7CiAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmll
dyA9IGJyb3dzZXJfdGFiX2dldF93ZWJfdmlldyh3aW5kb3ctPmFjdGl2ZVRhYik7CiAgICAgaWYg
KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKQogICAgICAgICB3ZWJraXRfd2Vi
X3ZpZXdfc3RvcF9sb2FkaW5nKHdlYlZpZXcpOwogfQogCi1zdGF0aWMgdm9pZCBsb2FkSG9tZVBh
Z2UoQnJvd3NlcldpbmRvdyAqd2luZG93KQorc3RhdGljIHZvaWQgbG9hZEhvbWVQYWdlKEdTaW1w
bGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEp
CiB7CisgICAgQnJvd3NlcldpbmRvdyAqd2luZG93ID0gQlJPV1NFUl9XSU5ET1codXNlckRhdGEp
OwogICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXco
d2luZG93LT5hY3RpdmVUYWIpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3
LCBCUk9XU0VSX0RFRkFVTFRfVVJMKTsKIH0KIAotc3RhdGljIGdib29sZWFuIHRvZ2dsZUZ1bGxT
Y3JlZW4oQnJvd3NlcldpbmRvdyAqd2luZG93LCBncG9pbnRlciB1c2VyX2RhdGEpCitzdGF0aWMg
dm9pZCB0b2dnbGVGdWxsU2NyZWVuKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBh
cmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CisgICAgQnJvd3NlcldpbmRvdyAqd2luZG93
ID0gQlJPV1NFUl9XSU5ET1codXNlckRhdGEpOwogICAgIGlmICghd2luZG93LT5mdWxsU2NyZWVu
SXNFbmFibGVkKSB7CiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVlbihHVEtfV0lORE9XKHdp
bmRvdykpOwogICAgICAgICBndGtfd2lkZ2V0X2hpZGUod2luZG93LT50b29sYmFyKTsKQEAgLTY1
MSw3ICs2NTIsNiBAQCBzdGF0aWMgZ2Jvb2xlYW4gdG9nZ2xlRnVsbFNjcmVlbihCcm93c2VyV2lu
ZG93ICp3aW5kb3csIGdwb2ludGVyIHVzZXJfZGF0YSkKICAgICAgICAgZ3RrX3dpZGdldF9zaG93
KHdpbmRvdy0+dG9vbGJhcik7CiAgICAgICAgIHdpbmRvdy0+ZnVsbFNjcmVlbklzRW5hYmxlZCA9
IEZBTFNFOwogICAgIH0KLSAgICByZXR1cm4gVFJVRTsKIH0KIAogc3RhdGljIHZvaWQgd2ViS2l0
UHJpbnRPcGVyYXRpb25GYWlsZWRDYWxsYmFjayhXZWJLaXRQcmludE9wZXJhdGlvbiAqcHJpbnRP
cGVyYXRpb24sIEdFcnJvciAqZXJyb3IpCkBAIC02NTksMjUgKzY1OSwyNSBAQCBzdGF0aWMgdm9p
ZCB3ZWJLaXRQcmludE9wZXJhdGlvbkZhaWxlZENhbGxiYWNrKFdlYktpdFByaW50T3BlcmF0aW9u
ICpwcmludE9wZXJhdAogICAgIGdfd2FybmluZygiUHJpbnQgZmFpbGVkOiAnJXMnIiwgZXJyb3It
Pm1lc3NhZ2UpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gcHJpbnRQYWdlKEJyb3dzZXJXaW5kb3cg
KndpbmRvdywgZ3BvaW50ZXIgdXNlcl9kYXRhKQorc3RhdGljIHZvaWQgcHJpbnRQYWdlKEdTaW1w
bGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEp
CiB7CisgICAgQnJvd3NlcldpbmRvdyAqd2luZG93ID0gQlJPV1NFUl9XSU5ET1codXNlckRhdGEp
OwogICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXco
d2luZG93LT5hY3RpdmVUYWIpOwogICAgIFdlYktpdFByaW50T3BlcmF0aW9uICpwcmludE9wZXJh
dGlvbiA9IHdlYmtpdF9wcmludF9vcGVyYXRpb25fbmV3KHdlYlZpZXcpOwogCiAgICAgZ19zaWdu
YWxfY29ubmVjdChwcmludE9wZXJhdGlvbiwgImZhaWxlZCIsIEdfQ0FMTEJBQ0sod2ViS2l0UHJp
bnRPcGVyYXRpb25GYWlsZWRDYWxsYmFjayksIE5VTEwpOwogICAgIHdlYmtpdF9wcmludF9vcGVy
YXRpb25fcnVuX2RpYWxvZyhwcmludE9wZXJhdGlvbiwgR1RLX1dJTkRPVyh3aW5kb3cpKTsKICAg
ICBnX29iamVjdF91bnJlZihwcmludE9wZXJhdGlvbik7Ci0KLSAgICByZXR1cm4gVFJVRTsKIH0K
IAotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKLXN0YXRpYyB2b2lkIGVkaXRpbmdD
b21tYW5kQ2FsbGJhY2soR3RrV2lkZ2V0ICp3aWRnZXQsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykK
K3N0YXRpYyB2b2lkIGVkaXRpbmdBY3Rpb25DYWxsYmFjayhHU2ltcGxlQWN0aW9uICphY3Rpb24s
IEdWYXJpYW50ICpwcmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEpCiB7CisgICAgQnJvd3Nlcldp
bmRvdyAqd2luZG93ID0gQlJPV1NFUl9XSU5ET1codXNlckRhdGEpOwogICAgIFdlYktpdFdlYlZp
ZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXcod2luZG93LT5hY3RpdmVUYWIp
OwotICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh3ZWJWaWV3LCBn
dGtfd2lkZ2V0X2dldF9uYW1lKHdpZGdldCkpOworICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRl
X2VkaXRpbmdfY29tbWFuZCh3ZWJWaWV3LCBnX2FjdGlvbl9nZXRfbmFtZShHX0FDVElPTihhY3Rp
b24pKSk7CiB9CiAKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiBzdGF0aWMgdm9p
ZCBpbnNlcnRJbWFnZUNvbW1hbmRDYWxsYmFjayhHdGtXaWRnZXQgKndpZGdldCwgQnJvd3Nlcldp
bmRvdyAqd2luZG93KQogewogICAgIEd0a1dpZGdldCAqZmlsZUNob29zZXIgPSBndGtfZmlsZV9j
aG9vc2VyX2RpYWxvZ19uZXcoIkluc2VydCBJbWFnZSIsIEdUS19XSU5ET1cod2luZG93KSwgR1RL
X0ZJTEVfQ0hPT1NFUl9BQ1RJT05fT1BFTiwKQEAgLTcyNSwyMCArNzI1LDE4IEBAIHN0YXRpYyB2
b2lkIGluc2VydExpbmtDb21tYW5kQ2FsbGJhY2soR3RrV2lkZ2V0ICp3aWRnZXQsIEJyb3dzZXJX
aW5kb3cgKndpbmRvdykKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKIH0KIAotc3Rh
dGljIHZvaWQgYnJvd3NlcldpbmRvd0VkaXRpbmdDb21tYW5kVG9nZ2xlQnV0dG9uU2V0QWN0aXZl
KEJyb3dzZXJXaW5kb3cgKndpbmRvdywgR3RrV2lkZ2V0ICpidXR0b24sIGdib29sZWFuIGFjdGl2
ZSkKLXsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19ibG9ja19ieV9mdW5jKGJ1dHRvbiwgR19DQUxM
QkFDSyhlZGl0aW5nQ29tbWFuZENhbGxiYWNrKSwgd2luZG93KTsKLSAgICBndGtfdG9nZ2xlX3Rv
b2xfYnV0dG9uX3NldF9hY3RpdmUoR1RLX1RPR0dMRV9UT09MX0JVVFRPTihidXR0b24pLCBhY3Rp
dmUpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX3VuYmxvY2tfYnlfZnVuYyhidXR0b24sIEdfQ0FM
TEJBQ0soZWRpdGluZ0NvbW1hbmRDYWxsYmFjayksIHdpbmRvdyk7Ci19Ci0KIHN0YXRpYyB2b2lk
IHR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKFdlYktpdEVkaXRvclN0YXRlICplZGl0b3JTdGF0ZSwg
R1BhcmFtU3BlYyAqc3BlYywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewogICAgIHVuc2lnbmVk
IHR5cGluZ0F0dHJpYnV0ZXMgPSB3ZWJraXRfZWRpdG9yX3N0YXRlX2dldF90eXBpbmdfYXR0cmli
dXRlcyhlZGl0b3JTdGF0ZSk7Ci0gICAgYnJvd3NlcldpbmRvd0VkaXRpbmdDb21tYW5kVG9nZ2xl
QnV0dG9uU2V0QWN0aXZlKHdpbmRvdywgd2luZG93LT5ib2xkSXRlbSwgdHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKLSAgICBicm93c2VyV2lu
ZG93RWRpdGluZ0NvbW1hbmRUb2dnbGVCdXR0b25TZXRBY3RpdmUod2luZG93LCB3aW5kb3ctPml0
YWxpY0l0ZW0sIHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJV
VEVfSVRBTElDKTsKLSAgICBicm93c2VyV2luZG93RWRpdGluZ0NvbW1hbmRUb2dnbGVCdXR0b25T
ZXRBY3RpdmUod2luZG93LCB3aW5kb3ctPnVuZGVybGluZUl0ZW0sIHR5cGluZ0F0dHJpYnV0ZXMg
JiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKTsKLSAgICBicm93c2Vy
V2luZG93RWRpdGluZ0NvbW1hbmRUb2dnbGVCdXR0b25TZXRBY3RpdmUod2luZG93LCB3aW5kb3ct
PnN0cmlrZXRocm91Z2hJdGVtLCB0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJ
TkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpOworICAgIEdBY3Rpb25Hcm91cCAqYWN0aW9uR3Jv
dXAgPSBndGtfd2lkZ2V0X2dldF9hY3Rpb25fZ3JvdXAod2luZG93LT5lZGl0VG9vbGJhciwgImVk
aXQiKTsKKyAgICBHQWN0aW9uICphY3Rpb24gPSBnX2FjdGlvbl9tYXBfbG9va3VwX2FjdGlvbihH
X0FDVElPTl9NQVAoYWN0aW9uR3JvdXApLCAiQm9sZCIpOworICAgIGdfc2ltcGxlX2FjdGlvbl9z
ZXRfc3RhdGUoR19TSU1QTEVfQUNUSU9OKGFjdGlvbiksIGdfdmFyaWFudF9uZXdfYm9vbGVhbih0
eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpKTsK
KyAgICBhY3Rpb24gPSBnX2FjdGlvbl9tYXBfbG9va3VwX2FjdGlvbihHX0FDVElPTl9NQVAoYWN0
aW9uR3JvdXApLCAiSXRhbGljIik7CisgICAgZ19zaW1wbGVfYWN0aW9uX3NldF9zdGF0ZShHX1NJ
TVBMRV9BQ1RJT04oYWN0aW9uKSwgZ192YXJpYW50X25ld19ib29sZWFuKHR5cGluZ0F0dHJpYnV0
ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKSk7CisgICAgYWN0aW9u
ID0gZ19hY3Rpb25fbWFwX2xvb2t1cF9hY3Rpb24oR19BQ1RJT05fTUFQKGFjdGlvbkdyb3VwKSwg
IlVuZGVybGluZSIpOworICAgIGdfc2ltcGxlX2FjdGlvbl9zZXRfc3RhdGUoR19TSU1QTEVfQUNU
SU9OKGFjdGlvbiksIGdfdmFyaWFudF9uZXdfYm9vbGVhbih0eXBpbmdBdHRyaWJ1dGVzICYgV0VC
S0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSkpOworICAgIGFjdGlvbiA9IGdf
YWN0aW9uX21hcF9sb29rdXBfYWN0aW9uKEdfQUNUSU9OX01BUChhY3Rpb25Hcm91cCksICJTdHJp
a2V0aHJvdWdoIik7CisgICAgZ19zaW1wbGVfYWN0aW9uX3NldF9zdGF0ZShHX1NJTVBMRV9BQ1RJ
T04oYWN0aW9uKSwgZ192YXJpYW50X25ld19ib29sZWFuKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJL
SVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCkpOwogfQogI2VuZGlmCiAK
QEAgLTc0NywzMCArNzQ1LDE5IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dGaW5hbGl6ZShH
T2JqZWN0ICpnT2JqZWN0KQogICAgIEJyb3dzZXJXaW5kb3cgKndpbmRvdyA9IEJST1dTRVJfV0lO
RE9XKGdPYmplY3QpOwogCiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVk
KHdpbmRvdy0+d2ViQ29udGV4dCwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgTlVMTCwgTlVM
TCwgd2luZG93KTsKKyAgICBnX29iamVjdF91bnJlZih3aW5kb3ctPndlYkNvbnRleHQpOwogCiAg
ICAgaWYgKHdpbmRvdy0+ZmF2aWNvbikgewogICAgICAgICBnX29iamVjdF91bnJlZih3aW5kb3ct
PmZhdmljb24pOwogICAgICAgICB3aW5kb3ctPmZhdmljb24gPSBOVUxMOwogICAgIH0KIAotI2lm
ICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKLSAgICBpZiAod2luZG93LT5hY2NlbEdyb3Vw
KSB7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHdpbmRvdy0+YWNjZWxHcm91cCk7Ci0gICAgICAg
IHdpbmRvdy0+YWNjZWxHcm91cCA9IE5VTEw7Ci0gICAgfQotI2VuZGlmCi0KICAgICBpZiAod2lu
ZG93LT5yZXNldEVudHJ5UHJvZ3Jlc3NUaW1lb3V0SWQpCiAgICAgICAgIGdfc291cmNlX3JlbW92
ZSh3aW5kb3ctPnJlc2V0RW50cnlQcm9ncmVzc1RpbWVvdXRJZCk7CiAKICAgICBnX2ZyZWUod2lu
ZG93LT5zZXNzaW9uRmlsZSk7CiAKLSAgICB3aW5kb3dMaXN0ID0gZ19saXN0X3JlbW92ZSh3aW5k
b3dMaXN0LCB3aW5kb3cpOwotCiAgICAgR19PQkpFQ1RfQ0xBU1MoYnJvd3Nlcl93aW5kb3dfcGFy
ZW50X2NsYXNzKS0+ZmluYWxpemUoZ09iamVjdCk7Ci0KLSAgICBpZiAoIXdpbmRvd0xpc3QpCi0g
ICAgICAgIGJyb3dzZXJfbWFpbl9xdWl0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5k
b3dEaXNwb3NlKEdPYmplY3QgKmdPYmplY3QpCkBAIC03ODcsMTIgKzc3NCwxMiBAQCBzdGF0aWMg
dm9pZCBicm93c2VyV2luZG93RGlzcG9zZShHT2JqZWN0ICpnT2JqZWN0KQogCiAjaWYgIUdUS19D
SEVDS19WRVJTSU9OKDMsIDk4LCAwKQogc3RhdGljIEd0a1dpZGdldCAqCi1icm93c2VyV2luZG93
U2V0dXBFZGl0b3JUb29sYmFySXRlbShCcm93c2VyV2luZG93KiB3aW5kb3csIEd0a1dpZGdldCog
dG9vbGJhciwgR1R5cGUgdHlwZSwgY29uc3QgY2hhciogbGFiZWwsIGNvbnN0IGNoYXIqIG5hbWVk
SWNvbikKK2Jyb3dzZXJXaW5kb3dTZXR1cEVkaXRvclRvb2xiYXJJdGVtKEJyb3dzZXJXaW5kb3cq
IHdpbmRvdywgR3RrV2lkZ2V0KiB0b29sYmFyLCBHVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBsYWJl
bCwgY29uc3QgY2hhciogbmFtZWRJY29uLCBjb25zdCBjaGFyKiBhY3Rpb25OYW1lKQogewogICAg
IEd0a1dpZGdldCAqaXRlbSA9IGdfb2JqZWN0X25ldyh0eXBlLCAiaWNvbi1uYW1lIiwgbmFtZWRJ
Y29uLCBOVUxMKTsKICAgICBndGtfd2lkZ2V0X3NldF9uYW1lKGl0ZW0sIGxhYmVsKTsKICAgICBn
dGtfdG9vbF9idXR0b25fc2V0X2xhYmVsKEdUS19UT09MX0JVVFRPTihpdGVtKSwgbGFiZWwpOwot
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1QoaXRlbSksIHR5cGUgPT0gR1RLX1RZUEVfVE9H
R0xFX1RPT0xfQlVUVE9OID8gInRvZ2dsZWQiIDogImNsaWNrZWQiLCBHX0NBTExCQUNLKGVkaXRp
bmdDb21tYW5kQ2FsbGJhY2spLCB3aW5kb3cpOworICAgIGd0a19hY3Rpb25hYmxlX3NldF9hY3Rp
b25fbmFtZShHVEtfQUNUSU9OQUJMRShpdGVtKSwgYWN0aW9uTmFtZSk7CiAgICAgZ3RrX3Rvb2xi
YXJfaW5zZXJ0KEdUS19UT09MQkFSKHRvb2xiYXIpLCBHVEtfVE9PTF9JVEVNKGl0ZW0pLCAtMSk7
CiAgICAgZ3RrX3dpZGdldF9zaG93KGl0ZW0pOwogCkBAIC04MDAsMzIgKzc4Nyw1NSBAQCBicm93
c2VyV2luZG93U2V0dXBFZGl0b3JUb29sYmFySXRlbShCcm93c2VyV2luZG93KiB3aW5kb3csIEd0
a1dpZGdldCogdG9vbGJhciwgRwogfQogI2VuZGlmCiAKK3N0YXRpYyBjb25zdCBHQWN0aW9uRW50
cnkgZWRpdEFjdGlvbnNbXSA9IHsKKyAgICB7ICJCb2xkIiwgTlVMTCwgTlVMTCwgImZhbHNlIiwg
ZWRpdGluZ0FjdGlvbkNhbGxiYWNrLCB7IDAgfSB9LAorICAgIHsgIkl0YWxpYyIsIE5VTEwsIE5V
TEwsICJmYWxzZSIsIGVkaXRpbmdBY3Rpb25DYWxsYmFjaywgeyAwIH0gfSwKKyAgICB7ICJVbmRl
cmxpbmUiLCBOVUxMLCBOVUxMLCAiZmFsc2UiLCBlZGl0aW5nQWN0aW9uQ2FsbGJhY2ssIHsgMCB9
IH0sCisgICAgeyAiU3RyaWtldGhyb3VnaCIsIE5VTEwsIE5VTEwsICJmYWxzZSIsIGVkaXRpbmdB
Y3Rpb25DYWxsYmFjaywgeyAwIH0gfSwKKyAgICB7ICJDdXQiLCBlZGl0aW5nQWN0aW9uQ2FsbGJh
Y2ssIE5VTEwsIE5VTEwsIE5VTEwsIHsgMCB9IH0sCisgICAgeyAiQ29weSIsIGVkaXRpbmdBY3Rp
b25DYWxsYmFjaywgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKKyAgICB7ICJQYXN0ZSIsIGVk
aXRpbmdBY3Rpb25DYWxsYmFjaywgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKKyAgICB7ICJV
bmRvIiwgZWRpdGluZ0FjdGlvbkNhbGxiYWNrLCBOVUxMLCBOVUxMLCBOVUxMLCB7IDAgfSB9LAor
ICAgIHsgIlJlZG8iLCBlZGl0aW5nQWN0aW9uQ2FsbGJhY2ssIE5VTEwsIE5VTEwsIE5VTEwsIHsg
MCB9IH0sCisgICAgeyAiSnVzdGlmeUxlZnQiLCBOVUxMLCBOVUxMLCAiZmFsc2UiLCBlZGl0aW5n
QWN0aW9uQ2FsbGJhY2ssIHsgMCB9IH0sCisgICAgeyAiSnVzdGlmeUNlbnRlciIsIE5VTEwsIE5V
TEwsICJmYWxzZSIsIGVkaXRpbmdBY3Rpb25DYWxsYmFjaywgeyAwIH0gfSwKKyAgICB7ICJKdXN0
aWZ5UmlnaHQiLCBOVUxMLCBOVUxMLCAiZmFsc2UiLCBlZGl0aW5nQWN0aW9uQ2FsbGJhY2ssIHsg
MCB9IH0sCisgICAgeyAiSW5kZW50IiwgZWRpdGluZ0FjdGlvbkNhbGxiYWNrLCBOVUxMLCBOVUxM
LCBOVUxMLCB7IDAgfSB9LAorICAgIHsgIk91dGRlbnQiLCBlZGl0aW5nQWN0aW9uQ2FsbGJhY2ss
IE5VTEwsIE5VTEwsIE5VTEwsIHsgMCB9IH0sCit9OworCiBzdGF0aWMgdm9pZCBicm93c2VyV2lu
ZG93U2V0dXBFZGl0b3JUb29sYmFyKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICNpZiAhR1RL
X0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgR3RrV2lkZ2V0ICp0b29sYmFyID0gZ3RrX3Rv
b2xiYXJfbmV3KCk7CisgICAgd2luZG93LT5lZGl0VG9vbGJhciA9IHRvb2xiYXI7CiAgICAgZ3Rr
X29yaWVudGFibGVfc2V0X29yaWVudGF0aW9uKEdUS19PUklFTlRBQkxFKHRvb2xiYXIpLCBHVEtf
T1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CiAgICAgZ3RrX3Rvb2xiYXJfc2V0X3N0eWxlKEdUS19U
T09MQkFSKHRvb2xiYXIpLCBHVEtfVE9PTEJBUl9CT1RIX0hPUklaKTsKIAotICAgIHdpbmRvdy0+
Ym9sZEl0ZW0gPSBicm93c2VyV2luZG93U2V0dXBFZGl0b3JUb29sYmFySXRlbSh3aW5kb3csIHRv
b2xiYXIsIEdUS19UWVBFX1RPR0dMRV9UT09MX0JVVFRPTiwgIkJvbGQiLCAiZm9ybWF0LXRleHQt
Ym9sZCIpOwotICAgIHdpbmRvdy0+aXRhbGljSXRlbSA9IGJyb3dzZXJXaW5kb3dTZXR1cEVkaXRv
clRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJhciwgR1RLX1RZUEVfVE9HR0xFX1RPT0xfQlVUVE9O
LCAiSXRhbGljIiwgImZvcm1hdC10ZXh0LWl0YWxpYyIpOwotICAgIHdpbmRvdy0+dW5kZXJsaW5l
SXRlbSA9IGJyb3dzZXJXaW5kb3dTZXR1cEVkaXRvclRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJh
ciwgR1RLX1RZUEVfVE9HR0xFX1RPT0xfQlVUVE9OLCAiVW5kZXJsaW5lIiwgImZvcm1hdC10ZXh0
LXVuZGVybGluZSIpOwotICAgIHdpbmRvdy0+c3RyaWtldGhyb3VnaEl0ZW0gPSBicm93c2VyV2lu
ZG93U2V0dXBFZGl0b3JUb29sYmFySXRlbSh3aW5kb3csIHRvb2xiYXIsIEdUS19UWVBFX1RPR0dM
RV9UT09MX0JVVFRPTiwgIlN0cmlrZXRocm91Z2giLCAiZm9ybWF0LXRleHQtc3RyaWtldGhyb3Vn
aCIpOworICAgIEdTaW1wbGVBY3Rpb25Hcm91cCAqYWN0aW9uR3JvdXAgPSBnX3NpbXBsZV9hY3Rp
b25fZ3JvdXBfbmV3KCk7CisgICAgZ19hY3Rpb25fbWFwX2FkZF9hY3Rpb25fZW50cmllcyhHX0FD
VElPTl9NQVAoYWN0aW9uR3JvdXApLCBlZGl0QWN0aW9ucywgR19OX0VMRU1FTlRTKGVkaXRBY3Rp
b25zKSwgd2luZG93KTsKKyAgICBndGtfd2lkZ2V0X2luc2VydF9hY3Rpb25fZ3JvdXAodG9vbGJh
ciwgImVkaXQiLCBHX0FDVElPTl9HUk9VUChhY3Rpb25Hcm91cCkpOworICAgIGdfb2JqZWN0X3Vu
cmVmKGFjdGlvbkdyb3VwKTsKKworICAgIGJyb3dzZXJXaW5kb3dTZXR1cEVkaXRvclRvb2xiYXJJ
dGVtKHdpbmRvdywgdG9vbGJhciwgR1RLX1RZUEVfVE9HR0xFX1RPT0xfQlVUVE9OLCAiQm9sZCIs
ICJmb3JtYXQtdGV4dC1ib2xkIiwgImVkaXQuQm9sZCIpOworICAgIGJyb3dzZXJXaW5kb3dTZXR1
cEVkaXRvclRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJhciwgR1RLX1RZUEVfVE9HR0xFX1RPT0xf
QlVUVE9OLCAiSXRhbGljIiwgImZvcm1hdC10ZXh0LWl0YWxpYyIsICJlZGl0Lkl0YWxpYyIpOwor
ICAgIGJyb3dzZXJXaW5kb3dTZXR1cEVkaXRvclRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJhciwg
R1RLX1RZUEVfVE9HR0xFX1RPT0xfQlVUVE9OLCAiVW5kZXJsaW5lIiwgImZvcm1hdC10ZXh0LXVu
ZGVybGluZSIsICJlZGl0LlVuZGVybGluZSIpOworICAgIGJyb3dzZXJXaW5kb3dTZXR1cEVkaXRv
clRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJhciwgR1RLX1RZUEVfVE9HR0xFX1RPT0xfQlVUVE9O
LCAiU3RyaWtldGhyb3VnaCIsICJmb3JtYXQtdGV4dC1zdHJpa2V0aHJvdWdoIiwgImVkaXQuU3Ry
aWtldGhyb3VnaCIpOwogCiAgICAgR3RrVG9vbEl0ZW0gKml0ZW0gPSBndGtfc2VwYXJhdG9yX3Rv
b2xfaXRlbV9uZXcoKTsKICAgICBndGtfdG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xCQVIodG9vbGJh
ciksIGl0ZW0sIC0xKTsKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChpdGVtKSk7CiAK
LSAgICBicm93c2VyV2luZG93U2V0dXBFZGl0b3JUb29sYmFySXRlbSh3aW5kb3csIHRvb2xiYXIs
IEdUS19UWVBFX1RPT0xfQlVUVE9OLCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCwgImVkaXQt
Y3V0Iik7Ci0gICAgYnJvd3NlcldpbmRvd1NldHVwRWRpdG9yVG9vbGJhckl0ZW0od2luZG93LCB0
b29sYmFyLCBHVEtfVFlQRV9UT09MX0JVVFRPTiwgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZ
LCAiZWRpdC1jb3B5Iik7Ci0gICAgYnJvd3NlcldpbmRvd1NldHVwRWRpdG9yVG9vbGJhckl0ZW0o
d2luZG93LCB0b29sYmFyLCBHVEtfVFlQRV9UT09MX0JVVFRPTiwgV0VCS0lUX0VESVRJTkdfQ09N
TUFORF9QQVNURSwgImVkaXQtcGFzdGUiKTsKKyAgICBicm93c2VyV2luZG93U2V0dXBFZGl0b3JU
b29sYmFySXRlbSh3aW5kb3csIHRvb2xiYXIsIEdUS19UWVBFX1RPT0xfQlVUVE9OLCBXRUJLSVRf
RURJVElOR19DT01NQU5EX0NVVCwgImVkaXQtY3V0IiwgImVkaXQuQ3V0Iik7CisgICAgYnJvd3Nl
cldpbmRvd1NldHVwRWRpdG9yVG9vbGJhckl0ZW0od2luZG93LCB0b29sYmFyLCBHVEtfVFlQRV9U
T09MX0JVVFRPTiwgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZLCAiZWRpdC1jb3B5IiwgImVk
aXQuQ29weSIpOworICAgIGJyb3dzZXJXaW5kb3dTZXR1cEVkaXRvclRvb2xiYXJJdGVtKHdpbmRv
dywgdG9vbGJhciwgR1RLX1RZUEVfVE9PTF9CVVRUT04sIFdFQktJVF9FRElUSU5HX0NPTU1BTkRf
UEFTVEUsICJlZGl0LXBhc3RlIiwgImVkaXQuUGFzdGUiKTsKIAogICAgIGl0ZW0gPSBndGtfc2Vw
YXJhdG9yX3Rvb2xfaXRlbV9uZXcoKTsKICAgICBndGtfdG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xC
QVIodG9vbGJhciksIGl0ZW0sIC0xKTsKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChp
dGVtKSk7CiAKLSAgICBicm93c2VyV2luZG93U2V0dXBFZGl0b3JUb29sYmFySXRlbSh3aW5kb3cs
IHRvb2xiYXIsIEdUS19UWVBFX1RPT0xfQlVUVE9OLCBXRUJLSVRfRURJVElOR19DT01NQU5EX1VO
RE8sICJlZGl0LXVuZG8iKTsKLSAgICBicm93c2VyV2luZG93U2V0dXBFZGl0b3JUb29sYmFySXRl
bSh3aW5kb3csIHRvb2xiYXIsIEdUS19UWVBFX1RPT0xfQlVUVE9OLCBXRUJLSVRfRURJVElOR19D
T01NQU5EX1JFRE8sICJlZGl0LXJlZG8iKTsKKyAgICBicm93c2VyV2luZG93U2V0dXBFZGl0b3JU
b29sYmFySXRlbSh3aW5kb3csIHRvb2xiYXIsIEdUS19UWVBFX1RPT0xfQlVUVE9OLCBXRUJLSVRf
RURJVElOR19DT01NQU5EX1VORE8sICJlZGl0LXVuZG8iLCAiZWRpdC5VbmRvIik7CisgICAgYnJv
d3NlcldpbmRvd1NldHVwRWRpdG9yVG9vbGJhckl0ZW0od2luZG93LCB0b29sYmFyLCBHVEtfVFlQ
RV9UT09MX0JVVFRPTiwgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9SRURPLCAiZWRpdC1yZWRvIiwg
ImVkaXQuUmVkbyIpOwogCiAgICAgaXRlbSA9IGd0a19zZXBhcmF0b3JfdG9vbF9pdGVtX25ldygp
OwogICAgIGd0a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEp
OwpAQCAtODM0LDI2ICs4NDQsMjMgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1NldHVwRWRp
dG9yVG9vbGJhcihCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgaXRlbSA9IGd0a19yYWRpb190
b29sX2J1dHRvbl9uZXcoTlVMTCk7CiAgICAgR1NMaXN0ICpqdXN0aWZ5UmFkaW9Hcm91cCA9IGd0
a19yYWRpb190b29sX2J1dHRvbl9nZXRfZ3JvdXAoR1RLX1JBRElPX1RPT0xfQlVUVE9OKGl0ZW0p
KTsKICAgICBndGtfdG9vbF9idXR0b25fc2V0X2ljb25fbmFtZShHVEtfVE9PTF9CVVRUT04oaXRl
bSksICJmb3JtYXQtanVzdGlmeS1sZWZ0Iik7Ci0gICAgZ3RrX3dpZGdldF9zZXRfbmFtZShHVEtf
V0lER0VUKGl0ZW0pLCAiSnVzdGlmeUxlZnQiKTsKKyAgICBndGtfYWN0aW9uYWJsZV9zZXRfYWN0
aW9uX25hbWUoR1RLX0FDVElPTkFCTEUoaXRlbSksICJlZGl0Lkp1c3RpZnlMZWZ0Iik7CiAgICAg
Z3RrX3Rvb2xfYnV0dG9uX3NldF9sYWJlbChHVEtfVE9PTF9CVVRUT04oaXRlbSksICJKdXN0aWZ5
IExlZnQiKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKGl0ZW0pLCAidG9nZ2xlZCIs
IEdfQ0FMTEJBQ0soZWRpdGluZ0NvbW1hbmRDYWxsYmFjayksIHdpbmRvdyk7CiAgICAgZ3RrX3Rv
b2xiYXJfaW5zZXJ0KEdUS19UT09MQkFSKHRvb2xiYXIpLCBpdGVtLCAtMSk7CiAgICAgZ3RrX3dp
ZGdldF9zaG93KEdUS19XSURHRVQoaXRlbSkpOwogCiAgICAgaXRlbSA9IGd0a19yYWRpb190b29s
X2J1dHRvbl9uZXcoanVzdGlmeVJhZGlvR3JvdXApOwogICAgIGp1c3RpZnlSYWRpb0dyb3VwID0g
Z3RrX3JhZGlvX3Rvb2xfYnV0dG9uX2dldF9ncm91cChHVEtfUkFESU9fVE9PTF9CVVRUT04oaXRl
bSkpOwogICAgIGd0a190b29sX2J1dHRvbl9zZXRfaWNvbl9uYW1lKEdUS19UT09MX0JVVFRPTihp
dGVtKSwgImZvcm1hdC1qdXN0aWZ5LWNlbnRlciIpOwotICAgIGd0a193aWRnZXRfc2V0X25hbWUo
R1RLX1dJREdFVChpdGVtKSwgIkp1c3RpZnlDZW50ZXIiKTsKKyAgICBndGtfYWN0aW9uYWJsZV9z
ZXRfYWN0aW9uX25hbWUoR1RLX0FDVElPTkFCTEUoaXRlbSksICJlZGl0Lkp1c3RpZnlDZW50ZXIi
KTsKICAgICBndGtfdG9vbF9idXR0b25fc2V0X2xhYmVsKEdUS19UT09MX0JVVFRPTihpdGVtKSwg
Ikp1c3RpZnkgQ2VudGVyIik7Ci0gICAgZ19zaWduYWxfY29ubmVjdChHX09CSkVDVChpdGVtKSwg
InRvZ2dsZWQiLCBHX0NBTExCQUNLKGVkaXRpbmdDb21tYW5kQ2FsbGJhY2spLCB3aW5kb3cpOwog
ICAgIGd0a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEpOwog
ICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsKIAogICAgIGl0ZW0gPSBndGtf
cmFkaW9fdG9vbF9idXR0b25fbmV3KGp1c3RpZnlSYWRpb0dyb3VwKTsKICAgICBndGtfdG9vbF9i
dXR0b25fc2V0X2ljb25fbmFtZShHVEtfVE9PTF9CVVRUT04oaXRlbSksICJmb3JtYXQtanVzdGlm
eS1yaWdodCIpOwotICAgIGd0a193aWRnZXRfc2V0X25hbWUoR1RLX1dJREdFVChpdGVtKSwgIkp1
c3RpZnlSaWdodCIpOworICAgIGd0a19hY3Rpb25hYmxlX3NldF9hY3Rpb25fbmFtZShHVEtfQUNU
SU9OQUJMRShpdGVtKSwgImVkaXQuSnVzdGlmeVJpZ2h0Iik7CiAgICAgZ3RrX3Rvb2xfYnV0dG9u
X3NldF9sYWJlbChHVEtfVE9PTF9CVVRUT04oaXRlbSksICJKdXN0aWZ5IFJpZ2h0Iik7Ci0gICAg
Z19zaWduYWxfY29ubmVjdChHX09CSkVDVChpdGVtKSwgInRvZ2dsZWQiLCBHX0NBTExCQUNLKGVk
aXRpbmdDb21tYW5kQ2FsbGJhY2spLCB3aW5kb3cpOwogICAgIGd0a190b29sYmFyX2luc2VydChH
VEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtf
V0lER0VUKGl0ZW0pKTsKIApAQCAtODYxLDggKzg2OCw4IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJX
aW5kb3dTZXR1cEVkaXRvclRvb2xiYXIoQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0a190
b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEpOwogICAgIGd0a193
aWRnZXRfc2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsKIAotICAgIGJyb3dzZXJXaW5kb3dTZXR1cEVk
aXRvclRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJhciwgR1RLX1RZUEVfVE9PTF9CVVRUT04sICJJ
bmRlbnQiLCAiZm9ybWF0LWluZGVudC1tb3JlIik7Ci0gICAgYnJvd3NlcldpbmRvd1NldHVwRWRp
dG9yVG9vbGJhckl0ZW0od2luZG93LCB0b29sYmFyLCBHVEtfVFlQRV9UT09MX0JVVFRPTiwgIk91
dGRlbnQiLCAiZm9ybWF0LWluZGVudC1sZXNzIik7CisgICAgYnJvd3NlcldpbmRvd1NldHVwRWRp
dG9yVG9vbGJhckl0ZW0od2luZG93LCB0b29sYmFyLCBHVEtfVFlQRV9UT09MX0JVVFRPTiwgIklu
ZGVudCIsICJmb3JtYXQtaW5kZW50LW1vcmUiLCAiZWRpdC5JbmRlbnQiKTsKKyAgICBicm93c2Vy
V2luZG93U2V0dXBFZGl0b3JUb29sYmFySXRlbSh3aW5kb3csIHRvb2xiYXIsIEdUS19UWVBFX1RP
T0xfQlVUVE9OLCAiT3V0ZGVudCIsICJmb3JtYXQtaW5kZW50LWxlc3MiLCAiZWRpdC5PdXRkZW50
Iik7CiAKICAgICBpdGVtID0gZ3RrX3NlcGFyYXRvcl90b29sX2l0ZW1fbmV3KCk7CiAgICAgZ3Rr
X3Rvb2xiYXJfaW5zZXJ0KEdUS19UT09MQkFSKHRvb2xiYXIpLCBpdGVtLCAtMSk7CkBAIC05NjIs
MTIgKzk2OSwxMiBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBicm93c2VyV2luZG93U2V0dXBUb29sYmFy
SXRlbShCcm93c2VyV2luZG93KiB3aW5kb3csIEd0a0JveCogYgogICAgIHJldHVybiBidXR0b247
CiB9CiAjZWxzZQotc3RhdGljIEd0a1dpZGdldCogYnJvd3NlcldpbmRvd1NldHVwVG9vbGJhckl0
ZW0oQnJvd3NlcldpbmRvdyogd2luZG93LCBHdGtXaWRnZXQqIHRvb2xiYXIsIEdUeXBlIHR5cGUs
IGNvbnN0IGNoYXIqIGxhYmVsLCBjb25zdCBjaGFyKiBuYW1lZEljb24sIEdDYWxsYmFjayBjYWxs
YmFjaykKK3N0YXRpYyBHdGtXaWRnZXQqIGJyb3dzZXJXaW5kb3dTZXR1cFRvb2xiYXJJdGVtKEJy
b3dzZXJXaW5kb3cgKndpbmRvdywgR3RrV2lkZ2V0ICp0b29sYmFyLCBHVHlwZSB0eXBlLCBjb25z
dCBjaGFyICpsYWJlbCwgY29uc3QgY2hhciAqbmFtZWRJY29uLCBjb25zdCBjaGFyICphY3Rpb25O
YW1lKQogewogICAgIEd0a1dpZGdldCAqaXRlbSA9IGdfb2JqZWN0X25ldyh0eXBlLCAiaWNvbi1u
YW1lIiwgbmFtZWRJY29uLCBOVUxMKTsKICAgICBpZiAodHlwZSA9PSBHVEtfVFlQRV9NRU5VX1RP
T0xfQlVUVE9OKQogICAgICAgICBndGtfbWVudV90b29sX2J1dHRvbl9zZXRfbWVudShHVEtfTUVO
VV9UT09MX0JVVFRPTihpdGVtKSwgMCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGl0
ZW0sICJjbGlja2VkIiwgY2FsbGJhY2ssIChncG9pbnRlcil3aW5kb3cpOworICAgIGd0a19hY3Rp
b25hYmxlX3NldF9hY3Rpb25fbmFtZShHVEtfQUNUSU9OQUJMRShpdGVtKSwgYWN0aW9uTmFtZSk7
CiAgICAgZ3RrX3Rvb2xfYnV0dG9uX3NldF9sYWJlbChHVEtfVE9PTF9CVVRUT04oaXRlbSksIGxh
YmVsKTsKICAgICBndGtfdG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xCQVIodG9vbGJhciksIEdUS19U
T09MX0lURU0oaXRlbSksIC0xKTsKICAgICBndGtfd2lkZ2V0X3Nob3coaXRlbSk7CkBAIC05NzYs
MTAgKzk4MywzMyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBicm93c2VyV2luZG93U2V0dXBUb29sYmFy
SXRlbShCcm93c2VyV2luZG93KiB3aW5kb3csIEd0a1dpZGdldAogfQogI2VuZGlmCiAKK3N0YXRp
YyBjb25zdCBHQWN0aW9uRW50cnkgYWN0aW9uc1tdID0geworICAgIHsgInJlbG9hZCIsIHJlbG9h
ZFBhZ2UsIE5VTEwsIE5VTEwsIE5VTEwsIHsgMCB9IH0sCisgICAgeyAicmVsb2FkLW5vLWNhY2hl
IiwgcmVsb2FkUGFnZUlnbm9yaW5nQ2FjaGUsIE5VTEwsIE5VTEwsIE5VTEwsIHsgMCB9IH0sCisg
ICAgeyAicmVsb2FkLXN0b3AiLCByZWxvYWRPclN0b3BDYWxsYmFjaywgTlVMTCwgTlVMTCwgTlVM
TCwgeyAwIH0gfSwKKyAgICB7ICJ0b2dnbGUtaW5zcGVjdG9yIiwgdG9nZ2xlV2ViSW5zcGVjdG9y
LCBOVUxMLCBOVUxMLCBOVUxMLCB7IDAgfSB9LAorICAgIHsgIm9wZW4tcHJpdmF0ZS13aW5kb3ci
LCBvcGVuUHJpdmF0ZVdpbmRvdywgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKKyAgICB7ICJm
b2N1cy1sb2NhdGlvbiIsIGZvY3VzTG9jYXRpb25CYXIsIE5VTEwsIE5VTEwsIE5VTEwsIHsgMCB9
IH0sCisgICAgeyAic3RvcC1sb2FkIiwgc3RvcFBhZ2VMb2FkLCBOVUxMLCBOVUxMLCBOVUxMLCB7
IDAgfSB9LAorICAgIHsgImxvYWQtaG9tZXBhZ2UiLCBsb2FkSG9tZVBhZ2UsIE5VTEwsIE5VTEws
IE5VTEwsIHsgMCB9IH0sCisgICAgeyAiZ28tYmFjayIsIGdvQmFja0NhbGxiYWNrLCBOVUxMLCBO
VUxMLCBOVUxMLCB7IDAgfSB9LAorICAgIHsgImdvLWZvcndhcmQiLCBnb0ZvcndhcmRDYWxsYmFj
aywgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKKyAgICB7ICJ6b29tLWluIiwgem9vbUluQ2Fs
bGJhY2ssIE5VTEwsIE5VTEwsIE5VTEwsIHsgMCB9IH0sCisgICAgeyAiem9vbS1vdXQiLCB6b29t
T3V0Q2FsbGJhY2ssIE5VTEwsIE5VTEwsIE5VTEwsIHsgMCB9IH0sCisgICAgeyAiem9vbS1kZWZh
dWx0IiwgZGVmYXVsdFpvb21DYWxsYmFjaywgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKKyNp
ZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCisgICAgeyAiZmluZCIsIHNlYXJjaENhbGxi
YWNrLCBOVUxMLCBOVUxMLCBOVUxMLCB7IDAgfSB9LAorICAgIHsgInByZWZlcmVuY2VzIiwgc2V0
dGluZ3NDYWxsYmFjaywgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKKyNlbmRpZgorICAgIHsg
Im5ldy10YWIiLCBuZXdUYWJDYWxsYmFjaywgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKKyAg
ICB7ICJ0b2dnbGUtZnVsbHNjcmVlbiIsIHRvZ2dsZUZ1bGxTY3JlZW4sIE5VTEwsIE5VTEwsIE5V
TEwsIHsgMCB9IH0sCisgICAgeyAicHJpbnQiLCBwcmludFBhZ2UsIE5VTEwsIE5VTEwsIE5VTEws
IHsgMCB9IH0sCisgICAgeyAiY2xvc2UiLCBicm93c2VyV2luZG93VHJ5Q2xvc2VDdXJyZW50V2Vi
VmlldywgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKKyAgICB7ICJxdWl0IiwgYnJvd3Nlcldp
bmRvd1RyeUNsb3NlLCBOVUxMLCBOVUxMLCBOVUxMLCB7IDAgfSB9LAorfTsKKwogc3RhdGljIHZv
aWQgYnJvd3Nlcl93aW5kb3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7Ci0gICAgd2lu
ZG93TGlzdCA9IGdfbGlzdF9hcHBlbmQod2luZG93TGlzdCwgd2luZG93KTsKLQogICAgIHdpbmRv
dy0+YmFja2dyb3VuZENvbG9yLnJlZCA9IHdpbmRvdy0+YmFja2dyb3VuZENvbG9yLmdyZWVuID0g
d2luZG93LT5iYWNrZ3JvdW5kQ29sb3IuYmx1ZSA9IDI1NTsKICAgICB3aW5kb3ctPmJhY2tncm91
bmRDb2xvci5hbHBoYSA9IDE7CiAKQEAgLTk5MSw3NCArMTAyMSw3IEBAIHN0YXRpYyB2b2lkIGJy
b3dzZXJfd2luZG93X2luaXQoQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0a19lbnRyeV9z
ZXRfaWNvbl9hY3RpdmF0YWJsZShHVEtfRU5UUlkod2luZG93LT51cmlFbnRyeSksIEdUS19FTlRS
WV9JQ09OX1BSSU1BUlksIEZBTFNFKTsKICAgICB1cGRhdGVVcmlFbnRyeUljb24od2luZG93KTsK
IAotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKLSAgICAvKiBLZXlib2FyZCBhY2Nl
bGVyYXRvcnMgKi8KLSAgICB3aW5kb3ctPmFjY2VsR3JvdXAgPSBndGtfYWNjZWxfZ3JvdXBfbmV3
KCk7Ci0gICAgZ3RrX3dpbmRvd19hZGRfYWNjZWxfZ3JvdXAoR1RLX1dJTkRPVyh3aW5kb3cpLCB3
aW5kb3ctPmFjY2VsR3JvdXApOwotCi0gICAgLyogR2xvYmFsIGFjY2VsZXJhdG9ycyAqLwotICAg
IGd0a19hY2NlbF9ncm91cF9jb25uZWN0KHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9JLCBH
REtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssIEdUS19BQ0NFTF9WSVNJQkxFLAotICAg
ICAgICBnX2NjbG9zdXJlX25ld19zd2FwKEdfQ0FMTEJBQ0sodG9nZ2xlV2ViSW5zcGVjdG9yKSwg
d2luZG93LCBOVUxMKSk7Ci0gICAgZ3RrX2FjY2VsX2dyb3VwX2Nvbm5lY3Qod2luZG93LT5hY2Nl
bEdyb3VwLCBHREtfS0VZX0YxMiwgMCwgR1RLX0FDQ0VMX1ZJU0lCTEUsCi0gICAgICAgIGdfY2Ns
b3N1cmVfbmV3X3N3YXAoR19DQUxMQkFDSyh0b2dnbGVXZWJJbnNwZWN0b3IpLCB3aW5kb3csIE5V
TEwpKTsKLSAgICBndGtfYWNjZWxfZ3JvdXBfY29ubmVjdCh3aW5kb3ctPmFjY2VsR3JvdXAsIEdE
S19LRVlfUCwgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCBHVEtfQUNDRUxfVklT
SUJMRSwKLSAgICAgICAgZ19jY2xvc3VyZV9uZXdfc3dhcChHX0NBTExCQUNLKG9wZW5Qcml2YXRl
V2luZG93KSwgd2luZG93LCBOVUxMKSk7Ci0KLSAgICAvKiBGb2N1cyBsb2NhdGlvbiBiYXIgKi8K
LSAgICBndGtfYWNjZWxfZ3JvdXBfY29ubmVjdCh3aW5kb3ctPmFjY2VsR3JvdXAsIEdES19LRVlf
TCwgR0RLX0NPTlRST0xfTUFTSywgR1RLX0FDQ0VMX1ZJU0lCTEUsCi0gICAgICAgIGdfY2Nsb3N1
cmVfbmV3X3N3YXAoR19DQUxMQkFDSyhmb2N1c0xvY2F0aW9uQmFyKSwgd2luZG93LCBOVUxMKSk7
Ci0KLSAgICAvKiBSZWxvYWQgcGFnZSAqLwotICAgIGd0a19hY2NlbF9ncm91cF9jb25uZWN0KHdp
bmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9GNSwgMCwgR1RLX0FDQ0VMX1ZJU0lCTEUsCi0gICAg
ICAgIGdfY2Nsb3N1cmVfbmV3X3N3YXAoR19DQUxMQkFDSyhyZWxvYWRQYWdlKSwgd2luZG93LCBO
VUxMKSk7Ci0gICAgZ3RrX2FjY2VsX2dyb3VwX2Nvbm5lY3Qod2luZG93LT5hY2NlbEdyb3VwLCBH
REtfS0VZX1IsIEdES19DT05UUk9MX01BU0ssIEdUS19BQ0NFTF9WSVNJQkxFLAotICAgICAgICBn
X2NjbG9zdXJlX25ld19zd2FwKEdfQ0FMTEJBQ0socmVsb2FkUGFnZSksIHdpbmRvdywgTlVMTCkp
OwotCi0gICAgLyogUmVsb2FkIHBhZ2UgaWdub3JpbmcgY2FjaGUgKi8KLSAgICBndGtfYWNjZWxf
Z3JvdXBfY29ubmVjdCh3aW5kb3ctPmFjY2VsR3JvdXAsIEdES19LRVlfRjUsIEdES19DT05UUk9M
X01BU0ssIEdUS19BQ0NFTF9WSVNJQkxFLAotICAgICAgICBnX2NjbG9zdXJlX25ld19zd2FwKEdf
Q0FMTEJBQ0socmVsb2FkUGFnZUlnbm9yaW5nQ2FjaGUpLCB3aW5kb3csIE5VTEwpKTsKLSAgICBn
dGtfYWNjZWxfZ3JvdXBfY29ubmVjdCh3aW5kb3ctPmFjY2VsR3JvdXAsIEdES19LRVlfUiwgR0RL
X0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCBHVEtfQUNDRUxfVklTSUJMRSwKLSAgICAg
ICAgZ19jY2xvc3VyZV9uZXdfc3dhcChHX0NBTExCQUNLKHJlbG9hZFBhZ2VJZ25vcmluZ0NhY2hl
KSwgd2luZG93LCBOVUxMKSk7Ci0KLSAgICAvKiBTdG9wIHBhZ2UgbG9hZCAqLwotICAgIGd0a19h
Y2NlbF9ncm91cF9jb25uZWN0KHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9GNiwgMCwgR1RL
X0FDQ0VMX1ZJU0lCTEUsCi0gICAgICAgIGdfY2Nsb3N1cmVfbmV3X3N3YXAoR19DQUxMQkFDSyhz
dG9wUGFnZUxvYWQpLCB3aW5kb3csIE5VTEwpKTsKLSAgICBndGtfYWNjZWxfZ3JvdXBfY29ubmVj
dCh3aW5kb3ctPmFjY2VsR3JvdXAsIEdES19LRVlfRXNjYXBlLCAwLCBHVEtfQUNDRUxfVklTSUJM
RSwKLSAgICAgICAgZ19jY2xvc3VyZV9uZXdfc3dhcChHX0NBTExCQUNLKHN0b3BQYWdlTG9hZCks
IHdpbmRvdywgTlVMTCkpOwotCi0gICAgLyogTG9hZCBob21lIHBhZ2UgKi8KLSAgICBndGtfYWNj
ZWxfZ3JvdXBfY29ubmVjdCh3aW5kb3ctPmFjY2VsR3JvdXAsIEdES19LRVlfSG9tZSwgR0RLX01P
RDFfTUFTSywgR1RLX0FDQ0VMX1ZJU0lCTEUsCi0gICAgICAgIGdfY2Nsb3N1cmVfbmV3X3N3YXAo
R19DQUxMQkFDSyhsb2FkSG9tZVBhZ2UpLCB3aW5kb3csIE5VTEwpKTsKLQotICAgIC8qIFpvb20g
aW4sIHpvb20gb3V0IGFuZCBkZWZhdWx0IHpvb20qLwotICAgIGd0a19hY2NlbF9ncm91cF9jb25u
ZWN0KHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9lcXVhbCwgR0RLX0NPTlRST0xfTUFTSywg
R1RLX0FDQ0VMX1ZJU0lCTEUsCi0gICAgICAgIGdfY2Nsb3N1cmVfbmV3X3N3YXAoR19DQUxMQkFD
Syh6b29tSW5DYWxsYmFjayksIHdpbmRvdywgTlVMTCkpOwotICAgIGd0a19hY2NlbF9ncm91cF9j
b25uZWN0KHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9LUF9BZGQsIEdES19DT05UUk9MX01B
U0ssIEdUS19BQ0NFTF9WSVNJQkxFLAotICAgICAgICBnX2NjbG9zdXJlX25ld19zd2FwKEdfQ0FM
TEJBQ0soem9vbUluQ2FsbGJhY2spLCB3aW5kb3csIE5VTEwpKTsKLSAgICBndGtfYWNjZWxfZ3Jv
dXBfY29ubmVjdCh3aW5kb3ctPmFjY2VsR3JvdXAsIEdES19LRVlfbWludXMsIEdES19DT05UUk9M
X01BU0ssIEdUS19BQ0NFTF9WSVNJQkxFLAotICAgICAgICBnX2NjbG9zdXJlX25ld19zd2FwKEdf
Q0FMTEJBQ0soem9vbU91dENhbGxiYWNrKSwgd2luZG93LCBOVUxMKSk7Ci0gICAgZ3RrX2FjY2Vs
X2dyb3VwX2Nvbm5lY3Qod2luZG93LT5hY2NlbEdyb3VwLCBHREtfS0VZX0tQX1N1YnRyYWN0LCBH
REtfQ09OVFJPTF9NQVNLLCBHVEtfQUNDRUxfVklTSUJMRSwKLSAgICAgICAgZ19jY2xvc3VyZV9u
ZXdfc3dhcChHX0NBTExCQUNLKHpvb21PdXRDYWxsYmFjayksIHdpbmRvdywgTlVMTCkpOwotICAg
IGd0a19hY2NlbF9ncm91cF9jb25uZWN0KHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV8wLCBH
REtfQ09OVFJPTF9NQVNLLCBHVEtfQUNDRUxfVklTSUJMRSwKLSAgICAgICAgZ19jY2xvc3VyZV9u
ZXdfc3dhcChHX0NBTExCQUNLKGRlZmF1bHRab29tQ2FsbGJhY2spLCB3aW5kb3csIE5VTEwpKTsK
LSAgICBndGtfYWNjZWxfZ3JvdXBfY29ubmVjdCh3aW5kb3ctPmFjY2VsR3JvdXAsIEdES19LRVlf
S1BfMCwgR0RLX0NPTlRST0xfTUFTSywgR1RLX0FDQ0VMX1ZJU0lCTEUsCi0gICAgICAgIGdfY2Ns
b3N1cmVfbmV3X3N3YXAoR19DQUxMQkFDSyhkZWZhdWx0Wm9vbUNhbGxiYWNrKSwgd2luZG93LCBO
VUxMKSk7Ci0KLSAgICAvKiBUb2dnbGUgZnVsbHNjcmVlbiAqLwotICAgIGd0a19hY2NlbF9ncm91
cF9jb25uZWN0KHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9GMTEsIDAsIEdUS19BQ0NFTF9W
SVNJQkxFLAotICAgICAgICBnX2NjbG9zdXJlX25ld19zd2FwKEdfQ0FMTEJBQ0sodG9nZ2xlRnVs
bFNjcmVlbiksIHdpbmRvdywgTlVMTCkpOwotCi0gICAgLyogUXVpdCAqLwotICAgIGd0a19hY2Nl
bF9ncm91cF9jb25uZWN0KHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9RLCBHREtfQ09OVFJP
TF9NQVNLLCBHVEtfQUNDRUxfVklTSUJMRSwKLSAgICAgICAgZ19jY2xvc3VyZV9uZXdfc3dhcChH
X0NBTExCQUNLKGJyb3dzZXJXaW5kb3dUcnlDbG9zZSksIHdpbmRvdywgTlVMTCkpOwotICAgIGd0
a19hY2NlbF9ncm91cF9jb25uZWN0KHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9XLCBHREtf
Q09OVFJPTF9NQVNLLCBHVEtfQUNDRUxfVklTSUJMRSwKLSAgICAgICAgZ19jY2xvc3VyZV9uZXdf
c3dhcChHX0NBTExCQUNLKGJyb3dzZXJXaW5kb3dUcnlDbG9zZUN1cnJlbnRXZWJWaWV3KSwgd2lu
ZG93LCBOVUxMKSk7Ci0KLSAgICAvKiBQcmludCAqLwotICAgIGd0a19hY2NlbF9ncm91cF9jb25u
ZWN0KHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9QLCBHREtfQ09OVFJPTF9NQVNLLCBHVEtf
QUNDRUxfVklTSUJMRSwKLSAgICAgICAgZ19jY2xvc3VyZV9uZXdfc3dhcChHX0NBTExCQUNLKHBy
aW50UGFnZSksIHdpbmRvdywgTlVMTCkpOwotCi0jZW5kaWYKKyAgICBnX2FjdGlvbl9tYXBfYWRk
X2FjdGlvbl9lbnRyaWVzKEdfQUNUSU9OX01BUCh3aW5kb3cpLCBhY3Rpb25zLCBHX05fRUxFTUVO
VFMoYWN0aW9ucyksIHdpbmRvdyk7CiAKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkK
ICAgICBHdGtXaWRnZXQgKnRvb2xiYXIgPSBndGtfY2VudGVyX2JveF9uZXcoKTsKQEAgLTEwNzcs
MjQgKzEwNDAsMjEgQEAgc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfaW5pdChCcm93c2VyV2lu
ZG93ICp3aW5kb3cpCiAgICAgZ3RrX29yaWVudGFibGVfc2V0X29yaWVudGF0aW9uKEdUS19PUklF
TlRBQkxFKHRvb2xiYXIpLCBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CiAgICAgZ3RrX3Rv
b2xiYXJfc2V0X3N0eWxlKEdUS19UT09MQkFSKHRvb2xiYXIpLCBHVEtfVE9PTEJBUl9CT1RIX0hP
UklaKTsKIAotICAgIHdpbmRvdy0+YmFja0l0ZW0gPSBicm93c2VyV2luZG93U2V0dXBUb29sYmFy
SXRlbSh3aW5kb3csIHRvb2xiYXIsIEdUS19UWVBFX01FTlVfVE9PTF9CVVRUT04sICJCYWNrIiwg
ImdvLXByZXZpb3VzIiwgR19DQUxMQkFDSyhnb0JhY2tDYWxsYmFjaykpOwotICAgIHdpbmRvdy0+
Zm9yd2FyZEl0ZW0gPSBicm93c2VyV2luZG93U2V0dXBUb29sYmFySXRlbSh3aW5kb3csIHRvb2xi
YXIsIEdUS19UWVBFX01FTlVfVE9PTF9CVVRUT04sICJGb3J3YXJkIiwgImdvLW5leHQiLCBHX0NB
TExCQUNLKGdvRm9yd2FyZENhbGxiYWNrKSk7Ci0gICAgYnJvd3NlcldpbmRvd1NldHVwVG9vbGJh
ckl0ZW0od2luZG93LCB0b29sYmFyLCBHVEtfVFlQRV9UT09MX0JVVFRPTiwgIlByZWZlcmVuY2Vz
IiwgInByZWZlcmVuY2VzLXN5c3RlbSIsIEdfQ0FMTEJBQ0soc2V0dGluZ3NDYWxsYmFjaykpOwor
ICAgIHdpbmRvdy0+YmFja0l0ZW0gPSBicm93c2VyV2luZG93U2V0dXBUb29sYmFySXRlbSh3aW5k
b3csIHRvb2xiYXIsIEdUS19UWVBFX01FTlVfVE9PTF9CVVRUT04sICJCYWNrIiwgImdvLXByZXZp
b3VzIiwgIndpbi5nby1iYWNrIik7CisgICAgd2luZG93LT5mb3J3YXJkSXRlbSA9IGJyb3dzZXJX
aW5kb3dTZXR1cFRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJhciwgR1RLX1RZUEVfTUVOVV9UT09M
X0JVVFRPTiwgIkZvcndhcmQiLCAiZ28tbmV4dCIsICJ3aW4uZ28tZm9yd2FyZCIpOworICAgIGJy
b3dzZXJXaW5kb3dTZXR1cFRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJhciwgR1RLX1RZUEVfVE9P
TF9CVVRUT04sICJQcmVmZXJlbmNlcyIsICJwcmVmZXJlbmNlcy1zeXN0ZW0iLCAid2luLnByZWZl
cmVuY2VzIik7CiAKLSAgICB3aW5kb3ctPnpvb21PdXRJdGVtID0gYnJvd3NlcldpbmRvd1NldHVw
VG9vbGJhckl0ZW0od2luZG93LCB0b29sYmFyLCBHVEtfVFlQRV9UT09MX0JVVFRPTiwgIlpvb20g
T3V0IiwgInpvb20tb3V0IiwgR19DQUxMQkFDSyh6b29tT3V0Q2FsbGJhY2spKTsKLSAgICB3aW5k
b3ctPnpvb21Jbkl0ZW0gPSBicm93c2VyV2luZG93U2V0dXBUb29sYmFySXRlbSh3aW5kb3csIHRv
b2xiYXIsIEdUS19UWVBFX1RPT0xfQlVUVE9OLCAiWm9vbSBJbiIsICJ6b29tLWluIiwgR19DQUxM
QkFDSyh6b29tSW5DYWxsYmFjaykpOworICAgIGJyb3dzZXJXaW5kb3dTZXR1cFRvb2xiYXJJdGVt
KHdpbmRvdywgdG9vbGJhciwgR1RLX1RZUEVfVE9PTF9CVVRUT04sICJab29tIE91dCIsICJ6b29t
LW91dCIsICJ3aW4uem9vbS1vdXQiKTsKKyAgICBicm93c2VyV2luZG93U2V0dXBUb29sYmFySXRl
bSh3aW5kb3csIHRvb2xiYXIsIEdUS19UWVBFX1RPT0xfQlVUVE9OLCAiWm9vbSBJbiIsICJ6b29t
LWluIiwgIndpbi56b29tLWluIik7CiAKLSAgICBndGtfd2lkZ2V0X2FkZF9hY2NlbGVyYXRvcihi
cm93c2VyV2luZG93U2V0dXBUb29sYmFySXRlbSh3aW5kb3csIHRvb2xiYXIsIEdUS19UWVBFX1RP
T0xfQlVUVE9OLCAiRmluZCIsICJlZGl0LWZpbmQiLCBHX0NBTExCQUNLKHNlYXJjaENhbGxiYWNr
KSksCi0gICAgICAgICJjbGlja2VkIiwgd2luZG93LT5hY2NlbEdyb3VwLCBHREtfS0VZX0YsIEdE
S19DT05UUk9MX01BU0ssIEdUS19BQ0NFTF9WSVNJQkxFKTsKKyAgICBicm93c2VyV2luZG93U2V0
dXBUb29sYmFySXRlbSh3aW5kb3csIHRvb2xiYXIsIEdUS19UWVBFX1RPT0xfQlVUVE9OLCAiRmlu
ZCIsICJlZGl0LWZpbmQiLCAid2luLmZpbmQiKTsKIAotICAgIGd0a193aWRnZXRfYWRkX2FjY2Vs
ZXJhdG9yKGJyb3dzZXJXaW5kb3dTZXR1cFRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJhciwgR1RL
X1RZUEVfVE9PTF9CVVRUT04sICJIb21lIiwgImdvLWhvbWUiLCBHX0NBTExCQUNLKGxvYWRIb21l
UGFnZSkpLAotICAgICAgICAiY2xpY2tlZCIsIHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9I
b21lLCBHREtfTU9EMV9NQVNLLCBHVEtfQUNDRUxfVklTSUJMRSk7CisgICAgYnJvd3NlcldpbmRv
d1NldHVwVG9vbGJhckl0ZW0od2luZG93LCB0b29sYmFyLCBHVEtfVFlQRV9UT09MX0JVVFRPTiwg
IkhvbWUiLCAiZ28taG9tZSIsICJ3aW4ubG9hZC1ob21lcGFnZSIpOwogCiAgICAgR3RrVG9vbEl0
ZW0gKml0ZW0gPSBndGtfdG9vbF9idXR0b25fbmV3KGd0a19pbWFnZV9uZXdfZnJvbV9pY29uX25h
bWUoInRhYi1uZXciLCBHVEtfSUNPTl9TSVpFX1NNQUxMX1RPT0xCQVIpLCBOVUxMKTsKLSAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoaXRlbSwgImNsaWNrZWQiLCBHX0NBTExCQUNLKG5ld1Rh
YkNhbGxiYWNrKSwgd2luZG93KTsKKyAgICBndGtfYWN0aW9uYWJsZV9zZXRfYWN0aW9uX25hbWUo
R1RLX0FDVElPTkFCTEUoaXRlbSksICJ3aW4ubmV3LXRhYiIpOwogICAgIGd0a190b29sX2J1dHRv
bl9zZXRfbGFiZWwoR1RLX1RPT0xfQlVUVE9OKGl0ZW0pLCAiTmV3IFRhYiIpOwogICAgIGd0a190
b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEpOwotICAgIGd0a193
aWRnZXRfYWRkX2FjY2VsZXJhdG9yKEdUS19XSURHRVQoaXRlbSksICJjbGlja2VkIiwgd2luZG93
LT5hY2NlbEdyb3VwLCBHREtfS0VZX1QsIEdES19DT05UUk9MX01BU0ssIEdUS19BQ0NFTF9WSVNJ
QkxFKTsKICAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKEdUS19XSURHRVQoaXRlbSkpOwogCiAgICAg
aXRlbSA9IGd0a190b29sX2l0ZW1fbmV3KCk7CkBAIC0xMTA0LDggKzEwNjQsNyBAQCBzdGF0aWMg
dm9pZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICBndGtf
dG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xCQVIodG9vbGJhciksIGl0ZW0sIC0xKTsKICAgICBndGtf
d2lkZ2V0X3Nob3coR1RLX1dJREdFVChpdGVtKSk7CiAKLSAgICB3aW5kb3ctPnJlbG9hZE9yU3Rv
cEJ1dHRvbiA9IGJyb3dzZXJXaW5kb3dTZXR1cFRvb2xiYXJJdGVtKHdpbmRvdywgdG9vbGJhciwg
R1RLX1RZUEVfVE9PTF9CVVRUT04sICJSZWxvYWQiLCAidmlldy1yZWZyZXNoIiwgR19DQUxMQkFD
SyhyZWxvYWRPclN0b3BDYWxsYmFjaykpOwotICAgIGd0a193aWRnZXRfYWRkX2FjY2VsZXJhdG9y
KHdpbmRvdy0+cmVsb2FkT3JTdG9wQnV0dG9uLCAiY2xpY2tlZCIsIHdpbmRvdy0+YWNjZWxHcm91
cCwgR0RLX0tFWV9GNSwgMCwgR1RLX0FDQ0VMX1ZJU0lCTEUpOworICAgIHdpbmRvdy0+cmVsb2Fk
T3JTdG9wQnV0dG9uID0gYnJvd3NlcldpbmRvd1NldHVwVG9vbGJhckl0ZW0od2luZG93LCB0b29s
YmFyLCBHVEtfVFlQRV9UT09MX0JVVFRPTiwgIlJlbG9hZCIsICJ2aWV3LXJlZnJlc2giLCAid2lu
LXJlbG9hZC1zdG9wIik7CiAjZW5kaWYKICAgICBHdGtXaWRnZXQgKnZib3ggPSBndGtfYm94X25l
dyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOwogICAgIHdpbmRvdy0+bWFpbkJveCA9IHZi
b3g7CkBAIC0xMTU2LDcgKzExMTUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gYnJvd3NlcldpbmRvd0Rl
bGV0ZUV2ZW50KEd0a1dpZGdldCAqd2lkZ2V0LCBHZGtFdmVudEFueSogZXZlbnQpCiB7CiAgICAg
QnJvd3NlcldpbmRvdyAqd2luZG93ID0gQlJPV1NFUl9XSU5ET1cod2lkZ2V0KTsKICAgICBicm93
c2VyV2luZG93U2F2ZVNlc3Npb24od2luZG93KTsKLSAgICBicm93c2VyV2luZG93VHJ5Q2xvc2Uo
d2luZG93KTsKKyAgICBicm93c2VyV2luZG93VHJ5Q2xvc2UoTlVMTCwgTlVMTCwgd2luZG93KTsK
ICAgICByZXR1cm4gVFJVRTsKIH0KICNlbmRpZgpAQCAtMTE4Niw3ICsxMTQ1LDcgQEAgR3RrV2lk
Z2V0ICpicm93c2VyX3dpbmRvd19uZXcoR3RrV2luZG93ICpwYXJlbnQsIFdlYktpdFdlYkNvbnRl
eHQgKndlYkNvbnRleHQpCiAjZW5kaWYKICAgICAgICAgTlVMTCkpOwogCi0gICAgd2luZG93LT53
ZWJDb250ZXh0ID0gd2ViQ29udGV4dDsKKyAgICB3aW5kb3ctPndlYkNvbnRleHQgPSBnX29iamVj
dF9yZWYod2ViQ29udGV4dCk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPndlYkNvbnRl
eHQsICJkb3dubG9hZC1zdGFydGVkIiwgR19DQUxMQkFDSyhkb3dubG9hZFN0YXJ0ZWQpLCB3aW5k
b3cpOwogICAgIGlmIChwYXJlbnQpIHsKICAgICAgICAgd2luZG93LT5wYXJlbnRXaW5kb3cgPSBw
YXJlbnQ7CkBAIC0xMjE3LDcgKzExNzYsNiBAQCB2b2lkIGJyb3dzZXJfd2luZG93X2FwcGVuZF92
aWV3KEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2ViS2l0V2ViVmlldyAqd2ViVmlldykKICNpZiAh
R1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgaWYgKGd0a193aWRnZXRfZ2V0X2FwcF9w
YWludGFibGUoR1RLX1dJREdFVCh3aW5kb3cpKSkKICAgICAgICAgYnJvd3Nlcl90YWJfc2V0X2Jh
Y2tncm91bmRfY29sb3IoQlJPV1NFUl9UQUIodGFiKSwgJndpbmRvdy0+YmFja2dyb3VuZENvbG9y
KTsKLSAgICBicm93c2VyX3RhYl9hZGRfYWNjZWxlcmF0b3JzKEJST1dTRVJfVEFCKHRhYiksIHdp
bmRvdy0+YWNjZWxHcm91cCk7CiAjZW5kaWYKICAgICBndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2Uo
R1RLX05PVEVCT09LKHdpbmRvdy0+bm90ZWJvb2spLCB0YWIsIGJyb3dzZXJfdGFiX2dldF90aXRs
ZV93aWRnZXQoQlJPV1NFUl9UQUIodGFiKSkpOwogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5
OCwgMCkKQEAgLTEyODUsMjUgKzEyNDMsOCBAQCB2b2lkIGJyb3dzZXJfd2luZG93X3NldF9iYWNr
Z3JvdW5kX2NvbG9yKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgR2RrUkdCQSAqcmdiYSkKICNlbmRp
ZgogfQogCi1zdGF0aWMgQnJvd3NlcldpbmRvdyAqZmluZEFjdGl2ZVdpbmRvdyh2b2lkKQotewot
ICAgIEdMaXN0ICpsOwotCi0gICAgZm9yIChsID0gd2luZG93TGlzdDsgbDsgbCA9IGdfbGlzdF9u
ZXh0KGwpKSB7Ci0gICAgICAgIEJyb3dzZXJXaW5kb3cgKndpbmRvdyA9IChCcm93c2VyV2luZG93
ICopbC0+ZGF0YTsKLSAgICAgICAgaWYgKGd0a193aW5kb3dfaXNfYWN0aXZlKEdUS19XSU5ET1co
d2luZG93KSkpCi0gICAgICAgICAgICByZXR1cm4gd2luZG93OwotICAgIH0KLQotICAgIHJldHVy
biB3aW5kb3dMaXN0ID8gKEJyb3dzZXJXaW5kb3cgKil3aW5kb3dMaXN0LT5kYXRhIDogTlVMTDsK
LX0KLQotV2ViS2l0V2ViVmlldyAqYnJvd3Nlcl93aW5kb3dfZ2V0X29yX2NyZWF0ZV93ZWJfdmll
d19mb3JfYXV0b21hdGlvbih2b2lkKQorV2ViS2l0V2ViVmlldyAqYnJvd3Nlcl93aW5kb3dfZ2V0
X29yX2NyZWF0ZV93ZWJfdmlld19mb3JfYXV0b21hdGlvbihCcm93c2VyV2luZG93ICp3aW5kb3cp
CiB7Ci0gICAgQnJvd3NlcldpbmRvdyAqd2luZG93ID0gZmluZEFjdGl2ZVdpbmRvdygpOwotICAg
IGlmICghd2luZG93KQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFdlYktpdFdlYlZpZXcg
KndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXcod2luZG93LT5hY3RpdmVUYWIpOwog
ICAgIGlmIChndGtfbm90ZWJvb2tfZ2V0X25fcGFnZXMoR1RLX05PVEVCT09LKHdpbmRvdy0+bm90
ZWJvb2spKSA9PSAxICYmICF3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSkgewogICAg
ICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldywgImFib3V0OmJsYW5rIik7CkBA
IC0xMzE3LDYgKzEyNTgsNyBAQCBXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19nZXRfb3Jf
Y3JlYXRlX3dlYl92aWV3X2Zvcl9hdXRvbWF0aW9uKHZvaWQpCiAgICAgICAgICJpcy1jb250cm9s
bGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLAogICAgICAgICBOVUxMKSk7CiAgICAgR3RrV2lkZ2V0
ICpuZXdXaW5kb3cgPSBicm93c2VyX3dpbmRvd19uZXcoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aW5k
b3ctPndlYkNvbnRleHQpOworICAgIGd0a193aW5kb3dfc2V0X2FwcGxpY2F0aW9uKEdUS19XSU5E
T1cobmV3V2luZG93KSwgZ3RrX3dpbmRvd19nZXRfYXBwbGljYXRpb24oR1RLX1dJTkRPVyh3aW5k
b3cpKSk7CiAjaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQogICAgIGd0a193aW5kb3df
c2V0X2ZvY3VzX29uX21hcChHVEtfV0lORE9XKG5ld1dpbmRvdyksIEZBTFNFKTsKICNlbmRpZgpA
QCAtMTMyNiwxMiArMTI2OCw4IEBAIFdlYktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2dldF9v
cl9jcmVhdGVfd2ViX3ZpZXdfZm9yX2F1dG9tYXRpb24odm9pZCkKICAgICByZXR1cm4gbmV3V2Vi
VmlldzsKIH0KIAotV2ViS2l0V2ViVmlldyAqYnJvd3Nlcl93aW5kb3dfY3JlYXRlX3dlYl92aWV3
X2luX25ld190YWJfZm9yX2F1dG9tYXRpb24odm9pZCkKK1dlYktpdFdlYlZpZXcgKmJyb3dzZXJf
d2luZG93X2NyZWF0ZV93ZWJfdmlld19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKEJyb3dzZXJX
aW5kb3cgKndpbmRvdykKIHsKLSAgICBCcm93c2VyV2luZG93ICp3aW5kb3cgPSBmaW5kQWN0aXZl
V2luZG93KCk7Ci0gICAgaWYgKCF3aW5kb3cpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAg
V2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGJyb3dzZXJfdGFiX2dldF93ZWJfdmlldyh3aW5kb3ct
PmFjdGl2ZVRhYik7CiAgICAgV2ViS2l0V2ViVmlldyAqbmV3V2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCiAgICAgICAgICJ3ZWItY29u
dGV4dCIsIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3KSwKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5oCmluZGV4IDE1NzBkNjVlZmZiNS4uNjI2MjliNGMxYzI1IDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5oCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmgKQEAgLTUxLDggKzUxLDggQEAgdm9p
ZCBicm93c2VyX3dpbmRvd19hcHBlbmRfdmlldyhCcm93c2VyV2luZG93KiwgV2ViS2l0V2ViVmll
dyopOwogdm9pZCBicm93c2VyX3dpbmRvd19sb2FkX3VyaShCcm93c2VyV2luZG93KiwgY29uc3Qg
Y2hhciAqdXJpKTsKIHZvaWQgYnJvd3Nlcl93aW5kb3dfbG9hZF9zZXNzaW9uKEJyb3dzZXJXaW5k
b3cgKiwgY29uc3QgY2hhciAqc2Vzc2lvbkZpbGUpOwogdm9pZCBicm93c2VyX3dpbmRvd19zZXRf
YmFja2dyb3VuZF9jb2xvcihCcm93c2VyV2luZG93KiwgR2RrUkdCQSopOwotV2ViS2l0V2ViVmll
dyogYnJvd3Nlcl93aW5kb3dfZ2V0X29yX2NyZWF0ZV93ZWJfdmlld19mb3JfYXV0b21hdGlvbih2
b2lkKTsKLVdlYktpdFdlYlZpZXcgKmJyb3dzZXJfd2luZG93X2NyZWF0ZV93ZWJfdmlld19pbl9u
ZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKHZvaWQpOworV2ViS2l0V2ViVmlldyogYnJvd3Nlcl93aW5k
b3dfZ2V0X29yX2NyZWF0ZV93ZWJfdmlld19mb3JfYXV0b21hdGlvbihCcm93c2VyV2luZG93Kik7
CitXZWJLaXRXZWJWaWV3ICpicm93c2VyX3dpbmRvd19jcmVhdGVfd2ViX3ZpZXdfaW5fbmV3X3Rh
Yl9mb3JfYXV0b21hdGlvbihCcm93c2VyV2luZG93Kik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9DTWFrZUxpc3RzLnR4dAppbmRleCBkZmM4NDEzNWZkYjcuLmE4OGJjZTFlMGJi
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0NNYWtlTGlzdHMudHh0CisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9DTWFrZUxpc3RzLnR4dApAQCAtOCw4ICs4LDYgQEAgc2V0
KE1pbmlCcm93c2VyX1NPVVJDRVMKICAgICBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5oCiAg
ICAgQnJvd3NlckRvd25sb2Fkc0Jhci5jCiAgICAgQnJvd3NlckRvd25sb2Fkc0Jhci5oCi0gICAg
QnJvd3Nlck1haW4uYwotICAgIEJyb3dzZXJNYWluLmgKICAgICBCcm93c2VyU2VhcmNoQmFyLmMK
ICAgICBCcm93c2VyU2VhcmNoQmFyLmgKICAgICBCcm93c2VyU2V0dGluZ3NEaWFsb2cuYwpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9tYWluLmMKaW5kZXggMmZmNDViOTM4Y2ZmLi4wYjIzNjYyMGQ5YzcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L21haW4uYwpAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKIAot
I2luY2x1ZGUgIkJyb3dzZXJNYWluLmgiCiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgogI2lu
Y2x1ZGUgPGVycm5vLmg+CiAjaWYgRU5BQkxFX1dFQl9BVURJTyB8fCBFTkFCTEVfVklERU8KQEAg
LTQ2NiwyNSArNDY1LDI3IEBAIHN0YXRpYyB2b2lkIGFib3V0VVJJU2NoZW1lUmVxdWVzdENhbGxi
YWNrKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QgKnJlcXVlc3QsIFdlYktpCiAgICAgfQogfQogCi1z
dGF0aWMgR3RrV2lkZ2V0ICpjcmVhdGVXZWJWaWV3Rm9yQXV0b21hdGlvbkluV2luZG93Q2FsbGJh
Y2soV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCitzdGF0aWMgR3RrV2lkZ2V0ICpj
cmVhdGVXZWJWaWV3Rm9yQXV0b21hdGlvbkluV2luZG93Q2FsbGJhY2soV2ViS2l0QXV0b21hdGlv
blNlc3Npb24qIHNlc3Npb24sIEd0a0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbikKIHsKLSAgICBy
ZXR1cm4gR1RLX1dJREdFVChicm93c2VyX3dpbmRvd19nZXRfb3JfY3JlYXRlX3dlYl92aWV3X2Zv
cl9hdXRvbWF0aW9uKCkpOworICAgIEd0a1dpbmRvdyAqd2luZG93ID0gZ3RrX2FwcGxpY2F0aW9u
X2dldF9hY3RpdmVfd2luZG93KGFwcGxpY2F0aW9uKTsKKyAgICByZXR1cm4gQlJPV1NFUl9JU19X
SU5ET1cod2luZG93KSA/IEdUS19XSURHRVQoYnJvd3Nlcl93aW5kb3dfZ2V0X29yX2NyZWF0ZV93
ZWJfdmlld19mb3JfYXV0b21hdGlvbihCUk9XU0VSX1dJTkRPVyh3aW5kb3cpKSkgOiBOVUxMOwog
fQogCi1zdGF0aWMgR3RrV2lkZ2V0ICpjcmVhdGVXZWJWaWV3Rm9yQXV0b21hdGlvbkluVGFiQ2Fs
bGJhY2soV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCitzdGF0aWMgR3RrV2lkZ2V0
ICpjcmVhdGVXZWJWaWV3Rm9yQXV0b21hdGlvbkluVGFiQ2FsbGJhY2soV2ViS2l0QXV0b21hdGlv
blNlc3Npb24qIHNlc3Npb24sIEd0a0FwcGxpY2F0aW9uICphcHBsaWNhdGlvbikKIHsKLSAgICBy
ZXR1cm4gR1RLX1dJREdFVChicm93c2VyX3dpbmRvd19jcmVhdGVfd2ViX3ZpZXdfaW5fbmV3X3Rh
Yl9mb3JfYXV0b21hdGlvbigpKTsKKyAgICBHdGtXaW5kb3cgKndpbmRvdyA9IGd0a19hcHBsaWNh
dGlvbl9nZXRfYWN0aXZlX3dpbmRvdyhhcHBsaWNhdGlvbik7CisgICAgcmV0dXJuIEJST1dTRVJf
SVNfV0lORE9XKHdpbmRvdykgPyBHVEtfV0lER0VUKGJyb3dzZXJfd2luZG93X2NyZWF0ZV93ZWJf
dmlld19pbl9uZXdfdGFiX2Zvcl9hdXRvbWF0aW9uKEJST1dTRVJfV0lORE9XKHdpbmRvdykpKSA6
IE5VTEw7CiB9CiAKLXN0YXRpYyB2b2lkIGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2soV2ViS2l0
V2ViQ29udGV4dCAqd2ViQ29udGV4dCwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24gKnNlc3Npb24p
CitzdGF0aWMgdm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQg
KndlYkNvbnRleHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uICpzZXNzaW9uLCBHdGtBcHBsaWNh
dGlvbiAqYXBwbGljYXRpb24pCiB7CiAgICAgV2ViS2l0QXBwbGljYXRpb25JbmZvICppbmZvID0g
d2Via2l0X2FwcGxpY2F0aW9uX2luZm9fbmV3KCk7CiAgICAgd2Via2l0X2FwcGxpY2F0aW9uX2lu
Zm9fc2V0X3ZlcnNpb24oaW5mbywgV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9NSU5PUl9W
RVJTSU9OLCBXRUJLSVRfTUlDUk9fVkVSU0lPTik7CiAgICAgd2Via2l0X2F1dG9tYXRpb25fc2Vz
c2lvbl9zZXRfYXBwbGljYXRpb25faW5mbyhzZXNzaW9uLCBpbmZvKTsKICAgICB3ZWJraXRfYXBw
bGljYXRpb25faW5mb191bnJlZihpbmZvKTsKIAotICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Vzc2lv
biwgImNyZWF0ZS13ZWItdmlldzo6d2luZG93IiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3Rm9y
QXV0b21hdGlvbkluV2luZG93Q2FsbGJhY2spLCBOVUxMKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0
KHNlc3Npb24sICJjcmVhdGUtd2ViLXZpZXc6OnRhYiIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
d0ZvckF1dG9tYXRpb25JblRhYkNhbGxiYWNrKSwgTlVMTCk7CisgICAgZ19zaWduYWxfY29ubmVj
dChzZXNzaW9uLCAiY3JlYXRlLXdlYi12aWV3Ojp3aW5kb3ciLCBHX0NBTExCQUNLKGNyZWF0ZVdl
YlZpZXdGb3JBdXRvbWF0aW9uSW5XaW5kb3dDYWxsYmFjayksIGFwcGxpY2F0aW9uKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJjcmVhdGUtd2ViLXZpZXc6OnRhYiIsIEdfQ0FMTEJB
Q0soY3JlYXRlV2ViVmlld0ZvckF1dG9tYXRpb25JblRhYkNhbGxiYWNrKSwgYXBwbGljYXRpb24p
OwogfQogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC00OTksNTUgKzUwMCwzNiBAQCBzdGF0aWMgdm9p
ZCBmaWx0ZXJTYXZlZENhbGxiYWNrKFdlYktpdFVzZXJDb250ZW50RmlsdGVyU3RvcmUgKnN0b3Jl
LCBHQXN5bmNSZXN1bAogICAgIGdfbWFpbl9sb29wX3F1aXQoZGF0YS0+bWFpbkxvb3ApOwogfQog
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorc3RhdGljIHZvaWQgc3RhcnR1cChH
QXBwbGljYXRpb24gKmFwcGxpY2F0aW9uKQogewotI2lmIEVOQUJMRV9ERVZFTE9QRVJfTU9ERQot
ICAgIGdfc2V0ZW52KCJXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEgiLCBXRUJLSVRfSU5KRUNU
RURfQlVORExFX1BBVEgsIEZBTFNFKTsKLSNlbmRpZgotCi0jaWYgR1RLX0NIRUNLX1ZFUlNJT04o
MywgOTgsIDApCi0gICAgZ3RrX2luaXQoKTsKLSNlbHNlCi0gICAgZ3RrX2luaXQoJmFyZ2MsICZh
cmd2KTsKLSNlbmRpZgotCi0gICAgR09wdGlvbkNvbnRleHQgKmNvbnRleHQgPSBnX29wdGlvbl9j
b250ZXh0X25ldyhOVUxMKTsKLSAgICBnX29wdGlvbl9jb250ZXh0X2FkZF9tYWluX2VudHJpZXMo
Y29udGV4dCwgY29tbWFuZExpbmVPcHRpb25zLCAwKTsKLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04o
MywgOTgsIDApCi0gICAgZ19vcHRpb25fY29udGV4dF9hZGRfZ3JvdXAoY29udGV4dCwgZ3RrX2dl
dF9vcHRpb25fZ3JvdXAoVFJVRSkpOwotI2VuZGlmCi0jaWYgRU5BQkxFX1dFQl9BVURJTyB8fCBF
TkFCTEVfVklERU8KLSAgICBnX29wdGlvbl9jb250ZXh0X2FkZF9ncm91cChjb250ZXh0LCBnc3Rf
aW5pdF9nZXRfb3B0aW9uX2dyb3VwKCkpOwotI2VuZGlmCi0KLSAgICBXZWJLaXRTZXR0aW5ncyAq
d2Via2l0U2V0dGluZ3MgPSB3ZWJraXRfc2V0dGluZ3NfbmV3KCk7Ci0gICAgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyh3ZWJraXRTZXR0aW5ncywgVFJVRSk7Ci0g
ICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfd2ViZ2wod2Via2l0U2V0dGluZ3MsIFRSVUUp
OwotICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbSh3ZWJraXRTZXR0
aW5ncywgVFJVRSk7Ci0gICAgaWYgKCFhZGRTZXR0aW5nc0dyb3VwVG9Db250ZXh0KGNvbnRleHQs
IHdlYmtpdFNldHRpbmdzKSkKLSAgICAgICAgZ19jbGVhcl9vYmplY3QoJndlYmtpdFNldHRpbmdz
KTsKLQotICAgIEdFcnJvciAqZXJyb3IgPSAwOwotICAgIGlmICghZ19vcHRpb25fY29udGV4dF9w
YXJzZShjb250ZXh0LCAmYXJnYywgJmFyZ3YsICZlcnJvcikpIHsKLSAgICAgICAgZ19wcmludGVy
cigiQ2Fubm90IHBhcnNlIGFyZ3VtZW50czogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAg
ICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKLSAgICAgICAgZ19vcHRpb25fY29udGV4dF9mcmVlKGNv
bnRleHQpOwotCi0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICBnX29wdGlvbl9jb250ZXh0
X2ZyZWUgKGNvbnRleHQpOwotCi0gICAgaWYgKHByaW50VmVyc2lvbikgewotICAgICAgICBnX3By
aW50KCJXZWJLaXRHVEsgJXUuJXUuJXUiLAotICAgICAgICAgICAgd2Via2l0X2dldF9tYWpvcl92
ZXJzaW9uKCksCi0gICAgICAgICAgICB3ZWJraXRfZ2V0X21pbm9yX3ZlcnNpb24oKSwKLSAgICAg
ICAgICAgIHdlYmtpdF9nZXRfbWljcm9fdmVyc2lvbigpKTsKLSAgICAgICAgaWYgKGdfc3RyY21w
MChTVk5fUkVWSVNJT04sICJ0YXJiYWxsIikpCi0gICAgICAgICAgICBnX3ByaW50KCIgKCVzKSIs
IFNWTl9SRVZJU0lPTik7Ci0gICAgICAgIGdfcHJpbnQoIlxuIik7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KKyAgICBjb25zdCBjaGFyICphY3Rpb25BY2NlbHNbXSA9IHsKKyAgICAgICAgIndp
bi5yZWxvYWQiLCAiRjUiLCAiPEN0cmw+UiIsIE5VTEwsCisgICAgICAgICJ3aW4ucmVsb2FkLW5v
LWNhY2hlIiwgIjxDdHJsPkY1IiwgIjxDdHJsPjxTaGlmdD5SIiwgTlVMTCwKKyAgICAgICAgIndp
bi50b2dnbGUtaW5zcGVjdG9yIiwgIjxDdHJsPjxTaGlmdD5JIiwgIkYxMiIsIE5VTEwsCisgICAg
ICAgICJ3aW4ub3Blbi1wcml2YXRlLXdpbmRvdyIsICI8Q3RybD48U2hpZnQ+UCIsIE5VTEwsCisg
ICAgICAgICJ3aW4uZm9jdXMtbG9jYXRpb24iLCAiPEN0cmw+TCIsIE5VTEwsCisgICAgICAgICJ3
aW4uc3RvcC1sb2FkIiwgIkY2IiwgIkVzY2FwZSIsIE5VTEwsCisgICAgICAgICJ3aW4ubG9hZC1o
b21lcGFnZSIsICI8QWx0PkhvbWUiLCBOVUxMLAorICAgICAgICAid2luLnpvb20taW4iLCAiPEN0
cmw+cGx1cyIsICI8Q3RybD5lcXVhbCIsICI8Q3RybD5LUF9BZGQiLCBOVUxMLAorICAgICAgICAi
d2luLnpvb20tb3V0IiwgIjxDdHJsPm1pbnVzIiwgIjxDdHJsPktQX1N1YnRyYWN0IiwgTlVMTCwK
KyAgICAgICAgIndpbi56b29tLWRlZmF1bHQiLCAiPEN0cmw+MCIsICI8Q3RybD5LUF8wIiwgTlVM
TCwKKyAgICAgICAgIndpbi5maW5kIiwgIjxDdHJsPkYiLCBOVUxMLAorICAgICAgICAid2luLm5l
dy10YWIiLCAiPEN0cmw+VCIsIE5VTEwsCisgICAgICAgICJ3aW4udG9nZ2xlLWZ1bGxzY3JlZW4i
LCAiRjExIiwgTlVMTCwKKyAgICAgICAgIndpbi5wcmludCIsICI8Q3RybD5QIiwgTlVMTCwKKyAg
ICAgICAgIndpbi5jbG9zZSIsICI8Q3RybD5XIiwgTlVMTCwKKyAgICAgICAgIndpbi5xdWl0Iiwg
IjxDdHJsPlEiLCBOVUxMLAorICAgICAgICAiZmluZC5uZXh0IiwgIkYzIiwgIjxDdHJsPkciLCBO
VUxMLAorICAgICAgICAiZmluZC5wcmV2aW91cyIsICI8U2hpZnQ+RjMiLCAiPEN0cmw+PFNoaWZ0
PkciLCBOVUxMLAorICAgICAgICBOVUxMCisgICAgfTsKKworICAgIGZvciAoY29uc3QgZ2NoYXIg
KippdCA9IGFjdGlvbkFjY2VsczsgaXRbMF07IGl0ICs9IGdfc3Rydl9sZW5ndGgoKGdjaGFyICoq
KWl0KSArIDEpCisgICAgICAgIGd0a19hcHBsaWNhdGlvbl9zZXRfYWNjZWxzX2Zvcl9hY3Rpb24o
R1RLX0FQUExJQ0FUSU9OKGFwcGxpY2F0aW9uKSwgaXRbMF0sICZpdFsxXSk7Cit9CiAKK3N0YXRp
YyB2b2lkIGFjdGl2YXRlKEdBcHBsaWNhdGlvbiAqYXBwbGljYXRpb24sIFdlYktpdFNldHRpbmdz
ICp3ZWJraXRTZXR0aW5ncykKK3sKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFn
ZXIgPSAocHJpdmF0ZU1vZGUgfHwgYXV0b21hdGlvbk1vZGUpID8gd2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX25ld19lcGhlbWVyYWwoKSA6IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9u
ZXcoTlVMTCk7CiAgICAgV2ViS2l0V2ViQ29udGV4dCAqd2ViQ29udGV4dCA9IGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0YS1tYW5hZ2VyIiwgbWFuYWdl
ciwgInByb2Nlc3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmlnYXRpb24tZW5hYmxlZCIsIFRSVUUs
CiAjaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQpAQCAtNjExLDEyICs1OTMsMTMgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICB9CiAKICAgICB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2F1dG9tYXRpb25fYWxsb3dlZCh3ZWJDb250ZXh0LCBhdXRvbWF0aW9uTW9k
ZSk7Ci0gICAgZ19zaWduYWxfY29ubmVjdCh3ZWJDb250ZXh0LCAiYXV0b21hdGlvbi1zdGFydGVk
IiwgR19DQUxMQkFDSyhhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKSwgTlVMTCk7CisgICAgZ19z
aWduYWxfY29ubmVjdCh3ZWJDb250ZXh0LCAiYXV0b21hdGlvbi1zdGFydGVkIiwgR19DQUxMQkFD
SyhhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKSwgYXBwbGljYXRpb24pOwogCiAgICAgaWYgKGln
bm9yZVRMU0Vycm9ycykKICAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3Jz
X3BvbGljeSh3ZWJDb250ZXh0LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsKIAog
ICAgIEJyb3dzZXJXaW5kb3cgKm1haW5XaW5kb3cgPSBCUk9XU0VSX1dJTkRPVyhicm93c2VyX3dp
bmRvd19uZXcoTlVMTCwgd2ViQ29udGV4dCkpOworICAgIGd0a19hcHBsaWNhdGlvbl9hZGRfd2lu
ZG93KEdUS19BUFBMSUNBVElPTihhcHBsaWNhdGlvbiksIEdUS19XSU5ET1cobWFpbldpbmRvdykp
OwogICAgIGlmIChkYXJrTW9kZSkKICAgICAgICAgZ19vYmplY3Rfc2V0KGd0a193aWRnZXRfZ2V0
X3NldHRpbmdzKEdUS19XSURHRVQobWFpbldpbmRvdykpLCAiZ3RrLWFwcGxpY2F0aW9uLXByZWZl
ci1kYXJrLXRoZW1lIiwgVFJVRSwgTlVMTCk7CiAgICAgaWYgKGZ1bGxTY3JlZW4pCkBAIC02NDks
MTYgKzYzMiw3MCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICAgICB9
CiAgICAgfQogCisgICAgZ19jbGVhcl9vYmplY3QoJndlYmtpdFNldHRpbmdzKTsKKyAgICBnX29i
amVjdF91bnJlZih3ZWJDb250ZXh0KTsKKwogICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyhmaXJz
dFRhYik7CiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQobWFpbldpbmRvdykpOworfQog
Ci0gICAgZ19jbGVhcl9vYmplY3QoJndlYmtpdFNldHRpbmdzKTsKLSAgICBnX2NsZWFyX29iamVj
dCgmdXNlckNvbnRlbnRNYW5hZ2VyKTsKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
Cit7CisjaWYgRU5BQkxFX0RFVkVMT1BFUl9NT0RFCisgICAgZ19zZXRlbnYoIldFQktJVF9JTkpF
Q1RFRF9CVU5ETEVfUEFUSCIsIFdFQktJVF9JTkpFQ1RFRF9CVU5ETEVfUEFUSCwgRkFMU0UpOwor
I2VuZGlmCisKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKKyAgICBndGtfaW5pdCgp
OworI2Vsc2UKKyAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOworI2VuZGlmCisKKyAgICBHT3B0
aW9uQ29udGV4dCAqY29udGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3KE5VTEwpOworICAgIGdf
b3B0aW9uX2NvbnRleHRfYWRkX21haW5fZW50cmllcyhjb250ZXh0LCBjb21tYW5kTGluZU9wdGlv
bnMsIDApOworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKKyAgICBnX29wdGlvbl9j
b250ZXh0X2FkZF9ncm91cChjb250ZXh0LCBndGtfZ2V0X29wdGlvbl9ncm91cChUUlVFKSk7Cisj
ZW5kaWYKKyNpZiBFTkFCTEVfV0VCX0FVRElPIHx8IEVOQUJMRV9WSURFTworICAgIGdfb3B0aW9u
X2NvbnRleHRfYWRkX2dyb3VwKGNvbnRleHQsIGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXAoKSk7
CisjZW5kaWYKKworICAgIFdlYktpdFNldHRpbmdzICp3ZWJraXRTZXR0aW5ncyA9IHdlYmtpdF9z
ZXR0aW5nc19uZXcoKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9kZXZlbG9wZXJf
ZXh0cmFzKHdlYmtpdFNldHRpbmdzLCBUUlVFKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV93ZWJnbCh3ZWJraXRTZXR0aW5ncywgVFJVRSk7CisgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfbWVkaWFfc3RyZWFtKHdlYmtpdFNldHRpbmdzLCBUUlVFKTsKKyAgICBpZiAoIWFk
ZFNldHRpbmdzR3JvdXBUb0NvbnRleHQoY29udGV4dCwgd2Via2l0U2V0dGluZ3MpKQorICAgICAg
ICBnX2NsZWFyX29iamVjdCgmd2Via2l0U2V0dGluZ3MpOworCisgICAgR0Vycm9yICplcnJvciA9
IDA7CisgICAgaWYgKCFnX29wdGlvbl9jb250ZXh0X3BhcnNlKGNvbnRleHQsICZhcmdjLCAmYXJn
diwgJmVycm9yKSkgeworICAgICAgICBnX3ByaW50ZXJyKCJDYW5ub3QgcGFyc2UgYXJndW1lbnRz
OiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOwor
ICAgICAgICBnX29wdGlvbl9jb250ZXh0X2ZyZWUoY29udGV4dCk7CisgICAgICAgIGdfY2xlYXJf
b2JqZWN0KCZ3ZWJraXRTZXR0aW5ncyk7CisKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAg
IGdfb3B0aW9uX2NvbnRleHRfZnJlZShjb250ZXh0KTsKIAotICAgIGJyb3dzZXJfbWFpbigpOwor
ICAgIGlmIChwcmludFZlcnNpb24pIHsKKyAgICAgICAgZ19wcmludCgiV2ViS2l0R1RLICV1LiV1
LiV1IiwKKyAgICAgICAgICAgIHdlYmtpdF9nZXRfbWFqb3JfdmVyc2lvbigpLAorICAgICAgICAg
ICAgd2Via2l0X2dldF9taW5vcl92ZXJzaW9uKCksCisgICAgICAgICAgICB3ZWJraXRfZ2V0X21p
Y3JvX3ZlcnNpb24oKSk7CisgICAgICAgIGlmIChnX3N0cmNtcDAoU1ZOX1JFVklTSU9OLCAidGFy
YmFsbCIpKQorICAgICAgICAgICAgZ19wcmludCgiICglcykiLCBTVk5fUkVWSVNJT04pOworICAg
ICAgICBnX3ByaW50KCJcbiIpOworICAgICAgICBnX2NsZWFyX29iamVjdCgmd2Via2l0U2V0dGlu
Z3MpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KIAotICAgIGlmIChwcml2YXRlTW9kZSkK
LSAgICAgICAgZ19vYmplY3RfdW5yZWYod2ViQ29udGV4dCk7CisgICAgR3RrQXBwbGljYXRpb24g
KmFwcGxpY2F0aW9uID0gZ3RrX2FwcGxpY2F0aW9uX25ldyhOVUxMLCBHX0FQUExJQ0FUSU9OX0ZM
QUdTX05PTkUpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoYXBwbGljYXRpb24sICJzdGFydHVwIiwg
R19DQUxMQkFDSyhzdGFydHVwKSwgTlVMTCk7CisgICAgZ19zaWduYWxfY29ubmVjdChhcHBsaWNh
dGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhhY3RpdmF0ZSksIHdlYmtpdFNldHRpbmdzKTsK
KyAgICBnX2FwcGxpY2F0aW9uX3J1bihHX0FQUExJQ0FUSU9OKGFwcGxpY2F0aW9uKSwgMCwgTlVM
TCk7CisgICAgZ19vYmplY3RfdW5yZWYoYXBwbGljYXRpb24pOwogCiAgICAgcmV0dXJuIDA7CiB9
Cg==
</data>
<flag name="review"
          id="416403"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>