[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]

[Burichan] [Foliant] [Futaba] [Greenhell] [Gurochan] [Photon] - [Home] [Manage] [Archive]

[Return]
Posting mode: Reply
Leave these fields empty (spam trap):
Name
Link
Subject
Comment
File
Verification
Password (for post and file deletion)
  • Supported file types are: GIF, JPG, PDF, PNG
  • Maximum file size allowed is 30720 KB.
  • Images greater than 200x200 pixels will be thumbnailed.

File: 1692807278561.jpg -(714780 B, 1200x1200) Thumbnail displayed, click image for full size.
714780 No.217061  

Скрипты/софт облегчающий жизнь.

Прошлый тред >>174285

>> No.217063  

>>217058
POSIX это не про легкие пути.

>> No.217387  

Для тех, кто любит попытаться выжать невыжимаемое из прыщей при помощи fireдолбоеба.
https://github.com/netblue30/firejail/issues/2874
Пиздец. Пол часа дрочил strace, еще пол часа гуглил.

>> No.217428  

Говноскрипт на питухоне для интеграции крысы в и3. Употреблядь вместе с xfce4-genmon-plugin при помощи cat $lockFile.

#!/bin/python3
import i3ipc
import os
import sys

# Just so you know my idea to use lock file has lead to a fuck up because it
# didn't always get removed, so I figured I'd use PID instead, so the lock file
# is actually the file, which holds the message.

home = os.environ.get('HOME')
lockDir = '%s/.cache' % home
pidDir = '%s/.run' % home
f = 0 # nevermind

def perror(msg, err):
print('%s: %s' % (msg, err))

def trymkdir(path):
try:
os.mkdir(path)
except FileExistsError:
pass
except Exception as e:
perror(path, e)
sys.exit(1)

trymkdir(lockDir)
trymkdir(pidDir)

lock = '%s/i3ipc-mode.lock' % lockDir
pidFile = '%s/i3ipc-mode.pid' % pidDir

pid = os.getpid()
oldpid = 0
try:
f = open(pidFile, "r")
except FileNotFoundError:
pass
except Exception as e:
perror(pidFile, e)
os.exit(1)
else:
oldpid = f.read().strip()
if oldpid.isdigit():
oldpid = int(oldpid)
f.close()
else:
perror(oldpid, 'Not PID of a process!')
sys.exit(1)
if os.path.exists('%s/%d' % ('/proc', oldpid)):
print('Already running.')
sys.exit(0)

def trywrite(path, msg):
try:
f = open(path, 'w')
f.write(msg)
f.close()
except Exception as e:
perror(path, e)
sys.exit(1)

trywrite(pidFile, '%d' % pid)
trywrite(lock, 'default')

def ISR_mode(con, event):
mode = event.change
# output designed for genmon xfce4-plugin
if mode != 'default':
mode = '<span fgcolor=\'Red\'>%s</span>' % mode
mode = '<txt>%s</txt>' % mode
trywrite(lock, mode)
os.system('xfce4-panel --plugin-event=genmon:refresh:bool:true')

i3ipc_conn = i3ipc.Connection()
i3ipc_conn.on('mode', ISR_mode)
i3ipc_conn.main()

def tryremove(path):
try:
os.remove(path)
except Exception as e:
perror(path, e)
sys.exit(1)

tryremove(lock)
tryremove(pidFile)
>> No.217811  

>>194560
Можно использовать gnome-boxes, вроде приемлимо выглядит по нынешним времнам и вместе с гномьей щелью ставится.
https://help.gnome.org/users/gnome-boxes/stable/

>> No.217814  

Автозапуск иксов после логина в tty1. Последней строчкой в ~/.profile:

[ -z $DISPLAY ] && [ $XDG_VTNR -eq 1 ] && exec startx

После Ctrl+Alt+Backspace они сразу перезапускаются. Для выходы из графики придётся логиниться во второй tty, например.

>> No.217816  

>>217814

if [ "${XDG_SESSION_TYPE}${XDG_VTNR}" = "tty1" ]; then
startx
fi
>> No.217817  

>>217814
ничоси!

>> No.217825  

https://scoop.sh

- Eliminates permission popup windows
- Hides GUI wizard-style installers
- Prevents PATH pollution from installing lots of programs
- Avoids unexpected side-effects from installing and uninstalling programs
- Finds and installs dependencies automatically
- Performs all the extra setup steps itself to get a working program

>> No.218240  
sxiv -o *jpg | xargs -I + mv + new/path/

Посмотреть пикчи, отметить нужные клавишей m, вывести их названия в stdout, где их подхватит xargs.

>> No.218302  
File: 1698713576858.png -(303891 B, 451x450) Thumbnail displayed, click image for full size.
303891

Заменить черный цвет на прозрачность в папке и подпапках, преобразовать jpg в png с прозрачностью, разброс распознания черного 10%

find /home/pic -type f -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" | while read file; do convert "$file" -fuzz 10% -transparent black "${file%.png}_transparent.png"
Где:
/путь/к/каталогу - это путь к корневой папке, в которой находятся ваши изображения.

-type f - это опция find, которая ищет только файлы, а не директории.
-iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" - это фильтры для поиска файлов с расширениями PNG, JPEG и JPG.
convert "$file" -fuzz XX% -transparent black "${file%.png}_transparent.png" - это команда для каждого найденного файла. Она выполняет замену черного цвета на прозрачность с использованием ImageMagick и сохраняет измененное изображение с суффиксом "_transparent.png" в той же директории.

Принимаю заказы на написание регулярок нейросеткой, эта хуйня отлично справляется.

>> No.218304  
File: 1698739169861.jpg -(56488 B, 1280x714) Thumbnail displayed, click image for full size.
56488

>>218302
A guro po vashemu kankolle esche ne sdelali? Gde zapisat'sya, chtoby sdelali?

>> No.218306  
File: 1698745779349.png -(13615 B, 56x111) Thumbnail displayed, click image for full size.
13615

>>218302

>> No.218316  

>>218302

> -iname "*.jpg"
> "${file%.png}_transparent.png"

лол, ты бы хотябы проверяй перед тем как постить

>> No.218320  

>>218316
УМВР.

>> No.218323  

Проверка по кд и переподключение L2TP соединения в случае отвала. По хорошему нужно еще замутить киллсвич но я сырна.

#!/bin/bash
while [ "true" ]
do
VPNCON=$(nmcli con status)
if [[ $VPNCON != 'CONNECTION NAME' ]]; then
echo "Disconnected, trying to reconnect..."
(sleep 1s && nmcli con up uuid CONNECTION UUID)
else
echo "Already connected !"
fi
sleep 30
done
>> No.218338  

>>218323
Opensnitch.
c:chi

>> No.218408  

test

>> No.218412  

Уцух, я честно пытался, но у тебя какая-то Critical SQL Error. Это tar архив тремя сообщениями, щас я объясню.

