hiddifypanel 10.16.0.dev3__py3-none-any.whl → 10.20.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
hiddifypanel/VERSION CHANGED
@@ -1 +1 @@
1
- 10.16.0.dev3
1
+ 10.20.1
hiddifypanel/VERSION.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__='10.16.0.dev3'
1
+ __version__='10.20.1'
2
2
  from datetime import datetime
3
- __release_date__= datetime.strptime('2024-04-11','%Y-%m-%d')
3
+ __release_date__= datetime.strptime('2024-04-12','%Y-%m-%d')
@@ -17,7 +17,8 @@ from hiddifypanel import hutils
17
17
 
18
18
 
19
19
  def flash(message: str, category: str = "message"):
20
- # if isinstance(message, LazyString)
20
+ if not isinstance(message,str):
21
+ message = str(message)
21
22
  return flask_flash(message, category)
22
23
 
23
24
 
@@ -48,7 +49,7 @@ def hurl_for(endpoint, **values):
48
49
  def get_user_agent() -> dict:
49
50
  ua = __parse_user_agent(request.user_agent.string)
50
51
 
51
- if ua.get('v', 1) < 5:
52
+ if ua.get('v', 1) < 6:
52
53
  __parse_user_agent.invalidate_all() # type:ignore
53
54
  ua = __parse_user_agent(request.user_agent.string)
54
55
  return ua
@@ -68,7 +69,7 @@ def __parse_user_agent(ua: str) -> dict:
68
69
  match = re.search(ua_version_pattern, request.user_agent.string)
69
70
  generic_version = list(map(int, match.group(1).split('.'))) if match else [0, 0, 0]
70
71
  res = {}
71
- res['v'] = 5
72
+ res['v'] = 6
72
73
  res["is_bot"] = uaa.is_bot
73
74
  res["is_browser"] = re.match('^Mozilla', ua, re.IGNORECASE) and True
74
75
  res['os'] = uaa.os.family
@@ -79,6 +80,7 @@ def __parse_user_agent(ua: str) -> dict:
79
80
  res['is_hiddify'] = re.match('^(HiddifyNext)', ua, re.IGNORECASE) and True
80
81
  res['is_streisand'] = re.match('^(Streisand)', ua, re.IGNORECASE) and True
81
82
  res['is_shadowrocket'] = re.match('^(Shadowrocket)', ua, re.IGNORECASE) and True
83
+ res['is_v2rayng'] = re.match('^(v2rayNG)', ua, re.IGNORECASE) and True
82
84
 
83
85
  if res['is_singbox']:
84
86
  res['singbox_version'] = generic_version
@@ -107,10 +107,15 @@ def is_tls(l3) -> bool:
107
107
  def get_proxies(child_id: int = 0, only_enabled=False) -> list['Proxy']:
108
108
  proxies = Proxy.query.filter(Proxy.child_id == child_id).all()
109
109
  proxies = [c for c in proxies if 'restls' not in c.transport]
110
- # if not hconfig(ConfigEnum.tuic_enable, child_id):
111
- # proxies = [c for c in proxies if c.proto != ProxyProto.tuic]
112
- # if not hconfig(ConfigEnum.hysteria_enable, child_id):
113
- # proxies = [c for c in proxies if c.proto != ProxyProto.hysteria2]
110
+
111
+ if not hconfig(ConfigEnum.tuic_enable, child_id):
112
+ proxies = [c for c in proxies if c.proto != ProxyProto.tuic]
113
+ if not hconfig(ConfigEnum.wireguard_enable, child_id):
114
+ proxies = [c for c in proxies if c.proto != ProxyProto.wireguard]
115
+ if not hconfig(ConfigEnum.ssh_server_enable, child_id):
116
+ proxies = [c for c in proxies if c.proto != ProxyProto.ssh]
117
+ if not hconfig(ConfigEnum.hysteria_enable, child_id):
118
+ proxies = [c for c in proxies if c.proto != ProxyProto.hysteria2]
114
119
  if not hconfig(ConfigEnum.shadowsocks2022_enable, child_id):