bm90aWZ5LmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1
MQAwMDAxNzUxADAwMDAwMDAwMTQ1ADE0NTIxMjM1NzAxADAxMjcyNwAgMAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG5pa2l0aWNoAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAbmlraXRpY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj
aWZuZGVmIE5PVElGWV9ICiNkZWZpbmUgTk9USUZZX0gKdm9pZCBub3RpZnlfdm9sdW1lIChpbnQs
IGludCk7CnZvaWQgbm90aWZ5X211dGUgKGludCwgaW50KTsKI2VuZGlmCgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBh
dmN0bC5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTEA
MDAwMTc1MQAwMDAwMDAwMDQyMwAxNDUyMTIzNTcwMQAwMTI3MDcAIDAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABuaWtpdGljaAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAG5pa2l0aWNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2lm
bmRlZiBQQVZDVExfSAojZGVmaW5lIFBBVkNUTF9ICgojaWZkZWYgRVhURVJOQUwKZXh0ZXJuIGNo
YXIgREVCVUdfTEVWRUw7CmV4dGVybiBjaGFyIE5PX05PVElGWTsKI2Vsc2UKY2hhciBERUJVR19M
RVZFTCA9IDE7CmNoYXIgTk9fTk9USUZZID0gMDsKI2VuZGlmCgojZGVmaW5lIERCRyhMRVYsIC4u
LikgeyBcCiAgICBpZiAoKERFQlVHX0xFVkVMKSA+PSAoTEVWKSkgeyBcCiAgICAgICAgZnByaW50
ZiAoc3RkZXJyLCBfX1ZBX0FSR1NfXyk7IFwKICAgIH0gXAp9CiNlbmRpZgoAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABub3Rp
ZnkuYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUxADAw
MDE3NTEAMDAwMDAwMDM2NjEAMTQ1MjEyMzU3MDEAMDEyNzMwACAwAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbmlraXRpY2gAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABuaWtpdGljaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNkZWZp
bmUgRVhURVJOQUwKI2luY2x1ZGUgPGxpYm5vdGlmeS9ub3RpZnkuaD4KI2luY2x1ZGUgPHN0ZGxp
Yi5oPgojaW5jbHVkZSAicGF2Y3RsLmgiCiNpbmNsdWRlICJub3RpZnkuaCIKCmludCBpbml0ZWQg
PSAwOwoKI2RlZmluZSBpbml0KCkgXAp7IFwKICAgIGlmIChOT19OT1RJRlkpIHJldHVybjsgXAog
ICAgaWYgKCFpbml0ZWQpIHsgXAogICAgICAgIGlmIChub3RpZnlfaW5pdCAoInBhdmN0bCIpID09
IEZBTFNFKSB7IFwKICAgICAgICAgICAgREJHKCAyLCBcCiAgICAgICAgICAgICAgICAgICAgIiVz
OiAlcywgJXNcbiIsIFwKICAgICAgICAgICAgICAgICAgICAibm90aWZ5X2luaXQiLCBcCiAgICAg
ICAgICAgICAgICAgICAgImZhaWxlZCB0byBpbml0aWFsaXplIGxpYm5vdGlmeSIsIFwKICAgICAg
ICAgICAgICAgICAgICAibm90IHNlbmRpbmcgYW55IG5vdGlmaWNhdGlvbnMiIFwKICAgICAgICAg
ICAgICAgKTsgXAogICAgICAgICAgICByZXR1cm47IFwKICAgICAgICB9IFwKICAgICAgICBpbml0
ZWQgPSAxOyBcCiAgICB9IFwKfQoKdm9pZApub3RpZnlfdm9sdW1lCigKIGludCB0YXJnZXQsCiBp
bnQgdm9sCikKewogICAgaW5pdCgpOwogICAgY2hhciBzdHJbNjRdOwogICAgY2hhciBzeW0xW10g
PSAi8J+UiSI7CiAgICBjaGFyIHN5bTJbXSA9ICLwn46kIjsKICAgIGNoYXIgKnN5bTsKICAgIHN3
aXRjaCAodGFyZ2V0KSB7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgICBzeW0gPSBzeW0xOwog
ICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHN5bSA9IHN5bTI7
CiAgICAgICAgICAgIGJyZWFrOwogICAgfQogICAgc25wcmludGYgKHN0ciwgc2l6ZW9mIChzdHIp
LCAiJXM6ICVkIiwgc3ltLCB2b2wpOwogICAgTm90aWZ5Tm90aWZpY2F0aW9uICpuID0gbm90aWZ5
X25vdGlmaWNhdGlvbl9uZXcgKHN0ciwgTlVMTCwgTlVMTCk7CiAgICBub3RpZnlfbm90aWZpY2F0
aW9uX3NldF9oaW50X3N0cmluZyAobiwKICAgICAgICAgICAgIngtY2Fub25pY2FsLXByaXZhdGUt
c3luY2hyb25vdXMiLAogICAgICAgICAgICAicGF2Y3RsLXZvbHVtZSIKICAgICAgICAgICAgKTsK
ICAgIG5vdGlmeV9ub3RpZmljYXRpb25fc2hvdyAobiwgTlVMTCk7CiAgICBnX29iamVjdF91bnJl
ZiAoR19PQkpFQ1QobikpOwogICAgcmV0dXJuOwp9Cgp2b2lkCm5vdGlmeV9tdXRlCigKIGludCB0
YXJnZXQsCiBpbnQgbXV0ZQopCnsKICAgIGluaXQoKTsKICAgIGNoYXIgc3RyWzY0XTsKICAgIGNo
YXIgd2hvMVtdID0gIlNvdW5kIjsKICAgIGNoYXIgd2hvMltdID0gIk1pY3JvcGhvbmUiOwogICAg
Y2hhciB1bltdID0gInVuIjsKICAgIGNoYXIgZW1wW10gPSAiIjsKICAgIGNoYXIgc3ltW10gPSAi
8J+UhyI7CiAgICBjaGFyICp1OwogICAgY2hhciAqd2hvOwogICAgc3dpdGNoICh0YXJnZXQpIHsK
ICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHdobyA9IHdobzE7CiAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgd2hvID0gd2hvMjsKICAgICAgICAgICAgYnJl
YWs7CiAgICB9CiAgICBpZiAobXV0ZSkKICAgICAgICB1ID0gZW1wOwogICAgZWxzZQogICAgICAg
IHUgPSB1bjsKICAgIHNucHJpbnRmIChzdHIsIHNpemVvZiAoc3RyKSwgIiVzOiAlcyBpcyAlc211
dGVkIiwgc3ltLCB3aG8sIHUpOwogICAgTm90aWZ5Tm90aWZpY2F0aW9uICpuID0gbm90aWZ5X25v
dGlmaWNhdGlvbl9uZXcgKHN0ciwgTlVMTCwgTlVMTCk7CiAgICBub3RpZnlfbm90aWZpY2F0aW9u
X3NldF9oaW50X3N0cmluZyAobiwKICAgICAgICAgICAgIngtY2Fub25pY2FsLXByaXZhdGUtc3lu
Y2hyb25vdXMiLAogICAgICAgICAgICAicGF2Y3RsLW11dGUiCiAgICAgICAgICAgICk7CiAgICBu
b3RpZnlfbm90aWZpY2F0aW9uX3Nob3cgKG4sIE5VTEwpOwogICAgZ19vYmplY3RfdW5yZWYgKEdf
T0JKRUNUKG4pKTsKICAgIHJldHVybjsKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGF2Y3RsLmMA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MQAwMDAxNzUx
ADAwMDAwMDU2NDU0ADE0NTIxMjM1NzAxADAxMjcyMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAG5pa2l0aWNoAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAbmlraXRpY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjZGVmaW5lIF9Q
T1NJWF9DX1NPVVJDRSAyMDA4MDlMCiNkZWZpbmUgX0RFRkFVTFRfU09VUkNFCiNpbmNsdWRlIDxl
cnJuby5oPgojaW5jbHVkZSA8cHVsc2UvcHVsc2VhdWRpby5oPgojaW5jbHVkZSA8c3RkaW8uaD4K
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdHJpbmcu
aD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDx1bmlz
dGQuaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlICJwYXZjdGwuaCIKI2luY2x1ZGUgIm5v
dGlmeS5oIgoKI2RlZmluZSBDS0ZBSUxDKExFViwgRk5BTUUsIFdITywgTVNHLCBDT05ELCBSRVRW
QUwpIHsgXAogICAgaWYgKENPTkQpIHsgXAogICAgICAgIERCRyggTEVWLCBcCiAgICAgICAgICAg
ICAiJXM6ICVzOiAlcyAlc1xuIiwgXAogICAgICAgICAgICAgRk5BTUUsIFwKICAgICAgICAgICAg
IFdITywgXAogICAgICAgICAgICAgImZhaWxlZCB0byIsIFwKICAgICAgICAgICAgIE1TRyBcCiAg
ICAgICAgICAgKTsgXAogICAgICAgIHJldHVybiBSRVRWQUw7IFwKICAgIH0gXAp9CgojZGVmaW5l
IFBBX0ZVQ0tPRkYoY3R4LCBtbCkgeyBcCiAgICBwYV9jb250ZXh0X2Rpc2Nvbm5lY3QgKGN0eCk7
IFwKICAgIHBhX2NvbnRleHRfdW5yZWYgKGN0eCk7IFwKICAgIHBhX21haW5sb29wX2ZyZWUgKG1s
KTsgXAp9CgojZGVmaW5lIFBBX0NPTlRFWFRfRkFJTEVEX0VSUiAxCiNkZWZpbmUgUEFfQ09OVEVY
VF9URVJNSU5BVEVEX0VSUiAyCiNkZWZpbmUgUEFfU0VUX1NJTktfVk9MVU1FX0VSUiAzCiNkZWZp
bmUgUEFfU0VUX1NPVVJDRV9WT0xVTUVfRVJSIDQKI2RlZmluZSBQQV9PUEVSQVRJT05fQ0FOQ0VM
TEVEX0VSUiA1Ci8vIG5leHQgdHdvIG1heSBiZSBkdWUgdG8gc29tZSBzaW5rIG5hbWluZyBmdWNr
dXBzLCBzaG91bGRuJ3QKLy8gbm9ybWFsbHkgaGFwcGVuLCBubyBpZGVhIGhvdyB0byBkZWJ1ZyBp
ZiBub3QgbmFtaW5nIGZ1Y2t1cAojZGVmaW5lIFBBX0dFVF9TSU5LX1NUQVRFX0VSUiA2CiNkZWZp
bmUgUEFfR0VUX1NPVVJDRV9TVEFURV9FUlIgNwojZGVmaW5lIENPTlZFUlNJT05fVE9fVk9MVU1F
X0ZBSUxFRF9FUlIgOAojZGVmaW5lIFZPTFVNRV9PVVRfT0ZfQk9VTkRBUklFU19FUlIgOQojZGVm
aW5lIE9QVElPTl9OT19BUkdfRVJSIDEwCiNkZWZpbmUgUEFfR0VUX1NJTktfTkFNRV9FUlIgMTEK
I2RlZmluZSBQQV9HRVRfU09VUkNFX05BTUVfRVJSIDEyCiNkZWZpbmUgUEFfU0VUX1NJTktfTVVU
RV9FUlIgMTMKI2RlZmluZSBQQV9TRVRfU09VUkNFX01VVEVfRVJSIDEzCiNkZWZpbmUgTk9fSE9N
RV9FUlIgMTQKI2RlZmluZSBTWVNDQUxMX0VSUiAxNQojZGVmaW5lIEFMUkVBRFlfUlVOTklOR19F
UlIgMTYKI2RlZmluZSBVTktOT1dOX0VSUiAxMjcKCiNkZWZpbmUgTUlOVk9MVU1FIDAKI2RlZmlu
ZSBNQVhWT0xVTUUgMTUwCgplbnVtIHsKICAgIEhFTFAgPSAwLAogICAgU0VULAogICAgR0VULAog
ICAgSU5DLAogICAgREVDLAogICAgTUlDLAogICAgU0lOSywKICAgIE1VVEUsCiAgICBOT05PVElG
WSwKICAgIFlFU05PVElGWQp9OwoKZW51bSB7CiAgICBHRVRfU0VSVl9JTkZPLAogICAgR0VUX1NJ
TktfU1QsCiAgICBHRVRfU09VUkNFX1NULAogICAgU0VUX1NJTktfVk9MLAogICAgU0VUX1NJTktf
TVVURSwKICAgIFNFVF9TT1VSQ0VfVk9MLAogICAgU0VUX1NPVVJDRV9NVVRFCn07CgpzdHJ1Y3Qg
dm9sdW1lX211dGUgewogICAgcGFfY3ZvbHVtZSAqdm9sOwogICAgaW50IG11dGU7Cn07CgppbnQg
cGFfcmVhZHkgPSAwOwoKdm9pZApwYV9nZXRfZGVmYXVsdF9zZXJ2ZXJfaW5mb19jYgooCiBwYV9j
b250ZXh0ICpjLAogY29uc3QgcGFfc2VydmVyX2luZm8gKmksCiB2b2lkICpkYXRhCikKewogICAg
Y2hhciAqKnVzZXJkYXRhOwogICAgdXNlcmRhdGEgPSBkYXRhOwogICAgdXNlcmRhdGFbMF0gPSBz
dHJkdXAgKGktPmRlZmF1bHRfc2lua19uYW1lKTsKICAgIHVzZXJkYXRhWzFdID0gc3RyZHVwIChp
LT5kZWZhdWx0X3NvdXJjZV9uYW1lKTsKICAgIHJldHVybjsKfQoKdm9pZApwYV9nZXRfc2lua19j
dm9sdW1lX2NiCigKIHBhX2NvbnRleHQgKmMsCiBjb25zdCBwYV9zaW5rX2luZm8gKmksCiBpbnQg
ZW9sLAogdm9pZCAqZGF0YQopCnsKICAgIGlmIChlb2wpCiAgICAgICAgcmV0dXJuOwoKICAgIHN0
cnVjdCB2b2x1bWVfbXV0ZSAqdm07CiAgICB2bSA9IGRhdGE7CiAgICAqKHZtLT52b2wpID0gaS0+
dm9sdW1lOwogICAgdm0tPm11dGUgPSBpLT5tdXRlOwogICAgcmV0dXJuOwp9Cgp2b2lkCnBhX2dl
dF9zb3VyY2VfY3ZvbHVtZV9jYgooCiBwYV9jb250ZXh0ICpjLAogY29uc3QgcGFfc291cmNlX2lu
Zm8gKmksCiBpbnQgZW9sLAogdm9pZCAqZGF0YQopCnsKICAgIGlmIChlb2wpCiAgICAgICAgcmV0
dXJuOwoKICAgIHN0cnVjdCB2b2x1bWVfbXV0ZSAqdm07CiAgICB2bSA9IGRhdGE7CiAgICAqKHZt
LT52b2wpID0gaS0+dm9sdW1lOwogICAgdm0tPm11dGUgPSBpLT5tdXRlOwogICAgcmV0dXJuOwp9
Cgp2b2lkCnBhX3N1Y2Nlc3NfY2IKKAogcGFfY29udGV4dCAqYywKIGludCBzdWNjZXNzLAogdm9p
ZCAqZGF0YQopCnsKICAgIGludCAqaSA9IGRhdGE7CiAgICAqaSA9IHN1Y2Nlc3M7Cn0KCnZvaWQK
cGFfaGFuZGxlX3N0YXRlX2NiCigKIHBhX2NvbnRleHQgKmMsCiB2b2lkICpkYXRhCikKewogICAg
cGFfbWFpbmxvb3AgKnBhX21sOwogICAgcGFfbWwgPSBkYXRhOwoKICAgIERCRygyLCAicGFfaGFu
ZGxlX3N0YXRlOiBlbnRlcmVkIGZ1bmN0aW9uIGJvZHkuXG4iKTsKICAgIHN3aXRjaCAocGFfY29u
dGV4dF9nZXRfc3RhdGUoYykpIHsKICAgICAgICBjYXNlIFBBX0NPTlRFWFRfUkVBRFk6CiAgICAg
ICAgICAgIERCRyggMiwKICAgICAgICAgICAgICAgICAiJXM6ICVzXG4iLAogICAgICAgICAgICAg
ICAgICJwYV9oYW5kbGVfc3RhdGUiLAogICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHJlYWR5
LiIKICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgcGFfcmVhZHkgPSAxOwogICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgY2FzZSBQQV9DT05URVhUX0ZBSUxFRDoKICAgICAgICAgICAgREJH
KCAyLAogICAgICAgICAgICAgICAgICIlczogJXNcbiIsCiAgICAgICAgICAgICAgICAgInBhX2hh
bmRsZV9zdGF0ZSIsCiAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjb25uZWN0IHRvIHB1bHNl
YWRpbyBkYWVtb24uIgogICAgICAgICAgICAgICApOwogICAgICAgICAgICBQQV9GVUNLT0ZGKGMs
IHBhX21sKTsKICAgICAgICAgICAgZXhpdChQQV9DT05URVhUX0ZBSUxFRF9FUlIpOwogICAgICAg
IGNhc2UgUEFfQ09OVEVYVF9URVJNSU5BVEVEOgogICAgICAgICAgICBEQkcoIDIsCiAgICAgICAg
ICAgICAgICAgIiVzOiAlc1xuIiwKICAgICAgICAgICAgICAgICAicGFfaGFuZGxlX3N0YXRlIiwK
ICAgICAgICAgICAgICAgICAiUHVsc2VhZGlvIGNvbm5lY3Rpb24gdGVybWluYXRlZC4iCiAgICAg
ICAgICAgICAgICk7CiAgICAgICAgICAgIFBBX0ZVQ0tPRkYoYywgcGFfbWwpOwogICAgICAgICAg
ICBleGl0KFBBX0NPTlRFWFRfVEVSTUlOQVRFRF9FUlIpOwogICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgIERCRyggMiwKICAgICAgICAgICAgICAgICAiJXM6ICVzXG4iLAogICAgICAgICAgICAg
ICAgICJwYV9oYW5kbGVfc3RhdGUiLAogICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHN0YXRl
IG5vdCBoYW5kbGVkIChpZ25vcmVkKS4iCiAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIHBh
X3JlYWR5ID0gMDsKICAgICAgICAgICAgYnJlYWs7CiAgICB9Cn0KCmludApwYV9wZXJmb3JtX2Fj
dGlvbgooCiBwYV9jb250ZXh0ICpjLAogcGFfbWFpbmxvb3AgKm1sLAogY2hhciAqKnNpc29uLAog
c3RydWN0IHZvbHVtZV9tdXRlICp2bXMsIC8vIGl0J3MgYXJyYXkhISEKIGludCBhY3Rpb24sCiBp
bnQgKnNldGVycgopCnsKICAgIGNoYXIgZm5hbWVbXSA9ICJwYV9wZXJmb3JtX2FjdGlvbiI7CiAg
ICBjaGFyIGZwYXRbXSA9ICIlczogJXNcbiI7CiAgICBpbnQgb3BlcmF0aW9uID0gMDsKICAgIHBh
X29wZXJhdGlvbiAqcGFfb3A7CiAgICBwYV9vcGVyYXRpb25fc3RhdGVfdCBwYV9zdGF0ZTsKCiAg
ICBEQkcoIDIsCiAgICAgICAgIGZwYXQsCiAgICAgICAgIGZuYW1lLAogICAgICAgICAiRW50ZXJp
bmcgbG9vcC4iCiAgICAgICApOwogICAgd2hpbGUgKDEpIHsKICAgICAgICBEQkcoIDIsCiAgICAg
ICAgICAgICBmcGF0LAogICAgICAgICAgICAgZm5hbWUsCiAgICAgICAgICAgICAiQ2hlY2tpbmcg
aWYgcHVsc2VhZGlvIGlzIHJlYWR5LiIKICAgICAgICAgICApOwogICAgICAgIGlmICghcGFfcmVh
ZHkpIHsKICAgICAgICAgICAgREJHKCAyLAogICAgICAgICAgICAgICAgIGZwYXQsCiAgICAgICAg
ICAgICAgICAgZm5hbWUsCiAgICAgICAgICAgICAgICAgIk5vdCByZWFkeS4gSXRlcmF0aW5nIG1h
aW5sb29wLiIKICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgcGFfbWFpbmxvb3BfaXRlcmF0
ZSAobWwsIDEsIE5VTEwpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAg
IERCRyggMiwKICAgICAgICAgICAgIGZwYXQsCiAgICAgICAgICAgICBmbmFtZSwKICAgICAgICAg
ICAgICJQdWxzZWFkaW8gcmVhZHkuIgogICAgICAgICAgICk7CiAgICAgICAgY2hhciBmcGF0Mltd
ID0gIiVzOiAlczogJXNcbiI7CiAgICAgICAgY2hhciBhY3Rpb25zdHJbMjU2XTsKICAgICAgICBp
ZiAoIW9wZXJhdGlvbikgewogICAgICAgICAgICBtZW1zZXQgKGFjdGlvbnN0ciwgMCwgc2l6ZW9m
IChjaGFyKSAqIDI1Nik7CiAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgICAgICAg
ICAgICBjYXNlIEdFVF9TRVJWX0lORk86CiAgICAgICAgICAgICAgICAgICAgc3RyY3B5IChhY3Rp
b25zdHIsICJHRVRfU0VSVl9JTkZPIik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICBjYXNlIEdFVF9TSU5LX1NUOgogICAgICAgICAgICAgICAgICAgIHN0cmNweSAo
YWN0aW9uc3RyLCAiR0VUX1NJTktfU1QiKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgIGNhc2UgR0VUX1NPVVJDRV9TVDoKICAgICAgICAgICAgICAgICAgICBzdHJj
cHkgKGFjdGlvbnN0ciwgIkdFVF9TT1VSQ0VfU1QiKTsKICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgIGNhc2UgU0VUX1NJTktfVk9MOgogICAgICAgICAgICAgICAgICAg
IHN0cmNweSAoYWN0aW9uc3RyLCAiU0VUX1NJTktfVk9MIik7CiAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIFNFVF9TSU5LX01VVEU6CiAgICAgICAgICAgICAg
ICAgICAgc3RyY3B5IChhY3Rpb25zdHIsICJTRVRfU0lOS19WT0wiKTsKICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgU0VUX1NPVVJDRV9WT0w6CiAgICAgICAg
ICAgICAgICAgICAgc3RyY3B5IChhY3Rpb25zdHIsICJTRVRfU09VUkNFX1ZPTCIpOwogICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBTRVRfU09VUkNFX01VVEU6
CiAgICAgICAgICAgICAgICAgICAgc3RyY3B5IChhY3Rpb25zdHIsICJTRVRfU09VUkNFX01VVEUi
KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAg
ICAgICAgc3dpdGNoIChvcGVyYXRpb24pIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgICAgREJHKCAyLAogICAgICAgICAgICAgICAgICAgICBmcGF0MiwKICAgICAgICAgICAgICAg
ICAgICAgZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnN0ciwKICAgICAgICAgICAg
ICAgICAgICAgInNlbmRpbmcgcmVxdWVzdCIKICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgICAgICAgICAgICAgICAgIGNhc2UgR0VUX1NF
UlZfSU5GTzoKICAgICAgICAgICAgICAgICAgICAgICAgcGFfb3AgPSBwYV9jb250ZXh0X2dldF9z
ZXJ2ZXJfaW5mbyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYV9nZXRfZGVmYXVsdF9zZXJ2ZXJfaW5mb19jYiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXNvbgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg

>> No.218413  

ICAgICAgIGNhc2UgR0VUX1NJTktfU1Q6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhX29wID0g
cGFfY29udGV4dF9nZXRfc2lua19pbmZvX2J5X25hbWUgKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lzb25bMF0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfZ2V0X3NpbmtfY3ZvbHVtZV9jYiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdm1zWzBdCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgY2FzZSBHRVRfU09VUkNFX1NUOgogICAgICAgICAgICAgICAgICAgICAgICBwYV9v
cCA9IHBhX2NvbnRleHRfZ2V0X3NvdXJjZV9pbmZvX2J5X25hbWUgKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lzb25b
MV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfZ2V0X3NvdXJjZV9jdm9sdW1l
X2NiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2bXNbMV0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICBjYXNlIFNFVF9TSU5LX1ZPTDoKICAgICAgICAgICAgICAgICAgICAg
ICAgcGFfb3AgPSBwYV9jb250ZXh0X3NldF9zaW5rX3ZvbHVtZV9ieV9uYW1lICgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpc29uWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtc1swXS52b2wsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfc3VjY2Vzc19jYiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZXRlcnIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBj
YXNlIFNFVF9TSU5LX01VVEU6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhX29wID0gcGFfY29u
dGV4dF9zZXRfc2lua19tdXRlX2J5X25hbWUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lzb25bMF0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm1zWzBdLm11dGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFfc3VjY2Vzc19jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRlcnIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIFNFVF9TT1VSQ0VfVk9M
OgogICAgICAgICAgICAgICAgICAgICAgICBwYV9vcCA9IHBhX2NvbnRleHRfc2V0X3NvdXJjZV92
b2x1bWVfYnlfbmFtZSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXNvblsxXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2bXNbMV0udm9sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
X3N1Y2Nlc3NfY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0ZXJyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBTRVRfU09VUkNFX01VVEU6CiAgICAgICAgICAg
ICAgICAgICAgICAgIHBhX29wID0gcGFfY29udGV4dF9zZXRfc291cmNlX211dGVfYnlfbmFtZSAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXNvblsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bXNb
MV0ubXV0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYV9zdWNjZXNzX2NiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldGVycgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
b3BlcmF0aW9uKys7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxOgog
ICAgICAgICAgICAgICAgREJHKCAyLAogICAgICAgICAgICAgICAgICAgICBmcGF0MiwKICAgICAg
ICAgICAgICAgICAgICAgZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnN0ciwKICAg
ICAgICAgICAgICAgICAgICAgImhhbmRsaW5nIHJlcXVlc3QgcmVzdWx0IgogICAgICAgICAgICAg
ICAgICAgKTsKICAgICAgICAgICAgICAgIHBhX3N0YXRlID0gcGFfb3BlcmF0aW9uX2dldF9zdGF0
ZSAocGFfb3ApOwogICAgICAgICAgICAgICAgc3dpdGNoIChwYV9zdGF0ZSkgewogICAgICAgICAg
ICAgICAgICAgIGNhc2UgUEFfT1BFUkFUSU9OX0RPTkU6CiAgICAgICAgICAgICAgICAgICAgICAg
IERCRyggMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcGF0MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rp
b25zdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVlc3QgY29tcGxldGUiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g
bG9vcGV4aXQ7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBQQV9PUEVSQVRJT05fUlVOTklORzoK
ICAgICAgICAgICAgICAgICAgICAgICAgREJHKCAyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZwYXQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFjdGlvbnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicmVxdWVzdCBpcyBiZWluZyBwcm9jZXNzZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNh
c2UgUEFfT1BFUkFUSU9OX0NBTkNFTExFRDoKICAgICAgICAgICAgICAgICAgICAgICAgREJHKCAy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwYXQyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnN0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWVzdCBjYW5jZWxsZWQiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhX29wZXJhdGlv
bl91bnJlZiAocGFfb3ApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUEFfT1BFUkFU
SU9OX0NBTkNFTExFRF9FUlI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICB9CiAgICAgICAgcGFfbWFpbmxvb3BfaXRlcmF0ZSAobWwsIDEsIE5VTEwpOwog
ICAgfQpsb29wZXhpdDoKICAgIHBhX29wZXJhdGlvbl91bnJlZiAocGFfb3ApOwogICAgcmV0dXJu
IDA7Cn0KCmludAp2YWxwZXJjZW50CigKIGludCB2b2wKKQp7CiAgICBpZiAoTUlOVk9MVU1FID4g
dm9sIHx8IHZvbCA+IE1BWFZPTFVNRSkKICAgICAgICByZXR1cm4gVk9MVU1FX09VVF9PRl9CT1VO
REFSSUVTX0VSUjsKICAgIHJldHVybiAwOwp9CgppbnQKc3RyMnBlcmNlbnQKKAogY29uc3QgY2hh
ciAqc3RyLAogaW50ICpwZXJjZW50CikKewogICAgY2hhciAqZW5kcHRyWzFdOwogICAgZG91Ymxl
IHRtcDsKCiAgICB0bXAgPSBzdHJ0b2QgKHN0ciwgZW5kcHRyKTsKICAgIGlmICgqKmVuZHB0ciAh
PSAnXDAnKQogICAgICAgIHJldHVybiBDT05WRVJTSU9OX1RPX1ZPTFVNRV9GQUlMRURfRVJSOwoK
ICAgICpwZXJjZW50ID0gKGludCkgcm91bmQgKHRtcCk7CiAgICByZXR1cm4gMDsKfQoKaW50Cmlk
ZW50aWZ5X29wdAooCiBjb25zdCBjaGFyICpvcHQKKQp7CiAgICBpZiAoc3RybGVuIChvcHQpIDwg
MikgcmV0dXJuIC0xOwogICAgaWYgKCFzdHJuY21wICgiLWgiLCBvcHQsIDMpKSByZXR1cm4gSEVM
UDsKICAgIGlmICghc3RybmNtcCAoIi1zIiwgb3B0LCAzKSkgcmV0dXJuIFNFVDsKICAgIGlmICgh
c3RybmNtcCAoIi1nIiwgb3B0LCAzKSkgcmV0dXJuIEdFVDsKICAgIGlmICghc3RybmNtcCAoIi1p
Iiwgb3B0LCAzKSkgcmV0dXJuIElOQzsKICAgIGlmICghc3RybmNtcCAoIi1kIiwgb3B0LCAzKSkg
cmV0dXJuIERFQzsKICAgIGlmICghc3RybmNtcCAoIi1ubiIsIG9wdCwgNCkpIHJldHVybiBOT05P
VElGWTsKICAgIGlmICghc3RybmNtcCAoIi1ueSIsIG9wdCwgNCkpIHJldHVybiBZRVNOT1RJRlk7
CiAgICBpZiAoIXN0cm5jbXAgKCItbWljIiwgb3B0LCA1KSkgcmV0dXJuIE1JQzsKICAgIGlmICgh
c3RybmNtcCAoIi1zaW5rIiwgb3B0LCA2KSkgcmV0dXJuIFNJTks7CiAgICBpZiAoIXN0cm5jbXAg
KCItbXV0ZSIsIG9wdCwgNikpIHJldHVybiBNVVRFOwogICAgcmV0dXJuIC0xOwp9CgpjaGFyIGhl
bHBfbXNnW10gPSAiVXNhZ2U6IHBhdmN0bCA8b3B0aW9ucz5cblwKT3B0aW9uczpcblwKICAtaDog
aGVscC5cblwKICAtczogc2V0IHZvbHVtZS5cblwKICAtZzogZ2V0IHZvbHVtZS5cblwKICAtaTog
aW5jcmVhc2Ugdm9sdW1lLlxuXAogIC1kOiBkZWNyZWFzZSB2b2x1bWUuXG5cCiAgLW1pYzogd29y
ayB3aXRoIG1pY3JvcGhvbmUgaW5zdGVhZCBvZiBzcGVha2Vycy5cblwKICAtc2luazogZ28gYmFj
ayB0byBzcGVha2Vycy5cblwKICAtbXV0ZTogbXV0ZS5cblwKICAtbm46IG5vIG5vdGlmaWNhdGlv
bnMuXG5cCiAgLW55OiB5ZXMgbm90aWZpY2F0aW9uLlxuXApFeGFtcGxlIDE6IHBhdmN0bCAtcyA1
MCAtbWljIC1zIDgwIC1zaW5rIC1nXG5cCkV4YW1wbGUgMjogcGF2Y3RsIC1ubiAtcyA0MCAtbnkg
LXMgMzAiOwoKCnZvaWQKcHJpbnRfaGVscCAoKQp7CiAgICBwdXRzIChoZWxwX21zZyk7Cn0KCmlu
dAptYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCnsKICAgIGlmIChhcmdjID09IDEgfHwgc3Ry
Y21wKGFyZ3ZbMV0sICItaCIpID09IDApIHsKICAgICAgICBwcmludF9oZWxwICgpOwogICAgICAg
IHJldHVybiAwOwogICAgfQogICAgCiAgICBjaGFyIGZuYW1lW10gPSAibWFpbiI7CiAgICBpbnQg
cmVzOwoKICAgIGNoYXIgKmhvbWU7CiAgICBob21lID0gZ2V0ZW52ICgiSE9NRSIpOwogICAgaWYg
KCFob21lKSB7CiAgICAgICAgREJHKDEsICIlczogJXNcbiIsIGZuYW1lLCAiSE9NRSB2YXJpYWJs
ZSBpcyBub3QgZGVmaW5lZCIpOwogICAgICAgIHJldHVybiBOT19IT01FX0VSUjsKICAgIH0KICAg
IGNoYXIgc3VwW10gPSAiLy5jYWNoZS9wYXZjdGwubG9jayI7CgogICAgaW50IGhvbWVsZW4sIHN1
cGxlbjsKICAgIGhvbWVsZW4gPSBzdHJsZW4gKGhvbWUpOwogICAgc3VwbGVuID0gc3RybGVuIChz
dXApOwoKICAgIGNoYXIgbG9ja2ZpbGVbaG9tZWxlbiArIHN1cGxlbiArIDFdOwogICAgc3ByaW50
ZiAobG9ja2ZpbGUsIGhvbWUpOwogICAgc3ByaW50ZiAobG9ja2ZpbGUgKyBob21lbGVuLCBzdXAp
OwoKICAgIHJlcyA9IGFjY2VzcyAobG9ja2ZpbGUsIEZfT0spOwogICAgaWYgKHJlcyA9PSAwKSB7
CiAgICAgICAgaWYgKGNobW9kIChsb2NrZmlsZSwgIFNfSVJVU1IgfCBTX0lXVVNSKSA9PSAtMSkg
ewogICAgICAgICAgICBEQkcoMSwgIiVzOiAlczogJXM6ICVzXG4iLCBmbmFtZSwgImNobW9kIiwg
bG9ja2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IgKGVycm5vKSk7CiAgICAgICAg
ICAgIHJldHVybiBTWVNDQUxMX0VSUjsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKHJlcyA9PSAt
MSkgewogICAgICAgIERCRygxLCAiJXM6ICVzOiAlczogJXNcbiIsIGZuYW1lLCAiYWNjZXNzIiwg
bG9ja2ZpbGUsCiAgICAgICAgICAgICAgICBzdHJlcnJvciAoZXJybm8pKTsKICAgICAgICByZXR1
cm4gU1lTQ0FMTF9FUlI7CiAgICB9CgogICAgaW50IGZkOwogICAgZmQgPSBvcGVuIChsb2NrZmls
ZSwgT19SRFdSIHwgT19UUlVOQyB8IE9fQ1JFQVQpOwogICAgaWYgKGZkIDwgMCkgewogICAgICAg
IERCRygxLCAiJXM6ICVzOiAlczogJXNcbiIsIGZuYW1lLCAib3BlbiIsIGxvY2tmaWxlLCBzdHJl
cnJvciAoZXJybm8pKTsKICAgICAgICByZXR1cm4gU1lTQ0FMTF9FUlI7CiAgICB9CgogICAgaWYg
KGxvY2tmIChmZCwgRl9UTE9DSywgMCkpIHsKICAgICAgICBEQkcoMiwgIkFscmVhZHkgcnVubmlu
Zy5cbiIpOwogICAgICAgIHJldHVybiBBTFJFQURZX1JVTk5JTkdfRVJSOwogICAgfQogICAgZWxz
ZQogICAgICAgIGxvY2tmIChmZCwgRl9MT0NLLCAwKTsKCiAgICBwYV9tYWlubG9vcCAqcGFfbWw7
CiAgICBwYV9tYWlubG9vcF9hcGkgKnBhX2FwaTsKICAgIHBhX2NvbnRleHQgKnBhX2N0eDsKCiAg
ICBwYV9tbCA9IHBhX21haW5sb29wX25ldyAoKTsKICAgIHBhX2FwaSA9IHBhX21haW5sb29wX2dl
dF9hcGkgKHBhX21sKTsKICAgIHBhX2N0eCA9IHBhX2NvbnRleHRfbmV3IChwYV9hcGksICJ2b2x1
bWVjdGwiKTsKCiAgICBwYV9jb250ZXh0X3NldF9zdGF0ZV9jYWxsYmFjayAocGFfY3R4LCBwYV9o
YW5kbGVfc3RhdGVfY2IsIHBhX21sKTsKICAgIHBhX2NvbnRleHRfY29ubmVjdCAocGFfY3R4LCBO
VUxMLCAwLCBOVUxMKTsKCiAgICBjaGFyICpzaXNvblsyXTsKICAgIHNpc29uWzBdID0gTlVMTDsK
ICAgIHNpc29uWzFdID0gTlVMTDsKICAgIGNoYXIgZmFpbHNlZVtdID0gImNvbXBsZXRlIHJlcXVl
c3QsIHNlZSBleGl0IHN0YXR1cyI7CiAgICBzdHJ1Y3Qgdm9sdW1lX211dGUgdm1zWzJdOwogICAg
cGFfY3ZvbHVtZSB2c1syXTsKICAgIHZtc1swXS52b2wgPSAmdnNbMF07CiAgICB2bXNbMV0udm9s
ID0gJnZzWzFdOwoKICAgIHJlcyA9IHBhX3BlcmZvcm1fYWN0aW9uICgKICAgICAgICAgICAgcGFf
Y3R4LAogICAgICAgICAgICBwYV9tbCwKICAgICAgICAgICAgc2lzb24sCiAgICAgICAgICAgIHZt
cywKICAgICAgICAgICAgR0VUX1NFUlZfSU5GTywKICAgICAgICAgICAgTlVMTAogICAgICAgICAg
ICApOwogICAgQ0tGQUlMQygyLCBmbmFtZSwgIkdFVF9TRVJWX0lORk8iLCBmYWlsc2VlLCByZXMs
IHJlcyk7CiAgICBDS0ZBSUxDKDIsIGZuYW1lLCAiR0VUX1NFUlZfSU5GTyIsICJnZXQgc2luayBu
YW1lIiwgKCFzaXNvblswXSksCiAgICAgICAgICAgIFBBX0dFVF9TSU5LX05BTUVfRVJSKTsKICAg
IENLRkFJTEMoMiwgZm5hbWUsICJHRVRfU0VSVl9JTkZPIiwgImdldCBzb3VyY2UgbmFtZSIsICgh
c2lzb25bMV0pLAogICAgICAgICAgICBQQV9HRVRfU09VUkNFX05BTUVfRVJSKTsKCiAgICByZXMg
PSBwYV9wZXJmb3JtX2FjdGlvbiAoCiAgICAgICAgICAgIHBhX2N0eCwKICAgICAgICAgICAgcGFf
bWwsCiAgICAgICAgICAgIHNpc29uLAogICAgICAgICAgICB2bXMsCiAgICAgICAgICAgIEdFVF9T
SU5LX1NULAogICAgICAgICAgICBOVUxMCiAgICAgICAgICAgICk7CiAgICBDS0ZBSUxDKDIsIGZu
YW1lLCAiU0VUX1NJTktfU1QiLCBmYWlsc2VlLCByZXMsIHJlcyk7CiAgICBDS0ZBSUxDKDIsIGZu
YW1lLCAiU0VUX1NJTktfU1QiLCAiZ2V0IHNpbmsgc3RhdGUiLAogICAgICAgICAgICAodm1zWzBd
LnZvbC0+Y2hhbm5lbHMgPT0gMCksCiAgICAgICAgICAgIFBBX0dFVF9TSU5LX1NUQVRFX0VSUik7
CgogICAgcmVzID0gcGFfcGVyZm9ybV9hY3Rpb24gKAogICAgICAgICAgICBwYV9jdHgsCiAgICAg
ICAgICAgIHBhX21sLAogICAgICAgICAgICBzaXNvbiwKICAgICAgICAgICAgdm1zLAogICAgICAg
ICAgICBHRVRfU09VUkNFX1NULAogICAgICAgICAgICBOVUxMCiAgICAgICAgICAgICk7CiAgICBD
S0ZBSUxDKDIsIGZuYW1lLCAiU0VUX1NPVVJDRV9TVCIsIGZhaWxzZWUsIHJlcywgcmVzKTsKICAg
IENLRkFJTEMoMiwgZm5hbWUsICJTRVRfU09VUkNFX1NUIiwgImdldCBzb3VyY2Ugc3RhdGUiLAog
ICAgICAgICAgICAodm1zWzFdLnZvbC0+Y2hhbm5lbHMgPT0gMCksCiAgICAgICAgICAgIFBBX0dF
VF9TT1VSQ0VfU1RBVEVfRVJSKTsKCiAgICBkb3VibGUgZHZvbDsKICAgIGludCBvID0gSEVMUDsK
ICAgIGludCB2b2wgPSAwOwogICAgaW50IHBlciA9IDA7CiAgICBpbnQgdGFyZ2V0ID0gMDsKICAg
IGludCBzZXRlcnIgPSAwOwogICAgd2hpbGUgKGFyZ2MtLSA+IDEpIHsKICAgICAgICBvID0gaWRl
bnRpZnlfb3B0IChhcmd2WzFdKTsKCiAgICAgICAgc3dpdGNoIChvKSB7CiAgICAgICAgICAgIGNh
c2UgSEVMUDoKICAgICAgICAgICAgICAgIHByaW50X2hlbHAgKCk7CiAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgICAgY2FzZSBTRVQ6CiAgICAgICAgICAgICAgICBpZiAoYXJnYyA9
PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgREJHKCAxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIiVzOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3ZbMV0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAiUmVxdWlyZXMgYW4gYXJndW1lbnQuIgogICAgICAgICAgICAgICAg
ICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9QVElPTl9OT19BUkdfRVJSOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmVzID0gc3RyMnBlcmNlbnQgKGFyZ3Zb
Ml0sICZwZXIpOwogICAgICAgICAgICAgICAgaWYgKHJlcykgewogICAgICAgICAgICAgICAgICAg
IERCRyggMSwKICAgICAgICAgICAgICAgICAgICAgICAgICIlczogJXM6ICVzICVzOiBDb252ZXJz
aW9uIGZhaWxlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lLCAiU0VUIiwgYXJn
dlsxXSwgYXJndlsyXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIHJlcyA9IHZhbHBlcmNlbnQgKHBlcik7CiAgICAgICAg
ICAgICAgICBpZiAocmVzKSB7CiAgICAgICAgICAgICAgICAgICAgREJHKCAxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIiVzOiAlczogJXMgJXM6IFZvbHVtZSBub3QgaW4gcmFuZ2VcbiIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSwgIlNFVCIsIGFyZ3ZbMV0sIGFyZ3ZbMl0pOwog
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgZHZvbCA9IHBlcjsKICAgICAgICAgICAgICAgIGR2b2wgKj0gUEFfVk9MVU1FX05P
Uk07CiAgICAgICAgICAgICAgICBkdm9sIC89IDEwMDsKICAgICAgICAgICAgICAgIGR2b2wgPSBy
b3VuZChkdm9sKTsKICAgICAgICAgICAgICAgIHZvbCA9IChpbnQpIGR2b2w7CiAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgIC8vIGdvdG9zLCBzd2VldAogICAgICAgICAgICAgICAgLy8g
aGVoZQpzZXRfdm9sdW1lOgogICAgICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQpIHsKICAgICAg
ICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhX2N2b2x1bWVf
c2V0ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bXNbMF0udm9sLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZtc1swXS52b2wtPmNoYW5uZWxzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IHBhX3BlcmZvcm1fYWN0aW9uICgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYV9jdHgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGFfbWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lzb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1zLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNFVF9TSU5LX1ZPTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmc2V0ZXJyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgQ0tGQUlMQygyLCBmbmFtZSwgIlNFVF9TSU5LX1ZPTCIsICJzZXQgc2luayB2
b2x1bWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcywgcmVzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgQ0tGQUlMQygyLCBmbmFtZSwgIlNFVF9TSU5LX1ZPTCIsICJzZXQg
c2luayB2b2x1bWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRlcnIgPT0g
MCksIFBBX1NFVF9TSU5LX1ZPTFVNRV9FUlIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIHBh
X2N2b2x1bWVfc2V0ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bXNbMV0udm9s
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtc1sxXS52b2wtPmNoYW5uZWxzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IHBhX3BlcmZvcm1fYWN0
aW9uICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYV9jdHgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFfbWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2lzb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNFVF9TT1VSQ0VfVk9MLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZzZXRlcnIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwog
ICAgICAgICAgICAgICAgICAgICAgICBDS0ZBSUxDKDIsIGZuYW1lLCAiU0VUX1NPVVJDRV9WT0wi
LCAic2V0IHNvdXJjZSB2b2x1bWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cywgcmVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgQ0tGQUlMQygyLCBmbmFtZSwgIlNFVF9T
T1VSQ0VfVk9MIiwgInNldCBzb3VyY2Ugdm9sdW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoc2V0ZXJyID09IDApLCBQQV9TRVRfU09VUkNFX1ZPTFVNRV9FUlIpOwogICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg

>> No.218414  

IG5vdGlmeV92b2x1bWUgKHRhcmdldCwgcGVyKTsKICAgICAgICAgICAgICAgIGFyZ2MtLTsKICAg
ICAgICAgICAgICAgIGFyZ3YgKz0gMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICBjYXNlIEdFVDoKICAgICAgICAgICAgICAgIHN3aXRjaCAodGFyZ2V0KSB7CiAgICAgICAgICAg
ICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICBkdm9sID0gdm1zWzBdLnZv
bC0+dmFsdWVzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBkdm9sICo9IDEwMDsKICAgICAg
ICAgICAgICAgICAgICAgICAgZHZvbCAvPSBQQV9WT0xVTUVfTk9STTsKICAgICAgICAgICAgICAg
ICAgICAgICAgZHZvbCA9IHJvdW5kIChkdm9sKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHJp
bnRmICgiU2luayAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBkdm9sID0gdm1zWzFdLnZv
bC0+dmFsdWVzWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBkdm9sICo9IDEwMDsKICAgICAg
ICAgICAgICAgICAgICAgICAgZHZvbCAvPSBQQV9WT0xVTUVfTk9STTsKICAgICAgICAgICAgICAg
ICAgICAgICAgZHZvbCA9IHJvdW5kIChkdm9sKTsKICAgICAgICAgICAgICAgICAgICAgICAgcHJp
bnRmICgiU291cmNlICIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIHZvbCA9IGR2b2w7CiAgICAgICAgICAgICAgICBwcmlu
dGYgKCJ2b2x1bWU6ICVkJSUuXG4iLCB2b2wpOwogICAgICAgICAgICAgICAgYXJndisrOwogICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgSU5DOgogICAgICAgICAgICAgICAg
aWYgKGFyZ2MgPT0gMSkgewogICAgICAgICAgICAgICAgICAgIERCRyggMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICIlczogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmd2WzFd
LAogICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIGFuIGFyZ3VtZW50LiIKICAgICAg
ICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBPUFRJT05fTk9f
QVJHX0VSUjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJlcyA9IHN0cjJwZXJj
ZW50IChhcmd2WzJdLCAmcGVyKTsKICAgICAgICAgICAgICAgIGlmIChyZXMpIHsKICAgICAgICAg
ICAgICAgICAgICBEQkcoIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6ICVzOiAlcyAl
czogQ29udmVyc2lvbiBmYWlsZWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSwg
IklOQyIsIGFyZ3ZbMV0sIGFyZ3ZbMl0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkdm9sID0gcGVyOwogICAgICAgICAg
ICAgICAgZHZvbCA9IGR2b2wgKiBQQV9WT0xVTUVfTk9STSAvIDEwMDsKCiAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHRhcmdldCkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAg
ICAgICAgICAgICAgICAgZHZvbCArPSB2bXNbMF0udm9sLT52YWx1ZXNbMF07CiAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAg
ICAgICAgICAgICAgICAgZHZvbCArPSB2bXNbMV0udm9sLT52YWx1ZXNbMF07CiAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGR2
b2wgPSByb3VuZCAoZHZvbCk7CiAgICAgICAgICAgICAgICB2b2wgPSAoaW50KSBkdm9sOwogICAg
ICAgICAgICAgICAgcGVyID0gKGludCkgcm91bmQgKGR2b2wgKiAxMDAgLyBQQV9WT0xVTUVfTk9S
TSk7CiAgICAgICAgICAgICAgICByZXMgPSB2YWxwZXJjZW50IChwZXIpOwogICAgICAgICAgICAg
ICAgaWYgKHJlcykgewogICAgICAgICAgICAgICAgICAgIERCRyggMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICIlczogJXM6ICVzICVzOiBDYW5ub3QgaW5jcmVhc2UgdGhpcyBtdWNoXG4iLAog
ICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUsICJJTkMiLCBhcmd2WzFdLCBhcmd2WzJdKTsK
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgZ290byBzZXRfdm9sdW1lOwogICAgICAgICAgICBjYXNlIERFQzoKICAgICAgICAg
ICAgICAgIGlmIChhcmdjID09IDEpIHsKICAgICAgICAgICAgICAgICAgICBEQkcoIDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAiJXM6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAg
YXJndlsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1aXJlcyBhbiBhcmd1bWVudC4i
CiAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gT1BU
SU9OX05PX0FSR19FUlI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXMgPSBz
dHIycGVyY2VudCAoYXJndlsyXSwgJnBlcik7CiAgICAgICAgICAgICAgICBpZiAocmVzKSB7CiAg
ICAgICAgICAgICAgICAgICAgREJHKCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiAl
czogJXMgJXM6IENvbnZlcnNpb24gZmFpbGVkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAg
Zm5hbWUsICJJTkMiLCBhcmd2WzFdLCBhcmd2WzJdKTsKICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZHZvbCA9IHBlcjsKICAg
ICAgICAgICAgICAgIGR2b2wgPSBkdm9sICogUEFfVk9MVU1FX05PUk0gLyAxMDA7CiAgICAgICAg
ICAgICAgICBkdm9sID0gcm91bmQgKGR2b2wpOwogICAgICAgICAgICAgICAgdm9sID0gKGludCkg
ZHZvbDsKCiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkgewogICAgICAgICAgICAgICAg
ICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAgdm9sID0gdm1zWzBdLnZvbC0+dmFs
dWVzWzBdIC0gdm9sOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIHZvbCA9IHZtc1sxXS52b2wt
PnZhbHVlc1swXSAtIHZvbDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgZHZvbCA9IHZvbDsKICAgICAgICAgICAgICAgIHBl
ciA9IChpbnQpIHJvdW5kIChkdm9sICogMTAwIC8gUEFfVk9MVU1FX05PUk0pOwogICAgICAgICAg
ICAgICAgcmVzID0gdmFscGVyY2VudCAocGVyKTsKICAgICAgICAgICAgICAgIGlmIChyZXMpIHsK
ICAgICAgICAgICAgICAgICAgICBEQkcoIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6
ICVzOiAlcyAlczogQ2Fubm90IGRlY3JlYXNlIHRoaXMgbXVjaFxuIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGZuYW1lLCAiREVDIiwgYXJndlsxXSwgYXJndlsyXQogICAgICAgICAgICAgICAg
ICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIGdvdG8gc2V0X3ZvbHVtZTsKICAgICAgICAgICAgY2FzZSBNSUM6
CiAgICAgICAgICAgICAgICB0YXJnZXQgPSAxOwogICAgICAgICAgICAgICAgYXJndisrOwogICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgU0lOSzoKICAgICAgICAgICAgICAg
IHRhcmdldCA9IDA7CiAgICAgICAgICAgICAgICBhcmd2Kys7CiAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgY2FzZSBNVVRFOgogICAgICAgICAgICAgICAgc3dpdGNoICh0YXJnZXQp
IHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHZt
c1swXS5tdXRlID0gIXZtc1swXS5tdXRlOwogICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBw
YV9wZXJmb3JtX2FjdGlvbiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfY3R4
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhX21sLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpc29uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZt
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRfU0lOS19NVVRFLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZzZXRlcnIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBDS0ZBSUxDKDIsIGZuYW1lLCAiU0VU
X1NJTktfTVVURSIsICJtdXRlIHNpbmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcywgcmVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgQ0tGQUlMQygyLCBmbmFtZSwgIlNF
VF9TSU5LX01VVEUiLCAibXV0ZSBzaW5rIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2V0ZXJyID09IDApLCBQQV9TRVRfU0lOS19NVVRFX0VSUik7CiAgICAgICAgICAgICAgICAg
ICAgICAgIG5vdGlmeV9tdXRlICh0YXJnZXQsIHZtc1swXS5tdXRlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAg
ICAgICAgICAgICB2bXNbMV0ubXV0ZSA9ICF2bXNbMV0ubXV0ZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzID0gcGFfcGVyZm9ybV9hY3Rpb24gKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYV9tbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXNvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2bXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUX1NPVVJD
RV9NVVRFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXRlcnIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBDS0ZBSUxD
KDIsIGZuYW1lLCAiU0VUX1NPVVJDRV9NVVRFIiwgIm11dGUgc291cmNlIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXMsIHJlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIENL
RkFJTEMoMiwgZm5hbWUsICJTRVRfU09VUkNFX01VVEUiLCAibXV0ZSBzb3VyY2UiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRlcnIgPT0gMCksIFBBX1NFVF9TT1VSQ0VfTVVU
RV9FUlIpOwogICAgICAgICAgICAgICAgICAgICAgICBub3RpZnlfbXV0ZSAodGFyZ2V0LCB2bXNb
MV0ubXV0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgYXJndisrOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgIGNhc2UgTk9OT1RJRlk6CiAgICAgICAgICAgICAgICBOT19OT1RJRlkgPSAxOwogICAgICAg
ICAgICAgICAgYXJndisrOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2Ug
WUVTTk9USUZZOgogICAgICAgICAgICAgICAgTk9fTk9USUZZID0gMDsKICAgICAgICAgICAgICAg
IGFyZ3YrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgREJHKCAxLCAKICAgICAgICAgICAgICAgICAgICAgIiVzOiAlczogJXMgJXNc
biIsCiAgICAgICAgICAgICAgICAgICAgIGZuYW1lLAogICAgICAgICAgICAgICAgICAgICBhcmd2
WzFdLAogICAgICAgICAgICAgICAgICAgICAiSSBkb24ndCBrbm93IHdoYXQgeW91IG1lYW4sIGJ1
dCB0aGlzIGlzIG5vdCBhIHZhbGlkIiwKICAgICAgICAgICAgICAgICAgICAgImlucHV0LlxuQ29u
c2lkZXIgZG9pbmcgJ3BhdmN0bCAtaCcgdG8gZ2V0IGhlbHAuIgogICAgICAgICAgICAgICAgICAg
KTsKICAgICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUjsKICAgICAgICB9CiAgICB9CiAg
ICBQQV9GVUNLT0ZGKHBhX2N0eCwgcGFfbWwpOwogICAgbG9ja2YgKGZkLCBGX1VMT0NLLCAwKTsK
ICAgIHJldHVybiAwOwp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