115
120
  proxies = [c for c in proxies if 'shadowsocks' != c.transport]
116
121
 
@@ -11,7 +11,16 @@ OUTBOUND_LEVEL = 8
11
11
  def configs_as_json(domains: list[Domain], remarks: str) -> str:
12
12
  '''Returns xray configs as json'''
13
13
  outbounds = []
14
+
15
+ # TODO: check what are unsupported protocols in other apps
16
+ unsupported_protos = {}
17
+ if g.user_agent.get('is_v2rayng'):
18
+ # TODO: ensure which protocols are not supported in v2rayng
19
+ unsupported_protos = {ProxyProto.wireguard, ProxyProto.hysteria, ProxyProto.hysteria2, ProxyProto.tuic, ProxyProto.ss, ProxyProto.ssr, ProxyProto.ssh}
20
+
14
21
  for proxy in hutils.proxy.get_valid_proxies(domains):
22
+ if unsupported_protos and proxy['proto'] in unsupported_protos:
23
+ continue
15
24
  outbound = to_xray(proxy)
16
25
  if 'msg' not in outbound:
17
26
  outbounds.append(outbound)
@@ -208,11 +208,11 @@ class ConfigEnum(metaclass=FastEnum):
208
208
  v2ray_enable = _BoolConfigDscr(ConfigCategory.hidden, ApplyMode.apply)
209
209
  torrent_block = _BoolConfigDscr(ConfigCategory.general, ApplyMode.apply)
210
210
 
211
- tuic_enable = _BoolConfigDscr(ConfigCategory.hidden, ApplyMode.apply)
212
- tuic_port = _StrConfigDscr(ConfigCategory.hidden, ApplyMode.apply, hide_in_virtual_child=True)
211
+ tuic_enable = _BoolConfigDscr(ConfigCategory.tuic, ApplyMode.apply)
212
+ tuic_port = _StrConfigDscr(ConfigCategory.tuic, ApplyMode.apply, hide_in_virtual_child=True)
213
213
 
214
214
  # the hysteria is refereing to hysteria2
215
- hysteria_enable = _BoolConfigDscr(ConfigCategory.hidden, ApplyMode.apply)
215
+ hysteria_enable = _BoolConfigDscr(ConfigCategory.hysteria, ApplyMode.apply)
216
216
  hysteria_port = _StrConfigDscr(ConfigCategory.hidden, ApplyMode.apply, hide_in_virtual_child=True)
217
217
  # if be enable hysteria2 will be use salamander as obfs
218
218
  hysteria_obfs_enable = _BoolConfigDscr(ConfigCategory.hysteria, ApplyMode.apply)
@@ -1,18 +1,13 @@
1
1
  from hiddifypanel.models import *
2
- from hiddifypanel.panel import hiddify
3
2
  from hiddifypanel.panel.admin.adminlte import AdminLTEModelView
4
3
  from flask_babel import gettext as __
5
4
  from flask_babel import lazy_gettext as _
6
5
  from flask import g, redirect
7
6
  from markupsafe import Markup
8
-
9
- from hiddifypanel.hutils.flask import hurl_for, flash
10
7
  from hiddifypanel.auth import login_required
11
- from flask_admin.model.template import EndpointLinkRowAction
12
8
  from flask_admin.actions import action
13
9
  from flask_admin.contrib.sqla import form, filters as sqla_filters, tools
14
10
  # Define a custom field type for the related domains
15
- from flask import current_app
16
11
  from hiddifypanel import hutils
17
12
 
18
13
 
@@ -31,7 +26,7 @@ class ProxyDetailsAdmin(AdminLTEModelView):
31
26
  count = query.update({'enable': False})
32
27
 
33
28
  self.session.commit()
34
- flash(_('%(count)s records were successfully disabled.', count=count), 'success')
29
+ hutils.flask.flash(_('%(count)s records were successfully disabled.', count=count), 'success')
35
30
  hutils.proxy.get_proxies.invalidate_all()
36
31
 
37
32
  @action('enable', 'Enable', 'Are you sure you want to enable selected proxies?')