>> No.218415  

base64, вы поняли. Это то, что должно было быть реализовано в pactl/pacmd. Никаких проверок на счет памяти не делал, работает и похуй. Что бы скомпилировать нужно pkg-config --cflags --libs libnotify, и еще флаги -lm -lpulse. Компилировай гондонским gcc, потому что лень clang устанавливать.

>> No.218417  

Теоретически, если весь notify.* выкинуть вообще, то будет еще быстрее работать, а то подргузка всех этой гейских гномотек на стартапе занимает больше времени, чем запуск ебучего sh.

>> No.218420  
> base64

Сделай ку ююк.

>> No.218422  

>>218420
Там бы gzip сделать, оно бы и в одно сообщение влезло бы.

>> No.218430  

>>218422
.tar.xz щаас посмотрим

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
xAwcoQ9BwOGaqdN/shmWk4B6/6flSaU=

>> No.218431  

>>218430
да, влезло. правда там больше lzma, чем xz.

>> No.218436  

zip.png удобнее.
Алсо, видел на форчане такой способ, ещё до того, как webm прикрутили.

#!/bin/env bash
# usage: script.sh <input> [<output>]
if [ ! "$1" ]; then echo Specify an input.; exit; fi
if [ ! -e "$1" ]; then echo \"$1\" doesn\'t exist.; exit; fi
if [ "$2" ]; then output="${2%.*}.png"; else output="${1%.*}.png"; fi
if [ -e "$output" ]; then echo Output exists, specify another name.; exit; fi
size=$(echo "sqrt($(stat -c%s "$1")/8)+0.5/1" | bc)
cat "$1" /dev/zero - | ffmpeg -f rawvideo -s ${size}:${size} -pix_fmt rgba64be -i - -vframes 1 "$output"
echo Playback with\:
echo ffmpeg -i \"$output\" -f rawvideo - \| mpv -

Мудрёно!

>> No.218439  

>>218436
так а че оно делает-то?

>> No.218476  

Кажется, я нашёл свой идеальный промпт.

	PS1='\[\033[0;34m\]\W\[\033[m\]: '
>> No.218497  

RSS для новеря, работает через cgi интерфейс вебсервера, вызывать как http://server/cgi-bin/script.cgi/b/res/217061.html
на сервере нужен собственно сам вебсервер с поддержкой cgi и питон с Flask.

#!/usr/bin/env python3

from flask import Flask, request, redirect, make_response
from wsgiref.handlers import CGIHandler
import os
import time

app = Flask(__name__)

if os.environ.get("PATH_INFO") is None:
os.environ["PATH_INFO"] = ""

def getpage(thread):
import requests
import bs4
page=''
html = requests.get('http://nowere.net/' + thread).content
html = bs4.BeautifulSoup(html, 'lxml')
page = page + '<?xml version="1.0"?><rss version="2.0">\n <channel>\n <title>\n'
page = page + thread + '\n'
page = page + ' </title>\n'
page = page + ' <link>http://nowere.net/' + thread + '</link>\n'
page = page + 'http://nowere.net/' + thread + ';'
posts = html.find_all('td', attrs={'class':'reply'})
for post in posts:
postTitle = str(post.a['name'])
postLink = 'http://nowere.net/' + thread + '#' + postTitle
page = page + ' <item>\n'
page = page + ' <title>' + postTitle + '</title>\n'
page = page + ' <description>\n'
page = page + ' <p><a href="' + postLink + '">' + postLink + '</a></p>\n'
page = page + str(post)
page = page + ' </description>\n'
page = page + ' <guid isPermaLink="true">' + postLink + '</guid>\n'
page = page + ' </item>\n'
page = page + ' </channel>\n</rss>'
return page