@@ -40,7 +35,7 @@ class ProxyDetailsAdmin(AdminLTEModelView):
40
35
  count = query.update({'enable': True})
41
36
 
42
37
  self.session.commit()
43
- flash(_('%(count)s records were successfully enabled.', count=count), 'success')
38
+ hutils.flask.flash(_('%(count)s records were successfully enabled.', count=count), 'success')
44
39
  hutils.proxy.get_proxies.invalidate_all()
45
40
 
46
41
  # list_template = 'model/domain_list.html'
@@ -111,6 +111,9 @@ class UserView(FlaskView):
111
111
  if re.match('^(Clash|Stash)', ua, re.IGNORECASE):
112
112
  return self.clash_config(meta_or_normal="normal")
113
113
 
114
+ if g.user_agent.get('is_v2rayng'):
115
+ return self.xray()
116
+
114
117
  # if 'HiddifyNext' in ua or 'Dart' in ua:
115
118
  # return self.clash_config(meta_or_normal="meta")
116
119
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hiddifypanel
3
- Version: 10.16.0.dev3
3
+ Version: 10.20.1
4
4
  Summary: hiddifypanel multi proxy panel
5
5
  Home-page: https://github.com/hiddify/hiddify-manager/
6
6
  Author: hiddify
@@ -1,6 +1,6 @@
1
1
  hiddifypanel/Events.py,sha256=AlnRdjVul0jP-NCT4-zoaQgowoOo-JhdQB4ytetAFKA,723
2
- hiddifypanel/VERSION,sha256=0-XDvqX6n1Up7He9CQa_5ZtPwjbawrjx4lVhG7poZls,13
3
- hiddifypanel/VERSION.py,sha256=_RKSdSDIVo3dCpHkpvS2rmqK0lJhJEtiVOrBYobuKbk,118
2
+ hiddifypanel/VERSION,sha256=KnfsmD_isiM9oHwENXBfENLwz-kfBDeF-5NT4y-9VJg,8
3
+ hiddifypanel/VERSION.py,sha256=xEzbPeU28VLr3xkRkbcITxhiEzIoyca-Qfa7Mgzvop8,113
4
4
  hiddifypanel/__init__.py,sha256=aLukp3ORszdcH4G9J-MlxhjHN6yFlOuOE6mm-L3aG_g,266
5
5
  hiddifypanel/__main__.py,sha256=IVchnXpK6bm8T3N--mN17HBQNLMeLAjyP7iwzULexB4,218
6
6
  hiddifypanel/auth.py,sha256=5GUwwKCRY90RS0WTKPfqzuOYuLuwGLpNLpnKmubf7DE,7405
@@ -18,7 +18,7 @@ hiddifypanel/hutils/auth.py,sha256=CoT25nrneWaAnRtx7qDE0v4WkdCeV3ra78VqEN48jeE,3
18
18
  hiddifypanel/hutils/convert.py,sha256=bxkbphOC9GifVMKwgmo4lpAOyJ5rdSVRnG1eEjh8tIc,2061
19
19
  hiddifypanel/hutils/crypto.py,sha256=2MDnzjM_ZJdY1zJ3eCoa2v24FYzzdKKO4viOFnvmBlI,1858
20
20
  hiddifypanel/hutils/encode.py,sha256=XUq7NSrV11WeVIZFyfik8sqI82R0lKRm5mqKrxNoLrQ,834
21
- hiddifypanel/hutils/flask.py,sha256=o9DHfhqZPN1j7s5sVnFAFrJp0zjalVKFPQeL_w6dd9o,10584
21
+ hiddifypanel/hutils/flask.py,sha256=PuklxqM3rh-FSnX-M-F2E-IPpB5dyO78xNhqjsh2ras,10685
22
22
  hiddifypanel/hutils/github_issue.py,sha256=oDJU-8BgefDdls9sUzhVpohH9utrD4WZLWrb3oUwV4c,6500
23
23
  hiddifypanel/hutils/model.py,sha256=ajlJ-Tx0Mq68S9y5qEj0lwlDbF2xj0niZBQyw7UU670,1320