@app.route('/<path:thread>', methods=['GET'])
def mainpage(thread):
page = getpage(thread)
response = make_response(page, 200)
response.mimetype = "application/rss+xml"
return response


CGIHandler().run(app)
>> No.218500  

>>218497

def getpage(thread):
import requests
import bs4

Жесть

Хотя, всё равно спасибо, буду разбираться.

>> No.218501  

>>218500
Там изначально было кеширование и вот с таким вот хаком при попадании в кеш оно отрабатывало несколько быстрее.

>> No.218592  

Вывод количества траффика по интерфейсам. Использую тизеринг с мобильника, поэтому вот.

#!/bin/sh
# show total bandwidth stats for network interfaces
scriptname="${0##*/}"
[ $# -eq 0 ] || [ "$1" = "-h" ] && {
echo "usage: $scriptname <iface> [iface] .." >&2
exit 1
}
# total bandwidth
total=0
# number of working interfaces
cnt=0
for i; do
[ -d /sys/class/net/$i ] && {
tx=$(cat /sys/class/net/$i/statistics/tx_bytes)
rx=$(cat /sys/class/net/$i/statistics/rx_bytes)
mibs=$(( (tx + rx) / 1024 / 1024 ))
total=$((total + mibs))
cnt=$((cnt + 1))
echo $i: ${mibs} MiB
} || {
echo "$scriptname: no such interface: $i" >&2
}
done
[ $cnt -gt 1 ] && echo total: $total MiB
>> No.218595  