24
24
  hiddifypanel/hutils/random.py,sha256=KrsarmRNL05PYzwMxDaDyv-_QcKS0YsZR2z7BnllAqI,1789
@@ -36,16 +36,16 @@ hiddifypanel/hutils/node/parent.py,sha256=PqrJJairSslgLhn5rBSJnHEUU2lhfcqVm4a-O5
36
36
  hiddifypanel/hutils/node/shared.py,sha256=Zra8iC8DwwgcNz4OKzZKT25rTnOHYKQpd6SY6JMylN8,2197
37
37
  hiddifypanel/hutils/proxy/__init__.py,sha256=xXBa83kjYT_b-BNseEykfQYyJBQHTq1ZosfR8ZrQHkI,106
38
38
  hiddifypanel/hutils/proxy/clash.py,sha256=ERyiuUZibOUYvkyC1HPLCRPNB1lrZpuuafey2St7XtI,5820
39
- hiddifypanel/hutils/proxy/shared.py,sha256=T2YuC3coTG1iM6p7SQQVCzRjnp3dB25X9rIgA8h2OUc,21547
39
+ hiddifypanel/hutils/proxy/shared.py,sha256=w6RWpPrcZpOauXotfbzC70QTrrvO26tyNbTDrtFyXIk,21801
40
40
  hiddifypanel/hutils/proxy/singbox.py,sha256=ssaO5lCK6CmZ3BIHgAdlD7GcMZljJSF8DaMissgw_Jw,10800
41
41
  hiddifypanel/hutils/proxy/xray.py,sha256=HDK4PsyY8qnnmQ51hNiP4UKJVXE-nMjIRuFjF1ZcHOY,10769
42
- hiddifypanel/hutils/proxy/xrayjson.py,sha256=QaP3byxwQquHKp8t_SPkqjz9qENFGRtqiP0MofcwA80,12950
42
+ hiddifypanel/hutils/proxy/xrayjson.py,sha256=to71KVhsh9scmRyQjgS19QYWKze2GjE4seQJM4_rIVk,13402
43
43
  hiddifypanel/models/__init__.py,sha256=W7lWG_7jNNPn-cdXV5wMmuPv1unHUFVlMd9OmwDn2gM,860
44
44
  hiddifypanel/models/admin.py,sha256=W1C0R9fhLtwjnIzgPgiVcaNXc6YzzIolAsyy4QaqQKw,6936
45
45
  hiddifypanel/models/base_account.py,sha256=T2vllZo1QTGzYos3njgdYtAlnYB77LYrfzpEoO8yRk8,3060
46
46
  hiddifypanel/models/child.py,sha256=ZFJaH-GWTKAGD0BGMH0iKEMipi37_cAk59OeJKt2IKA,3039
47
47
  hiddifypanel/models/config.py,sha256=AoY3gDjHscIaXNSDXPIFWASo7WS9-UjNyLd-3K2ntIE,6755
48
- hiddifypanel/models/config_enum.py,sha256=bosh0mWYSUknPZTTaONH8JrVcfOBr2SJ04BNP0miuJU,14633
48
+ hiddifypanel/models/config_enum.py,sha256=3Iox3Hm3g4BOYN263bEmuzZ88jdnlLWEx_MbbL4aqGk,14631
49
49
  hiddifypanel/models/domain.py,sha256=9HR7Ch3BniuzDM5TJfQNpTuoOPbkthEDhjF-exUXCuM,8499
50
50
  hiddifypanel/models/parent_domain.py,sha256=bs5F1neOAQu9XHEk3QQTBM4p2iuebM4cnAQqwfNjCtg,2291
51
51
  hiddifypanel/models/proxy.py,sha256=9cm5Q0ZUEPeRDWdm1lQGom0SM_Q32NCDFTNFh36OzaQ,3304
@@ -127,7 +127,7 @@ hiddifypanel/panel/admin/templates/model/admin_list.html,sha256=lpjiAl7kR5xb0fLp
127
127
  hiddifypanel/panel/admin/templates/model/domain_list.html,sha256=rrPYKISPXcwYreMp2MrJb-sEL9-6dCZF_dk6ejObrm8,414