https://libredirect.github.io/index.html

Перенаправления на альтернативные фронтенды, автоматически, браузерным аддоном.

>> No.218628  

>>218501

Я могу попробовать захостить у себя и получть бесплатный домен через freedns.afraid.org

Но не раньше чем у меня семестр кончится, то есть в Январе.

>> No.218629  

>>218628
Оно на локалхосте отлично живет без внешнего ip, главное чтобы у rss читалки доступ был. Но если хочешь захостить для всех, то я могу попробовать прикрутить кеширование обратно, чтобы меньше трафика гонять.

>> No.218773  

>>218629

>Но если хочешь захостить для всех

Хочешь.

>я могу попробовать прикрутить кеширование обратно

Попробуй.

Тебе будет удобно, если будет для этой штуки git репозиторий где-то ?
Я могу написать гайд как кидать патчи анонимно.

>> No.218777  

>>218773

> Попробуй.

Держи:

#!/usr/bin/env python3

from flask import Flask, request, redirect, make_response
from wsgiref.handlers import CGIHandler
import os
import time
from diskcache import Cache

# some settings
url_base = 'http://nowere.net/' # http fast, but insecure; https secure but slower
directcache_time = 600 # time in seconds when local cache returned without quering server
cache_directory = '/tmp/nowere' # where cache has been stored, safe to delete

app = Flask(__name__)

if os.environ.get("PATH_INFO") is None:
os.environ["PATH_INFO"] = ""

def update_page(thread, cache):
if (cache[thread + 'time'] > 0):
# return older version of feed to another clients if we have cached one
cache[thread + 'time'] = time.time()
import requests
ret = requests.get(url_base + thread, headers={'If-Modified-Since':cache[thread + 'Last-Modified']})
if (ret.status_code == 304):
# nothing changed
return True
if (ret.status_code > 399):
# something wrong
return ret
import bs4
html = ret.content
feed = ''
html = bs4.BeautifulSoup(html, 'lxml')
feed = feed + '<?xml version="1.0"?><rss version="2.0">\n <channel>\n <title>\n'
feed = feed + thread + '\n'
feed = feed + ' </title>\n'
feed = feed + ' <link>' + url_base + thread + '</link>\n'
posts = html.find_all('td', attrs={'class':'reply'})
for post in posts:
postTitle = str(post.a['name'])
postLink = url_base + thread + '#' + postTitle
feed = feed + ' <item>\n'
feed = feed + ' <title>' + postTitle + '</title>\n'
feed = feed + ' <description>\n'
feed = feed + ' <p><a href="' + postLink + '">' + postLink + '</a></p>\n'
feed = feed + str(post)
feed = feed + ' </description>\n'
feed = feed + ' <guid isPermaLink="true">' + postLink + '</guid>\n'
feed = feed + ' </item>\n'
feed = feed + ' </channel>\n</rss>'
cache[thread + 'feed'] = feed
cache[thread + 'Last-Modified'] = ret.headers['Last-Modified']
cache[thread + 'time'] = time.time()
return True

@app.route('/<path:thread>', methods=['GET'])
def mainpage(thread):
cache = Cache(directory=cache_directory)
try:
test = cache[thread+'time']
except KeyError:
cache[thread + 'time'] = 0
cache[thread + 'Last-Modified'] = 'Thu, 01 Jan 1970 00:00:00 GMT'
if ( (time.time() - cache[thread + 'time']) > directcache_time):
ret = update_page(thread, cache)
if ( ret != True ):
response = make_response(ret.content, ret.status_code)
return response
response = make_response(cache[thread + 'feed'], 200)
#response.mimetype = "text/plain"
response.mimetype = "application/rss+xml"
return response


CGIHandler().run(app)
> Тебе будет удобно, если будет для этой штуки git репозиторий где-то ?

Не уверен что в этом есть смысл, это ведь типичный одноразовый код, который часто проще выкинуть чем переписывать.

>> No.218866  
File: 1702119134782.webm -(301867 B, 600x480) Thumbnail displayed, click image for full size.
301867

Почему curl не загружает через HTTP POST файлы с такими именами —

test'file'name.jpg
test'file.txt
test&file.txt
test<file>.txt

Первые два отправляются успешно, вторые два — уже нет. С флагом verbosity ничего не говорит, как будто заливает пустые файлы. Делаю вот так,

curl \
-F "files=@\"test'file.txt\"" \
-F "files=@\"test'file'name.jpg\"" \
-F "files=@\"test&file.txt\"" \
-F "files=@\"test<file>.txt\""

Братишка говорит, если я хорошо курлыкну, он мне погону отдаст.

>> No.218867  

>>218866
Это предположение, но вероятно & парсится шеллом как синтаксис для запуска в бэкгрунде, а < и > как перенаправления в файл



Delete Post []
Password

[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]