128
128
  hiddifypanel/panel/admin/templates/model/user_list.html,sha256=hwKZaHClJogrIVvIKmemdY0rJMwg9yIB7cqHh_nDVqU,5830
129
129
  hiddifypanel/panel/commercial/ParentDomainAdmin.py,sha256=n3X7_PuQBr2zlP6K5A0EHmtRdI9Vy49YORim_9L2QFA,4886
130
- hiddifypanel/panel/commercial/ProxyDetailsAdmin.py,sha256=0FeuJFNAVHy-U12JQPupbuRaAz5H_6A12F-CwDB_3E8,2999
130
+ hiddifypanel/panel/commercial/ProxyDetailsAdmin.py,sha256=s4Ep_hsHttgXM0Zq75W4HaJY0cYEeBjwZ5vtOvcvOxA,2840
131
131
  hiddifypanel/panel/commercial/__init__.py,sha256=oanPV36n6MXiVhiq_NYL6K9ENhQXZGQM5r4c9oPO0CQ,2322
132
132
  hiddifypanel/panel/commercial/restapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
133
  hiddifypanel/panel/commercial/restapi/v1/__init__.py,sha256=PKpT6Jdh37udexOnOdsvA681nqStGY-jqalEBB9_utU,1208
@@ -177,7 +177,7 @@ hiddifypanel/panel/common_bp/login.py,sha256=eDynKaUI6Q015E8cByMNT9twBw7xIiFL6TD
177
177
  hiddifypanel/panel/common_bp/templates/login.html,sha256=jDl9-Nh2qMuCsLQmXm7e5jvSaRAlBxReVVCbNSTTHJw,1312
178
178
  hiddifypanel/panel/user/__init__.py,sha256=E9RxA2YGc0eXLGjfJbyryeLG3bXEWJ3DoVOyIpVaDIo,1859
179
179
  hiddifypanel/panel/user/link_maker.html,sha256=g420NAm_fUI8asYjyfCiXyUOIwEQfDPonZA9xh3p0-8,177
180
- hiddifypanel/panel/user/user.py,sha256=PC1vCFY2bLOT2ZsdzNJEiLqA6r9HnLFXWZ7Iq4FSYzs,13793
180
+ hiddifypanel/panel/user/user.py,sha256=PU0PWsa4AoS1MKtr-8wvZObfIFg6385q7LD3B8xRHg8,13868
181
181
  hiddifypanel/panel/user/templates/all_configs copy.txt,sha256=u5jhAgjhH07_0csdIisuXy2HNCC9SWlP0whBAGFXA78,564
182
182
  hiddifypanel/panel/user/templates/all_configs.txt,sha256=i8I6g9ujOr3RIuRoGRqY2Q75I89mbHko_JVPvQt4E_g,1260
183
183
  hiddifypanel/panel/user/templates/base_singbox_config.json.j2,sha256=xhvQpm0fp2w3VA8N7zXbYs8RWlRgdyApiedFH_sRTfM,7107
@@ -820,24 +820,24 @@ hiddifypanel/templates/redirect.html,sha256=K9x_O4P96vEkqBhOXIhoGrWw1KIqd2bL0BjI
820
820
  hiddifypanel/templates/static.html,sha256=jp6q4wtx-k2A_cjqJoNiMS7Ee30arE45qI3ev4d5ky4,165
821
821
  hiddifypanel/templates/hiddify-flask-admin/actions.html,sha256=2NeITe2e-lPKCk_o511tCIqVtrPu8LYHE1wTCtrFUrI,1331
822
822
  hiddifypanel/templates/hiddify-flask-admin/list.html,sha256=MBGrTqZpzNLe4sZy0RozvXNr8seFUQc2C6v88BJtNWc,11095
823
- hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=7SONp6cawE1coIigHquY66YZdKItHadyCoPEw3-KGMo,74599
823
+ hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=l_WfRppCqbivGlI4mKQh9Q5m9cnKetdNeRrI5aoaxyM,74599
824
824
  hiddifypanel/translations/en/LC_MESSAGES/messages.po,sha256=JYdJWkz8ZjeqzNdbz1kOOAw11YHMpFU447R1SYaD1Sg,77783
825
- hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=xBLIZCxMGMhw_koknRxOKvKw9N27H-_i7fu5WJ07dh4,96482
825
+ hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=iH6adtqgLx5Z05BalNlPhWEKGvbnua2VjubnKYRgYOY,96482
826
826
  hiddifypanel/translations/fa/LC_MESSAGES/messages.po,sha256=c4_SjizFofBr6uNRAlD8j9HRbVv4f4SCGVlFGWxMWA8,101063
827
- hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=S5U1hkPKKS6nLxUQJeSJKIOOINf1jDS08eONwDgh9I0,60612
827
+ hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=rqrVjLXWQLOlqMJTTejOn99VDNwOvf8f-q4dvBDFWKk,60612
828
828
  hiddifypanel/translations/pt/LC_MESSAGES/messages.po,sha256=tUp3Ed-ZBDZeD99yb7o6I76wWUU_QQT2i_cQfNV_7Zk,69869
829
- hiddifypanel/translations/ru/LC_MESSAGES/messages.mo,sha256=JS2kFQptLzkeg-bDrjGS5z0XIkAoRkFC19MGYuF75rA,95543
829
+ hiddifypanel/translations/ru/LC_MESSAGES/messages.mo,sha256=4yCB1BiDkQl-jjH-_JLt7th-8wcsFuXFrLqyMY0SrjY,95543
830
830
  hiddifypanel/translations/ru/LC_MESSAGES/messages.po,sha256=ojNL5z1gvjgiO-5hjccCLhK0Z-CeZKrwE3yiEE4ekeg,102007
831
- hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=aCGEYnPvvD0Aya64HNxjdhp0ATDi3c-6ht7z-_CMyvE,60878
831
+ hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=2bRQTKmoZuvDIeK74v9yDAamllxDYLfv06pkAa5NGFA,60878
832
832
  hiddifypanel/translations/zh/LC_MESSAGES/messages.po,sha256=f0fv1MW5_Okc5GixUoPv5BkV0XwM6wKrjK7khLeiv18,69040
833
833
  hiddifypanel/translations.i18n/en.json,sha256=SEBuSZt0rP6l-IK3dkZteEEvzLs3JVMwfaWCiak_jBk,67764
834
834
  hiddifypanel/translations.i18n/fa.json,sha256=Xn6sJ8o74HE8qjzOjgjW-LzHJRrHk7Aze-6EYts2Gt0,91044
835
835
  hiddifypanel/translations.i18n/pt.json,sha256=Wh72C6ToJUVXgAfB_2JqJKQjw0_Rvv7gsYIp8-Nbd8Q,60171
836
836
  hiddifypanel/translations.i18n/ru.json,sha256=WNSflb5-l-CWOQ71SWhDSkgQLkJVHeZ_dehn3lRyv0s,91988
837
837
  hiddifypanel/translations.i18n/zh.json,sha256=17fERyiPhWV2899MMynfIeuZL6X7u-_pWd0h5n6FJUo,59588
838
- hiddifypanel-10.16.0.dev3.dist-info/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
839
- hiddifypanel-10.16.0.dev3.dist-info/METADATA,sha256=MDm6ytfVYj8Ex1Ujn_5zATVOUPV0cnZYJL7jgP8am_w,4014
840
- hiddifypanel-10.16.0.dev3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
841
- hiddifypanel-10.16.0.dev3.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
842
- hiddifypanel-10.16.0.dev3.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
843
- hiddifypanel-10.16.0.dev3.dist-info/RECORD,,
838
+ hiddifypanel-10.20.1.dist-info/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
839
+ hiddifypanel-10.20.1.dist-info/METADATA,sha256=Df5CZDriSxHUrZ6ZNpkpqH2g2mKCSD2lzR2U-EN0ZwI,4009
840
+ hiddifypanel-10.20.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
841
+ hiddifypanel-10.20.1.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
842
+ hiddifypanel-10.20.1.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
843
+ hiddifypanel-10.20.1.dist-info/RECORD,,