Compare commits
No commits in common. "trunk" and "locale_tr" have entirely different histories.
154
.drone.yml
|
@ -8,7 +8,7 @@ clone:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: clone
|
- name: clone
|
||||||
image: openpriv/flutter-desktop:linux-fstable-3.19.3
|
image: cirrusci/flutter:3.0.1
|
||||||
environment:
|
environment:
|
||||||
buildbot_key_b64:
|
buildbot_key_b64:
|
||||||
from_secret: buildbot_key_b64
|
from_secret: buildbot_key_b64
|
||||||
|
@ -24,14 +24,14 @@ steps:
|
||||||
- git checkout $DRONE_COMMIT
|
- git checkout $DRONE_COMMIT
|
||||||
|
|
||||||
- name: fetch
|
- name: fetch
|
||||||
image: openpriv/flutter-desktop:linux-fstable-3.19.3
|
image: cirrusci/flutter:3.0.1
|
||||||
volumes:
|
volumes:
|
||||||
- name: deps
|
- name: deps
|
||||||
path: /root/.pub-cache
|
path: /root/.pub-cache
|
||||||
commands:
|
commands:
|
||||||
- ./fetch-tor.sh
|
- ./fetch-tor.sh
|
||||||
- echo `git describe --tags --abbrev=1` > VERSION
|
- echo `git describe --tags --abbrev=1` > VERSION
|
||||||
- echo `git log -1 --format=%cd --date=format:%G-%m-%d-%H-%M` > COMMIT_DATE
|
- echo `date +%G-%m-%d-%H-%M` > BUILDDATE
|
||||||
- flutter pub get
|
- flutter pub get
|
||||||
- mkdir deploy
|
- mkdir deploy
|
||||||
- ./fetch-libcwtch-go.sh
|
- ./fetch-libcwtch-go.sh
|
||||||
|
@ -47,46 +47,21 @@ steps:
|
||||||
# #Todo: fix all the lint errors and add `-set_exit_status` above to enforce linting
|
# #Todo: fix all the lint errors and add `-set_exit_status` above to enforce linting
|
||||||
|
|
||||||
- name: build-linux
|
- name: build-linux
|
||||||
image: openpriv/flutter-desktop:linux-fstable-3.19.3
|
image: openpriv/flutter-desktop:linux-fstable-3.0.1
|
||||||
volumes:
|
volumes:
|
||||||
- name: deps
|
- name: deps
|
||||||
path: /root/.pub-cache
|
path: /root/.pub-cache
|
||||||
commands:
|
commands:
|
||||||
- flutter build linux --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat COMMIT_DATE`
|
- flutter build linux --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat BUILDDATE`
|
||||||
- linux/package-release.sh
|
- linux/package-release.sh
|
||||||
- mkdir -p deploy/cwtch
|
- mkdir -p deploy/cwtch
|
||||||
- mkdir -p deploy/deb/cwtch/usr
|
|
||||||
- mkdir -p deploy/deb/cwtch/DEBIAN
|
|
||||||
- export VERSION=`cat VERSION | tr -d 'v'`
|
|
||||||
- sed "s|VERSION|$VERSION|g" linux/deb/control > deploy/deb/cwtch/DEBIAN/control
|
|
||||||
- cp -r build/linux/x64/release/bundle/* deploy/cwtch
|
- cp -r build/linux/x64/release/bundle/* deploy/cwtch
|
||||||
- cd deploy
|
- cd deploy
|
||||||
- cd cwtch
|
- tar -czf cwtch-`cat ../VERSION`.tar.gz cwtch
|
||||||
- INSTALL_PREFIX=./../deb/cwtch/usr DESKTOP_PREFIX=/usr/ ./install.sh
|
|
||||||
- cd ..
|
|
||||||
# we depend on tor, get it from the tor project apt repo
|
|
||||||
- rm -r deb/cwtch/usr/lib/cwtch/Tor
|
|
||||||
# Tar archives need a few tricks to make this deterministic, see https://reproducible-builds.org/docs/archives/
|
|
||||||
- tar --sort=name --mtime=`cat COMMIT_DATE` --owner=0 --group=0 --numeric-owner --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime -czf cwtch-`cat ../VERSION`.tar.gz cwtch
|
|
||||||
- rm -r cwtch
|
- rm -r cwtch
|
||||||
- cd deb
|
|
||||||
- dpkg-deb --build cwtch
|
|
||||||
- cd ..
|
|
||||||
- mv deb/cwtch.deb cwtch-$VERSION.deb
|
|
||||||
- rm -r deb
|
|
||||||
|
|
||||||
|
|
||||||
- name: linux-ui-tests
|
|
||||||
image: openpriv/flutter-desktop:linux-fstable-3.19.3
|
|
||||||
volumes:
|
|
||||||
- name: deps
|
|
||||||
path: /root/.pub-cache
|
|
||||||
commands:
|
|
||||||
# Run 01_general, 01_tor, 02_global_settings, and 04_profile_mgmt features...
|
|
||||||
- ./run-tests-headless.sh "01_general|01_tor|02_global_settings|04_profile_mgmt"
|
|
||||||
|
|
||||||
- name: test-build-android
|
- name: test-build-android
|
||||||
image: openpriv/flutter-desktop:linux-fstable-3.19.3
|
image: cirrusci/flutter:3.0.1
|
||||||
when:
|
when:
|
||||||
event: pull_request
|
event: pull_request
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -96,7 +71,7 @@ steps:
|
||||||
- flutter build apk --debug
|
- flutter build apk --debug
|
||||||
|
|
||||||
- name: build-android
|
- name: build-android
|
||||||
image: openpriv/flutter-desktop:linux-fstable-3.19.3
|
image: cirrusci/flutter:3.0.1
|
||||||
when:
|
when:
|
||||||
event: push
|
event: push
|
||||||
environment:
|
environment:
|
||||||
|
@ -111,16 +86,16 @@ steps:
|
||||||
- echo $upload_jks_file_b64 > upload-keystore.jks.b64
|
- echo $upload_jks_file_b64 > upload-keystore.jks.b64
|
||||||
- base64 -i --decode upload-keystore.jks.b64 > android/app/upload-keystore.jks
|
- base64 -i --decode upload-keystore.jks.b64 > android/app/upload-keystore.jks
|
||||||
- sed -i "s/%jks-password%/$upload_jks_pass/g" android/key.properties
|
- sed -i "s/%jks-password%/$upload_jks_pass/g" android/key.properties
|
||||||
- flutter build appbundle --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat COMMIT_DATE`
|
- flutter build appbundle --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat BUILDDATE`
|
||||||
# cant do debug for final release, this is just a stop gap
|
# cant do debug for final release, this is just a stop gap
|
||||||
- flutter build apk --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat COMMIT_DATE`
|
- flutter build apk --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat BUILDDATE`
|
||||||
# or build apk --split-per-abi ?
|
# or build apk --split-per-abi ?
|
||||||
- cp build/app/outputs/bundle/release/app-release.aab deploy/cwtch-`cat VERSION`.aab
|
- cp build/app/outputs/bundle/release/app-release.aab deploy/
|
||||||
- cp build/app/outputs/apk/release/app-release.apk deploy/cwtch-`cat VERSION`.apk
|
- cp build/app/outputs/apk/release/app-release.apk deploy/
|
||||||
#- cp build/app/outputs/flutter-apk/app-debug.apk deploy/android
|
#- cp build/app/outputs/flutter-apk/app-debug.apk deploy/android
|
||||||
|
|
||||||
- name: widget-tests
|
- name: widget-tests
|
||||||
image: openpriv/flutter-desktop:linux-fstable-3.19.3
|
image: cirrusci/flutter:3.0.1
|
||||||
volumes:
|
volumes:
|
||||||
- name: deps
|
- name: deps
|
||||||
path: /root/.pub-cache
|
path: /root/.pub-cache
|
||||||
|
@ -129,21 +104,6 @@ steps:
|
||||||
- flutter test --coverage
|
- flutter test --coverage
|
||||||
- genhtml coverage/lcov.info -o coverage/html
|
- genhtml coverage/lcov.info -o coverage/html
|
||||||
|
|
||||||
- name: upload-nightlies
|
|
||||||
image: openpriv/flutter-desktop:linux-fstable-3.19.3
|
|
||||||
environment:
|
|
||||||
GOGS_ACCOUNT_TOKEN:
|
|
||||||
from_secret: gogs_account_token
|
|
||||||
secrets: [gogs_account_token]
|
|
||||||
volumes:
|
|
||||||
- name: deps
|
|
||||||
path: /root/.pub-cache
|
|
||||||
when:
|
|
||||||
event: push
|
|
||||||
status: [ success ]
|
|
||||||
commands:
|
|
||||||
- ./upload-releases.sh deploy/cwtch-`cat VERSION`.apk application/vnd.android.package-archive cwtch-`cat VERSION`.apk
|
|
||||||
|
|
||||||
- name: deploy-buildfiles
|
- name: deploy-buildfiles
|
||||||
image: kroniak/ssh-client
|
image: kroniak/ssh-client
|
||||||
pull: if-not-exists
|
pull: if-not-exists
|
||||||
|
@ -158,17 +118,26 @@ steps:
|
||||||
- echo $BUILDFILES_KEY > ~/id_rsab64
|
- echo $BUILDFILES_KEY > ~/id_rsab64
|
||||||
- base64 -d ~/id_rsab64 > ~/id_rsa
|
- base64 -d ~/id_rsab64 > ~/id_rsa
|
||||||
- chmod 400 ~/id_rsa
|
- chmod 400 ~/id_rsa
|
||||||
- export DIR=flwtch-`cat COMMIT_DATE`-`cat VERSION`
|
- export DIR=flwtch-`cat BUILDDATE`-`cat VERSION`
|
||||||
- mv deploy $DIR
|
- mv deploy $DIR
|
||||||
- cp -r coverage/html $DIR/coverage-tests
|
- cp -r coverage/html $DIR/coverage-tests
|
||||||
- cp -r test/failures $DIR/test-failures || true
|
- cp -r test/failures $DIR/test-failures || true
|
||||||
- cd $DIR
|
- cd $DIR
|
||||||
- find . -type f -exec sha512sum {} \; > ./../sha512s.txt
|
- find . -type f -exec sha256sum {} \; > ./../sha256s.txt
|
||||||
- mv ./../sha512s.txt .
|
- mv ./../sha256s.txt .
|
||||||
- cd ..
|
- cd ..
|
||||||
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa $DIR buildfiles@build.openprivacy.ca:/home/buildfiles/buildfiles/
|
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa $DIR buildfiles@build.openprivacy.ca:/home/buildfiles/buildfiles/
|
||||||
- ./gen-nightly-index.sh $DIR
|
|
||||||
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa cwtch-nightly.html buildfiles@build.openprivacy.ca:/home/buildfiles/buildfiles/
|
- name: notify-email
|
||||||
|
image: drillster/drone-email
|
||||||
|
pull: if-not-exists
|
||||||
|
settings:
|
||||||
|
host: build.openprivacy.ca
|
||||||
|
port: 25
|
||||||
|
skip_verify: true
|
||||||
|
from: drone@openprivacy.ca
|
||||||
|
when:
|
||||||
|
status: [ failure ]
|
||||||
|
|
||||||
- name: notify-gogs
|
- name: notify-gogs
|
||||||
image: openpriv/drone-gogs
|
image: openpriv/drone-gogs
|
||||||
|
@ -208,7 +177,7 @@ clone:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: clone
|
- name: clone
|
||||||
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.19.3
|
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.0.1
|
||||||
environment:
|
environment:
|
||||||
buildbot_key_b64:
|
buildbot_key_b64:
|
||||||
from_secret: buildbot_key_b64
|
from_secret: buildbot_key_b64
|
||||||
|
@ -226,28 +195,28 @@ steps:
|
||||||
- git checkout $Env:DRONE_COMMIT
|
- git checkout $Env:DRONE_COMMIT
|
||||||
|
|
||||||
- name: fetch
|
- name: fetch
|
||||||
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.19.3
|
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.0.1
|
||||||
commands:
|
commands:
|
||||||
- git describe --tags --abbrev=1 > VERSION
|
- git describe --tags --abbrev=1 > VERSION
|
||||||
- git log -1 --format=%cd --date=format:'%Y-%m-%d-%H-%M' > COMMIT_DATE
|
- powershell -command "Get-Date -Format 'yyyy-MM-dd-HH-mm'" > BUILDDATE
|
||||||
- .\fetch-tor-win.ps1
|
- .\fetch-tor-win.ps1
|
||||||
- .\fetch-libcwtch-go.ps1
|
- .\fetch-libcwtch-go.ps1
|
||||||
|
|
||||||
- name: build-windows
|
- name: build-windows
|
||||||
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.19.3
|
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.0.1
|
||||||
commands:
|
commands:
|
||||||
- flutter pub get
|
- flutter pub get
|
||||||
- $Env:version += type .\VERSION
|
- $Env:version += type .\VERSION
|
||||||
- $Env:commitdate += type .\COMMIT_DATE
|
- $Env:builddate += type .\BUILDDATE
|
||||||
- $Env:releasedir = "build\\windows\\x64\\runner\\Release\\"
|
- $Env:releasedir = "build\\windows\\runner\\Release\\"
|
||||||
- flutter build windows --dart-define BUILD_VER=$Env:version --dart-define BUILD_DATE=$Env:commitdate
|
- flutter build windows --dart-define BUILD_VER=$Env:version --dart-define BUILD_DATE=$Env:builddate
|
||||||
- copy windows\libCwtch.dll $Env:releasedir
|
- copy windows\libCwtch.dll $Env:releasedir
|
||||||
# flutter hasn't worked out it's packaging of required dll's so we have to resort to this manual nonsense
|
# flutter hasn't worked out it's packaging of required dll's so we have to resort to this manual nonsense
|
||||||
# https://github.com/google/flutter-desktop-embedding/issues/587
|
# https://github.com/google/flutter-desktop-embedding/issues/587
|
||||||
# https://github.com/flutter/flutter/issues/53167
|
# https://github.com/flutter/flutter/issues/53167
|
||||||
- copy 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vcruntime140.dll' $Env:releasedir
|
- copy C:\BuildTools\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\vcruntime140.dll $Env:releasedir
|
||||||
- copy 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\vcruntime140_1.dll' $Env:releasedir
|
- copy C:\BuildTools\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\vcruntime140_1.dll $Env:releasedir
|
||||||
- copy 'C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Redist\MSVC\14.36.32532\x64\Microsoft.VC143.CRT\msvcp140.dll' $Env:releasedir
|
- copy C:\BuildTools\VC\Redist\MSVC\14.29.30133\x64\Microsoft.VC142.CRT\msvcp140.dll $Env:releasedir
|
||||||
- copy README.md $Env:releasedir\
|
- copy README.md $Env:releasedir\
|
||||||
- copy windows\*.bat $Env:releasedir\
|
- copy windows\*.bat $Env:releasedir\
|
||||||
- powershell -command "Expand-Archive -Path tor.zip -DestinationPath $Env:releasedir\Tor"
|
- powershell -command "Expand-Archive -Path tor.zip -DestinationPath $Env:releasedir\Tor"
|
||||||
|
@ -265,11 +234,13 @@ steps:
|
||||||
from_secret: pfx_pass
|
from_secret: pfx_pass
|
||||||
commands:
|
commands:
|
||||||
- $Env:version += type .\VERSION
|
- $Env:version += type .\VERSION
|
||||||
- $Env:commitdate += type .\COMMIT_DATE
|
- $Env:builddate += type .\BUILDDATE
|
||||||
- $Env:releasedir = "build\\windows\\x64\\runner\\Release\\"
|
- $Env:releasedir = "build\\windows\\runner\\Release\\"
|
||||||
- $Env:zip = 'cwtch-' + $Env:version + '.zip'
|
- $Env:zip = 'cwtch-' + $Env:version + '.zip'
|
||||||
- $Env:zipsha = $Env:zip + '.sha512.txt'
|
- $Env:zipsha = $Env:zip + '.sha512'
|
||||||
- $Env:buildname = 'flwtch-' + $Env:commitdate + '-' + $Env:version
|
- $Env:msix = 'cwtch-install-' + $Env:version + '.msix'
|
||||||
|
- $Env:msixsha = $Env:msix + '.sha512'
|
||||||
|
- $Env:buildname = 'flwtch-win-' + $Env:builddate + '-' + $Env:version
|
||||||
- $Env:builddir = $Env:buildname
|
- $Env:builddir = $Env:buildname
|
||||||
- echo $Env:pfx > codesign.pfx.b64
|
- echo $Env:pfx > codesign.pfx.b64
|
||||||
- certutil -decode codesign.pfx.b64 codesign.pfx
|
- certutil -decode codesign.pfx.b64 codesign.pfx
|
||||||
|
@ -280,18 +251,18 @@ steps:
|
||||||
- makensis windows\nsis\cwtch-installer.nsi
|
- makensis windows\nsis\cwtch-installer.nsi
|
||||||
- move windows\nsis\cwtch-installer.exe cwtch-installer.exe
|
- move windows\nsis\cwtch-installer.exe cwtch-installer.exe
|
||||||
- signtool sign /v /fd sha256 /a /f codesign.pfx /p $Env:pfx_pass /tr http://timestamp.digicert.com cwtch-installer.exe
|
- signtool sign /v /fd sha256 /a /f codesign.pfx /p $Env:pfx_pass /tr http://timestamp.digicert.com cwtch-installer.exe
|
||||||
- powershell -command "(Get-FileHash cwtch-installer.exe -Algorithm sha512).Hash" > cwtch-installer.sha512.txt
|
- powershell -command "(Get-FileHash cwtch-installer.exe -Algorithm sha512).Hash" > cwtch-installer.sha512
|
||||||
- mkdir deploy
|
- mkdir deploy
|
||||||
- mkdir deploy\$Env:builddir
|
- mkdir deploy\$Env:builddir
|
||||||
- move $Env:releasedir $Env:builddir
|
- move $Env:releasedir $Env:builddir
|
||||||
- powershell -command "Compress-Archive -Path $Env:builddir -DestinationPath cwtch.zip"
|
- powershell -command "Compress-Archive -Path $Env:builddir -DestinationPath cwtch.zip"
|
||||||
- powershell -command "(Get-FileHash cwtch.zip -Algorithm sha512).Hash" > $Env:zipsha
|
- powershell -command "(Get-FileHash cwtch.zip -Algorithm sha512).Hash" > $Env:zipsha
|
||||||
- move cwtch-installer.exe deploy\$Env:builddir\cwtch-installer-$Env:version.exe
|
- move cwtch-installer.exe deploy\$Env:builddir\cwtch-installer.exe
|
||||||
- move cwtch.zip deploy\$Env:builddir\$Env:zip
|
- move cwtch.zip deploy\$Env:builddir\$Env:zip
|
||||||
- move *.sha512.txt deploy\$Env:builddir
|
- move *.sha512 deploy\$Env:builddir
|
||||||
|
|
||||||
- name: deploy-windows
|
- name: deploy-windows
|
||||||
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.19.3
|
image: openpriv/flutter-desktop:windows-sdk30-fstable-3.0.1
|
||||||
when:
|
when:
|
||||||
event: push
|
event: push
|
||||||
status: [ success ]
|
status: [ success ]
|
||||||
|
@ -330,8 +301,7 @@ steps:
|
||||||
commands:
|
commands:
|
||||||
- mkdir ~/.ssh
|
- mkdir ~/.ssh
|
||||||
- echo $buildbot_key_b64 > ~/.ssh/id_rsa.b64
|
- echo $buildbot_key_b64 > ~/.ssh/id_rsa.b64
|
||||||
- ls -lh ~/.ssh/id_rsa.b64
|
- base64 -d ~/.ssh/id_rsa.b64 > ~/.ssh/id_rsa
|
||||||
- base64 -d -i ~/.ssh/id_rsa.b64 -o ~/.ssh/id_rsa
|
|
||||||
- chmod 400 ~/.ssh/id_rsa
|
- chmod 400 ~/.ssh/id_rsa
|
||||||
# force by pass of ssh host key check, less secure
|
# force by pass of ssh host key check, less secure
|
||||||
- ssh-keyscan -H git.openprivacy.ca >> ~/.ssh/known_hosts
|
- ssh-keyscan -H git.openprivacy.ca >> ~/.ssh/known_hosts
|
||||||
|
@ -349,26 +319,24 @@ steps:
|
||||||
commands:
|
commands:
|
||||||
- ./fetch-tor-macos.sh
|
- ./fetch-tor-macos.sh
|
||||||
- echo `git describe --tags --abbrev=1` > VERSION
|
- echo `git describe --tags --abbrev=1` > VERSION
|
||||||
- echo `git log -1 --format=%cd --date=format:%G-%m-%d-%H-%M` > COMMIT_DATE
|
- echo `date +%G-%m-%d-%H-%M` > BUILDDATE
|
||||||
- export PATH=$PATH:/Users/drone/development/flutter/bin
|
- export PATH=$PATH:/Users/Dan/development/flutter/bin
|
||||||
- flutter pub get
|
- flutter pub get
|
||||||
- mkdir deploy
|
- mkdir deploy
|
||||||
- ./fetch-libcwtch-go-macos.sh
|
- ./fetch-libcwtch-go-macos.sh
|
||||||
# Drone builds in container directories and gem seems to have some weird side effects so have to manually re install these locally
|
- gem install --user-install cocoapods
|
||||||
- gem install --user-install ffi -v 1.15.5 -- --enable-libffi-alloc
|
|
||||||
# currently unneeded to reinstall but was, and may be again? so saving
|
|
||||||
#- gem install --user-install cocoapods -v 1.11.3
|
|
||||||
|
|
||||||
- name: build-macos
|
- name: build-macos
|
||||||
commands:
|
commands:
|
||||||
- export PATH=$PATH:/Users/drone/bin/flutter/bin
|
- export PATH=$PATH:/Users/Dan/development/flutter/bin
|
||||||
|
- export GEM_HOME=$HOME/.gem
|
||||||
- export PATH=$GEM_HOME/ruby/2.6.0/bin:$PATH
|
- export PATH=$GEM_HOME/ruby/2.6.0/bin:$PATH
|
||||||
- flutter doctor
|
- flutter config --enable-macos-desktop
|
||||||
- flutter build macos --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat COMMIT_DATE`
|
- flutter build macos --dart-define BUILD_VER=`cat VERSION` --dart-define BUILD_DATE=`cat BUILDDATE`
|
||||||
- export PATH=$PATH:/opt/homebrew/bin/ #create-dmg
|
- export PATH=$PATH:/usr/local/bin #create-dmg
|
||||||
- macos/package-release.sh
|
- macos/package-release.sh
|
||||||
- mkdir -p deploy
|
- mkdir -p deploy
|
||||||
- mv Cwtch.dmg deploy/Cwtch-`cat VERSION`.dmg
|
- mv Cwtch.dmg deploy
|
||||||
|
|
||||||
- name: deploy-buildfiles
|
- name: deploy-buildfiles
|
||||||
environment:
|
environment:
|
||||||
|
@ -379,13 +347,13 @@ steps:
|
||||||
status: [ success ]
|
status: [ success ]
|
||||||
commands:
|
commands:
|
||||||
- echo $BUILDFILES_KEY > ~/id_rsab64
|
- echo $BUILDFILES_KEY > ~/id_rsab64
|
||||||
- base64 -d -i ~/id_rsab64 -o ~/id_rsa
|
- base64 -d ~/id_rsab64 > ~/id_rsa
|
||||||
- chmod 400 ~/id_rsa
|
- chmod 400 ~/id_rsa
|
||||||
- export DIR=flwtch-`cat COMMIT_DATE`-`cat VERSION`
|
- export DIR=flwtch-macos-`cat BUILDDATE`-`cat VERSION`
|
||||||
- mv deploy $DIR
|
- mv deploy $DIR
|
||||||
- cd $DIR
|
- cd $DIR
|
||||||
- find . -type f -exec shasum -a 512 {} \; > ./../Cwtch.dmg.sha512.txt
|
- find . -type f -exec shasum -a 512 {} \; > ./../sha512s.txt
|
||||||
- mv ./../Cwtch.dmg.sha512.txt .
|
- mv ./../sha512s.txt .
|
||||||
- cd ..
|
- cd ..
|
||||||
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa $DIR buildfiles@build.openprivacy.ca:/home/buildfiles/buildfiles/
|
- scp -r -o StrictHostKeyChecking=no -i ~/id_rsa $DIR buildfiles@build.openprivacy.ca:/home/buildfiles/buildfiles/
|
||||||
|
|
||||||
|
|
|
@ -3,16 +3,11 @@
|
||||||
*.log
|
*.log
|
||||||
*.pyc
|
*.pyc
|
||||||
*.swp
|
*.swp
|
||||||
|
.DS_Store
|
||||||
.atom/
|
.atom/
|
||||||
.buildlog/
|
.buildlog/
|
||||||
.history
|
.history
|
||||||
.svn/
|
.svn/
|
||||||
package.json
|
|
||||||
package-lock.json
|
|
||||||
libCwtch*
|
|
||||||
cwtch.aar
|
|
||||||
node_modules
|
|
||||||
test_home
|
|
||||||
|
|
||||||
# IntelliJ related
|
# IntelliJ related
|
||||||
*.iml
|
*.iml
|
||||||
|
@ -35,7 +30,6 @@ test_home
|
||||||
.pub-cache/
|
.pub-cache/
|
||||||
.pub/
|
.pub/
|
||||||
/build/
|
/build/
|
||||||
./lib/gen/
|
|
||||||
|
|
||||||
# Web related
|
# Web related
|
||||||
lib/generated_plugin_registrant.dart
|
lib/generated_plugin_registrant.dart
|
||||||
|
@ -47,30 +41,15 @@ app.*.symbols
|
||||||
app.*.map.json
|
app.*.map.json
|
||||||
|
|
||||||
# Tor
|
# Tor
|
||||||
*data-dir*
|
data-dir*
|
||||||
|
|
||||||
# Test Artificats
|
|
||||||
*.log
|
|
||||||
flutter_gherkin
|
|
||||||
run-tests.env
|
|
||||||
report.json
|
|
||||||
package.
|
|
||||||
|
|
||||||
# Compiled Libs
|
# Compiled Libs
|
||||||
linux/tor
|
linux/tor
|
||||||
linux/libCwtch.so
|
linux/libCwtch.so
|
||||||
android/app/cwtch/cwtch.aar
|
android/cwtch/cwtch.aar
|
||||||
android/app/src/main/jniLibs/*/libtor.so
|
android/app/src/main/jniLibs/*/libtor.so
|
||||||
*.dylib
|
libCwtch.dylib
|
||||||
integration_test/gherkin_suite_test.g.dart
|
|
||||||
integration_test/gherkin_suite_test.dart
|
|
||||||
integration_test/gherkin/
|
|
||||||
integration_test/CustomSteps.md
|
|
||||||
analysis_options.yaml
|
|
||||||
integration_test/env/default/tor
|
|
||||||
integration_test/env/temp*
|
|
||||||
linux/Tor
|
|
||||||
linux/tor.tar.gz
|
|
||||||
|
|
||||||
coverage
|
coverage
|
||||||
test/failures
|
test/failures
|
||||||
|
|
24
.metadata
|
@ -1,30 +1,10 @@
|
||||||
# This file tracks properties of this Flutter project.
|
# This file tracks properties of this Flutter project.
|
||||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||||
#
|
#
|
||||||
# This file should be version controlled.
|
# This file should be version controlled and should not be manually edited.
|
||||||
|
|
||||||
version:
|
version:
|
||||||
revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
|
revision: 78910062997c3a836feee883712c241a5fd22983
|
||||||
channel: stable
|
channel: stable
|
||||||
|
|
||||||
project_type: app
|
project_type: app
|
||||||
|
|
||||||
# Tracks metadata for the flutter migrate command
|
|
||||||
migration:
|
|
||||||
platforms:
|
|
||||||
- platform: root
|
|
||||||
create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
|
|
||||||
base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
|
|
||||||
- platform: macos
|
|
||||||
create_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
|
|
||||||
base_revision: 4d9e56e694b656610ab87fcf2efbcd226e0ed8cf
|
|
||||||
|
|
||||||
# User provided section
|
|
||||||
|
|
||||||
# List of Local paths (relative to this file) that should be
|
|
||||||
# ignored by the migrate tool.
|
|
||||||
#
|
|
||||||
# Files that are not part of the templates will be ignored by default.
|
|
||||||
unmanaged_files:
|
|
||||||
- 'lib/main.dart'
|
|
||||||
- 'ios/Runner.xcodeproj/project.pbxproj'
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
2022-07-22-12-41-v1.8.0-7-g7b3e842
|
|
@ -1 +1 @@
|
||||||
2024-02-26-18-01-v0.0.14
|
2022-07-22-16-41-v1.8.0-7-g7b3e842
|
2
LICENSE
|
@ -1,5 +1,5 @@
|
||||||
MIT License
|
MIT License
|
||||||
Copyright (c) 2021-2024 Open Privacy Research Society
|
Copyright (c) 2021 Open Privacy Research Society
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
# NSIS Notes
|
|
||||||
|
|
||||||
## Images
|
|
||||||
|
|
||||||
Requires Windows 3 Compatible Bitmaps.
|
|
||||||
|
|
||||||
Can convert to the correct format with e.g. `mogrify -compress none -format bmp3 windows/nsis/cwtch_title.bmp
|
|
||||||
`
|
|
15
README.md
|
@ -21,13 +21,6 @@ Cwtch processes the following environment variables:
|
||||||
- `LOG_FILE=` will reroute all of libcwtch-go's logging to the specified file instead of the console
|
- `LOG_FILE=` will reroute all of libcwtch-go's logging to the specified file instead of the console
|
||||||
- `LOG_LEVEL=debug` will set the log level to debug instead of info
|
- `LOG_LEVEL=debug` will set the log level to debug instead of info
|
||||||
|
|
||||||
## Running Tests
|
|
||||||
|
|
||||||
You can run specific tests with `./run-tests-headless.sh`. See also the `.drone.yml` file for information on the specific tests that run.1
|
|
||||||
|
|
||||||
The gherkin test framework will occasionally fail silently with incomplete test. This is usually because a previous run resulted in an exception and the underlying Tor
|
|
||||||
process was not cleaned up (See #711).
|
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
### Getting Started
|
### Getting Started
|
||||||
|
@ -71,14 +64,10 @@ To build a release version and load normal profiles, use `build-release.sh X` in
|
||||||
|
|
||||||
### Building on MacOS
|
### Building on MacOS
|
||||||
|
|
||||||
- Cocoapods is required. Mac and Ruby don't seem to care about version stability and compatibility so good luck. The version of Ruby Mac seems to ship is very incompatible with software in the gem repo. You will probablly need to manually specify a specific older version of cocoapods that is compatible with your system. First you will also probably need to make sure you are on the latest MacOS version and then try `gem install cocoapods -v 1.x.x`
|
- Cocaopods is required, you may need to `gem install cocaopods -v 1.9.3`
|
||||||
- For MacOS 13.4 `gem install cocoapods -v 1.11.3` worked on 2023.05.28
|
- copy `libCwtch.x64.dylib` and `libCwtch.arm/dylib` into the root folder, or run `fetch-libcwtch-go-macos.sh` to download it
|
||||||
- copy `libCwtch.x64.dylib` and `libCwtch.arm.dylib` into the root folder, or run `fetch-libcwtch-go-macos.sh` to download it
|
|
||||||
- The error 'Podfile not found' has still been seen on fresh repos, depending on varios versions. To fix run `flutter create --platforms=macos . --org im.cwtch`
|
|
||||||
- You may have to temporarily rename the project folder a "dart project suitable name" like "cwtch"
|
|
||||||
- run `fetch-tor-macos.sh` to fetch Tor or Download and install Tor Browser and `cp -r /Applications/Tor\ Browser.app/Contents/MacOS/Tor ./macos/`
|
- run `fetch-tor-macos.sh` to fetch Tor or Download and install Tor Browser and `cp -r /Applications/Tor\ Browser.app/Contents/MacOS/Tor ./macos/`
|
||||||
- `flutter build macos`
|
- `flutter build macos`
|
||||||
- If you are building on Mac Arm Silicon you may need to append `--no-tree-shake-icons` as the build seems to invoke a mac x64 binary that Arm Mac "cannot verify" and therefor will not run on some versions of Flutter
|
|
||||||
- optional: launch cwtch-ui release build with `./build/macos/Build/Products/Release/Cwtch.app/Contents/MacOS/Cwtch`
|
- optional: launch cwtch-ui release build with `./build/macos/Build/Products/Release/Cwtch.app/Contents/MacOS/Cwtch`
|
||||||
- To package the UI: `./macos/package-release.sh`, which results in a Cwtch.dmg that has libCwtch.dylib and tor in it as well and can be installed into Applications
|
- To package the UI: `./macos/package-release.sh`, which results in a Cwtch.dmg that has libCwtch.dylib and tor in it as well and can be installed into Applications
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,3 @@
|
||||||
plugins {
|
|
||||||
id "com.android.application"
|
|
||||||
id "kotlin-android"
|
|
||||||
id "dev.flutter.flutter-gradle-plugin"
|
|
||||||
}
|
|
||||||
|
|
||||||
def localProperties = new Properties()
|
def localProperties = new Properties()
|
||||||
def localPropertiesFile = rootProject.file('local.properties')
|
def localPropertiesFile = rootProject.file('local.properties')
|
||||||
if (localPropertiesFile.exists()) {
|
if (localPropertiesFile.exists()) {
|
||||||
|
@ -12,6 +6,11 @@ if (localPropertiesFile.exists()) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||||
|
if (flutterRoot == null) {
|
||||||
|
throw new FileNotFoundException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||||
|
}
|
||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||||
if (flutterVersionCode == null) {
|
if (flutterVersionCode == null) {
|
||||||
flutterVersionCode = '1'
|
flutterVersionCode = '1'
|
||||||
|
@ -22,6 +21,10 @@ if (flutterVersionName == null) {
|
||||||
flutterVersionName = '1.0'
|
flutterVersionName = '1.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply plugin: 'com.android.application'
|
||||||
|
apply plugin: 'kotlin-android'
|
||||||
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
// key.properties MUST have password placeholders filled in (via drone with secrets) and cwtch-upload.jks file must be added (from drone secret)
|
// key.properties MUST have password placeholders filled in (via drone with secrets) and cwtch-upload.jks file must be added (from drone secret)
|
||||||
def keystoreProperties = new Properties()
|
def keystoreProperties = new Properties()
|
||||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||||
|
@ -30,7 +33,7 @@ if (keystorePropertiesFile.exists()) {
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 34
|
compileSdkVersion 31
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
main.java.srcDirs += 'src/main/kotlin'
|
||||||
|
@ -39,23 +42,15 @@ android {
|
||||||
|
|
||||||
lintOptions {
|
lintOptions {
|
||||||
disable 'InvalidPackage'
|
disable 'InvalidPackage'
|
||||||
|
|
||||||
// For some reason we get Error: LottieAnimationView must extend android.view.View
|
|
||||||
// Given the newer gradle build...I'm not sure why, but it does impact functionality at all
|
|
||||||
// there is no information about this error and the command output suggests including the
|
|
||||||
// following:
|
|
||||||
abortOnError false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||||
applicationId "im.cwtch.flwtch"
|
applicationId "im.cwtch.flwtch"
|
||||||
minSdkVersion 19
|
minSdkVersion 16
|
||||||
targetSdkVersion 34
|
targetSdkVersion 31
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
versionName flutterVersionName
|
versionName flutterVersionName
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
||||||
multiDexEnabled true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
|
@ -90,21 +85,14 @@ flutter {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.21" // same as kotlin version in settings.gradle
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
implementation fileTree( dir: 'cwtch')
|
implementation project(':cwtch')
|
||||||
implementation files ('cwtch/cwtch.aar')
|
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2"
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2"
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2"
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2"
|
||||||
|
implementation "com.airbnb.android:lottie:4.2.1"
|
||||||
implementation "androidx.localbroadcastmanager:localbroadcastmanager:1.0.0"
|
implementation "androidx.localbroadcastmanager:localbroadcastmanager:1.0.0"
|
||||||
implementation "com.android.support.constraint:constraint-layout:2.0.4"
|
implementation "com.android.support.constraint:constraint-layout:2.0.4"
|
||||||
|
|
||||||
// Test Dependencies
|
|
||||||
testImplementation 'junit:junit:4.12'
|
|
||||||
|
|
||||||
// https://developer.android.com/jetpack/androidx/releases/test/#1.2.0
|
|
||||||
androidTestImplementation 'androidx.test:runner:1.2.0'
|
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
|
|
||||||
|
|
||||||
// WorkManager
|
// WorkManager
|
||||||
|
|
||||||
// (Java only)
|
// (Java only)
|
||||||
|
@ -132,5 +120,5 @@ dependencies {
|
||||||
|
|
||||||
// needed to prevent a ListenableFuture dependency conflict/bug
|
// needed to prevent a ListenableFuture dependency conflict/bug
|
||||||
// see https://github.com/google/ExoPlayer/issues/7905#issuecomment-692637059
|
// see https://github.com/google/ExoPlayer/issues/7905#issuecomment-692637059
|
||||||
implementation "com.google.guava:guava:31.0.1-android"
|
implementation 'com.google.guava:guava:any'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
package im.cwtch.flwtch;
|
|
||||||
|
|
||||||
import androidx.test.rule.ActivityTestRule;
|
|
||||||
import dev.flutter.plugins.integration_test.FlutterTestRunner;
|
|
||||||
import org.junit.Rule;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
@RunWith(FlutterTestRunner.class)
|
|
||||||
public class MainActivityTest {
|
|
||||||
@Rule
|
|
||||||
public ActivityTestRule<MainActivity> rule = new ActivityTestRule<>(MainActivity.class, true, false);
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="im.cwtch.flwtch">
|
package="im.cwtch.flwtch">
|
||||||
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
|
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
|
||||||
calls FlutterMain.startInitialization(this); in its onCreate method.
|
calls FlutterMain.startInitialization(this); in its onCreate method.
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
android:theme="@style/LaunchTheme"
|
android:theme="@style/NormalTheme"
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
android:windowSoftInputMode="adjustResize"
|
android:windowSoftInputMode="adjustResize"
|
||||||
|
@ -38,30 +38,22 @@
|
||||||
android:name="flutterEmbedding"
|
android:name="flutterEmbedding"
|
||||||
android:value="2" />
|
android:value="2" />
|
||||||
|
|
||||||
<!--Needed to run in background (lol)-->
|
|
||||||
<service
|
|
||||||
android:name="androidx.work.impl.foreground.SystemForegroundService"
|
|
||||||
android:foregroundServiceType="dataSync"
|
|
||||||
tools:node="merge" />
|
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
<!--Needed to access Tor socket-->
|
<!--Needed to access Tor socket-->
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
<!-- Needed for running in the background -->
|
<!--Needed to run in background (lol)-->
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
<!-- As of Android 13 this permission is required -->
|
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
|
||||||
|
|
||||||
<!-- Ability to ask user to exempt app from power management (which can kill it more frequently especially on some devices.
|
<!-- Ability to ask user to exempt app from power management (which can kill it more frequently especially on some devices.
|
||||||
Allows app to use ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS -->
|
Allows app to use ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS -->
|
||||||
<uses-permission-sdk-23 android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
<uses-permission-sdk-23 android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||||
|
|
||||||
|
<!-- TODO when we support sdk 31
|
||||||
<uses-permission-sdk-23 android:name="android.permission.HIDE_OVERLAY_WINDOWS" />
|
<uses-permission-sdk-23 android:name="android.permission.HIDE_OVERLAY_WINDOWS" />
|
||||||
|
-->
|
||||||
|
|
||||||
<!--Needed to check if activity is foregrounded or if messages from the service should be queued-->
|
<!--Needed to check if activity is foregrounded or if messages from the service should be queued-->
|
||||||
<uses-permission android:name="android.permission.GET_TASKS" />
|
<uses-permission android:name="android.permission.GET_TASKS" />
|
||||||
|
|
|
@ -11,7 +11,6 @@ import android.graphics.Color
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.content.pm.ServiceInfo
|
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
|
@ -23,13 +22,6 @@ import io.flutter.FlutterInjector
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.io.FileInputStream
|
|
||||||
|
|
||||||
|
|
||||||
import java.io.File
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
||||||
CoroutineWorker(context, parameters) {
|
CoroutineWorker(context, parameters) {
|
||||||
|
@ -92,7 +84,6 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
||||||
|
|
||||||
Log.i(TAG, "startCwtch success, starting coroutine AppbusEvent loop...")
|
Log.i(TAG, "startCwtch success, starting coroutine AppbusEvent loop...")
|
||||||
val downloadIDs = mutableMapOf<String, Int>()
|
val downloadIDs = mutableMapOf<String, Int>()
|
||||||
val downloadFinishedIDs = mutableMapOf<String, Int>()
|
|
||||||
var flags = PendingIntent.FLAG_UPDATE_CURRENT
|
var flags = PendingIntent.FLAG_UPDATE_CURRENT
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
flags = flags or PendingIntent.FLAG_IMMUTABLE
|
flags = flags or PendingIntent.FLAG_IMMUTABLE
|
||||||
|
@ -101,6 +92,7 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
||||||
try {
|
try {
|
||||||
val evt = MainActivity.AppbusEvent(Cwtch.getAppBusEvent())
|
val evt = MainActivity.AppbusEvent(Cwtch.getAppBusEvent())
|
||||||
// TODO replace this notification block with the NixNotification manager in dart as it has access to contact names and also needs less working around
|
// TODO replace this notification block with the NixNotification manager in dart as it has access to contact names and also needs less working around
|
||||||
|
|
||||||
if (evt.EventType == "NewMessageFromPeer" || evt.EventType == "NewMessageFromGroup") {
|
if (evt.EventType == "NewMessageFromPeer" || evt.EventType == "NewMessageFromGroup") {
|
||||||
val data = JSONObject(evt.Data)
|
val data = JSONObject(evt.Data)
|
||||||
val handle = data.getString("RemotePeer");
|
val handle = data.getString("RemotePeer");
|
||||||
|
@ -145,19 +137,7 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
||||||
Log.i(TAG, "notification for " + evt.EventType + " " + handle + " " + conversationId + " " + channelId)
|
Log.i(TAG, "notification for " + evt.EventType + " " + handle + " " + conversationId + " " + channelId)
|
||||||
Log.i(TAG, data.toString());
|
Log.i(TAG, data.toString());
|
||||||
val key = loader.getLookupKeyForAsset(data.getString("picture"))//"assets/profiles/001-centaur.png")
|
val key = loader.getLookupKeyForAsset(data.getString("picture"))//"assets/profiles/001-centaur.png")
|
||||||
var fh : java.io.InputStream? = null;
|
val fh = applicationContext.assets.open(key)
|
||||||
try {
|
|
||||||
fh = applicationContext.assets.open(key)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
Log.d("FlwtchWorker->ContactInfo", e.toString() + " :: " + e.getStackTrace());
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
val file = File(data.getString("picture"))
|
|
||||||
fh = FileInputStream(file)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
Log.d("FlwtchWorker->ContactInfo", e.toString() + " :: " + e.getStackTrace());
|
|
||||||
}
|
|
||||||
|
|
||||||
val clickIntent = Intent(applicationContext, MainActivity::class.java).also { intent ->
|
val clickIntent = Intent(applicationContext, MainActivity::class.java).also { intent ->
|
||||||
intent.action = Intent.ACTION_RUN
|
intent.action = Intent.ACTION_RUN
|
||||||
|
@ -165,21 +145,18 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
||||||
intent.putExtra("ProfileOnion", data.getString("ProfileOnion"))
|
intent.putExtra("ProfileOnion", data.getString("ProfileOnion"))
|
||||||
intent.putExtra("Handle", handle)
|
intent.putExtra("Handle", handle)
|
||||||
}
|
}
|
||||||
val image : android.graphics.Bitmap? = if (fh != null) BitmapFactory.decodeStream(fh ) else null;
|
|
||||||
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
|
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
|
||||||
.setContentTitle(data.getString("Nick"))
|
.setContentTitle(data.getString("Nick"))
|
||||||
.setContentText((notificationConversationInfo
|
.setContentText((notificationConversationInfo
|
||||||
?: "New Message From %1").replace("%1", data.getString("Nick")))
|
?: "New Message From %1").replace("%1", data.getString("Nick")))
|
||||||
.setLargeIcon(image)
|
.setLargeIcon(BitmapFactory.decodeStream(fh))
|
||||||
.setSmallIcon(R.mipmap.knott_transparent)
|
.setSmallIcon(R.mipmap.knott_transparent)
|
||||||
.setContentIntent(PendingIntent.getActivity(applicationContext, 1, clickIntent, flags))
|
.setContentIntent(PendingIntent.getActivity(applicationContext, 1, clickIntent, flags))
|
||||||
.setAutoCancel(true)
|
.setAutoCancel(true)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
notificationManager.notify(getNotificationID(data.getString("ProfileOnion"), channelId), newNotification)
|
notificationManager.notify(getNotificationID(data.getString("ProfileOnion"), channelId), newNotification)
|
||||||
if (fh != null) {
|
|
||||||
fh.close()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -190,36 +167,32 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
||||||
val title = data.getString("NameSuggestion");
|
val title = data.getString("NameSuggestion");
|
||||||
val progress = data.getString("Progress").toInt();
|
val progress = data.getString("Progress").toInt();
|
||||||
val progressMax = data.getString("FileSizeInChunks").toInt();
|
val progressMax = data.getString("FileSizeInChunks").toInt();
|
||||||
|
if (!downloadIDs.containsKey(fileKey)) {
|
||||||
// if we have seen a download finished update for this key then ignore it
|
downloadIDs.put(fileKey, downloadIDs.count());
|
||||||
if (!downloadFinishedIDs.containsKey(fileKey)) {
|
}
|
||||||
if (!downloadIDs.containsKey(fileKey)) {
|
var dlID = downloadIDs.get(fileKey);
|
||||||
downloadIDs.put(fileKey, downloadIDs.count());
|
if (dlID == null) {
|
||||||
}
|
dlID = 0;
|
||||||
var dlID = downloadIDs.get(fileKey);
|
}
|
||||||
if (dlID == null) {
|
if (progress >= 0) {
|
||||||
dlID = 0;
|
val channelId =
|
||||||
}
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
if (progress >= 0) {
|
createDownloadNotificationChannel(fileKey, fileKey)
|
||||||
val channelId =
|
} else {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
// If earlier version channel ID is not used
|
||||||
createDownloadNotificationChannel(fileKey, fileKey)
|
// https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#NotificationCompat.Builder(android.content.Context)
|
||||||
} else {
|
""
|
||||||
// If earlier version channel ID is not used
|
};
|
||||||
// https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#NotificationCompat.Builder(android.content.Context)
|
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
|
||||||
""
|
.setOngoing(true)
|
||||||
};
|
.setContentTitle("Downloading")//todo: translate
|
||||||
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
|
.setContentText(title)
|
||||||
.setOngoing(true)
|
.setSmallIcon(android.R.drawable.stat_sys_download)
|
||||||
.setContentTitle("Downloading")//todo: translate
|
.setProgress(progressMax, progress, false)
|
||||||
.setContentText(title)
|
.setSound(null)
|
||||||
.setSmallIcon(android.R.drawable.stat_sys_download)
|
//.setSilent(true)
|
||||||
.setProgress(progressMax, progress, false)
|
.build();
|
||||||
.setSound(null)
|
notificationManager.notify(dlID, newNotification);
|
||||||
//.setSilent(true)
|
|
||||||
.build();
|
|
||||||
notificationManager.notify(dlID, newNotification);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.d("FlwtchWorker->FileDownloadProgressUpdate", e.toString() + " :: " + e.getStackTrace());
|
Log.d("FlwtchWorker->FileDownloadProgressUpdate", e.toString() + " :: " + e.getStackTrace());
|
||||||
|
@ -243,8 +216,6 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
||||||
Files.delete(sourcePath);
|
Files.delete(sourcePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Suppress future notifications...
|
|
||||||
downloadFinishedIDs.put(fileKey, downloadIDs.count());
|
|
||||||
if (downloadIDs.containsKey(fileKey)) {
|
if (downloadIDs.containsKey(fileKey)) {
|
||||||
notificationManager.cancel(downloadIDs.get(fileKey) ?: 0);
|
notificationManager.cancel(downloadIDs.get(fileKey) ?: 0);
|
||||||
}
|
}
|
||||||
|
@ -315,7 +286,7 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
||||||
.addAction(android.R.drawable.ic_delete, cancel, PendingIntent.getActivity(applicationContext, 2, cancelIntent, flags))
|
.addAction(android.R.drawable.ic_delete, cancel, PendingIntent.getActivity(applicationContext, 2, cancelIntent, flags))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
return ForegroundInfo(101, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC)
|
return ForegroundInfo(101, notification)
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.O)
|
@RequiresApi(Build.VERSION_CODES.O)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package im.cwtch.flwtch
|
package im.cwtch.flwtch
|
||||||
|
|
||||||
|
import SplashView
|
||||||
import android.annotation.TargetApi
|
import android.annotation.TargetApi
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
@ -18,6 +19,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
import androidx.work.*
|
import androidx.work.*
|
||||||
import cwtch.Cwtch
|
import cwtch.Cwtch
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
|
import io.flutter.embedding.android.SplashScreen
|
||||||
import io.flutter.embedding.engine.FlutterEngine
|
import io.flutter.embedding.engine.FlutterEngine
|
||||||
import io.flutter.plugin.common.ErrorLogResult
|
import io.flutter.plugin.common.ErrorLogResult
|
||||||
import io.flutter.plugin.common.MethodCall
|
import io.flutter.plugin.common.MethodCall
|
||||||
|
@ -27,14 +29,15 @@ import org.json.JSONObject
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import kotlinx.coroutines.*
|
|
||||||
|
|
||||||
class MainActivity: FlutterActivity() {
|
class MainActivity: FlutterActivity() {
|
||||||
|
override fun provideSplashScreen(): SplashScreen? = SplashView()
|
||||||
|
|
||||||
|
|
||||||
// Channel to get app info
|
// Channel to get app info
|
||||||
private val CHANNEL_APP_INFO = "test.flutter.dev/applicationInfo"
|
private val CHANNEL_APP_INFO = "test.flutter.dev/applicationInfo"
|
||||||
private val CALL_APP_INFO = "getNativeLibDir"
|
private val CALL_APP_INFO = "getNativeLibDir"
|
||||||
private val CALL_SERVICE_INFO = "getForegroundServiceInfo"
|
|
||||||
private val ANDROID_SETTINGS_CHANNEL_NAME = "androidSettings"
|
private val ANDROID_SETTINGS_CHANNEL_NAME = "androidSettings"
|
||||||
private val ANDROID_SETTINGS_CHANGE_NAME= "androidSettingsChanged"
|
private val ANDROID_SETTINGS_CHANGE_NAME= "androidSettingsChanged"
|
||||||
private var andoidSettingsChangeChannel: MethodChannel? = null
|
private var andoidSettingsChangeChannel: MethodChannel? = null
|
||||||
|
@ -65,8 +68,7 @@ class MainActivity: FlutterActivity() {
|
||||||
private val PROFILE_EXPORT_REQUEST_CODE = 236
|
private val PROFILE_EXPORT_REQUEST_CODE = 236
|
||||||
private val REQUEST_DOZE_WHITELISTING_CODE:Int = 9
|
private val REQUEST_DOZE_WHITELISTING_CODE:Int = 9
|
||||||
private var dlToProfile = ""
|
private var dlToProfile = ""
|
||||||
private var dlManifestPath = ""
|
private var dlToHandle = ""
|
||||||
private var dlToHandle = 0
|
|
||||||
private var dlToFileKey = ""
|
private var dlToFileKey = ""
|
||||||
private var exportFromPath = ""
|
private var exportFromPath = ""
|
||||||
|
|
||||||
|
@ -125,45 +127,39 @@ class MainActivity: FlutterActivity() {
|
||||||
|
|
||||||
if (requestCode == FILEPICKER_REQUEST_CODE) {
|
if (requestCode == FILEPICKER_REQUEST_CODE) {
|
||||||
val filePath = intent!!.getData().toString();
|
val filePath = intent!!.getData().toString();
|
||||||
Log.d("MainActivity:FILEPICKER_REQUEST_CODE", "DownloadableFileCreated");
|
val manifestPath = StringBuilder().append(this.applicationContext.cacheDir).append("/").append(this.dlToFileKey).toString();
|
||||||
handleCwtch(MethodCall("DownloadFile", mapOf(
|
handleCwtch(MethodCall("DownloadFile", mapOf(
|
||||||
"ProfileOnion" to this.dlToProfile,
|
"ProfileOnion" to this.dlToProfile,
|
||||||
"conversation" to this.dlToHandle.toInt(),
|
"handle" to this.dlToHandle,
|
||||||
"filepath" to filePath,
|
"filepath" to filePath,
|
||||||
"manifestpath" to this.dlManifestPath,
|
"manifestpath" to manifestPath,
|
||||||
"filekey" to this.dlToFileKey
|
"filekey" to this.dlToFileKey
|
||||||
)), ErrorLogResult(""));//placeholder; this Result is never actually invoked
|
)), ErrorLogResult(""));//placeholder; this Result is never actually invoked
|
||||||
} else if (requestCode == PREVIEW_EXPORT_REQUEST_CODE) {
|
} else if (requestCode == PREVIEW_EXPORT_REQUEST_CODE) {
|
||||||
try {
|
val targetPath = intent!!.getData().toString()
|
||||||
val sourcePath = Paths.get(this.exportFromPath);
|
val sourcePath = Paths.get(this.exportFromPath);
|
||||||
val targetUri = intent!!.getData();
|
val targetUri = Uri.parse(targetPath);
|
||||||
val os = this.applicationContext.getContentResolver().openOutputStream(targetUri!!);
|
val os = this.applicationContext.getContentResolver().openOutputStream(targetUri);
|
||||||
val bytesWritten = Files.copy(sourcePath, os);
|
val bytesWritten = Files.copy(sourcePath, os);
|
||||||
Log.d("MainActivity:PREVIEW_EXPORT", "copied " + bytesWritten.toString() + " bytes");
|
Log.d("MainActivity:PREVIEW_EXPORT", "copied " + bytesWritten.toString() + " bytes");
|
||||||
if (bytesWritten != 0L) {
|
if (bytesWritten != 0L) {
|
||||||
os?.flush();
|
os?.flush();
|
||||||
os?.close();
|
os?.close();
|
||||||
//Files.delete(sourcePath);
|
//Files.delete(sourcePath);
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
|
||||||
Log.d("MainActivity:PREVIEW_EXPORT FAILED", e.toString());
|
|
||||||
}
|
}
|
||||||
} else if (requestCode == PROFILE_EXPORT_REQUEST_CODE ) {
|
} else if (requestCode == PROFILE_EXPORT_REQUEST_CODE ) {
|
||||||
|
val targetPath = intent!!.getData().toString()
|
||||||
val srcFile = StringBuilder().append(this.applicationContext.cacheDir).append("/").append(this.exportFromPath).toString();
|
val srcFile = StringBuilder().append(this.applicationContext.cacheDir).append("/").append(this.exportFromPath).toString();
|
||||||
Log.i("MainActivity:EXPORT_PROFILE", "exporting profile: " + srcFile);
|
Log.i("MainActivity:PREVIEW_EXPORT", "exporting previewed file " + srcFile);
|
||||||
try {
|
val sourcePath = Paths.get(srcFile);
|
||||||
val sourcePath = Paths.get(srcFile);
|
val targetUri = Uri.parse(targetPath);
|
||||||
val targetUri = intent!!.getData();
|
val os = this.applicationContext.getContentResolver().openOutputStream(targetUri);
|
||||||
val os = this.applicationContext.getContentResolver().openOutputStream(targetUri!!);
|
val bytesWritten = Files.copy(sourcePath, os);
|
||||||
val bytesWritten = Files.copy(sourcePath, os);
|
Log.d("MainActivity:PREVIEW_EXPORT", "copied " + bytesWritten.toString() + " bytes");
|
||||||
Log.d("MainActivity:EXPORT_PROFILE", "copied " + bytesWritten.toString() + " bytes");
|
if (bytesWritten != 0L) {
|
||||||
if (bytesWritten != 0L) {
|
os?.flush();
|
||||||
os?.flush();
|
os?.close();
|
||||||
os?.close();
|
//Files.delete(sourcePath);
|
||||||
//Files.delete(sourcePath);
|
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
|
||||||
Log.d("MainActivity:EXPORT_PROFILE FAILED", e.toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -186,9 +182,7 @@ class MainActivity: FlutterActivity() {
|
||||||
when (call.method) {
|
when (call.method) {
|
||||||
CALL_APP_INFO -> result.success(getNativeLibDir())
|
CALL_APP_INFO -> result.success(getNativeLibDir())
|
||||||
?: result.error("Unavailable", "nativeLibDir not available", null);
|
?: result.error("Unavailable", "nativeLibDir not available", null);
|
||||||
CALL_SERVICE_INFO -> result.success(getForegroundServiceInfo())
|
else -> result.notImplemented()
|
||||||
?: result.error("Unavailable", "getForegroundServiceInfo not available", null);
|
|
||||||
else -> result.notImplemented()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,35 +217,16 @@ class MainActivity: FlutterActivity() {
|
||||||
return ainfo.nativeLibraryDir
|
return ainfo.nativeLibraryDir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun getForegroundServiceInfo(): HashMap<String,String> {
|
|
||||||
var hashMap : HashMap<String, String>
|
|
||||||
= HashMap<String, String> ();
|
|
||||||
val workmanager = WorkManager.getInstance(this);
|
|
||||||
if (workmanager != null) {
|
|
||||||
runBlocking {
|
|
||||||
var lastCancelAllTime = workmanager.getLastCancelAllTimeMillis().await();
|
|
||||||
hashMap.put("workmanager.lastCancelAllTime", lastCancelAllTime.toString());
|
|
||||||
}
|
|
||||||
val works = workmanager.getWorkInfosByTag(WORKER_TAG).get()
|
|
||||||
for (workInfo in works) {
|
|
||||||
hashMap.put("workmanager.${workInfo.id}.state", workInfo.state.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return hashMap
|
|
||||||
}
|
|
||||||
|
|
||||||
// receives messages from the ForegroundService (which provides, ironically enough, the backend)
|
// receives messages from the ForegroundService (which provides, ironically enough, the backend)
|
||||||
private fun handleCwtch(@NonNull call: MethodCall, @NonNull result: Result) {
|
private fun handleCwtch(@NonNull call: MethodCall, @NonNull result: Result) {
|
||||||
var method = call.method
|
var method = call.method
|
||||||
// todo change usage patern to match that in FlwtchWorker
|
// todo change usage patern to match that in FlwtchWorker
|
||||||
// Unsafe for anything using int args, causes access time attempt to cast to string which will fail
|
// Unsafe for anything using int args, causes access time attempt to cast to string which will fail
|
||||||
val argmap: Map<String, String> = call.arguments as Map<String,String>
|
val argmap: Map<String, String> = call.arguments as Map<String, String>
|
||||||
|
|
||||||
// the frontend calls Start every time it fires up, but we don't want to *actually* call Cwtch.Start()
|
// the frontend calls Start every time it fires up, but we don't want to *actually* call Cwtch.Start()
|
||||||
// in case the ForegroundService is still running. in both cases, however, we *do* want to re-register
|
// in case the ForegroundService is still running. in both cases, however, we *do* want to re-register
|
||||||
// the eventbus listener.
|
// the eventbus listener.
|
||||||
|
|
||||||
when (call.method) {
|
when (call.method) {
|
||||||
"Start" -> {
|
"Start" -> {
|
||||||
val uniqueTag = argmap["torPath"] ?: "nullEventBus"
|
val uniqueTag = argmap["torPath"] ?: "nullEventBus"
|
||||||
|
@ -274,8 +249,7 @@ class MainActivity: FlutterActivity() {
|
||||||
}
|
}
|
||||||
"CreateDownloadableFile" -> {
|
"CreateDownloadableFile" -> {
|
||||||
this.dlToProfile = argmap["ProfileOnion"] ?: ""
|
this.dlToProfile = argmap["ProfileOnion"] ?: ""
|
||||||
this.dlToHandle = call.argument("conversation")!!
|
this.dlToHandle = argmap["handle"] ?: ""
|
||||||
this.dlManifestPath = argmap["manifestpath"] ?: ""
|
|
||||||
val suggestedName = argmap["filename"] ?: "filename.ext"
|
val suggestedName = argmap["filename"] ?: "filename.ext"
|
||||||
this.dlToFileKey = argmap["filekey"] ?: ""
|
this.dlToFileKey = argmap["filekey"] ?: ""
|
||||||
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
|
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
|
||||||
|
@ -306,12 +280,6 @@ class MainActivity: FlutterActivity() {
|
||||||
startActivityForResult(intent, PREVIEW_EXPORT_REQUEST_CODE)
|
startActivityForResult(intent, PREVIEW_EXPORT_REQUEST_CODE)
|
||||||
}
|
}
|
||||||
"ExportProfile" -> {
|
"ExportProfile" -> {
|
||||||
|
|
||||||
val profileOnion: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
val file: String = StringBuilder().append(this.applicationContext.cacheDir).append("/").append(call.argument("file") ?: "").toString()
|
|
||||||
Log.i("FlwtchWorker", "constructing exported file " + file);
|
|
||||||
Cwtch.exportProfile(profileOnion,file)
|
|
||||||
|
|
||||||
this.exportFromPath = argmap["file"] ?: ""
|
this.exportFromPath = argmap["file"] ?: ""
|
||||||
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
|
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
|
||||||
addCategory(Intent.CATEGORY_OPENABLE)
|
addCategory(Intent.CATEGORY_OPENABLE)
|
||||||
|
@ -327,9 +295,8 @@ class MainActivity: FlutterActivity() {
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
val indexI: Int = call.argument("index") ?: 0
|
val indexI: Int = call.argument("index") ?: 0
|
||||||
val count: Int = call.argument("count") ?: 1
|
val count: Int = call.argument("count") ?: 1
|
||||||
val ucount : Int = maxOf(1, count) // don't allow negative counts
|
|
||||||
|
|
||||||
result.success(Cwtch.getMessages(profile, conversation.toLong(), indexI.toLong(), ucount.toLong()))
|
result.success(Cwtch.getMessages(profile, conversation.toLong(), indexI.toLong(), count.toLong()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
"SendMessage" -> {
|
"SendMessage" -> {
|
||||||
|
@ -343,7 +310,7 @@ class MainActivity: FlutterActivity() {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
val target: Int = call.argument("target") ?: 0
|
val target: Int = call.argument("target") ?: 0
|
||||||
result.success(Cwtch.sendInviteMessage(profile, conversation.toLong(), target.toLong()))
|
result.success(Cwtch.sendInvitation(profile, conversation.toLong(), target.toLong()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,76 +329,29 @@ class MainActivity: FlutterActivity() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
"RestartFileShare" -> {
|
"RestartSharing" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val filepath: String = call.argument("filekey") ?: ""
|
val filepath: String = call.argument("filekey") ?: ""
|
||||||
result.success(Cwtch.restartFileShare(profile, filepath))
|
result.success(Cwtch.restartSharing(profile, filepath))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
"StopSharing" -> {
|
"StopSharing" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val filepath: String = call.argument("filekey") ?: ""
|
val filepath: String = call.argument("filekey") ?: ""
|
||||||
result.success(Cwtch.stopFileShare(profile, filepath))
|
result.success(Cwtch.stopSharing(profile, filepath))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
"DeleteServerInfo" -> {
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
val handle: String = call.argument("handle") ?: ""
|
|
||||||
result.success(Cwtch.deleteServerInfo(profile, handle))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
"PublishServerUpdate" -> {
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
result.success(Cwtch.publishServerUpdate(profile))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
"PeerWithOnion" -> {
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
val onion: String = call.argument("onion") ?: ""
|
|
||||||
Cwtch.peerWithOnion(profile, onion)
|
|
||||||
}
|
|
||||||
"QueueJoinServer" -> {
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
val onion: String = call.argument("onion") ?: ""
|
|
||||||
Cwtch.peerWithOnion(profile, onion)
|
|
||||||
}
|
|
||||||
"DisconnectFromPeer" -> {
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
val onion: String = call.argument("onion") ?: ""
|
|
||||||
Cwtch.peerWithOnion(profile, onion)
|
|
||||||
}
|
|
||||||
"DisconnectFromServer" -> {
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
val onion: String = call.argument("onion") ?: ""
|
|
||||||
Cwtch.peerWithOnion(profile, onion)
|
|
||||||
}
|
|
||||||
"CreateProfile" -> {
|
"CreateProfile" -> {
|
||||||
val nick: String = call.argument("nick") ?: ""
|
val nick: String = call.argument("nick") ?: ""
|
||||||
val pass: String = call.argument("pass") ?: ""
|
val pass: String = call.argument("pass") ?: ""
|
||||||
val autostart: Boolean = call.argument("autostart") ?: true
|
Cwtch.createProfile(nick, pass)
|
||||||
Cwtch.createProfile(nick, pass, autostart)
|
|
||||||
}
|
}
|
||||||
"LoadProfiles" -> {
|
"LoadProfiles" -> {
|
||||||
val pass: String = call.argument("pass") ?: ""
|
val pass: String = call.argument("pass") ?: ""
|
||||||
Cwtch.loadProfiles(pass)
|
Cwtch.loadProfiles(pass)
|
||||||
}
|
}
|
||||||
"ActivatePeerEngine" -> {
|
|
||||||
val profile: String = call.argument("profile") ?: ""
|
|
||||||
Cwtch.activatePeerEngine(profile)
|
|
||||||
}
|
|
||||||
"ConfigureConnections" -> {
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
val listen: Boolean = call.argument("listen") ?: false
|
|
||||||
val peers: Boolean = call.argument("peers") ?: false
|
|
||||||
val servers: Boolean = call.argument("servers") ?: false
|
|
||||||
Cwtch.configureConnections(profile, listen, peers, servers)
|
|
||||||
}
|
|
||||||
"DeactivatePeerEngine" -> {
|
|
||||||
val profile: String = call.argument("profile") ?: ""
|
|
||||||
Cwtch.deactivatePeerEngine(profile)
|
|
||||||
}
|
|
||||||
"ChangePassword" -> {
|
"ChangePassword" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val pass: String = call.argument("OldPass") ?: ""
|
val pass: String = call.argument("OldPass") ?: ""
|
||||||
|
@ -439,18 +359,25 @@ class MainActivity: FlutterActivity() {
|
||||||
val passNew2: String = call.argument("NewPassAgain") ?: ""
|
val passNew2: String = call.argument("NewPassAgain") ?: ""
|
||||||
Cwtch.changePassword(profile, pass, passNew, passNew2)
|
Cwtch.changePassword(profile, pass, passNew, passNew2)
|
||||||
}
|
}
|
||||||
|
"GetMessage" -> {
|
||||||
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
|
val indexI: Int = call.argument("index") ?: 0
|
||||||
|
result.success(Cwtch.getMessage(profile, conversation.toLong(), indexI.toLong()))
|
||||||
|
return
|
||||||
|
}
|
||||||
"GetMessageByID" -> {
|
"GetMessageByID" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
val id: Int = call.argument("id") ?: 0
|
val id: Int = call.argument("id") ?: 0
|
||||||
result.success(Cwtch.getMessageById(profile, conversation.toLong(), id.toLong()))
|
result.success(Cwtch.getMessageByID(profile, conversation.toLong(), id.toLong()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
"GetMessageByContentHash" -> {
|
"GetMessageByContentHash" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
val contentHash: String = call.argument("contentHash") ?: ""
|
val contentHash: String = call.argument("contentHash") ?: ""
|
||||||
result.success(Cwtch.getMessageByContentHash(profile, conversation.toLong(), contentHash))
|
result.success(Cwtch.getMessagesByContentHash(profile, conversation.toLong(), contentHash))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
"SetMessageAttribute" -> {
|
"SetMessageAttribute" -> {
|
||||||
|
@ -460,7 +387,7 @@ class MainActivity: FlutterActivity() {
|
||||||
val midx: Int = call.argument("Message") ?: 0
|
val midx: Int = call.argument("Message") ?: 0
|
||||||
val key: String = call.argument("key") ?: ""
|
val key: String = call.argument("key") ?: ""
|
||||||
val value: String = call.argument("value") ?: ""
|
val value: String = call.argument("value") ?: ""
|
||||||
Cwtch.updateMessageAttribute(profile, conversation.toLong(), channel.toLong(), midx.toLong(), key, value)
|
Cwtch.setMessageAttribute(profile, conversation.toLong(), channel.toLong(), midx.toLong(), key, value)
|
||||||
}
|
}
|
||||||
"AcceptConversation" -> {
|
"AcceptConversation" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
|
@ -470,16 +397,15 @@ class MainActivity: FlutterActivity() {
|
||||||
"BlockContact" -> {
|
"BlockContact" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
Cwtch.blockConversation(profile, conversation.toLong())
|
Cwtch.blockContact(profile, conversation.toLong())
|
||||||
}
|
}
|
||||||
"UnblockContact" -> {
|
"UnblockContact" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
Cwtch.unblockConversation(profile, conversation.toLong())
|
Cwtch.unblockContact(profile, conversation.toLong())
|
||||||
}
|
}
|
||||||
|
|
||||||
"DownloadFile" -> {
|
"DownloadFile" -> {
|
||||||
Log.d("MainActivity.kt", "Cwtch Download File Called...")
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
val filepath: String = call.argument("filepath") ?: ""
|
val filepath: String = call.argument("filepath") ?: ""
|
||||||
|
@ -487,7 +413,7 @@ class MainActivity: FlutterActivity() {
|
||||||
val filekey: String = call.argument("filekey") ?: ""
|
val filekey: String = call.argument("filekey") ?: ""
|
||||||
// FIXME: Prevent spurious calls by Intent
|
// FIXME: Prevent spurious calls by Intent
|
||||||
if (profile != "") {
|
if (profile != "") {
|
||||||
Cwtch.downloadFileDefaultLimit(profile, conversation.toLong(), filepath, manifestpath, filekey)
|
Cwtch.downloadFile(profile, conversation.toLong(), filepath, manifestpath, filekey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"CheckDownloadStatus" -> {
|
"CheckDownloadStatus" -> {
|
||||||
|
@ -499,11 +425,16 @@ class MainActivity: FlutterActivity() {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
val fileKey: String = call.argument("fileKey") ?: ""
|
val fileKey: String = call.argument("fileKey") ?: ""
|
||||||
Cwtch.verifyOrResumeDownloadDefaultLimit(profile, conversation.toLong(), fileKey)
|
Cwtch.verifyOrResumeDownload(profile, conversation.toLong(), fileKey)
|
||||||
}
|
}
|
||||||
"UpdateSettings" -> {
|
"SendProfileEvent" -> {
|
||||||
val json: String = call.argument("json") ?: ""
|
val onion: String= call.argument("onion") ?: ""
|
||||||
Cwtch.updateSettings(json)
|
val jsonEvent: String = call.argument("jsonEvent") ?: ""
|
||||||
|
Cwtch.sendProfileEvent(onion, jsonEvent)
|
||||||
|
}
|
||||||
|
"SendAppEvent" -> {
|
||||||
|
val jsonEvent: String = call.argument("jsonEvent") ?: ""
|
||||||
|
Cwtch.sendAppEvent(jsonEvent)
|
||||||
}
|
}
|
||||||
"ResetTor" -> {
|
"ResetTor" -> {
|
||||||
Cwtch.resetTor()
|
Cwtch.resetTor()
|
||||||
|
@ -511,13 +442,13 @@ class MainActivity: FlutterActivity() {
|
||||||
"ImportBundle" -> {
|
"ImportBundle" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val bundle: String = call.argument("bundle") ?: ""
|
val bundle: String = call.argument("bundle") ?: ""
|
||||||
result.success(Cwtch.importBundle(profile, bundle))
|
Cwtch.importBundle(profile, bundle)
|
||||||
}
|
}
|
||||||
"CreateGroup" -> {
|
"CreateGroup" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val server: String = call.argument("server") ?: ""
|
val server: String = call.argument("server") ?: ""
|
||||||
val groupName: String = call.argument("groupName") ?: ""
|
val groupName: String = call.argument("groupName") ?: ""
|
||||||
Cwtch.startGroup(profile, groupName, server)
|
Cwtch.createGroup(profile, server, groupName)
|
||||||
}
|
}
|
||||||
"DeleteProfile" -> {
|
"DeleteProfile" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
|
@ -532,7 +463,7 @@ class MainActivity: FlutterActivity() {
|
||||||
"DeleteConversation" -> {
|
"DeleteConversation" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
Cwtch.deleteConversation(profile, conversation.toLong())
|
Cwtch.deleteContact(profile, conversation.toLong())
|
||||||
}
|
}
|
||||||
"SetProfileAttribute" -> {
|
"SetProfileAttribute" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
|
@ -540,20 +471,6 @@ class MainActivity: FlutterActivity() {
|
||||||
val v: String = call.argument("Val") ?: ""
|
val v: String = call.argument("Val") ?: ""
|
||||||
Cwtch.setProfileAttribute(profile, key, v)
|
Cwtch.setProfileAttribute(profile, key, v)
|
||||||
}
|
}
|
||||||
"GetProfileAttribute" -> {
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
val key: String = call.argument("key") ?: ""
|
|
||||||
var resultjson = Cwtch.getProfileAttribute(profile, key);
|
|
||||||
return result.success(resultjson)
|
|
||||||
}
|
|
||||||
"GetConversationAttribute" -> {
|
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
|
||||||
val key: String = call.argument("key") ?: ""
|
|
||||||
var resultjson = Cwtch.getConversationAttribute(profile, conversation.toLong(), key);
|
|
||||||
result.success(resultjson)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
"SetConversationAttribute" -> {
|
"SetConversationAttribute" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val conversation: Int = call.argument("conversation") ?: 0
|
val conversation: Int = call.argument("conversation") ?: 0
|
||||||
|
@ -561,17 +478,57 @@ class MainActivity: FlutterActivity() {
|
||||||
val v: String = call.argument("Val") ?: ""
|
val v: String = call.argument("Val") ?: ""
|
||||||
Cwtch.setConversationAttribute(profile, conversation.toLong(), key, v)
|
Cwtch.setConversationAttribute(profile, conversation.toLong(), key, v)
|
||||||
}
|
}
|
||||||
|
"LoadServers" -> {
|
||||||
|
val password: String = call.argument("Password") ?: ""
|
||||||
|
Cwtch.loadServers(password)
|
||||||
|
}
|
||||||
|
"CreateServer" -> {
|
||||||
|
val password: String = call.argument("Password") ?: ""
|
||||||
|
val desc: String = call.argument("Description") ?: ""
|
||||||
|
val autostart: Boolean = call.argument("Autostart") ?: false
|
||||||
|
Cwtch.createServer(password, desc, autostart)
|
||||||
|
}
|
||||||
|
"DeleteServer" -> {
|
||||||
|
val serverOnion: String = call.argument("ServerOnion") ?: ""
|
||||||
|
val password: String = call.argument("Password") ?: ""
|
||||||
|
Cwtch.deleteServer(serverOnion, password)
|
||||||
|
}
|
||||||
|
"LaunchServers" -> {
|
||||||
|
Cwtch.launchServers()
|
||||||
|
}
|
||||||
|
"LaunchServer" -> {
|
||||||
|
val serverOnion: String = call.argument("ServerOnion") ?: ""
|
||||||
|
Cwtch.launchServer(serverOnion)
|
||||||
|
}
|
||||||
|
"StopServer" -> {
|
||||||
|
val serverOnion: String = call.argument("ServerOnion") ?: ""
|
||||||
|
Cwtch.stopServer(serverOnion)
|
||||||
|
}
|
||||||
|
"StopServers" -> {
|
||||||
|
Cwtch.stopServers()
|
||||||
|
}
|
||||||
|
"DestroyServers" -> {
|
||||||
|
Cwtch.destroyServers()
|
||||||
|
}
|
||||||
|
"SetServerAttribute" -> {
|
||||||
|
val serverOnion: String = call.argument("ServerOnion") ?: ""
|
||||||
|
val key: String = call.argument("Key") ?: ""
|
||||||
|
val v: String = call.argument("Val") ?: ""
|
||||||
|
Cwtch.setServerAttribute(serverOnion, key, v)
|
||||||
|
}
|
||||||
|
"ExportProfile" -> {
|
||||||
|
val profileOnion: String = call.argument("ProfileOnion") ?: ""
|
||||||
|
val file: String = StringBuilder().append(this.applicationContext.cacheDir).append("/").append(call.argument("file") ?: "").toString()
|
||||||
|
Log.i("FlwtchWorker", "constructing exported file " + file);
|
||||||
|
Cwtch.exportProfile(profileOnion,file)
|
||||||
|
}
|
||||||
"ImportProfile" -> {
|
"ImportProfile" -> {
|
||||||
val file: String = call.argument("file") ?: ""
|
val file: String = call.argument("file") ?: ""
|
||||||
val pass: String = call.argument("pass") ?: ""
|
val pass: String = call.argument("pass") ?: ""
|
||||||
result.success(Cwtch.importProfile(file, pass))
|
Data.Builder().putString("result", Cwtch.importProfile(file, pass)).build()
|
||||||
return
|
|
||||||
}
|
}
|
||||||
"SearchConversations" -> {
|
"ReconnectCwtchForeground" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
Cwtch.reconnectCwtchForeground()
|
||||||
val pattern: String = call.argument("pattern") ?: ""
|
|
||||||
result.success(Cwtch.searchConversations(profile, pattern))
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
"Shutdown" -> {
|
"Shutdown" -> {
|
||||||
Cwtch.shutdownCwtch();
|
Cwtch.shutdownCwtch();
|
||||||
|
@ -628,7 +585,6 @@ class MainActivity: FlutterActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
Log.i("MainActivity.kt", "onDestroy - cancelling all WORKER_TAG and pruning old work")
|
Log.i("MainActivity.kt", "onDestroy - cancelling all WORKER_TAG and pruning old work")
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import im.cwtch.flwtch.R
|
||||||
|
import io.flutter.embedding.android.SplashScreen
|
||||||
|
|
||||||
|
class SplashView : SplashScreen {
|
||||||
|
override fun createSplashView(context: Context, savedInstanceState: Bundle?): View? =
|
||||||
|
LayoutInflater.from(context).inflate(R.layout.splash_view, null, false)
|
||||||
|
|
||||||
|
override fun transitionToFlutter(onTransitionComplete: Runnable) {
|
||||||
|
onTransitionComplete.run()
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,12 +1,12 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Modify this file to customize your launch splash screen -->
|
<!-- Modify this file to customize your launch splash screen -->
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item android:drawable="@color/darkGreyPurple" />
|
<item android:drawable="?android:colorBackground" />
|
||||||
|
|
||||||
<!-- You can insert your own image assets here -->
|
<!-- You can insert your own image assets here -->
|
||||||
<item>
|
<!-- <item>
|
||||||
<bitmap
|
<bitmap
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:src="@mipmap/knott" />
|
android:src="@mipmap/launch_image" />
|
||||||
</item>
|
</item> -->
|
||||||
</layer-list>
|
</layer-list>
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="500dp"
|
|
||||||
android:height="500dp"
|
|
||||||
android:viewportWidth="500"
|
|
||||||
android:viewportHeight="500">
|
|
||||||
<path
|
|
||||||
android:pathData="M436.2,215c-0.6,3 -2,6.4 -4.3,10.4l18.2,18.2c2.4,-4.8 6.2,-13.1 8.2,-22.9c4.1,-20.2 -0.5,-37.1 -13.7,-50.3c-24.2,-24.2 -49.4,-26.4 -81.8,-7.3c-7.8,4.6 -16.1,10.6 -24.6,17.7c-19.5,16.3 -41.3,39.5 -64.9,69.2c15.4,19.4 30.2,36.2 43.8,49.8c6.3,6.3 12.4,12 18.3,17.1l16.2,-16.2c-5.9,-5 -12.1,-10.7 -18.4,-17c-9,-9 -18.5,-19.5 -28.4,-31.2l-2.1,-2.5l2.1,-2.5c18.1,-21.5 35,-38.6 50.1,-50.9c9.6,-7.8 18.6,-13.8 26.7,-17.7c7,-3.4 13.4,-5.3 19,-5.6c2.7,-0.2 6.9,-0.1 12.1,2c5,2.1 10.2,5.8 15.7,11.3c2.1,2.1 5,5.4 6.8,10.4C437.1,202.1 437.5,208 436.2,215L436.2,215z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M340.9,354.7l81.5,-81.5c-4.8,-7.1 -11.1,-14 -14.6,-17.7L327.3,336C332.5,342.4 337.1,348.6 340.9,354.7z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M444.6,329.6c13.2,-13.2 17.8,-30.1 13.7,-50.3c-2.8,-14 -9.1,-24.9 -10.3,-26.9L382.6,187c-6,3.1 -12.5,7.4 -19.4,12.8l50.1,50.1l0,0c4.1,4.3 12.1,13 17.4,21.6c3.2,5.2 5.1,9.7 5.6,13.5c1.2,6.9 0.9,12.7 -0.9,17.9c-1.8,5 -4.8,8.3 -6.8,10.4c-5.9,5.9 -11.3,9.7 -16.7,11.7c-5.5,2 -10,1.8 -13.3,1.4c-4.4,-0.5 -9.2,-2 -14.3,-4.2l-17,17C397.5,355.7 421.5,352.7 444.6,329.6z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M303.1,64.7c5,1.8 8.3,4.8 10.4,6.8c5.9,5.9 9.7,11.3 11.7,16.7c2,5.5 1.8,10 1.4,13.3c-0.5,4.4 -2,9.2 -4.2,14.3l17,17c16.4,-30.3 13.3,-54.4 -9.7,-77.4c-13.2,-13.2 -30.1,-17.8 -50.3,-13.7c-14,2.8 -24.9,9.1 -26.9,10.3L187,117.4c3.1,6 7.4,12.5 12.8,19.4L250,86.7l0,0c4.3,-4.1 13,-12.1 21.6,-17.4c5.2,-3.2 9.7,-5.1 13.5,-5.6C292,62.6 297.9,62.9 303.1,64.7z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M170.4,55.4c-24.2,24.2 -26.4,49.4 -7.3,81.8c4.6,7.8 10.6,16.1 17.7,24.6c16.3,19.5 39.5,41.3 69.2,64.9c19.4,-15.4 36.2,-30.2 49.8,-43.8c6.3,-6.3 12,-12.4 17.1,-18.3l-16.2,-16.2c-5,5.9 -10.7,12.1 -17,18.4c-9,9 -19.5,18.5 -31.2,28.4l-2.5,2.1l-2.5,-2.1c-21.5,-18.1 -38.6,-35 -50.9,-50.1c-7.8,-9.6 -13.8,-18.6 -17.7,-26.7c-3.4,-7 -5.3,-13.4 -5.6,-19c-0.2,-2.7 -0.1,-6.9 2,-12.1c2.1,-5 5.8,-10.2 11.3,-15.7c2.1,-2.1 5.4,-5 10.4,-6.8c5.2,-1.9 11.1,-2.2 18,-0.9l0.1,0c3,0.6 6.4,2 10.4,4.3l18.2,-18.2c-4.8,-2.4 -13.1,-6.2 -23,-8.2C200.5,37.6 183.6,42.2 170.4,55.4z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M273.2,77.6c-7.1,4.8 -14,11.1 -17.7,14.6l80.5,80.5c6.4,-5.2 12.7,-9.7 18.7,-13.6L273.2,77.6z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M55.4,329.6c24.2,24.2 49.4,26.4 81.8,7.3c7.8,-4.6 16.1,-10.6 24.6,-17.7c19.5,-16.3 41.3,-39.5 64.9,-69.2c-15.4,-19.4 -30.2,-36.2 -43.8,-49.8c-6.3,-6.3 -12.4,-12 -18.3,-17.1l-16.2,16.2c5.9,5 12.1,10.7 18.4,17c9,9 18.5,19.5 28.4,31.2l2.1,2.5l-2.1,2.5c-18.1,21.5 -35,38.6 -50.1,50.9c-9.6,7.8 -18.6,13.8 -26.7,17.7c-7,3.4 -13.4,5.3 -19,5.6c-2.7,0.2 -6.9,0.1 -12.1,-2c-5,-2.1 -10.2,-5.8 -15.7,-11.3c-2.1,-2.1 -5,-5.4 -6.8,-10.4c-1.9,-5.2 -2.2,-11.1 -0.9,-18l0,-0.1c0.6,-3 2,-6.4 4.3,-10.4l-18.2,-18.2c-2.4,4.8 -6.2,13.1 -8.2,23C37.6,299.5 42.2,316.4 55.4,329.6z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M86.7,250L86.7,250c-4.1,-4.4 -12,-13.1 -17.3,-21.6c-3.2,-5.2 -5.1,-9.7 -5.6,-13.5c-1.2,-6.9 -0.9,-12.7 0.9,-17.9c1.8,-5 4.8,-8.3 6.8,-10.4c5.9,-5.9 11.3,-9.7 16.7,-11.7c5.5,-2 10,-1.8 13.3,-1.4c4.4,0.5 9.2,2 14.3,4.2l17,-17c-30.3,-16.4 -54.4,-13.3 -77.4,9.7c-13.2,13.2 -17.8,30.1 -13.7,50.3c2.8,14 9.1,24.9 10.3,26.9l65.4,65.4c6,-3.1 12.5,-7.4 19.4,-12.8L86.7,250z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M92.2,244.5l80.5,-80.5c-5.2,-6.4 -9.7,-12.7 -13.6,-18.7l-81.5,81.5C82.4,233.9 88.6,240.8 92.2,244.5z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M329.6,444.6c24.2,-24.2 26.4,-49.4 7.3,-81.8c-4.6,-7.8 -10.6,-16.1 -17.7,-24.6c-16.3,-19.5 -39.5,-41.3 -69.2,-64.9c-19.4,15.4 -36.2,30.2 -49.8,43.8c-6.3,6.3 -12,12.4 -17.1,18.3l16.2,16.2c5,-5.9 10.7,-12.1 17,-18.4c9,-9 19.5,-18.5 31.2,-28.4l2.5,-2.1l2.5,2.1c21.5,18.1 38.6,35 50.9,50.1c7.8,9.6 13.8,18.6 17.7,26.7c3.4,7 5.3,13.4 5.6,19c0.2,2.7 0.1,6.9 -2,12.1c-2.1,5 -5.8,10.2 -11.3,15.7c-2.1,2.1 -5.4,5 -10.4,6.8c-5.2,1.9 -11.1,2.2 -18,0.9l-0.1,0c-3,-0.6 -6.4,-2 -10.4,-4.3l-18.2,18.2c4.7,2.4 13.1,6.1 22.9,8.2C299.4,462.4 316.4,457.8 329.6,444.6z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M244.5,407.8L164,327.3c-6.4,5.2 -12.7,9.7 -18.7,13.6l81.5,81.5C233.9,417.6 240.8,411.4 244.5,407.8z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M483.4,250c2.6,-6.3 5.3,-14 7.1,-22.7c6.3,-30.8 -1.8,-59.2 -22.7,-80.1c-19.7,-19.7 -41.7,-29.7 -65.5,-29.7c-7.5,0 -15.1,1 -22.8,3c2.9,-11.3 3.7,-22.3 2.3,-33.2c-2.5,-19.8 -12.3,-38.3 -29,-55.1C336.6,15.9 315.9,7.4 293,7.4c-6.6,0 -13.4,0.7 -20.2,2.1c-8.7,1.8 -16.5,4.5 -22.7,7.1c-6.3,-2.6 -14.1,-5.3 -22.8,-7.1c-6.9,-1.4 -13.7,-2.1 -20.2,-2.1c-22.9,0 -43.6,8.6 -59.9,24.8c-17.6,17.6 -27.5,37.2 -29.4,58.1c-0.9,9.9 0,19.9 2.7,30.2c-7.7,-2 -15.3,-3 -22.8,-3c-23.8,0 -45.8,10 -65.5,29.7c-20.9,20.9 -28.9,49.3 -22.7,80.1c1.8,8.7 4.5,16.5 7.1,22.7c-2.6,6.3 -5.3,14.1 -7.1,22.8c-6.2,30.8 1.8,59.2 22.7,80.1c19.7,19.7 41.7,29.7 65.5,29.7c0,0 0,0 0,0c7.5,0 15.1,-1 22.8,-3c-2.9,11.3 -3.7,22.3 -2.3,33.2c2.5,19.8 12.3,38.3 29,55.1c16.2,16.2 36.9,24.8 59.8,24.8c0,0 0,0 0,0c6.6,0 13.4,-0.7 20.2,-2.1c8.7,-1.8 16.5,-4.4 22.7,-7.1c6.3,2.6 14,5.3 22.7,7.1c6.9,1.4 13.7,2.1 20.3,2.1c0,0 0,0 0,0c22.9,0 43.6,-8.6 59.9,-24.8c17.6,-17.6 27.5,-37.2 29.4,-58.1c0.9,-9.9 0,-19.9 -2.7,-30.2c7.7,2 15.3,3 22.8,3c0,0 0,0 0,0c23.8,0 45.8,-10 65.5,-29.7c20.9,-20.9 29,-49.3 22.7,-80.1C488.8,264 486.1,256.3 483.4,250z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M170.4,444.6c13.2,13.2 30.1,17.8 50.3,13.7c14,-2.8 24.9,-9.1 26.9,-10.3l65.4,-65.4c-3.1,-6 -7.4,-12.5 -12.8,-19.4L250,413.3l0,0c-4.3,4.1 -13,12.1 -21.6,17.4c-5.2,3.2 -9.7,5.1 -13.5,5.6c-6.9,1.2 -12.7,0.9 -17.9,-0.9c-5,-1.8 -8.3,-4.8 -10.4,-6.8c-5.9,-5.9 -9.7,-11.3 -11.7,-16.7c-2,-5.5 -1.8,-10 -1.4,-13.3c0.5,-4.4 2,-9.2 4.2,-14.3l-17,-17C144.3,397.5 147.3,421.5 170.4,444.6z"
|
|
||||||
android:fillColor="#242425"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M436.2,215c-0.6,3 -2,6.4 -4.3,10.4l18.2,18.2c2.4,-4.8 6.2,-13.1 8.2,-22.9c4.1,-20.2 -0.5,-37.1 -13.7,-50.3c-24.2,-24.2 -49.4,-26.4 -81.8,-7.3c-7.8,4.6 -16.1,10.6 -24.6,17.7c-19.5,16.3 -41.3,39.5 -64.9,69.2c15.4,19.4 30.2,36.2 43.8,49.8c6.3,6.3 12.4,12 18.3,17.1l16.2,-16.2c-5.9,-5 -12.1,-10.7 -18.4,-17c-9,-9 -18.5,-19.5 -28.4,-31.2l-2.1,-2.5l2.1,-2.5c18.1,-21.5 35,-38.6 50.1,-50.9c9.6,-7.8 18.6,-13.8 26.7,-17.7c7,-3.4 13.4,-5.3 19,-5.6c2.7,-0.2 6.9,-0.1 12.1,2c5,2.1 10.2,5.8 15.7,11.3c2.1,2.1 5,5.4 6.8,10.4C437.1,202.1 437.5,208 436.2,215L436.2,215z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M340.9,354.7l81.5,-81.5c-4.8,-7.1 -11.1,-14 -14.6,-17.7L327.3,336C332.5,342.4 337.1,348.6 340.9,354.7z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M444.6,329.6c13.2,-13.2 17.8,-30.1 13.7,-50.3c-2.8,-14 -9.1,-24.9 -10.3,-26.9L382.6,187c-6,3.1 -12.5,7.4 -19.4,12.8l50.1,50.1l0,0c4.1,4.3 12.1,13 17.4,21.6c3.2,5.2 5.1,9.7 5.6,13.5c1.2,6.9 0.9,12.7 -0.9,17.9c-1.8,5 -4.8,8.3 -6.8,10.4c-5.9,5.9 -11.3,9.7 -16.7,11.7c-5.5,2 -10,1.8 -13.3,1.4c-4.4,-0.5 -9.2,-2 -14.3,-4.2l-17,17C397.5,355.7 421.5,352.7 444.6,329.6z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M303.1,64.7c5,1.8 8.3,4.8 10.4,6.8c5.9,5.9 9.7,11.3 11.7,16.7c2,5.5 1.8,10 1.4,13.3c-0.5,4.4 -2,9.2 -4.2,14.3l17,17c16.4,-30.3 13.3,-54.4 -9.7,-77.4c-13.2,-13.2 -30.1,-17.8 -50.3,-13.7c-14,2.8 -24.9,9.1 -26.9,10.3L187,117.4c3.1,6 7.4,12.5 12.8,19.4L250,86.7l0,0c4.3,-4.1 13,-12.1 21.6,-17.4c5.2,-3.2 9.7,-5.1 13.5,-5.6C292,62.6 297.9,62.9 303.1,64.7z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M170.4,55.4c-24.2,24.2 -26.4,49.4 -7.3,81.8c4.6,7.8 10.6,16.1 17.7,24.6c16.3,19.5 39.5,41.3 69.2,64.9c19.4,-15.4 36.2,-30.2 49.8,-43.8c6.3,-6.3 12,-12.4 17.1,-18.3l-16.2,-16.2c-5,5.9 -10.7,12.1 -17,18.4c-9,9 -19.5,18.5 -31.2,28.4l-2.5,2.1l-2.5,-2.1c-21.5,-18.1 -38.6,-35 -50.9,-50.1c-7.8,-9.6 -13.8,-18.6 -17.7,-26.7c-3.4,-7 -5.3,-13.4 -5.6,-19c-0.2,-2.7 -0.1,-6.9 2,-12.1c2.1,-5 5.8,-10.2 11.3,-15.7c2.1,-2.1 5.4,-5 10.4,-6.8c5.2,-1.9 11.1,-2.2 18,-0.9l0.1,0c3,0.6 6.4,2 10.4,4.3l18.2,-18.2c-4.8,-2.4 -13.1,-6.2 -23,-8.2C200.5,37.6 183.6,42.2 170.4,55.4z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M273.2,77.6c-7.1,4.8 -14,11.1 -17.7,14.6l80.5,80.5c6.4,-5.2 12.7,-9.7 18.7,-13.6L273.2,77.6z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M55.4,329.6c24.2,24.2 49.4,26.4 81.8,7.3c7.8,-4.6 16.1,-10.6 24.6,-17.7c19.5,-16.3 41.3,-39.5 64.9,-69.2c-15.4,-19.4 -30.2,-36.2 -43.8,-49.8c-6.3,-6.3 -12.4,-12 -18.3,-17.1l-16.2,16.2c5.9,5 12.1,10.7 18.4,17c9,9 18.5,19.5 28.4,31.2l2.1,2.5l-2.1,2.5c-18.1,21.5 -35,38.6 -50.1,50.9c-9.6,7.8 -18.6,13.8 -26.7,17.7c-7,3.4 -13.4,5.3 -19,5.6c-2.7,0.2 -6.9,0.1 -12.1,-2c-5,-2.1 -10.2,-5.8 -15.7,-11.3c-2.1,-2.1 -5,-5.4 -6.8,-10.4c-1.9,-5.2 -2.2,-11.1 -0.9,-18l0,-0.1c0.6,-3 2,-6.4 4.3,-10.4l-18.2,-18.2c-2.4,4.8 -6.2,13.1 -8.2,23C37.6,299.5 42.2,316.4 55.4,329.6z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M86.7,250L86.7,250c-4.1,-4.4 -12,-13.1 -17.3,-21.6c-3.2,-5.2 -5.1,-9.7 -5.6,-13.5c-1.2,-6.9 -0.9,-12.7 0.9,-17.9c1.8,-5 4.8,-8.3 6.8,-10.4c5.9,-5.9 11.3,-9.7 16.7,-11.7c5.5,-2 10,-1.8 13.3,-1.4c4.4,0.5 9.2,2 14.3,4.2l17,-17c-30.3,-16.4 -54.4,-13.3 -77.4,9.7c-13.2,13.2 -17.8,30.1 -13.7,50.3c2.8,14 9.1,24.9 10.3,26.9l65.4,65.4c6,-3.1 12.5,-7.4 19.4,-12.8L86.7,250z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M92.2,244.5l80.5,-80.5c-5.2,-6.4 -9.7,-12.7 -13.6,-18.7l-81.5,81.5C82.4,233.9 88.6,240.8 92.2,244.5z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M329.6,444.6c24.2,-24.2 26.4,-49.4 7.3,-81.8c-4.6,-7.8 -10.6,-16.1 -17.7,-24.6c-16.3,-19.5 -39.5,-41.3 -69.2,-64.9c-19.4,15.4 -36.2,30.2 -49.8,43.8c-6.3,6.3 -12,12.4 -17.1,18.3l16.2,16.2c5,-5.9 10.7,-12.1 17,-18.4c9,-9 19.5,-18.5 31.2,-28.4l2.5,-2.1l2.5,2.1c21.5,18.1 38.6,35 50.9,50.1c7.8,9.6 13.8,18.6 17.7,26.7c3.4,7 5.3,13.4 5.6,19c0.2,2.7 0.1,6.9 -2,12.1c-2.1,5 -5.8,10.2 -11.3,15.7c-2.1,2.1 -5.4,5 -10.4,6.8c-5.2,1.9 -11.1,2.2 -18,0.9l-0.1,0c-3,-0.6 -6.4,-2 -10.4,-4.3l-18.2,18.2c4.7,2.4 13.1,6.1 22.9,8.2C299.4,462.4 316.4,457.8 329.6,444.6z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M244.5,407.8L164,327.3c-6.4,5.2 -12.7,9.7 -18.7,13.6l81.5,81.5C233.9,417.6 240.8,411.4 244.5,407.8z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
<path
|
|
||||||
android:pathData="M170.4,444.6c13.2,13.2 30.1,17.8 50.3,13.7c14,-2.8 24.9,-9.1 26.9,-10.3l65.4,-65.4c-3.1,-6 -7.4,-12.5 -12.8,-19.4L250,413.3l0,0c-4.3,4.1 -13,12.1 -21.6,17.4c-5.2,3.2 -9.7,5.1 -13.5,5.6c-6.9,1.2 -12.7,0.9 -17.9,-0.9c-5,-1.8 -8.3,-4.8 -10.4,-6.8c-5.9,-5.9 -9.7,-11.3 -11.7,-16.7c-2,-5.5 -1.8,-10 -1.4,-13.3c0.5,-4.4 2,-9.2 4.2,-14.3l-17,-17C144.3,397.5 147.3,421.5 170.4,444.6z"
|
|
||||||
android:fillColor="#FFFFFF"/>
|
|
||||||
</vector>
|
|
|
@ -1,10 +1,12 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Modify this file to customize your launch splash screen -->
|
<!-- Modify this file to customize your launch splash screen -->
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item android:drawable="@color/darkGreyPurple" />
|
<item android:drawable="@android:color/white" />
|
||||||
|
|
||||||
<!-- You can insert your own image assets here -->
|
<!-- You can insert your own image assets here -->
|
||||||
<item android:drawable="@drawable/knott"
|
<!-- <item>
|
||||||
android:gravity="center"
|
<bitmap
|
||||||
/>
|
android:gravity="center"
|
||||||
|
android:src="@mipmap/launch_image" />
|
||||||
|
</item> -->
|
||||||
</layer-list>
|
</layer-list>
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<com.airbnb.lottie.LottieAnimationView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:lottie_autoPlay="true"
|
||||||
|
app:lottie_rawRes="@raw/cwtch_animated_logo_op"
|
||||||
|
app:lottie_loop="true"
|
||||||
|
app:lottie_speed="1.00"
|
||||||
|
app:lottie_enableMergePathsForKitKatAndAbove="true" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -1,5 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<background android:drawable="@color/ic_launcher_background"/>
|
|
||||||
<foreground android:drawable="@drawable/knott"/>
|
|
||||||
</adaptive-icon>
|
|
After Width: | Height: | Size: 544 B |
After Width: | Height: | Size: 442 B |
After Width: | Height: | Size: 721 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.4 KiB |
|
@ -1,23 +1,18 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
||||||
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||||
<!-- Show a splash screen on the activity. Automatically removed when
|
<!-- Show a splash screen on the activity. Automatically removed when
|
||||||
the Flutter engine draws its first frame -->
|
Flutter draws its first frame -->
|
||||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||||
This theme determines the color of the Android Window while your
|
This theme determines the color of the Android Window while your
|
||||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||||
running.
|
running.
|
||||||
|
|
||||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||||
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||||
<item name="android:windowBackground">?android:colorBackground</item>
|
<item name="android:windowBackground">?android:colorBackground</item>
|
||||||
</style>
|
</style>
|
||||||
</resources>
|
</resources>
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
|
|
||||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
|
||||||
<item name="android:windowSplashScreenBackground">@color/darkGreyPurple</item>
|
|
||||||
<item name="android:windowSplashScreenAnimatedIcon">@drawable/knott</item>
|
|
||||||
<item name="android:windowSplashScreenIconBackgroundColor">@color/darkGreyPurple</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
|
||||||
<item name="android:windowBackground">?android:colorBackground</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</resources>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<resources>
|
|
||||||
<color name="darkGreyPurple">#281831</color>
|
|
||||||
<color name="testGreen">#00ff00</color>
|
|
||||||
<color name="ic_launcher_background">@color/darkGreyPurple</color>
|
|
||||||
</resources>
|
|
|
@ -1,3 +1,18 @@
|
||||||
|
buildscript {
|
||||||
|
ext.kotlin_version = '1.5.31'
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
// jCenter() no longer exists... https://blog.gradle.org/jcenter-shutdown
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
classpath 'com.android.tools.build:gradle:3.5.4'
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
|
@ -13,6 +28,7 @@ subprojects {
|
||||||
project.evaluationDependsOn(':app')
|
project.evaluationDependsOn(':app')
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register("clean", Delete) {
|
//removed due to gradle namespace conflicts that are beyond erinn's mere mortal understanding
|
||||||
delete rootProject.buildDir
|
//task clean(type: Delete) {
|
||||||
}
|
// delete rootProject.buildDir
|
||||||
|
//}
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
#Mon Jun 20 10:33:21 PDT 2022
|
#Mon Jun 20 10:33:21 PDT 2022
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
# third party plugin connectivity_plus should match, so when updating, also update
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-bin.zip
|
||||||
# lib/third_party/connectivity_plus/connectivity_plus/android/gradle/wrapper/gradle-wrapper.properties
|
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip
|
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|
|
@ -1,25 +1,11 @@
|
||||||
pluginManagement {
|
include ':app', ':cwtch'
|
||||||
def flutterSdkPath = {
|
|
||||||
def properties = new Properties()
|
|
||||||
file("local.properties").withInputStream { properties.load(it) }
|
|
||||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
|
||||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
|
||||||
return flutterSdkPath
|
|
||||||
}()
|
|
||||||
|
|
||||||
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
|
||||||
|
def properties = new Properties()
|
||||||
|
|
||||||
repositories {
|
assert localPropertiesFile.exists()
|
||||||
google()
|
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
|
||||||
mavenCentral()
|
|
||||||
gradlePluginPortal()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||||
id "com.android.application" version "7.4.2" apply false
|
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
|
||||||
id "org.jetbrains.kotlin.android" version "1.8.21" apply false
|
|
||||||
}
|
|
||||||
|
|
||||||
include ":app"
|
|
||||||
|
|
Before Width: | Height: | Size: 1.4 MiB |
|
@ -1,202 +0,0 @@
|
||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
|
@ -1,93 +0,0 @@
|
||||||
Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)
|
|
||||||
|
|
||||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
||||||
This license is copied below, and is also available with a FAQ at:
|
|
||||||
http://scripts.sil.org/OFL
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
PREAMBLE
|
|
||||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
||||||
development of collaborative font projects, to support the font creation
|
|
||||||
efforts of academic and linguistic communities, and to provide a free and
|
|
||||||
open framework in which fonts may be shared and improved in partnership
|
|
||||||
with others.
|
|
||||||
|
|
||||||
The OFL allows the licensed fonts to be used, studied, modified and
|
|
||||||
redistributed freely as long as they are not sold by themselves. The
|
|
||||||
fonts, including any derivative works, can be bundled, embedded,
|
|
||||||
redistributed and/or sold with any software provided that any reserved
|
|
||||||
names are not used by derivative works. The fonts and derivatives,
|
|
||||||
however, cannot be released under any other type of license. The
|
|
||||||
requirement for fonts to remain under this license does not apply
|
|
||||||
to any document created using the fonts or their derivatives.
|
|
||||||
|
|
||||||
DEFINITIONS
|
|
||||||
"Font Software" refers to the set of files released by the Copyright
|
|
||||||
Holder(s) under this license and clearly marked as such. This may
|
|
||||||
include source files, build scripts and documentation.
|
|
||||||
|
|
||||||
"Reserved Font Name" refers to any names specified as such after the
|
|
||||||
copyright statement(s).
|
|
||||||
|
|
||||||
"Original Version" refers to the collection of Font Software components as
|
|
||||||
distributed by the Copyright Holder(s).
|
|
||||||
|
|
||||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
||||||
or substituting -- in part or in whole -- any of the components of the
|
|
||||||
Original Version, by changing formats or by porting the Font Software to a
|
|
||||||
new environment.
|
|
||||||
|
|
||||||
"Author" refers to any designer, engineer, programmer, technical
|
|
||||||
writer or other person who contributed to the Font Software.
|
|
||||||
|
|
||||||
PERMISSION & CONDITIONS
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
||||||
redistribute, and sell modified and unmodified copies of the Font
|
|
||||||
Software, subject to the following conditions:
|
|
||||||
|
|
||||||
1) Neither the Font Software nor any of its individual components,
|
|
||||||
in Original or Modified Versions, may be sold by itself.
|
|
||||||
|
|
||||||
2) Original or Modified Versions of the Font Software may be bundled,
|
|
||||||
redistributed and/or sold with any software, provided that each copy
|
|
||||||
contains the above copyright notice and this license. These can be
|
|
||||||
included either as stand-alone text files, human-readable headers or
|
|
||||||
in the appropriate machine-readable metadata fields within text or
|
|
||||||
binary files as long as those fields can be easily viewed by the user.
|
|
||||||
|
|
||||||
3) No Modified Version of the Font Software may use the Reserved Font
|
|
||||||
Name(s) unless explicit written permission is granted by the corresponding
|
|
||||||
Copyright Holder. This restriction only applies to the primary font name as
|
|
||||||
presented to the users.
|
|
||||||
|
|
||||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
||||||
Software shall not be used to promote, endorse or advertise any
|
|
||||||
Modified Version, except to acknowledge the contribution(s) of the
|
|
||||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
5) The Font Software, modified or unmodified, in part or in whole,
|
|
||||||
must be distributed entirely under this license, and must not be
|
|
||||||
distributed under any other license. The requirement for fonts to
|
|
||||||
remain under this license does not apply to any document created
|
|
||||||
using the Font Software.
|
|
||||||
|
|
||||||
TERMINATION
|
|
||||||
This license becomes null and void if any of the above conditions are
|
|
||||||
not met.
|
|
||||||
|
|
||||||
DISCLAIMER
|
|
||||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
||||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
||||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
||||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
||||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
|
@ -1,93 +0,0 @@
|
||||||
Copyright 2021 Google Inc. All Rights Reserved.
|
|
||||||
|
|
||||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
||||||
This license is copied below, and is also available with a FAQ at:
|
|
||||||
http://scripts.sil.org/OFL
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------------------
|
|
||||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
PREAMBLE
|
|
||||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
||||||
development of collaborative font projects, to support the font creation
|
|
||||||
efforts of academic and linguistic communities, and to provide a free and
|
|
||||||
open framework in which fonts may be shared and improved in partnership
|
|
||||||
with others.
|
|
||||||
|
|
||||||
The OFL allows the licensed fonts to be used, studied, modified and
|
|
||||||
redistributed freely as long as they are not sold by themselves. The
|
|
||||||
fonts, including any derivative works, can be bundled, embedded,
|
|
||||||
redistributed and/or sold with any software provided that any reserved
|
|
||||||
names are not used by derivative works. The fonts and derivatives,
|
|
||||||
however, cannot be released under any other type of license. The
|
|
||||||
requirement for fonts to remain under this license does not apply
|
|
||||||
to any document created using the fonts or their derivatives.
|
|
||||||
|
|
||||||
DEFINITIONS
|
|
||||||
"Font Software" refers to the set of files released by the Copyright
|
|
||||||
Holder(s) under this license and clearly marked as such. This may
|
|
||||||
include source files, build scripts and documentation.
|
|
||||||
|
|
||||||
"Reserved Font Name" refers to any names specified as such after the
|
|
||||||
copyright statement(s).
|
|
||||||
|
|
||||||
"Original Version" refers to the collection of Font Software components as
|
|
||||||
distributed by the Copyright Holder(s).
|
|
||||||
|
|
||||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
||||||
or substituting -- in part or in whole -- any of the components of the
|
|
||||||
Original Version, by changing formats or by porting the Font Software to a
|
|
||||||
new environment.
|
|
||||||
|
|
||||||
"Author" refers to any designer, engineer, programmer, technical
|
|
||||||
writer or other person who contributed to the Font Software.
|
|
||||||
|
|
||||||
PERMISSION & CONDITIONS
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
||||||
redistribute, and sell modified and unmodified copies of the Font
|
|
||||||
Software, subject to the following conditions:
|
|
||||||
|
|
||||||
1) Neither the Font Software nor any of its individual components,
|
|
||||||
in Original or Modified Versions, may be sold by itself.
|
|
||||||
|
|
||||||
2) Original or Modified Versions of the Font Software may be bundled,
|
|
||||||
redistributed and/or sold with any software, provided that each copy
|
|
||||||
contains the above copyright notice and this license. These can be
|
|
||||||
included either as stand-alone text files, human-readable headers or
|
|
||||||
in the appropriate machine-readable metadata fields within text or
|
|
||||||
binary files as long as those fields can be easily viewed by the user.
|
|
||||||
|
|
||||||
3) No Modified Version of the Font Software may use the Reserved Font
|
|
||||||
Name(s) unless explicit written permission is granted by the corresponding
|
|
||||||
Copyright Holder. This restriction only applies to the primary font name as
|
|
||||||
presented to the users.
|
|
||||||
|
|
||||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
||||||
Software shall not be used to promote, endorse or advertise any
|
|
||||||
Modified Version, except to acknowledge the contribution(s) of the
|
|
||||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
5) The Font Software, modified or unmodified, in part or in whole,
|
|
||||||
must be distributed entirely under this license, and must not be
|
|
||||||
distributed under any other license. The requirement for fonts to
|
|
||||||
remain under this license does not apply to any document created
|
|
||||||
using the Font Software.
|
|
||||||
|
|
||||||
TERMINATION
|
|
||||||
This license becomes null and void if any of the above conditions are
|
|
||||||
not met.
|
|
||||||
|
|
||||||
DISCLAIMER
|
|
||||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
||||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
||||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
||||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
||||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
Before Width: | Height: | Size: 19 KiB |
|
@ -1,107 +0,0 @@
|
||||||
---
|
|
||||||
colors:
|
|
||||||
darkGreyPurple: 0x281831
|
|
||||||
deepPurple: 0x422850
|
|
||||||
mauvePurple: 0x8E64A5
|
|
||||||
whiteishPurple: 0xE3DFE4
|
|
||||||
lightGrey: 0x9E9E9E
|
|
||||||
softGreen: 0xA0FFB0
|
|
||||||
softRed: 0xFFA0B0
|
|
||||||
whitePurple: 0xFFFDFF
|
|
||||||
softPurple: 0xFDF3FC
|
|
||||||
purple: 0xDFB9DE
|
|
||||||
brightPurple: 0xD1B0E0 # not in new: portrait badge color
|
|
||||||
darkPurple: 0x350052
|
|
||||||
greyPurple: 0x775F84 # not in new: portrait borders
|
|
||||||
pink: 0xE85DA1 # not in new: active button color
|
|
||||||
hotPink: 0xD20070 # #D01972)
|
|
||||||
softGrey: 0xB3B6B3 # not in new theme: blocked
|
|
||||||
themes:
|
|
||||||
name: cwtch
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
background: darkGreyPurple
|
|
||||||
header: darkGreyPurple
|
|
||||||
userBubble: mauvePurple
|
|
||||||
peerBubble: deepPurple
|
|
||||||
font: whiteishPurple
|
|
||||||
settings: whiteishPurple
|
|
||||||
accent: hotPink
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: deepPurple
|
|
||||||
backgroundMainColor: background # darkGreyPurple
|
|
||||||
backgroundPaneColor: header # darkGreyPurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
defaultButtonDisabledColor: lightGrey
|
|
||||||
defaultButtonDisabledTextColor: darkGreyPurple
|
|
||||||
defaultButtonTextColor: whiteishPurple
|
|
||||||
dropShadowColor: mauvePurple
|
|
||||||
hilightElementColor: purple
|
|
||||||
mainTextColor: font # whiteishPurple
|
|
||||||
messageFromMeBackgroundColor: userBubble # mauvePurple
|
|
||||||
messageFromMeTextColor: font # whiteishPurple
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # deepPurple
|
|
||||||
messageFromOtherTextColor: font # whiteishPurple
|
|
||||||
portraitBackgroundColor: deepPurple
|
|
||||||
portraitBlockedBorderColor: lightGrey
|
|
||||||
portraitBlockedTextColor: lightGrey
|
|
||||||
portraitContactBadgeColor: hotPink
|
|
||||||
portraitContactBadgeTextColor: whiteishPurple
|
|
||||||
portraitOfflineBorderColor: purple
|
|
||||||
portraitOnlineBorderColor: whiteishPurple
|
|
||||||
portraitProfileBadgeColor: hotPink
|
|
||||||
portraitProfileBadgeTextColor: whiteishPurple
|
|
||||||
scrollbarDefaultColor: purple
|
|
||||||
sendHintTextColor: mauvePurple
|
|
||||||
chatReactionIconColor: mauvePurple
|
|
||||||
textfieldBackgroundColor: deepPurple
|
|
||||||
textfieldBorderColor: deepPurple
|
|
||||||
textfieldErrorColor: hotPink
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
toolbarIconColor: settings # whiteishPurple
|
|
||||||
topbarColor: header # darkGreyPurple
|
|
||||||
chatImage: Cwtch.png
|
|
||||||
chatImageColor: peerBubble
|
|
||||||
light:
|
|
||||||
colors:
|
|
||||||
background: whitePurple
|
|
||||||
header: softPurple
|
|
||||||
userBubble: purple
|
|
||||||
peerBubble: softPurple
|
|
||||||
font: 0x281831
|
|
||||||
settings: 0x281831
|
|
||||||
accent: hotPink
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: softPurple
|
|
||||||
backgroundMainColor: background # whitePurple
|
|
||||||
backgroundPaneColor: background # whitePurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
defaultButtonDisabledColor: softGrey
|
|
||||||
defaultButtonTextColor: whitePurple # ?
|
|
||||||
dropShadowColor: purple
|
|
||||||
hilightElementColor: purple
|
|
||||||
mainTextColor: settings
|
|
||||||
messageFromMeBackgroundColor: userBubble # brightPurple
|
|
||||||
messageFromMeTextColor: font # mainTextColor
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # purple
|
|
||||||
messageFromOtherTextColor: font # darkPurple
|
|
||||||
portraitBackgroundColor: softPurple
|
|
||||||
portraitBlockedBorderColor: softGrey
|
|
||||||
portraitBlockedTextColor: softGrey
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: whitePurple
|
|
||||||
portraitOfflineBorderColor: greyPurple
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: whitePurple
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
sendHintTextColor: purple
|
|
||||||
chatReactionIconColor: purple
|
|
||||||
textfieldBackgroundColor: purple
|
|
||||||
textfieldBorderColor: purple
|
|
||||||
textfieldErrorColor: hotPink
|
|
||||||
textfieldHintColor: font
|
|
||||||
toolbarIconColor: background # darkPurple
|
|
||||||
topbarColor: header # softPurple
|
|
||||||
chatImage: Cwtch.png
|
|
||||||
chatImageColor: 0xf1dff0
|
|
Before Width: | Height: | Size: 20 KiB |
|
@ -1,86 +0,0 @@
|
||||||
---
|
|
||||||
colors:
|
|
||||||
darkDarkBlue: 0x0E1628
|
|
||||||
darkLightBlue: 0x19243E
|
|
||||||
white: 0xE6E9F4
|
|
||||||
darkBlue: 0x131B2E
|
|
||||||
lighterDarkBlue: 0x19243E
|
|
||||||
lightBlue: 0xC0C8E5
|
|
||||||
|
|
||||||
themes:
|
|
||||||
name: ghost
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
background: 0x131B2E
|
|
||||||
header: 0x0E1628
|
|
||||||
userBubble: 0x25355A
|
|
||||||
peerBubble: 0x19243E
|
|
||||||
font: 0xE6E9F4
|
|
||||||
settings: 0xE6E9F4
|
|
||||||
accent: 0xD20070
|
|
||||||
reaction: 0x96A5D4
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: darkDarkBlue
|
|
||||||
backgroundMainColor: background
|
|
||||||
backgroundPaneColor: header
|
|
||||||
defaultButtonColor: accent
|
|
||||||
dropShadowColor: darkBlue
|
|
||||||
mainTextColor: font
|
|
||||||
messageFromMeBackgroundColor: userBubble
|
|
||||||
messageFromMeTextColor: font
|
|
||||||
messageFromOtherBackgroundColor: peerBubble
|
|
||||||
messageFromOtherTextColor: font
|
|
||||||
portraitOfflineBorderColor: 0x96A5D4
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
scrollbarDefaultColor: darkLightBlue
|
|
||||||
sendHintTextColor: userBubble
|
|
||||||
textfieldBackgroundColor: peerBubble
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: font
|
|
||||||
toolbarIconColor: settings
|
|
||||||
topbarColor: header
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Ghost.png
|
|
||||||
chatImageColor: userBubble
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: 0xE6E9F4
|
|
||||||
light:
|
|
||||||
colors:
|
|
||||||
background: 0xE6E9F4
|
|
||||||
header: 0x96A5D4
|
|
||||||
userBubble: 0x96A5D4
|
|
||||||
peerBubble: 0xC0C8E5
|
|
||||||
font: 0x131B2E
|
|
||||||
settings: 0x131B2E
|
|
||||||
accent: 0xD20070
|
|
||||||
reaction: 0x96A5D4
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: peerBubble
|
|
||||||
backgroundMainColor: background
|
|
||||||
backgroundPaneColor: background
|
|
||||||
defaultButtonColor: accent
|
|
||||||
defaultButtonActiveColor: lighterDarkBlue
|
|
||||||
defaultButtonDisabledColor: userBubble
|
|
||||||
dropShadowColor: darkBlue
|
|
||||||
mainTextColor: settings
|
|
||||||
messageFromMeBackgroundColor: userBubble
|
|
||||||
messageFromMeTextColor: font
|
|
||||||
messageFromOtherBackgroundColor: peerBubble
|
|
||||||
messageFromOtherTextColor: font
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitOfflineBorderColor: header
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
sendHintTextColor: peerBubble
|
|
||||||
textfieldBackgroundColor: peerBubble
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: font
|
|
||||||
toolbarIconColor: 0xffffff
|
|
||||||
topbarColor: header
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Ghost.png
|
|
||||||
chatImageColor: peerBubble
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: background
|
|
Before Width: | Height: | Size: 19 KiB |
|
@ -1,53 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
themes:
|
|
||||||
name: juniper
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
background: 0x1B1B1B
|
|
||||||
backgroundAlt: 0x494949
|
|
||||||
header: 0x1B1B1B
|
|
||||||
userBubble: 0x373737
|
|
||||||
peerBubble: 0x494949
|
|
||||||
font: 0xFFFFFF
|
|
||||||
settings: 0xFFFDFF
|
|
||||||
accent: 0x9E6A56
|
|
||||||
accentAlt: 0x9E6A56
|
|
||||||
theme:
|
|
||||||
backgroundMainColor: background
|
|
||||||
backgroundPaneColor: header
|
|
||||||
topbarColor: header
|
|
||||||
mainTextColor: font
|
|
||||||
defaultButtonColor: accent
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
toolbarIconColor: settings
|
|
||||||
messageFromMeBackgroundColor: userBubble
|
|
||||||
messageFromMeTextColor: font
|
|
||||||
messageFromOtherBackgroundColor: peerBubble
|
|
||||||
messageFromOtherTextColor: font
|
|
||||||
textfieldBackgroundColor: peerBubble
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
backgroundHilightElementColor: accent
|
|
||||||
sendHintTextColor: accentAlt
|
|
||||||
hilightElementColor: accentAlt
|
|
||||||
defaultButtonTextColor: mainTextColor
|
|
||||||
defaultButtonDisabledColor: peerBubble
|
|
||||||
defaultButtonDisabledTextColor: peerBubble
|
|
||||||
textfieldErrorColor: accent
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
portraitBackgroundColor: header
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitOfflineBorderColor: peerBubble
|
|
||||||
portraitBlockedBorderColor: peerBubble
|
|
||||||
portraitBlockedTextColor: peerBubble
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: mainTextColor
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: mainTextColor
|
|
||||||
dropShadowColor: accentAlt
|
|
||||||
chatReactionIconColor: accentAlt
|
|
||||||
chatImage: JuniperDark.png
|
|
||||||
chatImageColor: userBubble
|
|
||||||
messageSelectionColor: accent
|
|
||||||
textfieldSelectionColor: accent
|
|
||||||
menuBackgroundColor: accent
|
|
Before Width: | Height: | Size: 22 KiB |
|
@ -1,91 +0,0 @@
|
||||||
---
|
|
||||||
colors:
|
|
||||||
lavender: 0xB194C1
|
|
||||||
|
|
||||||
themes:
|
|
||||||
name: mermaid
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
background: 0x15282A
|
|
||||||
header: 0x15282A
|
|
||||||
userBubble: 0x1d5754
|
|
||||||
peerBubble: 0x253D3F
|
|
||||||
font: 0xEDFAFC
|
|
||||||
settings: 0xEDFAFC
|
|
||||||
accent: 0x8E64A5
|
|
||||||
reaction: 0x8E64A5
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: peerBubble
|
|
||||||
backgroundMainColor: background # darkGreyPurple
|
|
||||||
backgroundPaneColor: header # darkGreyPurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
dropShadowColor: lavender
|
|
||||||
mainTextColor: font # whiteishPurple
|
|
||||||
messageFromMeBackgroundColor: userBubble # mauvePurple
|
|
||||||
messageFromMeTextColor: font # whiteishPurple
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # deepPurple
|
|
||||||
messageFromOtherTextColor: font # whiteishPurple
|
|
||||||
portraitOfflineBorderColor: userBubble
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: 0xffffff
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: 0xffffff
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
textfieldBackgroundColor: peerBubble
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
toolbarIconColor: settings # whiteishPurple
|
|
||||||
topbarColor: header # darkGreyPurple
|
|
||||||
sendHintTextColor: userBubble
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Mermaid.png
|
|
||||||
chatImageColor: peerBubble
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: 0xEDFAFC
|
|
||||||
messageSelectionColor: accent
|
|
||||||
textfieldSelectionColor: accent
|
|
||||||
menuBackgroundColor: accent
|
|
||||||
light:
|
|
||||||
colors:
|
|
||||||
background: 0xEDFAFC
|
|
||||||
header: 0x71C1BF
|
|
||||||
userBubble: 0x71C1BF
|
|
||||||
peerBubble: 0xD2EFF3
|
|
||||||
font: 0x15282A
|
|
||||||
settings: 0x15282A
|
|
||||||
accent: 0x8E64A5
|
|
||||||
reaction: 0x71C1BF
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: peerBubble
|
|
||||||
backgroundMainColor: background # whitePurple
|
|
||||||
backgroundPaneColor: background # whitePurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
dropShadowColor: peerBubble
|
|
||||||
mainTextColor: settings
|
|
||||||
messageFromMeBackgroundColor: userBubble # brightPurple
|
|
||||||
messageFromMeTextColor: font # mainTextColor
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # purple
|
|
||||||
messageFromOtherTextColor: font # darkPurple
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: 0xffffff
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: 0xffffff
|
|
||||||
portraitOfflineBorderColor: userBubble
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldBackgroundColor: peerBubble
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: font
|
|
||||||
toolbarIconColor: 0xffffff
|
|
||||||
topbarColor: header # softPurple
|
|
||||||
sendHintTextColor: userBubble
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Mermaid.png
|
|
||||||
chatImageColor: peerBubble
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: background
|
|
||||||
messageSelectionColor: 0xb1e3ea
|
|
||||||
textfieldSelectionColor: 0xb1e3ea
|
|
||||||
menuBackgroundColor: 0xb1e3ea
|
|
Before Width: | Height: | Size: 26 KiB |
|
@ -1,77 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
themes:
|
|
||||||
name: midnight
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
accentGray: 0xE0E0E0
|
|
||||||
background: 0x111111
|
|
||||||
backgroundAlt: 0x494949
|
|
||||||
header: 0x111111
|
|
||||||
userBubble: 0x2D2D2D
|
|
||||||
peerBubble: 0x1B1B1B
|
|
||||||
font: 0xF0F1F1
|
|
||||||
settings: 0xF0F1F1
|
|
||||||
accent: 0xD20070
|
|
||||||
reaction: 0xD20070
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: backgroundAlt
|
|
||||||
backgroundMainColor: background # darkGreyPurple
|
|
||||||
backgroundPaneColor: header # darkGreyPurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
dropShadowColor: accentGray
|
|
||||||
mainTextColor: font # whiteishPurple
|
|
||||||
messageFromMeBackgroundColor: userBubble # mauvePurple
|
|
||||||
messageFromMeTextColor: font # whiteishPurple
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # deepPurple
|
|
||||||
messageFromOtherTextColor: font # whiteishPurple
|
|
||||||
scrollbarDefaultColor: accentGray
|
|
||||||
textfieldBackgroundColor: peerBubble
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
portraitOfflineBorderColor: 0x676767
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
toolbarIconColor: settings # whiteishPurple
|
|
||||||
topbarColor: header # darkGreyPurple
|
|
||||||
sendHintTextColor: userBubble
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Midnight.png
|
|
||||||
chatImageColor: userBubble
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: 0xF0F1F1
|
|
||||||
light:
|
|
||||||
colors:
|
|
||||||
background: 0xF0F1F1 # Color( 0xFFFDFF)
|
|
||||||
header: 0xE0E0E0
|
|
||||||
userBubble: 0xBABDBE
|
|
||||||
peerBubble: 0xE0E0E0
|
|
||||||
font: 0x111111
|
|
||||||
settings: 0x111111
|
|
||||||
accent: 0xD20070
|
|
||||||
reaction: 0xD20070
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: peerBubble
|
|
||||||
backgroundMainColor: background # whitePurple
|
|
||||||
backgroundPaneColor: background # whitePurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
mainTextColor: settings
|
|
||||||
messageFromMeBackgroundColor: userBubble # brightPurple
|
|
||||||
messageFromMeTextColor: font # mainTextColor
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # purple
|
|
||||||
messageFromOtherTextColor: font # darkPurple
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitOfflineBorderColor: userBubble
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldBackgroundColor: userBubble
|
|
||||||
textfieldHintColor: font
|
|
||||||
toolbarIconColor: 0xffffff
|
|
||||||
topbarColor: header # softPurple
|
|
||||||
sendHintTextColor: userBubble
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Midnight.png
|
|
||||||
chatImageColor: peerBubble
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: background
|
|
Before Width: | Height: | Size: 17 KiB |
|
@ -1,86 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
themes:
|
|
||||||
name: neon1
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
background: 0x281831
|
|
||||||
header: 0x281831
|
|
||||||
userBubble: 0x7F00C5
|
|
||||||
peerBubble: 0x422850
|
|
||||||
font: 0xFBF3FF
|
|
||||||
settings: 0x281831
|
|
||||||
accent: 0x56DCD8
|
|
||||||
reaction: 0xD891FF
|
|
||||||
theme:
|
|
||||||
backgroundMainColor: background # darkGreyPurple
|
|
||||||
backgroundPaneColor: header # darkGreyPurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
mainTextColor: 0xFBF3FF # whiteishPurple
|
|
||||||
messageFromMeBackgroundColor: userBubble # mauvePurple
|
|
||||||
messageFromMeTextColor: font # whiteishPurple
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # deepPurple
|
|
||||||
messageFromOtherTextColor: font # whiteishPurple
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: background
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: background
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
portraitOfflineBorderColor: 0x775F84
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
toolbarIconColor: settings # whiteishPurple
|
|
||||||
topbarColor: header # darkGreyPurple
|
|
||||||
sendHintTextColor: userBubble
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
defaultButtonTextColor: 0x281831
|
|
||||||
chatImage: Neon1.png
|
|
||||||
chatImageColor: 0x4f3060
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: background
|
|
||||||
messageSelectionColor: 0x775F84
|
|
||||||
textfieldSelectionColor: 0x775F84
|
|
||||||
menuBackgroundColor: 0x775F84
|
|
||||||
light:
|
|
||||||
colors:
|
|
||||||
background: 0xFBF3FF
|
|
||||||
header: 0x56DCD8
|
|
||||||
userBubble: 0x56DCD8
|
|
||||||
peerBubble: 0xF5E1FF
|
|
||||||
font: 0x281831
|
|
||||||
settings: 0x281831
|
|
||||||
accent: 0xD891FF
|
|
||||||
reaction: 0xD891FF
|
|
||||||
theme:
|
|
||||||
backgroundMainColor: background # whitePurple
|
|
||||||
backgroundPaneColor: background # whitePurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
dropShadowColor: userBubble
|
|
||||||
mainTextColor: settings
|
|
||||||
messageFromMeBackgroundColor: userBubble # brightPurple
|
|
||||||
messageFromMeTextColor: font # mainTextColor
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # purple
|
|
||||||
messageFromOtherTextColor: font # darkPurple
|
|
||||||
portraitOfflineBorderColor: 0xeac1ff
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: font
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: font
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldBackgroundColor: peerBubble
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: font
|
|
||||||
toolbarIconColor: settings # darkPurple
|
|
||||||
topbarColor: header # softPurple
|
|
||||||
sendHintTextColor: 0xeac1ff
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Neon1.png
|
|
||||||
chatImageColor: 0xeac1ff
|
|
||||||
defaultButtonTextColor: font
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: font
|
|
||||||
messageSelectionColor: accent
|
|
||||||
textfieldSelectionColor: accent
|
|
||||||
menuBackgroundColor: accent
|
|
Before Width: | Height: | Size: 17 KiB |
|
@ -1,83 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
themes:
|
|
||||||
name: neon2
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
background: 0x281831
|
|
||||||
header: 0x281831
|
|
||||||
userBubble: 0x7F00C5
|
|
||||||
peerBubble: 0x422850
|
|
||||||
font: 0xFBF3FF
|
|
||||||
settings: 0x281831
|
|
||||||
accent: 0x90EE02
|
|
||||||
reaction: 0xD891FF
|
|
||||||
theme:
|
|
||||||
backgroundMainColor: background # darkGreyPurple
|
|
||||||
backgroundPaneColor: header # darkGreyPurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
mainTextColor: font # whiteishPurple
|
|
||||||
messageFromMeBackgroundColor: userBubble # mauvePurple
|
|
||||||
messageFromMeTextColor: font # whiteishPurple
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # deepPurple
|
|
||||||
messageFromOtherTextColor: font # whiteishPurple
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: 0x281831
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: 0x281831
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
toolbarIconColor: settings # whiteishPurple
|
|
||||||
topbarColor: header # darkGreyPurple
|
|
||||||
sendHintTextColor: userBubble
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
defaultButtonTextColor: background
|
|
||||||
chatImage: Neon2.png
|
|
||||||
chatImageColor: 0x573569
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: background
|
|
||||||
messageSelectionColor: 0x775F84
|
|
||||||
textfieldSelectionColor: 0x775F84
|
|
||||||
menuBackgroundColor: 0x775F84
|
|
||||||
light:
|
|
||||||
colors:
|
|
||||||
paleGreen: 0xE7F6F6
|
|
||||||
background: 0xFBFFF6
|
|
||||||
header: 0x90EE02
|
|
||||||
userBubble: 0x90EE02
|
|
||||||
peerBubble: 0xF3FFE4
|
|
||||||
font: 0x281831
|
|
||||||
settings: 0x281831
|
|
||||||
accent: 0x7F00C5
|
|
||||||
reaction: 0x7F00C5
|
|
||||||
theme:
|
|
||||||
backgroundMainColor: background # whitePurple
|
|
||||||
backgroundPaneColor: background # whitePurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
dropShadowColor: userBubble
|
|
||||||
mainTextColor: settings
|
|
||||||
messageFromMeBackgroundColor: userBubble # brightPurple
|
|
||||||
messageFromMeTextColor: font # mainTextColor
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # purple
|
|
||||||
messageFromOtherTextColor: font # darkPurple
|
|
||||||
portraitOfflineBorderColor: 0x775F84
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: background
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: background
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldBackgroundColor: paleGreen
|
|
||||||
textfieldBorderColor: peerBubble
|
|
||||||
textfieldHintColor: font
|
|
||||||
toolbarIconColor: background # darkPurple
|
|
||||||
topbarColor: header # softPurple
|
|
||||||
chatReactionIconColor: accent
|
|
||||||
chatImage: Neon2.png
|
|
||||||
chatImageColor: 0xd9ffa8
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: background
|
|
||||||
messageSelectionColor: 0xd9ffa8
|
|
||||||
textfieldSelectionColor: 0xd9ffa8
|
|
||||||
menuBackgroundColor: 0xd9ffa8
|
|
Before Width: | Height: | Size: 19 KiB |
|
@ -1,84 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
themes:
|
|
||||||
name: pumpkin
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
background: 0x281831
|
|
||||||
header: 0x281831
|
|
||||||
userBubble: 0x873C14
|
|
||||||
peerBubble: 0x422850
|
|
||||||
font: 0xFFFAF2
|
|
||||||
settings: 0xFFFAF2
|
|
||||||
accent: 0x873C14
|
|
||||||
reaction: 0x873C14
|
|
||||||
theme:
|
|
||||||
backgroundMainColor: background # darkGreyPurple
|
|
||||||
backgroundPaneColor: header # darkGreyPurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
mainTextColor: font # whiteishPurple
|
|
||||||
messageFromMeBackgroundColor: userBubble # mauvePurple
|
|
||||||
messageFromMeTextColor: font # whiteishPurple
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # deepPurple
|
|
||||||
messageFromOtherTextColor: font # whiteishPurple
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: 0xFFFAF2
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: 0xFFFAF2
|
|
||||||
portraitOfflineBorderColor: 0x775F84
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
toolbarIconColor: settings # whiteishPurple
|
|
||||||
topbarColor: header # darkGreyPurple
|
|
||||||
sendHintTextColor: peerBubble
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Pumpkin.png
|
|
||||||
chatImageColor: 0x573569
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: 0xFFFAF2
|
|
||||||
messageSelectionColor: 0x775F84
|
|
||||||
textfieldSelectionColor: 0x775F84
|
|
||||||
menuBackgroundColor: 0x775F84
|
|
||||||
light:
|
|
||||||
colors:
|
|
||||||
background: 0xFFFAF2
|
|
||||||
header: 0xFF9800
|
|
||||||
userBubble: 0xFF9800
|
|
||||||
peerBubble: 0xFFF3E0
|
|
||||||
font: 0x281831
|
|
||||||
settings: 0x281831
|
|
||||||
accent: 0x422850
|
|
||||||
reaction: 0xFF9800
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: peerBubble
|
|
||||||
backgroundMainColor: background # whitePurple
|
|
||||||
backgroundPaneColor: background # whitePurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
dropShadowColor: peerBubble
|
|
||||||
mainTextColor: settings
|
|
||||||
messageFromMeBackgroundColor: userBubble # brightPurple
|
|
||||||
messageFromMeTextColor: font # mainTextColor
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # purple
|
|
||||||
messageFromOtherTextColor: font # darkPurple
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: 0xFFFAF2
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: 0xFFFAF2
|
|
||||||
portraitOfflineBorderColor: 0x775F84
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldBackgroundColor: background
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
toolbarIconColor: background # darkPurple
|
|
||||||
topbarColor: header # softPurple
|
|
||||||
sendHintTextColor: 0xffd494
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Pumpkin.png
|
|
||||||
chatImageColor: 0xFFDCA8
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: background
|
|
||||||
messageSelectionColor: 0xFFDCA8
|
|
||||||
textfieldSelectionColor: 0xFFDCA8
|
|
||||||
menuBackgroundColor: 0xFFDCA8
|
|
Before Width: | Height: | Size: 20 KiB |
|
@ -1,85 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
themes:
|
|
||||||
name: vampire
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
background: 0x27141B
|
|
||||||
header: 0x27141B
|
|
||||||
userBubble: 0x422850
|
|
||||||
peerBubble: 0x502033
|
|
||||||
font: 0xFBF4F7
|
|
||||||
settings: 0xFBF4F7
|
|
||||||
accent: 0x502033
|
|
||||||
reaction: 0xC86B89
|
|
||||||
theme:
|
|
||||||
backgroundMainColor: background # darkGreyPurple
|
|
||||||
backgroundPaneColor: header # darkGreyPurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
mainTextColor: font # whiteishPurple
|
|
||||||
messageFromMeBackgroundColor: userBubble # mauvePurple
|
|
||||||
messageFromMeTextColor: font # whiteishPurple
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # deepPurple
|
|
||||||
messageFromOtherTextColor: font # whiteishPurple
|
|
||||||
portraitContactBadgeColor: 0x863655
|
|
||||||
portraitContactBadgeTextColor: 0xFBF4F7
|
|
||||||
portraitProfileBadgeColor: 0x863655
|
|
||||||
portraitProfileBadgeTextColor: 0xFBF4F7
|
|
||||||
portraitBackgroundColor: peerBubble
|
|
||||||
portraitOfflineBorderColor: 0x863655
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
toolbarIconColor: settings # whiteishPurple
|
|
||||||
topbarColor: header # darkGreyPurple
|
|
||||||
sendHintTextColor: peerBubble
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Vampire.png
|
|
||||||
chatImageColor: peerBubble
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: 0xFBF4F7
|
|
||||||
messageSelectionColor: 0x863655
|
|
||||||
textfieldSelectionColor: 0x863655
|
|
||||||
menuBackgroundColor: 0x863655
|
|
||||||
light:
|
|
||||||
colors:
|
|
||||||
background: 0xFBF4F7
|
|
||||||
header: 0xC86B89
|
|
||||||
userBubble: 0xDA94A9
|
|
||||||
peerBubble: 0xF7EAF0
|
|
||||||
font: 0x27141B
|
|
||||||
settings: 0xFBF4F7
|
|
||||||
accent: 0x502033
|
|
||||||
reaction: 0xDA94A9
|
|
||||||
theme:
|
|
||||||
backgroundMainColor: background # whitePurple
|
|
||||||
backgroundPaneColor: background # whitePurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
dropShadowColor: userBubble
|
|
||||||
mainTextColor: font
|
|
||||||
messageFromMeBackgroundColor: userBubble # brightPurple
|
|
||||||
messageFromMeTextColor: font # mainTextColor
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # purple
|
|
||||||
messageFromOtherTextColor: font # darkPurple
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: 0xFBF4F7
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: 0xFBF4F7
|
|
||||||
portraitOfflineBorderColor: 0x775F84
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldBackgroundColor: peerBubble
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: font
|
|
||||||
toolbarIconColor: settings # darkPurple
|
|
||||||
topbarColor: header # softPurple
|
|
||||||
sendHintTextColor: userBubble
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Vampire.png
|
|
||||||
chatImageColor: 0xE9BFCD
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: background
|
|
||||||
messageSelectionColor: header
|
|
||||||
textfieldSelectionColor: header
|
|
||||||
menuBackgroundColor: header
|
|
Before Width: | Height: | Size: 26 KiB |
|
@ -1,86 +0,0 @@
|
||||||
---
|
|
||||||
|
|
||||||
themes:
|
|
||||||
name: witch
|
|
||||||
dark:
|
|
||||||
colors:
|
|
||||||
background: 0x111b11
|
|
||||||
header: 0x0E1E0E
|
|
||||||
userBubble: 0x3B5132
|
|
||||||
peerBubble: 0x152716
|
|
||||||
font: 0xF1F3EC
|
|
||||||
settings: 0xE3ECD3
|
|
||||||
accent: 0x8E64A5
|
|
||||||
reaction: 0x97AF6E
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: peerBubble
|
|
||||||
backgroundMainColor: background # darkGreyPurple
|
|
||||||
backgroundPaneColor: header # darkGreyPurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
mainTextColor: font # whiteishPurple
|
|
||||||
messageFromMeBackgroundColor: userBubble # mauvePurple
|
|
||||||
messageFromMeTextColor: font # whiteishPurple
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # deepPurple
|
|
||||||
messageFromOtherTextColor: font # whiteishPurple
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: 0xF1F3EC
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: 0xF1F3EC
|
|
||||||
portraitOfflineBorderColor: 0x355934
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitBackgroundColor: peerBubble
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldBackgroundColor: peerBubble
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: mainTextColor
|
|
||||||
toolbarIconColor: settings # whiteishPurple
|
|
||||||
topbarColor: header # darkGreyPurple
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Witch.png
|
|
||||||
chatImageColor: 0x1E321D
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: 0xF1F3EC
|
|
||||||
messageSelectionColor: accent
|
|
||||||
textfieldSelectionColor: accent
|
|
||||||
menuBackgroundColor: accent
|
|
||||||
light:
|
|
||||||
colors:
|
|
||||||
background: 0xF1F3EC
|
|
||||||
header: 0x97af6e
|
|
||||||
userBubble: 0x97AF6E
|
|
||||||
peerBubble: 0xE3ECD3
|
|
||||||
font: 0x111b11
|
|
||||||
settings: 0x0E1E0E
|
|
||||||
accent: 0x8E64A5
|
|
||||||
reaction: 0x97AF6E
|
|
||||||
theme:
|
|
||||||
backgroundHilightElementColor: peerBubble
|
|
||||||
backgroundMainColor: background # whitePurple
|
|
||||||
backgroundPaneColor: background # whitePurple
|
|
||||||
defaultButtonColor: accent # hotPink
|
|
||||||
mainTextColor: settings
|
|
||||||
messageFromMeBackgroundColor: userBubble # brightPurple
|
|
||||||
messageFromMeTextColor: font # mainTextColor
|
|
||||||
messageFromOtherBackgroundColor: peerBubble # purple
|
|
||||||
messageFromOtherTextColor: font # darkPurple
|
|
||||||
portraitContactBadgeColor: accent
|
|
||||||
portraitContactBadgeTextColor: 0xF1F3EC
|
|
||||||
portraitProfileBadgeColor: accent
|
|
||||||
portraitProfileBadgeTextColor: 0xF1F3EC
|
|
||||||
portraitOfflineBorderColor: userBubble
|
|
||||||
portraitOnlineBorderColor: font
|
|
||||||
portraitBackgroundColor: background
|
|
||||||
scrollbarDefaultColor: accent
|
|
||||||
textfieldBackgroundColor: background
|
|
||||||
textfieldBorderColor: userBubble
|
|
||||||
textfieldHintColor: font
|
|
||||||
toolbarIconColor: settings # darkPurple
|
|
||||||
topbarColor: header # softPurple
|
|
||||||
chatReactionIconColor: reaction
|
|
||||||
chatImage: Witch.png
|
|
||||||
chatImageColor: 0xD0DDBA
|
|
||||||
snackbarBackgroundColor: accent
|
|
||||||
snackbarTextColor: background
|
|
||||||
messageSelectionColor: accent
|
|
||||||
textfieldSelectionColor: accent
|
|
||||||
menuBackgroundColor: accent
|
|
241
elf_x86_64.x
|
@ -1,241 +0,0 @@
|
||||||
/* Slightly Modified Default linker script, for normal executables */
|
|
||||||
/* The only difference is that this version suppresses the .comment section. See DISCARD section`
|
|
||||||
/* Copyright (C) 2014-2022 Free Software Foundation, Inc.
|
|
||||||
Copying and distribution of this script, with or without modification,
|
|
||||||
are permitted in any medium without royalty provided the copyright
|
|
||||||
notice and this notice are preserved. */
|
|
||||||
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
|
|
||||||
"elf64-x86-64")
|
|
||||||
OUTPUT_ARCH(i386:x86-64)
|
|
||||||
ENTRY(_start)
|
|
||||||
SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib");
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* Read-only sections, merged into text segment: */
|
|
||||||
PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS;
|
|
||||||
.interp : { *(.interp) }
|
|
||||||
.note.gnu.build-id : { *(.note.gnu.build-id) }
|
|
||||||
.hash : { *(.hash) }
|
|
||||||
.gnu.hash : { *(.gnu.hash) }
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
.dynstr : { *(.dynstr) }
|
|
||||||
.gnu.version : { *(.gnu.version) }
|
|
||||||
.gnu.version_d : { *(.gnu.version_d) }
|
|
||||||
.gnu.version_r : { *(.gnu.version_r) }
|
|
||||||
.rela.init : { *(.rela.init) }
|
|
||||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
|
||||||
.rela.fini : { *(.rela.fini) }
|
|
||||||
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
|
|
||||||
.rela.data.rel.ro : { *(.rela.data.rel.ro .rela.data.rel.ro.* .rela.gnu.linkonce.d.rel.ro.*) }
|
|
||||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
|
||||||
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
|
|
||||||
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
|
|
||||||
.rela.ctors : { *(.rela.ctors) }
|
|
||||||
.rela.dtors : { *(.rela.dtors) }
|
|
||||||
.rela.got : { *(.rela.got) }
|
|
||||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
|
||||||
.rela.ldata : { *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) }
|
|
||||||
.rela.lbss : { *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) }
|
|
||||||
.rela.lrodata : { *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) }
|
|
||||||
.rela.ifunc : { *(.rela.ifunc) }
|
|
||||||
.rela.plt :
|
|
||||||
{
|
|
||||||
*(.rela.plt)
|
|
||||||
PROVIDE_HIDDEN (__rela_iplt_start = .);
|
|
||||||
*(.rela.iplt)
|
|
||||||
PROVIDE_HIDDEN (__rela_iplt_end = .);
|
|
||||||
}
|
|
||||||
.relr.dyn : { *(.relr.dyn) }
|
|
||||||
.init :
|
|
||||||
{
|
|
||||||
KEEP (*(SORT_NONE(.init)))
|
|
||||||
}
|
|
||||||
.plt : { *(.plt) *(.iplt) }
|
|
||||||
.plt.got : { *(.plt.got) }
|
|
||||||
.plt.sec : { *(.plt.sec) }
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
*(.text.unlikely .text.*_unlikely .text.unlikely.*)
|
|
||||||
*(.text.exit .text.exit.*)
|
|
||||||
*(.text.startup .text.startup.*)
|
|
||||||
*(.text.hot .text.hot.*)
|
|
||||||
*(SORT(.text.sorted.*))
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
}
|
|
||||||
.fini :
|
|
||||||
{
|
|
||||||
KEEP (*(SORT_NONE(.fini)))
|
|
||||||
}
|
|
||||||
PROVIDE (__etext = .);
|
|
||||||
PROVIDE (_etext = .);
|
|
||||||
PROVIDE (etext = .);
|
|
||||||
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
|
||||||
.rodata1 : { *(.rodata1) }
|
|
||||||
.eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) }
|
|
||||||
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) }
|
|
||||||
.gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
|
|
||||||
.gnu_extab : ONLY_IF_RO { *(.gnu_extab*) }
|
|
||||||
/* These sections are generated by the Sun/Oracle C++ compiler. */
|
|
||||||
.exception_ranges : ONLY_IF_RO { *(.exception_ranges*) }
|
|
||||||
/* Adjust the address for the data segment. We want to adjust up to
|
|
||||||
the same address within the page on the next page up. */
|
|
||||||
. = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
|
|
||||||
/* Exception handling */
|
|
||||||
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) }
|
|
||||||
.gnu_extab : ONLY_IF_RW { *(.gnu_extab) }
|
|
||||||
.gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
|
|
||||||
.exception_ranges : ONLY_IF_RW { *(.exception_ranges*) }
|
|
||||||
/* Thread Local Storage sections */
|
|
||||||
.tdata :
|
|
||||||
{
|
|
||||||
PROVIDE_HIDDEN (__tdata_start = .);
|
|
||||||
*(.tdata .tdata.* .gnu.linkonce.td.*)
|
|
||||||
}
|
|
||||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
|
||||||
.preinit_array :
|
|
||||||
{
|
|
||||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
|
||||||
KEEP (*(.preinit_array))
|
|
||||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
|
||||||
}
|
|
||||||
.init_array :
|
|
||||||
{
|
|
||||||
PROVIDE_HIDDEN (__init_array_start = .);
|
|
||||||
KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
|
|
||||||
KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
|
|
||||||
PROVIDE_HIDDEN (__init_array_end = .);
|
|
||||||
}
|
|
||||||
.fini_array :
|
|
||||||
{
|
|
||||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
|
||||||
KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
|
|
||||||
KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
|
|
||||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
|
||||||
}
|
|
||||||
.ctors :
|
|
||||||
{
|
|
||||||
/* gcc uses crtbegin.o to find the start of
|
|
||||||
the constructors, so we make sure it is
|
|
||||||
first. Because this is a wildcard, it
|
|
||||||
doesn't matter if the user does not
|
|
||||||
actually link against crtbegin.o; the
|
|
||||||
linker won't look for a file to match a
|
|
||||||
wildcard. The wildcard also means that it
|
|
||||||
doesn't matter which directory crtbegin.o
|
|
||||||
is in. */
|
|
||||||
KEEP (*crtbegin.o(.ctors))
|
|
||||||
KEEP (*crtbegin?.o(.ctors))
|
|
||||||
/* We don't want to include the .ctor section from
|
|
||||||
the crtend.o file until after the sorted ctors.
|
|
||||||
The .ctor section from the crtend file contains the
|
|
||||||
end of ctors marker and it must be last */
|
|
||||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
|
|
||||||
KEEP (*(SORT(.ctors.*)))
|
|
||||||
KEEP (*(.ctors))
|
|
||||||
}
|
|
||||||
.dtors :
|
|
||||||
{
|
|
||||||
KEEP (*crtbegin.o(.dtors))
|
|
||||||
KEEP (*crtbegin?.o(.dtors))
|
|
||||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
|
|
||||||
KEEP (*(SORT(.dtors.*)))
|
|
||||||
KEEP (*(.dtors))
|
|
||||||
}
|
|
||||||
.jcr : { KEEP (*(.jcr)) }
|
|
||||||
.data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
|
|
||||||
.dynamic : { *(.dynamic) }
|
|
||||||
.got : { *(.got) *(.igot) }
|
|
||||||
. = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .);
|
|
||||||
.got.plt : { *(.got.plt) *(.igot.plt) }
|
|
||||||
.data :
|
|
||||||
{
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
SORT(CONSTRUCTORS)
|
|
||||||
}
|
|
||||||
.data1 : { *(.data1) }
|
|
||||||
_edata = .; PROVIDE (edata = .);
|
|
||||||
. = .;
|
|
||||||
__bss_start = .;
|
|
||||||
.bss :
|
|
||||||
{
|
|
||||||
*(.dynbss)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections.
|
|
||||||
FIXME: Why do we need it? When there is no .bss section, we do not
|
|
||||||
pad the .data section. */
|
|
||||||
. = ALIGN(. != 0 ? 64 / 8 : 1);
|
|
||||||
}
|
|
||||||
.lbss :
|
|
||||||
{
|
|
||||||
*(.dynlbss)
|
|
||||||
*(.lbss .lbss.* .gnu.linkonce.lb.*)
|
|
||||||
*(LARGE_COMMON)
|
|
||||||
}
|
|
||||||
. = ALIGN(64 / 8);
|
|
||||||
. = SEGMENT_START("ldata-segment", .);
|
|
||||||
.lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
|
|
||||||
{
|
|
||||||
*(.lrodata .lrodata.* .gnu.linkonce.lr.*)
|
|
||||||
}
|
|
||||||
.ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
|
|
||||||
{
|
|
||||||
*(.ldata .ldata.* .gnu.linkonce.l.*)
|
|
||||||
. = ALIGN(. != 0 ? 64 / 8 : 1);
|
|
||||||
}
|
|
||||||
. = ALIGN(64 / 8);
|
|
||||||
_end = .; PROVIDE (end = .);
|
|
||||||
. = DATA_SEGMENT_END (.);
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
|
|
||||||
.gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1. */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions. */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2. */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2. */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions. */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
/* DWARF 3. */
|
|
||||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
|
||||||
.debug_ranges 0 : { *(.debug_ranges) }
|
|
||||||
/* DWARF 5. */
|
|
||||||
.debug_addr 0 : { *(.debug_addr) }
|
|
||||||
.debug_line_str 0 : { *(.debug_line_str) }
|
|
||||||
.debug_loclists 0 : { *(.debug_loclists) }
|
|
||||||
.debug_macro 0 : { *(.debug_macro) }
|
|
||||||
.debug_names 0 : { *(.debug_names) }
|
|
||||||
.debug_rnglists 0 : { *(.debug_rnglists) }
|
|
||||||
.debug_str_offsets 0 : { *(.debug_str_offsets) }
|
|
||||||
.debug_sup 0 : { *(.debug_sup) }
|
|
||||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
|
||||||
/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.comment) }
|
|
||||||
}
|
|
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 381 KiB |
Before Width: | Height: | Size: 204 KiB |
Before Width: | Height: | Size: 346 KiB |
Before Width: | Height: | Size: 177 KiB |
|
@ -1,16 +0,0 @@
|
||||||
Cwtch (/kʊtʃ/ - a Welsh word roughly translating to “a hug that creates a safe place”) is a decentralized,
|
|
||||||
privacy-preserving, multi-party messaging protocol that can be used to build metadata resistant applications.
|
|
||||||
|
|
||||||
- Decentralized and Open: There is no “Cwtch service” or “Cwtch network”. Participants in Cwtch
|
|
||||||
can host their own safe spaces, or lend their infrastructure to others seeking a safe space.
|
|
||||||
The Cwtch protocol is open, and anyone is free to build bots, services and user interfaces and
|
|
||||||
integrate and interact with Cwtch.
|
|
||||||
|
|
||||||
- Privacy Preserving: All communication in Cwtch is end-to-end encrypted and takes place over Tor v3
|
|
||||||
onion services.
|
|
||||||
|
|
||||||
- Metadata Resistant: Cwtch has been designed such that no information is exchanged or available to
|
|
||||||
anyone without their explicit consent, including on-the-wire messages and protocol metadata.
|
|
||||||
|
|
||||||
For more information on how Cwtch works and a guide to metadata resistant communication please
|
|
||||||
checkout the Cwtch Handbook: https://docs.cwtch.im/
|
|
|
@ -1 +0,0 @@
|
||||||
Metadata resistant privacy platform designed to help you resist surveillance
|
|
|
@ -1 +0,0 @@
|
||||||
Cwtch
|
|
|
@ -1 +0,0 @@
|
||||||
https://cwtch.im/cwtch-explainer.mp4
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
VERSION=`cat LIBCWTCH-GO.version`
|
VERSION=`cat LIBCWTCH-GO-MACOS.version`
|
||||||
echo $VERSION
|
echo $VERSION
|
||||||
|
|
||||||
curl --fail https://build.openprivacy.ca/files/libCwtch-autobindings-$VERSION/macos/libCwtch.x64.dylib --output libCwtch.x64.dylib
|
curl https://build.openprivacy.ca/files/libCwtch-go-macos-$VERSION/libCwtch.x64.dylib --output libCwtch.x64.dylib
|
||||||
curl --fail https://build.openprivacy.ca/files/libCwtch-autobindings-$VERSION/macos/libCwtch.arm64.dylib --output libCwtch.arm64.dylib
|
curl https://build.openprivacy.ca/files/libCwtch-go-macos-$VERSION/libCwtch.arm64.dylib --output libCwtch.arm64.dylib
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
$Env:VERSION = type LIBCWTCH-GO.version
|
$Env:VERSION = type LIBCWTCH-GO.version
|
||||||
echo $Env:VERSION
|
echo $Env:VERSION
|
||||||
|
|
||||||
# This should automatically fail on error...
|
Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-go-$Env:VERSION/libCwtch.dll -OutFile windows/libCwtch.dll
|
||||||
Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-autobindings-$Env:VERSION/windows/libCwtch.dll -OutFile windows/libCwtch.dll
|
|
||||||
|
|
||||||
#Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-go-$Env:VERSION/cwtch.aar -OutFile android/cwtch/cwtch.aar
|
#Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-go-$Env:VERSION/cwtch.aar -OutFile android/cwtch/cwtch.aar
|
||||||
#Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-go-$Env:VERSION/libCwtch.so -Outfile linux/libCwtch.so
|
#Invoke-WebRequest -Uri https://build.openprivacy.ca/files/libCwtch-go-$Env:VERSION/libCwtch.so -Outfile linux/libCwtch.so
|
||||||
|
|
|
@ -3,6 +3,5 @@
|
||||||
VERSION=`cat LIBCWTCH-GO.version`
|
VERSION=`cat LIBCWTCH-GO.version`
|
||||||
echo $VERSION
|
echo $VERSION
|
||||||
|
|
||||||
curl --fail https://build.openprivacy.ca/files/libCwtch-autobindings-$VERSION/android/cwtch.aar --output android/app/cwtch/cwtch.aar
|
wget https://build.openprivacy.ca/files/libCwtch-go-$VERSION/cwtch.aar -O android/cwtch/cwtch.aar
|
||||||
# FIXME...at some point we need to support different linux architectures...for now rely on existing expectations and rename x64 lib
|
wget https://build.openprivacy.ca/files/libCwtch-go-$VERSION/libCwtch.so -O linux/libCwtch.so
|
||||||
curl --fail https://build.openprivacy.ca/files/libCwtch-autobindings-$VERSION/linux/libCwtch.x64.so --output linux/libCwtch.so
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
cd macos
|
cd macos
|
||||||
curl https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-macos.tar.gz --output tor.tar.gz
|
curl https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-macos-0.4.6.7.tar.gz --output tor.tar.gz
|
||||||
tar -xzf tor.tar.gz
|
tar -xzf tor.tar.gz
|
||||||
chmod a+x Tor/tor.real
|
chmod a+x Tor/tor.real
|
||||||
cd ..
|
cd ..
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
Invoke-WebRequest -Uri https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-win64.zip -OutFile tor.zip
|
Invoke-WebRequest -Uri https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-win64-0.4.6.9.zip -OutFile tor.zip
|
||||||
|
|
||||||
if ((Get-FileHash tor.zip -Algorithm sha512).Hash -ne 'a1c90d9a2f82df5f3d973e260bbfec76e413417cfa276fb70d1668214e2e607cf65be86a25e30c6f7814261dc154a02568459945f31389ae6a22e03d6d0d3c4c' ) { Write-Error 'tor.zip sha512sum mismatch' }
|
if ((Get-FileHash tor.zip -Algorithm sha512).Hash -ne 'bd99de56ef5ef9516410783ce48d52311093b26e718bf3d0a94efbd754d1cf2d12543f096139d9c289985349d26ee89b2308be5927fa1b410ff4f7f3129d6830' ) { Write-Error 'tor.zip sha512sum mismatch' }
|
||||||
|
|
||||||
Expand-Archive -Path tor.zip -DestinationPath Tor
|
Expand-Archive -Path tor.zip -DestinationPath Tor
|
||||||
|
|
10
fetch-tor.sh
|
@ -1,14 +1,12 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
cd linux
|
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.5.9-linux-x86_64 -O linux/tor
|
||||||
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-linux-x86_64.tar.gz -O tor.tar.gz
|
chmod a+x linux/tor
|
||||||
tar -xzf tor.tar.gz
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
mkdir -p android/app/src/main/jniLibs/arm64-v8a
|
mkdir -p android/app/src/main/jniLibs/arm64-v8a
|
||||||
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-android-arm64 -O android/app/src/main/jniLibs/arm64-v8a/libtor.so
|
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.6.9-arm64 -O android/app/src/main/jniLibs/arm64-v8a/libtor.so
|
||||||
chmod a+x android/app/src/main/jniLibs/arm64-v8a/libtor.so
|
chmod a+x android/app/src/main/jniLibs/arm64-v8a/libtor.so
|
||||||
|
|
||||||
mkdir -p android/app/src/main/jniLibs/armeabi-v7a
|
mkdir -p android/app/src/main/jniLibs/armeabi-v7a
|
||||||
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.8.9-android-arm7 -O android/app/src/main/jniLibs/armeabi-v7a/libtor.so
|
wget https://git.openprivacy.ca/openprivacy/buildfiles/raw/branch/master/tor/tor-0.4.6.9-arm7 -O android/app/src/main/jniLibs/armeabi-v7a/libtor.so
|
||||||
chmod a+x android/app/src/main/jniLibs/armeabi-v7a/libtor.so
|
chmod a+x android/app/src/main/jniLibs/armeabi-v7a/libtor.so
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# A basic script to redirect https://build.openprivacy.ca/cwtch-nightly.html to the latest nightly.
|
|
||||||
# In the future we may want to make this page nicer...
|
|
||||||
echo "<html><head><title>Cwtch Nightly</title><meta http-equiv=\"refresh\" content=\"0;URL='https://build.openprivacy.ca/files/$1'\" /> s</head></html>" > cwtch-nightly.html
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
// This is a basic Flutter integration test.
|
||||||
|
//
|
||||||
|
// To perform an interaction with a widget in your test, use the WidgetTester
|
||||||
|
// utility that Flutter provides. For example, you can send tap and scroll
|
||||||
|
// gestures. You can also use WidgetTester to find child widgets in the widget
|
||||||
|
// tree, read text, and verify that the values of widget properties are correct.
|
||||||
|
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
|
import 'package:cwtch/main_test.dart' as app;
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
_testMain();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _testMain() {
|
||||||
|
testWidgets('Blocked message rejection test', (WidgetTester tester) async {
|
||||||
|
final String testerProfile = "mr roboto";
|
||||||
|
final String blockedProfile = "rudey";
|
||||||
|
|
||||||
|
// start the app and render a few frames
|
||||||
|
app.main();
|
||||||
|
await tester.pump(); await tester.pump(); await tester.pump();
|
||||||
|
//await tester.pumpAndSettle();
|
||||||
|
|
||||||
|
for (var i = 0; i < 30; i++) {
|
||||||
|
print("$i pump");
|
||||||
|
await tester.pump();
|
||||||
|
}
|
||||||
|
|
||||||
|
// log in to a profile with a blocked contact
|
||||||
|
await tester.tap(find.text(testerProfile));
|
||||||
|
await tester.pump(); await tester.pump(); await tester.pump();
|
||||||
|
expect(find.byIcon(Icons.block), findsOneWidget);
|
||||||
|
|
||||||
|
// use the debug control to inject a message from the contact
|
||||||
|
await tester.tap(find.byIcon(Icons.bug_report));
|
||||||
|
await tester.pump(); await tester.pump(); await tester.pump();
|
||||||
|
|
||||||
|
|
||||||
|
// screenshot test
|
||||||
|
print(Directory.current);
|
||||||
|
//Directory.current = "/home/erinn/AndroidStudioProjects/flwtch/integration_test";
|
||||||
|
await expectLater(find.byKey(Key('app')), matchesGoldenFile('blockedcontact.png'));
|
||||||
|
// any active message badges?
|
||||||
|
expect(find.text('1'), findsNothing);
|
||||||
|
});
|
||||||
|
}
|
After Width: | Height: | Size: 18 KiB |
|
@ -0,0 +1,411 @@
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4
|
||||||
|
dir-key-published 2021-09-01 00:00:00
|
||||||
|
dir-key-expires 2022-03-01 00:00:00
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEA7cZXvDRxfjDYtr9/9UsQ852+6cmHMr8VVh8GkLwbq3RzqjkULwQ2
|
||||||
|
R9mFvG4FnqMcMKXi62rYYA3fZL1afhT804cpvyp/D3dPM8QxW88fafFAgIFP4LiD
|
||||||
|
0JYjnF8cva5qZ0nzlWnMXLb32IXSvsGSE2FRyAV0YN9a6k967LSgCfUnZ+IKMezW
|
||||||
|
1vhL9YK4QIfsDowgtVsavg63GzGmA7JvZmn77+/J5wKz11vGr7Wttf8XABbH2taX
|
||||||
|
O9j/KGBOX2OKhoF3mXfZSmUO2dV9NMwtkJ7zD///Ny6sfApWV6kVP4O9TdG3bAsl
|
||||||
|
+fHCoCKgF/jAAWzh6VckQTOPzQZaH5aMWfXrDlzFWg17MjonI+bBTD2Ex2pHczzJ
|
||||||
|
bN7coDMRH2SuOXv8wFf27KdUxZ/GcrXSRGzlRLygxqlripUanjVGN2JvrVQVr0kz
|
||||||
|
pjNjiZl2z8ZyZ5d4zQuBi074JPGgx62xAstP37v1mPw14sIWfLgY16ewYuS5bCxV
|
||||||
|
lyS28jsPht9VAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEA+jzmadukj4Q0qLgJ0at+nDXGruO5JD3HsehobiwO8HrdaaImY+rY
|
||||||
|
CZzxRWM4xryQ2AFuAGbSxGoNQT3dTLvjKNVdGY6jPzlS7vxKbPeNZtc/YMvfZ+Fx
|
||||||
|
uEjvaZ6nDbviVtQhtE0J2EZ32n90Ob8YC8l/7zh0hp+mZO6Wf2DGXWjNvG7d8Ucc
|
||||||
|
p5A1ZVIpJ/VQzdlPaocO+6AvxvSBpaIUF0yGpTwofTOjtUmZyuWbhRndsQj1qMcj
|
||||||
|
e8wzOIgr3HZyhO9wztQGkZ8bzHq65oZe0IIOXZu0icZamFGQ5I6y5duCqxDDe4C/
|
||||||
|
v1/6bD1I+/ujLXRMmkcbJ3NZE+KrZg7KIE5ScGbkJIX7vIicqtsf+7VipdOh3/wp
|
||||||
|
qaDxX9Sp2cbVUU0M/aJ14nDSeFlx0XQAgWkPjG2lYtTNEC2zuudBCuCD8es8EhAW
|
||||||
|
FrU94cYg9lVId0NDMOpWPMH2QJFS4tk3Hc66si3+gkCOt2GOaSQeD+gGWkdwDzn3
|
||||||
|
S8iAur2GohFFAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
B4914rKqUc51Q1nq8CrA/e7EaMQ0ug08qlBqWyzZSDiBKVCoQj446ZJMU9VKlzJF
|
||||||
|
XtuURlJ7zswXMze7HceakrkxZAc7GiAGKO5hgbbI8XGLvXn16Lsr/MP1cmbKoI04
|
||||||
|
g5tG9Kx6yOB4r/l2TQY9Tw22YcdJ24W2/mw6TmDv0b+IorsIBnxIDv7Q7j25IkNE
|
||||||
|
hW3F9R+Ntja1RWPqKnptp8nxBt5/2jVr637BFczDv9K509QX+HHKyICA1hnvDDU7
|
||||||
|
N5Y1/mVu4JwQrBAFL857XbobP4QaLsZ34Q8LRE4dveuyw+vjVa1YimZ6h/RvrYyP
|
||||||
|
8DUi4XnzFyztecivXbdSTpMTSMfC4NQXFeT+XStRdWlapZyCFhp74w3wv7HCB0z6
|
||||||
|
7QT1HWMKPRvj1DsHhvPviyLVCL2tl2x+G7aaledOPf6BbhO7VolNeHiubyYCQl2H
|
||||||
|
t/Vy72DZbQeuLhf5GyqVyUm9uugzvVrryUiNUApOW8Xta2dAEBqinDrrY6iMYxh/
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
UrJN3Ey1hSHTaMUAhINCVFhojt48ppxky0bvwztQ9p/Vy7dfRx0APNbL70/XZOrR
|
||||||
|
sRj8zxtx2+tc5Lnkfaah63bmVsUNTgD6LudDaffXiV8XhIeVbzS0r/YJ0U1OsbK+
|
||||||
|
ApDItNDUz+VIJL5JUDjq/6fojFlWPYNIwyk5G8zOM70Atjk6UDyCIihV2u5pofW3
|
||||||
|
znFaFp/XhC14S8lMPZYKbnyl2iQ7UsqLpTxg3EwivIlSVFs5YQe0yXgJFX0oNd9Z
|
||||||
|
gAf3JIonA2g8Oo9EkgRfYCI33AwyVoU3QN1/AmLH2uPWTKhMu7k+OHktuIBfyFTR
|
||||||
|
9jbUq+YTU1ni6kEsJVBP/0I4n9Xb4VYIoqOq0BrcEp3lQ8BCEWjIGwLh1HYc9/DY
|
||||||
|
meE+cwLp0RNU8cuxyrGnkLA350bsNxrDkiaHAkj5ZA8W9VTGYsBxVhbLdQzN3GOm
|
||||||
|
63GJBgjdaOsD6WXs/737nD2sLu6dnA/Jbz84ouZSafQO/FNQZnndfj4osjabmq8O
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 0232AF901C31A04EE9848595AF9BB7620D4C5B2E
|
||||||
|
dir-key-published 2021-08-01 20:00:02
|
||||||
|
dir-key-expires 2022-08-01 20:00:02
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAu9O0Pueesn0+29BlxZs60mBqehjdQtgSnKOm9QZxbQ0xrMQgbFnR
|
||||||
|
hWbKD8erenyeFk2SF6AJkbyzgYC89hyPW+8GBDmg5bE8fRKjgV/nI3tY2m4rkY3u
|
||||||
|
zSmYIdwqHUUc98Xzt9PaQ8IJAlDBY4XLKrWmJMxSyhBlVEept7+9Tj23qowW44Mz
|
||||||
|
xPJZ1aFkB1FpkD6qmoCzVZbhXy3cGt1nDwdJK7KqlaXziz9pFiw8PzTVU2xFgJNy
|
||||||
|
+nEcT72DBtk3G5K2Riu/aXY/D541Cioj9KMV4Nv4g8aBKx58Xq2tq1pFkc1Bqj1y
|
||||||
|
2MomVR3iskFzlqC8yKWGVe4OP2IaOhtcQJYp5GR9q+dWnr53WWNVxNu3sA9iMal3
|
||||||
|
PJUk5pIYrsmArGew5gmlCe+Al46nPINxc7ouztmStAV+2F6SpZlKOcstnT+KJ52O
|
||||||
|
1xnOSaj/WnzG2o4KZ9UrFQoUNOLQJcelPcC+vrinMk9BQPcB072l9NjpUBC9brsW
|
||||||
|
qTCMStn1jfDDAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAp7nHn/R+ZZ8lza379M7BJ00JYPAcncjtoa2K2Z75bDoxlegGvZXp
|
||||||
|
j4D0WhqksaaOr/+YCSPMcs4HAapKE/Dj09p1kjzh6Xu/iVp51NiQAARS5j3tu/5k
|
||||||
|
WJQ7ig207TdtjmslZIx0UU8pieuenRdyUN0PvjOkaoZIpao1+UlIe47DP+42D3QX
|
||||||
|
1J2wu48QDvt7hUUA3y7yLUyNMarqYBbbXQ/MpH8tcMT76TTN1uilP6W/3j1b6Fr7
|
||||||
|
NGtbUrS1EzOOHnCpgpnD8qGcisDKrHcVkNkh1w+8LW9ef7RGpFPpn022hUQG0WLD
|
||||||
|
5zrh19SAsKetWAZY6RlvyCHPVReajIAovwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
ca3I8mHu2zEOCnzySzdk+rbZLpohw5aa3NmTGFzRUXqOeHClOYHRc+glAyCrtUA3
|
||||||
|
lEa5fiFaZTImKu0J/uroyR4uF5JpzLOfojTQi9P5hMCBSdd7uGzoKC+/dKb2OngZ
|
||||||
|
VkBjptMf1S9dy2lUdDksHnnyg8UrV7EolIHUFNdEBI1LeONkdesZ5oQMg3HRlVpU
|
||||||
|
v+m/7y/MB+o3KAXkQyAxTcV4bKdsHm3Pf0CSfDgOPImwFS4lwyEW0STlOmVHojZR
|
||||||
|
5wm+5dwt9vbD7K6ectbnWtWjiSrvtGjqixO652lxz1qrsid99S5wEzJNhfif8lYe
|
||||||
|
VsB9h7YagNHJHLiGeBT1kg==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
ZkHpe8JVvGsiAsH8gw1eZVIIE8WuM+3Sdd37U2tOyDi7FVwJV+oJ+aKwcCTqTLaj
|
||||||
|
jglQJbg2JdV4ofy49ZaQa6FBGLrzxAS6Gx0jg+28Kzbr0xu9hSX81oPSXKn9KDLr
|
||||||
|
BvmuSqKBB+5B9nIEBjm6FwPc8MjqlvNesuJ3IpW9+e85eB7qsH4ozjHF0GIgpXu/
|
||||||
|
qXrk2TEK1nMc9EN+VCYuy3gAm46GHQEYR1U7gIofCYf7LQpDrfj1sAGquCQ3vYqT
|
||||||
|
Ex3GtqcDV22IME67Cou5rv9OmMnmy1dbeHO4g843RX0LXtEDdGYGSLHzl8EAscrg
|
||||||
|
i55XFlS6z5OwCbdDvFTkHUWRlaiDtoymaxAEW6GUmNjHhgWY9wJwgroVNRsP8Ihi
|
||||||
|
aex9HIND1MY4ERS41Csba/0grf+FahMVI12gwpmrnKfF95QHWw2MEvT1pzZGtMnq
|
||||||
|
XD8mcVNYJtcTvYM/cUa0I4BFD1AyeIP54hEXwIsqHm8KBJpjX/ZpPzksnc4NY8i0
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 49015F787433103580E3B66A1707A00E60F2D15B
|
||||||
|
dir-key-published 2021-11-28 16:32:54
|
||||||
|
dir-key-expires 2022-02-28 16:32:54
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAxVbS0noZKz1Ei6858RGyyuQgwQUKG4Urrp2BiAzkYxwX+6fURlut
|
||||||
|
AjeLb4XysqCdNdUipuLRQ2QIy1C220QiCHV6jZAsM4tmEq6TpK6q1lxi5YPKqbGS
|
||||||
|
CfUQFT1nO4s4DCYSLCwiRNy6bMe8tNHc0MpXP3loCbPkYCoXrEL6vYIROw3oeGWE
|
||||||
|
KbFPQrzYJAPHgUubBibsY5lkUY9N/5QZw2y1bn+dq9mFOoCIHLd6DkQmySmftnMe
|
||||||
|
QrpYA2WvE4M5yN2HB8QGT7TdzXPPL6889rFw/mjqYExQPX7cqmILkchsB7I5whjA
|
||||||
|
u0oodF8Y9ooK9QT0GeK4h3xQhzNG17anuUxbZ7sxzmBwBNmkNyLWEeIntazyjRFr
|
||||||
|
P2mDY/9YK2JOQKkh3tKl1whcCG9ZtAhKmm/ijG7OrhqtusdGKBXIgALf4f111AK1
|
||||||
|
gNcacDx2fJzRHuNK8zkIORAzStxKdLbAbBNeLENk1zBjSkrxCOJH4mBpr8TXULq1
|
||||||
|
ThLI/8OzZq4LAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAo32l4qg46cqP/sAL+oLmQM0mDiQUy6EtNa73vyy0BJEGWJeImUO4
|
||||||
|
gHNg9pyMFqyF+rP824gAzwX9Un9HaKgFpIrsKcZzg+Yl2vlrBQpJ0NPIkN9oqj27
|
||||||
|
W/A7RftMhH2itv0v87QudD7FqJpxdYNf3wpr9GvsAiHZMBfC88WhCnmJoDBwyucY
|
||||||
|
HFH7gzjPeDx37KD57o2M1KC/SRVtQtrccA/WzcxNypgAYkJu4yE2gaDr2WFn3hFv
|
||||||
|
kscW0jn6+157UuKH0rCNeRFDx8SsSS0nr6Zk/n+dlXzHGDO3vQIKCoRoH9yL4T//
|
||||||
|
hkMYE/4qc9R49VyXxK+n/qU6HQYpQMi+VwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
KKrOMRAg1bx+XFLRjhQB5OFjtupkqkFnGjS3LZQ5FHNwJ7cKG1X7K0aJNAumRPMD
|
||||||
|
w9xraIMuuok46wj35P9Tcy68qi3EqIJP5378ZtdK3Ncy9KkSWJSA9MLPmB3fClL/
|
||||||
|
/5TwboePXRdlt++Bcw9OC83HDuFVBqZArFIvopKf/AJOyViRVHlBmgNKFpm9RJTo
|
||||||
|
XsD415rJAi79tAfXzKuagke6DTVqobMhxrUmp3RjbEEEC6icQ3YX9X6NOPQ4Gwl2
|
||||||
|
bpWOVi3/9EGRge0X8IYsqB6/pnEXM2FSOTMdwo4YQzIgW/HLE9hXjFCx7QcPkcos
|
||||||
|
AZHvl12tKzZF3F9MKPcNyQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
wb40bfNLWyU9pWW+2BAHbrmZZfbs9UEIS/6G66VE6823/r6M90RCmFx1JlwqgmaV
|
||||||
|
/WMbBE9DxFKILyhuQi6whIKoYndg72VDeZL5BzWctalw24VpJePVjeGLcTdJHBVh
|
||||||
|
a6UiQFaQdH+bTX6qNIFv9nNwq7ZzJRBvaYF9bK8kaTrZilFKoRVBxXssBUFjEz6t
|
||||||
|
f+sei5WIiBnzaQOUxdMjvdDAHci4DXwGw1U2M7jcYARo4FfvWkAxzWLxocWmauPM
|
||||||
|
8tDn0fSgMnLlSOR2crnriQMFhYD+9xyxfOq1IDH2IWCKlejz7j3DHSqBYiUSO9oD
|
||||||
|
uX6htwbMWwZQeqt+LttE/zZX1Tcv6PJqemT8uabH0s94W2A3sJpstWJ+0capb+Mj
|
||||||
|
bvTXj7t2ilqa5RX35KKhaQ6wlh4OXZb2ydeJZc7wtyG8eN53aVqJNJQ+WZn4IiTq
|
||||||
|
fefr2ojy2VDJLDHJVNpKQQzmjXtSs+69wCvrqdHGjGAQl5L31LjZgaNLNj14RI+H
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint ED03BB616EB2F60BEC80151114BB25CEF515B226
|
||||||
|
dir-key-published 2021-03-29 03:27:58
|
||||||
|
dir-key-expires 2022-03-29 03:27:58
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEA1d6uTRiqdMp4BHBYIHKR6NB599Z1Bqw4TbOVkM2N1aSA4V/L/hKI
|
||||||
|
nl6m/2LL/UAS+E3NCFX0dhw2+D7r7BTJyfGwz0H2MR6Py5/rCMAnPl20wCjXk2qY
|
||||||
|
ACQa0rJvIqXobwGnDlvxn4ezsj0IEY/FEb61zHnnPHf6d3uyFR1QT06qEOQyYzML
|
||||||
|
76f/Lud8MUt+8KzsdnadAPL8okNvcS/nqa2bWbbGhC8S8rtDpPg5BhX2ikXa88RM
|
||||||
|
QdrrackdppB2ttHlq9+iH3c8Wyp7bvdH8uhv410W7RnIE4P+KIxt3L0gqkxCjjyh
|
||||||
|
mn9ONcdgNOKe31q2cdW5LOPSIK+I5/VTjYjICza7Euyg03drpoBMGLuuJZY6FXEV
|
||||||
|
auIBncWe+So8FMxqU/fwo5xm6x085U1MwXUmi4XDYpr/kau6ytPnzzw9J++4W9iC
|
||||||
|
em5Jp0vaxrDnPdphqT0FWsBAwsZFL7nZRnmUlTgGsXUa0oSM9/MErDwzELh/NwG4
|
||||||
|
DNyyzRG8iP61AgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAsw2ZJlGsmfDmDwoKbzjOno759Xwqn6JX+tFasI8eRjOFnOyjYzd1
|
||||||
|
XjG6Gj2hVpF/ze2NiTuUyRu3Ybp8G9/gs8VGPljxSHkEugGjQdYFoST02ma0vUHA
|
||||||
|
8YqpBYOiLvsXnqfEkl3Yj6HVxmVJA9j8BxODODlBtxRMJWFrpp/b+qCo/YyGmCh3
|
||||||
|
n0qd3QNqFPLIzwvjWVhaFfga8dXBT73wX9uYT7nT/e3pV7ZvTw0caqi7svNzj0I8
|
||||||
|
/OxOEjoBQEQMQVPT2bNZKBe9X8QKDSgdealZQwBT9wdZ4KndtCj6Y8MVjj15/YtH
|
||||||
|
fWfNyUHgVqOmfDK7m3pHXR9fGgsLQexIfQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
GyN9MMaPABXJ16WAFIhdzOhNT59BI0RAfV9ZpUJgzkAAmpoj+WwUtWfcrW7a08CT
|
||||||
|
9g60QwJonP/Nh+8iLvQYH5ZyEqsEj0HEUD/yI2kvN41Y5QBD1Sku8Cu4E2UaICzL
|
||||||
|
V63oitjQzppKlVXHyP/SXsI2bUjoHLtT2pBvxRJ84DlZBEQ/ZqS38NN/+Z6DtMR/
|
||||||
|
kn0l7W5yA3bYWzeKy1TeKLWo7p0hHzv/Hswe/eha+27LuwZZwwfSQrRy1fi66Fmj
|
||||||
|
0xBP+iXXtmNleFegFuhEBPXa+9udrT9rodSdazkGPzjyF6HWRMP5DtmTI6ovJDVX
|
||||||
|
60UQ0hNb6KAP+FZKPz9/dA==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
zAgmCR7tf0btsogvBmdxJ7+RWjPBzmDSA7f+zlK0jOc3lDDD4pxuQO6iNcoEDYMC
|
||||||
|
5hkzVoGBMYsxLfLZXFGE518dn79iKr6SQoq87AhnAsIiAfXMk2AWLkWI7MTzZo2U
|
||||||
|
dcgo+7vzxMObk86vzFxYWrSqp6CSZ7RwBRnH3vCGLfOMZ1lXMug+MQAQYAyl6KIR
|
||||||
|
3d/uEu3+sPFJcHQFP3C/7bHDG5j/76kwoFzjSjg974rSjr1j1FbrpNn35mLc+2X/
|
||||||
|
11n7cOADHWaSN3MlLWGsYxuuX2l1w/XZNfFEezDwK3BOotbj5spU2nQ8xbDFPB5+
|
||||||
|
ixDfc00TC3YbveSz+S8W9czfysJt3KaWmQczDtSIXag1qrL52CBGUVGP6+R7xnpR
|
||||||
|
/4QD6yCKmDcNk2D1YnindwYC48ydDt/u9A/97cEBpUbul3feW7eKLk79MIklWlWo
|
||||||
|
3c3aQVH6Ewrb76oXYYwzNbqJOp2ceREu72/Fk/keprVcupVDtVoqHgDDpfOUYTJd
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint D586D18309DED4CD6D57C18FDB97EFA96D330566
|
||||||
|
dir-key-published 2021-09-06 18:42:41
|
||||||
|
dir-key-expires 2022-09-06 18:42:41
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAvi5+A+XPw4jxMYhmEI4+MpnaX3dUEbsMGHA+xAMnmVhuxbm3Dn5c
|
||||||
|
TyhQNY2LOlsieE84UYG+J4dABfaFH4w0l6zUJkuytX4+6WRQontw9puR/IcXkRwM
|
||||||
|
8Tv/tY675OYRCm9DgDAWfqZM0IgTzSrYRDl8eFPSFCOP0NhMrQZeUrdKgwAXVZWP
|
||||||
|
xt9nTCwT4K9BMp47LEmZKdEokeVsr0l29Z9v5+r24k9x8EQjDexsoHwlVrxWfarG
|
||||||
|
1klWssfSFpkMN+FkTQnBC6ByiBh5ZKM5AC/HkVFvuHjehUpfrtNk6XNFcKbDvEIg
|
||||||
|
qPdg1QWuuSWpZVA+/EwSBtwMNcq9pv60L8Cm9WCJoSC691WByiGwFCy1/XcBI4J/
|
||||||
|
BkoMEvP3kAxzm92jqGbpFSJawFRPZKy89FDKpha/So3CERQPV0ar+DTpVqDlryWV
|
||||||
|
N4x1IzpPeSHFj7T74q8qdrxx0wcAjWJ9WYoGQif6FK3hHcmbSGSgyvAFeoYxyUCL
|
||||||
|
JHkjBCD4WTWVAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA1Hguh3PNTfMd7kLD8NupSdye1KB6hhQitx8DipvT71ZaCZYI8fZ3
|
||||||
|
z5xa6fCcJXv/xoz1tzKeJ1n4/AzAbc7ltCyyWkj9CbiB99cEe+sVE9R899eFvPP9
|
||||||
|
DUmsmgy0Bn2MrdfD/N5VeJ219TTtqI75BJMd9n1+r5zUzhji2ihcLWYgi0GVZoec
|
||||||
|
6B+xfPtYbifCdrPRBwrMAW4EhtMKeJfzsYFO220f7x2OmmZB9muesi5O8/0zjwu1
|
||||||
|
xOKldXCFbccTfFN88nYmaO8j0SpG9nOveFXavPs0LyVzhuMkbLXSWAN+M/S6GC4L
|
||||||
|
1kbkjQ6YhuYSnKxGFo/wdax41jrSFCf3qQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
r2a4uvuN2LUgSuHoWYckJusjzeaEfTTN+DHJdQjJrMueZtxhhz+C+soYoSAvBsHI
|
||||||
|
huc2y0wLbeNMpLXeyGoYh0M4zm6RyjMksHQZbgPjkibflbUI3csJcvaBMQonfo9B
|
||||||
|
knoqOzeQd8NioOlnbYQ+k78swGtg2ndHpK4G4NMBK6ZQrbhrIk0nVhOhaIHpGdiN
|
||||||
|
icr+czGq6SzH4Snp26dJ+J+9SAdTOzgat/C2Othdu122JR2/7GzCnz8dqS3LabN9
|
||||||
|
iWJWMLxayFKi+Z5f1WjCNOVh5lSjpeLjUNSrA1hXXKSRD0eFOQFRvgvO60gyvooH
|
||||||
|
C8amqpSD8HqsCK6MvN7V9g==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
uuQhm7YYbqR4/fGSDWqzwiw40nr7y3laCmfiTDHOA5N6lVOw/tM4bdMbGH58wkkK
|
||||||
|
XBIEz4zQnIT4Sgaumc9PZK3/a8wkx3HgvSNZAEvv5GK2iD8QQNaR0mv7/gbCOLeD
|
||||||
|
4MAsWH7ehc2u0AcebYehYWE7/fknYRfIGLRzeAeR479LgtFIaaZ54lGeEWKA7qBc
|
||||||
|
B3njJcNDlekChydxw2JRMw2GmK7Gn/cVRLjFiG32aaTPA37Ietw6Z8wXEjTy4087
|
||||||
|
KTzTe6puX0g9kCWMaGIBzod+ucNOG9WhgVfy6M+OMddI4KbgizUM7a5c3DZwnQHk
|
||||||
|
nn5yqib/W7NmHZOL1k2qYlKQlbr412bsDgBDoFYSYPIkbO4x7LHJnGGiwxYx4vmx
|
||||||
|
caxDySQtqCcR9ygMrZVrL9W/Z+w2N/KCXnL+SgTmN0x/Saor1ZTkONj5Tfn4dg/W
|
||||||
|
xDxvLO02DpVTfgidUsBeHSnMQn7w0iG0abhWFmYNFDjxZFEWy30mRCEYADC/1NCI
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 27102BC123E7AF1D4741AE047E160C91ADC76B21
|
||||||
|
dir-key-published 2021-08-21 23:12:45
|
||||||
|
dir-key-expires 2022-08-21 23:12:45
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAuxgnMVH4vwBjMeGvrEODOYcjbCS4N+Wt0SZ6XA5I08HyMf5AbaaF
|
||||||
|
MDscJBRIUOp7DyLmUwK+jp+QI8pUjjKsB8S0ctb/J3Im2T6CXnP2KgEfVmpNVQmV
|
||||||
|
XdMm8cRZl1uIZDDBAXizSQ51f9A17TJh7pF/5khYp/SAzl6aO5ETn7ry0ITiJnNa
|
||||||
|
6cY+400F7ZBA8NuXnCHVGfmpFFsiJKFrS1Kve629eeaNEd3mynRviBXJy5a4NEGf
|
||||||
|
y42Ev8on6SxEnF9OG0NMJ081/+mP+j8Dsl3+Uehzr9B42MQQfDo4RdYGrt9XolBm
|
||||||
|
L4eay1ieZEsFeDy0TMfiGGbr90wo1fgGLHIRSfTNLhhPJ/f9cTZPe98rhSgGWiAd
|
||||||
|
RvK5SljoIOR4qdS9/aiZkj1P+etvh1rIQUcG4/xCOBnouEBK+DDHZFqyMtpMPtV0
|
||||||
|
Bxi20DVaMJcyhdfjVqcRSyuR8tlOnTid6QwBj6kgIIfMaC+4Ht6yO/SYquCWlaZl
|
||||||
|
y7Pu7li8WyW9AgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAu1QJ+qlCbtrYsg9QENtOpvMrEDc+WgH1ZFxEqk0v/ad2ACQYe4dT
|
||||||
|
g1gJ6VZyGths3p8+WQXIA9YbcEr2oajXlLmLT2QAlqlsXMPKwwIpeG4rvR43Wwq5
|
||||||
|
mQ7aX+/VjZ9YZNoZVEAy1O7ti7GIXJzJYDOdgBjLifSjpjcEmSaf+v4E357azs9R
|
||||||
|
ndLHRRwbBLdUl7G3aMkL4ejrv6AAXexPxAL90xsb/MAhVEOQrJNcVMTgII0fSf56
|
||||||
|
P1J17SQwthNZ4rTMo2O9TvWUGNf1sMb9kdm+A2Nwo2CKmUR0uo5wHN4YHSBYFDcb
|
||||||
|
hxRtZlhSFfBJvJgrX8/+CnJrBFC6S/7vJwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
VzdxGiA6egLcZjm3hHrTW+N+7sPwaEcdYR5/GW757MO79O8QwjOLJSa5dOF5yDWa
|
||||||
|
3Ie+QDB2Q++a3+w776zqpFsaGCuEHBCfU9pxatKdoTsExZdQnWHJg4u9YD1JcYvL
|
||||||
|
dZq9uCCWaKa91OjA6/U9zp/LY3tOPUWCyO4MHehHYggzapbcF5uaMG0AT0lZzaXJ
|
||||||
|
vh180N5YGMfm0eYXJqkJyX3WCZhGroh7o3DyaqtBSJ1cY4NzTNgPoCAi3J/XEoCI
|
||||||
|
3JzxfH97uyqQngR1yGb5KggdM2ejci3Ld9q99hjXlzYRtsobUQBTlZca2vUk5ALh
|
||||||
|
vFWU7GzcNIdDjKBUd+IhTQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
WldVJc0L3fByDY9D+Yha2/8Bw5nqRpHu8RL8lU8zXb0rhfiA6DN2aefSCG9WEay1
|
||||||
|
sTVs4zhS8N0+278oP51Lg7S+V6SmXxKZbF3I2zNaFMIPVspRA3OF0R9vCP1YMxeo
|
||||||
|
D4EDQXiRxNNeM9hAjmmLiE0j7ZMetZ88ewwsOOXAvPHmCth09nWdCYKwibwUW/U3
|
||||||
|
w1HXCHK4BdZ7XXkMJNry7kZP/H1/5oYyuKshue4+f8tgRa0xg0wbHDrdbrR1qBBu
|
||||||
|
Xg9Q11hV29RIdD0ZgugUdyGKlpRa6Mb3GD5DzN845sFhCjsPrYyZv7Xo/S+uTtN4
|
||||||
|
t59BtF1TjnsAhUk7shk2W3zzaauzUarkDA1v+mb9NZ3CFsNgfxt6d1yDDyuxJgaC
|
||||||
|
VkIfO9nX9dCORSC9Ow+XOq+D/o4FfSe4q0VvrJJILAcw2Nu1Zg4ZhHBeugP9f4I9
|
||||||
|
p/+ZMrEr+YAKkjPw+uIEdR0l/YZEhcrjymX4FY829LNll2AceqMCKoapFWuEzzDP
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58
|
||||||
|
dir-key-published 2021-11-09 19:16:37
|
||||||
|
dir-key-expires 2023-05-09 19:16:37
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAu/DOrbv/4IAYvyxsy/6ivC3q5yCQBWLKHZGYKQa5G/3rem8wen0f
|
||||||
|
qF7y4ye6U6faWc5kcNMHEKMIeBzMErxwF345qoGHITxbbOWnizgwPgrdCwlK3p0H
|
||||||
|
1XZGU/TTjoaM25P+ZNCBvGmDQRAtgs2odnv+i8hpu6vrcAUZYXmmw/Ag1Ou2AlLC
|
||||||
|
mPpbjV1O5SMylgC4IuCBPr3iA+M1kKkvj4LmwU6pJxjAae76GLzzQ/Ffvi7rRpvU
|
||||||
|
2BHetjehk+7/t8izgbhT4VABtzKgrv9ATnhfEgPeT/WBq0E75iciBBAXRPF5kEA4
|
||||||
|
k++NPy21XpL7jkQ4wnMs2HyiFhHbUwbLcoyQ/JVq/WBboSwStYbkdizRpkhJ1eNg
|
||||||
|
LiD8CPWcZnhWZi9VWrwT0xl+Mu4v6kwo9kVnXhOfcK8Wni9FqiBu2tmNDoGPG1Ac
|
||||||
|
wptYQSIoujuLgn4MARREwo9cWrKp2w+D7Dt4U7U5OrXL7TXjonEKuEHwRhzz1JA8
|
||||||
|
7LXm/wENwn1/AgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAuxJxHCGOw9DgNtw4wqi78OE3djdiLwbie+2CevKMRaO14IhuQGVK
|
||||||
|
w1PYsnTuVLVcJl3Y4QKQ4nnbe1QCiGrLq9wueQy7ZvBeZry3f+QD1Q/PAG19n6/7
|
||||||
|
hlhXclSOJ/jRah0Gi+QXAycKE5RES/Qn4F5fNE7MxzM0ZQHIlszZLNUrcpeLE9nX
|
||||||
|
avlqlSqK8FmLPOpOSRrdPtzKP2sjW9UUFVGMfurDYIC51hkZI/nyy8A1C844sfuF
|
||||||
|
LV6oYpYw5+soA122zBqGqP6vApwFCvWSDcGlx8xj1Irdo+JIDfK8vklu9P11rTWB
|
||||||
|
R7dZw9pD21reD0pf0Bipzneho6iiL++w+QIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
aMzjdOHri8Kmdoy0qt1a33Y9/e5vKkJQkzCKdHN34Il5FMMCkOrJ1yeQgZyp6mU4
|
||||||
|
jPSpUZlr1Iq52x5ers4fH4SybvX16BDq+p6+Zel9f5TpFg1vzdpJH1WOJ3ZoES1N
|
||||||
|
S8CpiXVz8flc5Ez6Dc7uZGSE2fYRl1Pswn3GuLfR1Wjw0VNp1VgHZk6xYXRk/YLx
|
||||||
|
OyjZTWEWAF/0qw3usXtvTvh6wGniVxr0rg3zZbesLXti4TAn3B3N6VG1TPOizna6
|
||||||
|
s26edpQ6RQPigAuccEwU5iaIQEGkIxcoe61qnPvAoWP3Jk/sZAGCqhbya0CBCH8U
|
||||||
|
pEW/OauwlDlr3yXEKh05aQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
XhAoF04YrM2zJUvrQuEsGhU53Pbf1B0jv5F4YkMlRX2y15rKXKI93vQTM1LbnYc0
|
||||||
|
ETkhSOQB2rpnX0bcE+K+x0sWXiMRtR1HSX/oIPDI9MNqHv75eZlEkSaDJHIsQJlj
|
||||||
|
Dd++tMHkRc49nNNo2J25J3TiBU0ecpVYYvtJzynE3W8tX3io6EmvTehkj2o79z0A
|
||||||
|
ax2A5JG65plch0ES2yK2jqgBEmkA/eZENDNQAaERXMFJbbpHIMBaGguwCEieJe77
|
||||||
|
JBAOxJFRGpL6MhMpcvi5MgEMqfAv3AhlBo93n4apT2CYR8PdCHUZyq7FrgwTSJS7
|
||||||
|
ndl3YmvxJ7wnyTXitw0GcSVeQaYMQV+LR9Z1VkmjIwRuHliUn7hR79pYqs3t11aQ
|
||||||
|
muW8jOrx+5QsiTLEPV6Hs0pzXc9XDw7mnJ6M2gxxF8fZCztal3TNLs9+1O22fxME
|
||||||
|
0VU1oS7SG6T4M1YOXgKFUP20gLl8sZf+3lGp3aLZIK8psR3vzggpaRSUKgip4Lqv
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 23D15D965BC35114467363C165C4F724B64B4F66
|
||||||
|
dir-key-published 2021-09-18 16:07:20
|
||||||
|
dir-key-expires 2022-09-18 16:07:20
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAlv6XS+VppPaQzOgor0YFlcXLWeXiMn5N3VBneXuw8maLOu9oPJ9z
|
||||||
|
2/oMQN8a+VOWTf+/jebGzOBK6MamXpgsIZPQWiT18gZMsYdR8mcqBYqVP3khwUWh
|
||||||
|
9QYkV+m+Auxa0TLzTrsi6dLDJ384XdpDweU+YJghMJNZ1NqiT8ogj84hxs5Tf+Qf
|
||||||
|
bn7EBIcU7SAKr5Lw25KrMb5e3AZSC5MilBS/KLgVTq/GiWb7pKd5pxGwlGolNX8a
|
||||||
|
PccZ2ZT2DrSQsct4wVxhSbUqANI3PfMpXvmUDxWWBgbQwLF02/4gi+13snlHtqwl
|
||||||
|
y1WjE55HVfx1CTX13SStwmF/N3SFtFf1qil3j5qrHdHtKlAYOaTfqab1eLVH1l83
|
||||||
|
LI5QWD7ri9GpPqIjlh6PuaHjaO2FW20SouZtS9jJKwi1l1G3ef1tSlha1cxkRxIp
|
||||||
|
U/ngvQBsoa9X26VfQA4MieZgVVdMVwjCNh2YC9aEXc/KxfcBueZkM1194qP88cVu
|
||||||
|
dOFYaftOkuGPAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA3OigVlkOvlx54wcY0RRuExNw2sPYHr8m8QP+SnzARDbrubvsKT0S
|
||||||
|
z/+aVWccgacBtihOpF9juQLHb+nqhea9s6QS8XAQ98bqm8foKToWuxnIRS9c+8e1
|
||||||
|
qcENTfh6U2Dr8ckwVcKAPtnLnPtbxuFF5UiqXAPA89ZmtqUPv+DfmDr5fdeb0bCu
|
||||||
|
Lo6TCFLQOcn2Qz1WsSv/2JRkSBy8pgaC01zErgv9oRVIzFfLn8YpfnWZkFiRGwX6
|
||||||
|
/GBLsS19SLLX0xLkPwQ/CwN6OkipOtYi6UNq0osHw9xfm5sCzcnltJShA1YtIp72
|
||||||
|
e1HkTx03a43uAKlJBo1rMD29stVJu9ABEwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
r2YFJIj1zR9iMPWRJYMDEKuLlV0Gbis9232Gog5sS06LpUFPYL6clLDf7eWAimPs
|
||||||
|
u8rUUP4JEjmAY7bWHyqbG3D5iljNin50W7kvY8ip+Vqf64vjNUXFDKUbi0iGkfVC
|
||||||
|
nfX67FL0JF74hqtCtMlS5QPvD4oLsC40DdmPD4kCulaSrMlmsFRGFdl60HeSLbeP
|
||||||
|
oopRA4yYB4ZGJxJUaSuMm6RrcK08G2l7vLfHpxhcJWQVb2fKB7Ds+AogZYnc6ZYF
|
||||||
|
hpGAP9y+Yn8TUUqPMhhZwLw/8eUAhtv8G2aBBxHyctlGvg1YFiquPP6VEn88h9GZ
|
||||||
|
X4d/mLOAQeYWEalQC812iw==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
OlLQuEDdagECnVy1Nke/C7dpS8+8XvgLK/hGgV/OpCWr+Gq8bL6/NpK9GP7EbsUI
|
||||||
|
NxsguJ2r1wkEGTixz88gdKWDCC3evGW1pqnsjkCk69gHGtCxmrFeiCxCSomaOjzw
|
||||||
|
HCnp3TcT1DA4EstoXUqPysVkBYkx8OBO6rGhvE+G1S4bVG/EJkPCMhjPlxX41ON6
|
||||||
|
NWvtf32dviA5W1BrYKWJy/v0pCsApgjZa6qpaLdgqQabG5YEJA0rONS1hL+AcJks
|
||||||
|
CnvkSS7iU/4jrDPfgOLoVxEkH68swLol2Qf0RFHg12EL5kf0xbPnfE84aQyt99an
|
||||||
|
6VAMVIy/tCxR2efZ0+uQmQk7S35uQH/PxZ3/mq6cDMw7+WZdYbrkyfmFK/A+yL2P
|
||||||
|
op71Ik0Xf0Qwd0qMhTZMVPZpZDQmxvr0j0r3xHia0Ez+PhovnnxqI9/cThRQ/ceN
|
||||||
|
jE2cA46H4ZfYn5OdCP+mP9L+MsqJYoHj/SigcIrXUX58R1D0JWVX2KPU+tVyQ03B
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
dir-address 154.35.175.225:80
|
||||||
|
fingerprint EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97
|
||||||
|
dir-key-published 2021-02-08 18:16:07
|
||||||
|
dir-key-expires 2022-02-08 18:16:07
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAwBmqdD+G0q3smN5OBFHCcK5pQH5G1GIpFJ1JxCVEp92tTK4ZHnot
|
||||||
|
9RzMfag6zQFqwLaJ+yEb1DOjTdTMfcUTsj5f3GUqPB+U7shSMAvvAAM+Bx/4m1AU
|
||||||
|
u6sk4XmPB1bCBfcRl4zhnY6XFIbj0ktuBDblcxHz3lDgHFpBoci9sF59mM14MZ09
|
||||||
|
EdwgeckcU5oeq6ApuSlUVaOT8xsKV/yeK4SKaFfDclwPAJuitQ5CpqctP7ExmlrY
|
||||||
|
sboTDtz7/Xa6OccaGDEUf7TRlipvUX6rvlmvHm3qjdixVfExpa8E5QG79GZTL82p
|
||||||
|
1zBd3iqc6QEnRDTiW9cMUeQt4EvrwOUVVYPWo3hp1C/iiNzWraDays2xuhaSB0gj
|
||||||
|
fPatu2CFW5XB2vd9IvIiWeklSFqnF8DL38jDL7DbFiETJreGsDMR03yHWVd0MbPz
|
||||||
|
OrvAxG4tJn+JtnwhzlbRjnfk53jOTbiM0vMV8h/ztapCiJeT/6i7nVQ1xL2boeYw
|
||||||
|
5RDUlwZaQiaXAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEApIIcKBWvD0P2YQtsrFKEF1kprJUCEUlWqzV4mVbTcVdzVQpct8t8
|
||||||
|
NAO8kDbxRSyU2S6gKecusy4H1MJWVAe2qvKIY974espuJwBXWFgT70jSBTFzjMpB
|
||||||
|
dAaTTY+kNZa66kjBjCVolr8UfFvL7HaL3CCtWD9ds7+ep76co1h3s3sD2BWW/M5m
|
||||||
|
V6ML8kYkjRW6SW8YHW6By3G+UuqRiGziJIIwQAoPnNSWrzW6UTLpVRDjdo70bQvU
|
||||||
|
vvfppUuNNji5SFfzSiakxHIse/eHG/rTNSzOvlpjuZxzPIcekr71eu1hCVHb2QdA
|
||||||
|
9Ikc5pUQeB0zImI8WJ9OVJDFUEgjJ9LGtQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
cy+VPbSGSJ5aI7egCwgNY6mgSlJumULFmUN8gfahvMo5hUwVLqP1FtoKIO8yBUc0
|
||||||
|
Y47pt6G5a0fjm6mjapFbU7IpqIUl+5gLBRKD6ugx+hr2IoqIVJY7WQUvVMBnfqHp
|
||||||
|
Z5N6kXfFBT+EbnbLiUqoRo1/AHC6E6CqI5pdhV86UCFydmuLf/MfwJpXiYRJueqk
|
||||||
|
DnPYEflq+Zu/RReL5aJlVOVuWq0ZpuzUHk4gIicKESLGkv4eI2CvuB5HTeNAB9L5
|
||||||
|
laMe+YpoXqgqMae1HT+rupPXYeONPygFXXbNLNVrR7OjAYG2TOaqdUTQkFefFVtD
|
||||||
|
ungKyPS6LTytSuU/rjWCbQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
sV4ouMb8pmCM3WjLTFxfRVb6qZl8rQ0tYM/AjKz1ufU0UmL7yx/7JMg2InDcYPH3
|
||||||
|
4PIUQrDLoAMxnnNVMDaDGoGDGI5keUmU1eSGvdJYN7okd0aRvA9LFGw4uDVVyB0K
|
||||||
|
l7BOk80y15P34R4G6oPvcR8aCxoiMh9UusbhiVjBr6dAfJGVVxZAO1ZJ8pa8fcrA
|
||||||
|
IbtNks2vut6Oy4oaC7zLCwcbRJM6dSvzcbzBpCf7/b9w6NQNqCBBQkqKgUl0FqKM
|
||||||
|
QRKqHWuhbqcL9+lj7rvgWCEigLu9ff1+E7C4BV7GzOm5FPcRqfkPaMsjQuM/HErH
|
||||||
|
swhf2Ra+Tcdk9gdI4AomqwaoD6B2uKsZkcFpZhq4HAle6rOP9eC16DpqsokpqoW9
|
||||||
|
vb5Mic7ABYVpB4t3o5wOI9D4exXmzv6gpuOyl5rJGL5ORYSEhnMGsKMyPceCGysg
|
||||||
|
SzwfPWBqRTM2LfBxhW05UEBJev4EXk7AA5sr6GkcX/CXeR47pyXQAyc2doZo7Aoq
|
||||||
|
-----END SIGNATURE-----
|
44395
integration_test/env/aliceandbob1/dev/tor/data-dir-783322795/cached-microdesc-consensus
vendored
Normal file
67608
integration_test/env/aliceandbob1/dev/tor/data-dir-783322795/cached-microdescs.new
vendored
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
# Tor state file last generated on 2022-02-04 13:53:23 local time
|
||||||
|
# Other times below are in UTC
|
||||||
|
# You *do not* need to edit this file.
|
||||||
|
|
||||||
|
CircuitBuildTimeBin 675 1
|
||||||
|
CircuitBuildTimeBin 825 1
|
||||||
|
CircuitBuildTimeBin 875 1
|
||||||
|
CircuitBuildTimeBin 925 1
|
||||||
|
CircuitBuildTimeBin 975 1
|
||||||
|
CircuitBuildTimeBin 1075 1
|
||||||
|
CircuitBuildTimeBin 1125 2
|
||||||
|
CircuitBuildTimeBin 1175 1
|
||||||
|
CircuitBuildTimeBin 1225 9
|
||||||
|
CircuitBuildTimeBin 1275 21
|
||||||
|
CircuitBuildTimeBin 1325 7
|
||||||
|
CircuitBuildTimeBin 1375 6
|
||||||
|
CircuitBuildTimeBin 1425 9
|
||||||
|
CircuitBuildTimeBin 1475 2
|
||||||
|
CircuitBuildTimeBin 1525 6
|
||||||
|
CircuitBuildTimeBin 1575 4
|
||||||
|
CircuitBuildTimeBin 1625 4
|
||||||
|
CircuitBuildTimeBin 1675 13
|
||||||
|
CircuitBuildTimeBin 1725 3
|
||||||
|
CircuitBuildTimeBin 1775 1
|
||||||
|
CircuitBuildTimeBin 1875 1
|
||||||
|
CircuitBuildTimeBin 1925 1
|
||||||
|
CircuitBuildTimeBin 1975 3
|
||||||
|
CircuitBuildTimeBin 2025 1
|
||||||
|
CircuitBuildTimeBin 2075 2
|
||||||
|
CircuitBuildTimeBin 2275 1
|
||||||
|
CircuitBuildTimeBin 2325 1
|
||||||
|
CircuitBuildTimeBin 2575 1
|
||||||
|
CircuitBuildTimeBin 2725 1
|
||||||
|
CircuitBuildTimeBin 2775 2
|
||||||
|
Dormant 0
|
||||||
|
Guard in=default rsa_id=BD4C647508162F59CB44E4DFC1C2B2B8A9387CCA nickname=regar42 sampled_on=2022-01-27T11:01:16 sampled_idx=0 sampled_by=0.4.5.9 listed=1 confirmed_on=2022-01-25T23:44:41 confirmed_idx=2 pb_use_attempts=78.000000 pb_use_successes=78.000000 pb_circ_attempts=102.000000 pb_circ_successes=100.000000 pb_successful_circuits_closed=100.000000 pb_timeouts=1.000000
|
||||||
|
Guard in=default rsa_id=AADD84AF8D3C24F492D9EC1E08360D1C7CD5730D nickname=axeTorC sampled_on=2022-01-28T04:55:37 sampled_idx=1 sampled_by=0.4.5.9 listed=1 confirmed_on=2022-02-04T01:41:15 confirmed_idx=0 pb_use_attempts=1.000000 pb_use_successes=1.000000 pb_circ_attempts=1.000000 pb_circ_successes=1.000000 pb_successful_circuits_closed=1.000000
|
||||||
|
Guard in=default rsa_id=F7B8A4B5F16ECDF6CA626F96F4E3C219D1A664EC nickname=kerneloopsRelay sampled_on=2022-01-26T16:41:28 sampled_idx=2 sampled_by=0.4.5.9 listed=1 confirmed_on=2022-01-24T18:55:06 confirmed_idx=1
|
||||||
|
Guard in=default rsa_id=274A1DC6210E91827CDF40DC0E95E4A3CA929A08 nickname=AllanonTor sampled_on=2022-01-26T18:56:19 sampled_idx=3 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=891FB8477529A6B2894B7A3129402E0FD5DD281F nickname=hers sampled_on=2022-01-31T03:58:06 sampled_idx=4 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=898B2FBA56F3707B72A0B97CC492CBB466D9D707 nickname=julianrelay sampled_on=2022-01-30T07:22:54 sampled_idx=5 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=84A9473665250B752B621892834E71EECBD610FF nickname=flyingcubetech sampled_on=2022-01-24T19:47:40 sampled_idx=6 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=7DFC30D7EAAEF6E74B081EC0291757E9414A8C06 nickname=TorRelay1337 sampled_on=2022-01-27T01:43:00 sampled_idx=7 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=A5E42F1A3AFA948A7F2FDB1954A4CF6C6489D418 nickname=bauruine sampled_on=2022-01-31T11:16:43 sampled_idx=8 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=F9AEA07ACE06E8E7D55E10FFBAE037E8C833FA93 nickname=DTFNODE46 sampled_on=2022-01-24T22:18:09 sampled_idx=9 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=3910C5CA0CC5AFE22C709DF471A2B5B6B4AEDC98 nickname=criticalcat sampled_on=2022-01-25T22:53:24 sampled_idx=10 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=FD449127D30D8F5D124653D9EF736EDF4A12B4DC nickname=lw sampled_on=2022-02-01T00:36:22 sampled_idx=11 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=0E2EEC125A6AC8D5EBF5DB36B776A3DA5510E7A0 nickname=Nako sampled_on=2022-02-04T00:40:19 sampled_idx=12 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=2C7C9294CFA7AAFB3D25B72DEAED242E96927F03 nickname=ChomelesDEnetcup sampled_on=2022-01-30T05:51:02 sampled_idx=13 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=916DC3199F639168CD20AEC4D45969268E807699 nickname=defcon777 sampled_on=2022-01-27T11:01:04 sampled_idx=14 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=A6C3B64EC8EE20D77987EBC5E894CA6CCE4B5295 nickname=OwlRelay sampled_on=2022-01-30T19:20:11 sampled_idx=15 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=6FB33CCBEF5135AFA3D6D33CE030F96728EDD70C nickname=MDMIT1 sampled_on=2022-01-31T16:49:37 sampled_idx=16 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=85703987A509438D96E22AD367E99FF295E089AF nickname=gbtUSicebeer09b sampled_on=2022-02-03T22:13:49 sampled_idx=17 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=BA053C72E476C1EB9D05237D0D6A289C18FBE8E7 nickname=straDEicebeer02b sampled_on=2022-01-24T08:18:24 sampled_idx=18 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=225A8EA367DF3073433E0A845DDDA26D2357E4C6 nickname=Manureva sampled_on=2022-01-29T21:39:31 sampled_idx=19 sampled_by=0.4.5.9 listed=1
|
||||||
|
LastWritten 2022-02-04 21:53:23
|
||||||
|
TorVersion Tor 0.4.5.9 (git-d0ed04d50e80fe1c)
|
||||||
|
TotalBuildTimes 108
|
|
@ -0,0 +1,3 @@
|
||||||
|
SocksPort 9667 OnionTrafficOnly
|
||||||
|
ControlPort 9668
|
||||||
|
HashedControlPassword 16:501107AD0642A3C66029D6A37845E976D5F55B4DED7C4A43CC044638A5
|
|
@ -0,0 +1,411 @@
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58
|
||||||
|
dir-key-published 2021-11-09 19:16:37
|
||||||
|
dir-key-expires 2023-05-09 19:16:37
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAu/DOrbv/4IAYvyxsy/6ivC3q5yCQBWLKHZGYKQa5G/3rem8wen0f
|
||||||
|
qF7y4ye6U6faWc5kcNMHEKMIeBzMErxwF345qoGHITxbbOWnizgwPgrdCwlK3p0H
|
||||||
|
1XZGU/TTjoaM25P+ZNCBvGmDQRAtgs2odnv+i8hpu6vrcAUZYXmmw/Ag1Ou2AlLC
|
||||||
|
mPpbjV1O5SMylgC4IuCBPr3iA+M1kKkvj4LmwU6pJxjAae76GLzzQ/Ffvi7rRpvU
|
||||||
|
2BHetjehk+7/t8izgbhT4VABtzKgrv9ATnhfEgPeT/WBq0E75iciBBAXRPF5kEA4
|
||||||
|
k++NPy21XpL7jkQ4wnMs2HyiFhHbUwbLcoyQ/JVq/WBboSwStYbkdizRpkhJ1eNg
|
||||||
|
LiD8CPWcZnhWZi9VWrwT0xl+Mu4v6kwo9kVnXhOfcK8Wni9FqiBu2tmNDoGPG1Ac
|
||||||
|
wptYQSIoujuLgn4MARREwo9cWrKp2w+D7Dt4U7U5OrXL7TXjonEKuEHwRhzz1JA8
|
||||||
|
7LXm/wENwn1/AgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAuxJxHCGOw9DgNtw4wqi78OE3djdiLwbie+2CevKMRaO14IhuQGVK
|
||||||
|
w1PYsnTuVLVcJl3Y4QKQ4nnbe1QCiGrLq9wueQy7ZvBeZry3f+QD1Q/PAG19n6/7
|
||||||
|
hlhXclSOJ/jRah0Gi+QXAycKE5RES/Qn4F5fNE7MxzM0ZQHIlszZLNUrcpeLE9nX
|
||||||
|
avlqlSqK8FmLPOpOSRrdPtzKP2sjW9UUFVGMfurDYIC51hkZI/nyy8A1C844sfuF
|
||||||
|
LV6oYpYw5+soA122zBqGqP6vApwFCvWSDcGlx8xj1Irdo+JIDfK8vklu9P11rTWB
|
||||||
|
R7dZw9pD21reD0pf0Bipzneho6iiL++w+QIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
aMzjdOHri8Kmdoy0qt1a33Y9/e5vKkJQkzCKdHN34Il5FMMCkOrJ1yeQgZyp6mU4
|
||||||
|
jPSpUZlr1Iq52x5ers4fH4SybvX16BDq+p6+Zel9f5TpFg1vzdpJH1WOJ3ZoES1N
|
||||||
|
S8CpiXVz8flc5Ez6Dc7uZGSE2fYRl1Pswn3GuLfR1Wjw0VNp1VgHZk6xYXRk/YLx
|
||||||
|
OyjZTWEWAF/0qw3usXtvTvh6wGniVxr0rg3zZbesLXti4TAn3B3N6VG1TPOizna6
|
||||||
|
s26edpQ6RQPigAuccEwU5iaIQEGkIxcoe61qnPvAoWP3Jk/sZAGCqhbya0CBCH8U
|
||||||
|
pEW/OauwlDlr3yXEKh05aQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
XhAoF04YrM2zJUvrQuEsGhU53Pbf1B0jv5F4YkMlRX2y15rKXKI93vQTM1LbnYc0
|
||||||
|
ETkhSOQB2rpnX0bcE+K+x0sWXiMRtR1HSX/oIPDI9MNqHv75eZlEkSaDJHIsQJlj
|
||||||
|
Dd++tMHkRc49nNNo2J25J3TiBU0ecpVYYvtJzynE3W8tX3io6EmvTehkj2o79z0A
|
||||||
|
ax2A5JG65plch0ES2yK2jqgBEmkA/eZENDNQAaERXMFJbbpHIMBaGguwCEieJe77
|
||||||
|
JBAOxJFRGpL6MhMpcvi5MgEMqfAv3AhlBo93n4apT2CYR8PdCHUZyq7FrgwTSJS7
|
||||||
|
ndl3YmvxJ7wnyTXitw0GcSVeQaYMQV+LR9Z1VkmjIwRuHliUn7hR79pYqs3t11aQ
|
||||||
|
muW8jOrx+5QsiTLEPV6Hs0pzXc9XDw7mnJ6M2gxxF8fZCztal3TNLs9+1O22fxME
|
||||||
|
0VU1oS7SG6T4M1YOXgKFUP20gLl8sZf+3lGp3aLZIK8psR3vzggpaRSUKgip4Lqv
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
dir-address 154.35.175.225:80
|
||||||
|
fingerprint EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97
|
||||||
|
dir-key-published 2021-02-08 18:16:07
|
||||||
|
dir-key-expires 2022-02-08 18:16:07
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAwBmqdD+G0q3smN5OBFHCcK5pQH5G1GIpFJ1JxCVEp92tTK4ZHnot
|
||||||
|
9RzMfag6zQFqwLaJ+yEb1DOjTdTMfcUTsj5f3GUqPB+U7shSMAvvAAM+Bx/4m1AU
|
||||||
|
u6sk4XmPB1bCBfcRl4zhnY6XFIbj0ktuBDblcxHz3lDgHFpBoci9sF59mM14MZ09
|
||||||
|
EdwgeckcU5oeq6ApuSlUVaOT8xsKV/yeK4SKaFfDclwPAJuitQ5CpqctP7ExmlrY
|
||||||
|
sboTDtz7/Xa6OccaGDEUf7TRlipvUX6rvlmvHm3qjdixVfExpa8E5QG79GZTL82p
|
||||||
|
1zBd3iqc6QEnRDTiW9cMUeQt4EvrwOUVVYPWo3hp1C/iiNzWraDays2xuhaSB0gj
|
||||||
|
fPatu2CFW5XB2vd9IvIiWeklSFqnF8DL38jDL7DbFiETJreGsDMR03yHWVd0MbPz
|
||||||
|
OrvAxG4tJn+JtnwhzlbRjnfk53jOTbiM0vMV8h/ztapCiJeT/6i7nVQ1xL2boeYw
|
||||||
|
5RDUlwZaQiaXAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEApIIcKBWvD0P2YQtsrFKEF1kprJUCEUlWqzV4mVbTcVdzVQpct8t8
|
||||||
|
NAO8kDbxRSyU2S6gKecusy4H1MJWVAe2qvKIY974espuJwBXWFgT70jSBTFzjMpB
|
||||||
|
dAaTTY+kNZa66kjBjCVolr8UfFvL7HaL3CCtWD9ds7+ep76co1h3s3sD2BWW/M5m
|
||||||
|
V6ML8kYkjRW6SW8YHW6By3G+UuqRiGziJIIwQAoPnNSWrzW6UTLpVRDjdo70bQvU
|
||||||
|
vvfppUuNNji5SFfzSiakxHIse/eHG/rTNSzOvlpjuZxzPIcekr71eu1hCVHb2QdA
|
||||||
|
9Ikc5pUQeB0zImI8WJ9OVJDFUEgjJ9LGtQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
cy+VPbSGSJ5aI7egCwgNY6mgSlJumULFmUN8gfahvMo5hUwVLqP1FtoKIO8yBUc0
|
||||||
|
Y47pt6G5a0fjm6mjapFbU7IpqIUl+5gLBRKD6ugx+hr2IoqIVJY7WQUvVMBnfqHp
|
||||||
|
Z5N6kXfFBT+EbnbLiUqoRo1/AHC6E6CqI5pdhV86UCFydmuLf/MfwJpXiYRJueqk
|
||||||
|
DnPYEflq+Zu/RReL5aJlVOVuWq0ZpuzUHk4gIicKESLGkv4eI2CvuB5HTeNAB9L5
|
||||||
|
laMe+YpoXqgqMae1HT+rupPXYeONPygFXXbNLNVrR7OjAYG2TOaqdUTQkFefFVtD
|
||||||
|
ungKyPS6LTytSuU/rjWCbQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
sV4ouMb8pmCM3WjLTFxfRVb6qZl8rQ0tYM/AjKz1ufU0UmL7yx/7JMg2InDcYPH3
|
||||||
|
4PIUQrDLoAMxnnNVMDaDGoGDGI5keUmU1eSGvdJYN7okd0aRvA9LFGw4uDVVyB0K
|
||||||
|
l7BOk80y15P34R4G6oPvcR8aCxoiMh9UusbhiVjBr6dAfJGVVxZAO1ZJ8pa8fcrA
|
||||||
|
IbtNks2vut6Oy4oaC7zLCwcbRJM6dSvzcbzBpCf7/b9w6NQNqCBBQkqKgUl0FqKM
|
||||||
|
QRKqHWuhbqcL9+lj7rvgWCEigLu9ff1+E7C4BV7GzOm5FPcRqfkPaMsjQuM/HErH
|
||||||
|
swhf2Ra+Tcdk9gdI4AomqwaoD6B2uKsZkcFpZhq4HAle6rOP9eC16DpqsokpqoW9
|
||||||
|
vb5Mic7ABYVpB4t3o5wOI9D4exXmzv6gpuOyl5rJGL5ORYSEhnMGsKMyPceCGysg
|
||||||
|
SzwfPWBqRTM2LfBxhW05UEBJev4EXk7AA5sr6GkcX/CXeR47pyXQAyc2doZo7Aoq
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 49015F787433103580E3B66A1707A00E60F2D15B
|
||||||
|
dir-key-published 2021-11-28 16:32:54
|
||||||
|
dir-key-expires 2022-02-28 16:32:54
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAxVbS0noZKz1Ei6858RGyyuQgwQUKG4Urrp2BiAzkYxwX+6fURlut
|
||||||
|
AjeLb4XysqCdNdUipuLRQ2QIy1C220QiCHV6jZAsM4tmEq6TpK6q1lxi5YPKqbGS
|
||||||
|
CfUQFT1nO4s4DCYSLCwiRNy6bMe8tNHc0MpXP3loCbPkYCoXrEL6vYIROw3oeGWE
|
||||||
|
KbFPQrzYJAPHgUubBibsY5lkUY9N/5QZw2y1bn+dq9mFOoCIHLd6DkQmySmftnMe
|
||||||
|
QrpYA2WvE4M5yN2HB8QGT7TdzXPPL6889rFw/mjqYExQPX7cqmILkchsB7I5whjA
|
||||||
|
u0oodF8Y9ooK9QT0GeK4h3xQhzNG17anuUxbZ7sxzmBwBNmkNyLWEeIntazyjRFr
|
||||||
|
P2mDY/9YK2JOQKkh3tKl1whcCG9ZtAhKmm/ijG7OrhqtusdGKBXIgALf4f111AK1
|
||||||
|
gNcacDx2fJzRHuNK8zkIORAzStxKdLbAbBNeLENk1zBjSkrxCOJH4mBpr8TXULq1
|
||||||
|
ThLI/8OzZq4LAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAo32l4qg46cqP/sAL+oLmQM0mDiQUy6EtNa73vyy0BJEGWJeImUO4
|
||||||
|
gHNg9pyMFqyF+rP824gAzwX9Un9HaKgFpIrsKcZzg+Yl2vlrBQpJ0NPIkN9oqj27
|
||||||
|
W/A7RftMhH2itv0v87QudD7FqJpxdYNf3wpr9GvsAiHZMBfC88WhCnmJoDBwyucY
|
||||||
|
HFH7gzjPeDx37KD57o2M1KC/SRVtQtrccA/WzcxNypgAYkJu4yE2gaDr2WFn3hFv
|
||||||
|
kscW0jn6+157UuKH0rCNeRFDx8SsSS0nr6Zk/n+dlXzHGDO3vQIKCoRoH9yL4T//
|
||||||
|
hkMYE/4qc9R49VyXxK+n/qU6HQYpQMi+VwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
KKrOMRAg1bx+XFLRjhQB5OFjtupkqkFnGjS3LZQ5FHNwJ7cKG1X7K0aJNAumRPMD
|
||||||
|
w9xraIMuuok46wj35P9Tcy68qi3EqIJP5378ZtdK3Ncy9KkSWJSA9MLPmB3fClL/
|
||||||
|
/5TwboePXRdlt++Bcw9OC83HDuFVBqZArFIvopKf/AJOyViRVHlBmgNKFpm9RJTo
|
||||||
|
XsD415rJAi79tAfXzKuagke6DTVqobMhxrUmp3RjbEEEC6icQ3YX9X6NOPQ4Gwl2
|
||||||
|
bpWOVi3/9EGRge0X8IYsqB6/pnEXM2FSOTMdwo4YQzIgW/HLE9hXjFCx7QcPkcos
|
||||||
|
AZHvl12tKzZF3F9MKPcNyQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
wb40bfNLWyU9pWW+2BAHbrmZZfbs9UEIS/6G66VE6823/r6M90RCmFx1JlwqgmaV
|
||||||
|
/WMbBE9DxFKILyhuQi6whIKoYndg72VDeZL5BzWctalw24VpJePVjeGLcTdJHBVh
|
||||||
|
a6UiQFaQdH+bTX6qNIFv9nNwq7ZzJRBvaYF9bK8kaTrZilFKoRVBxXssBUFjEz6t
|
||||||
|
f+sei5WIiBnzaQOUxdMjvdDAHci4DXwGw1U2M7jcYARo4FfvWkAxzWLxocWmauPM
|
||||||
|
8tDn0fSgMnLlSOR2crnriQMFhYD+9xyxfOq1IDH2IWCKlejz7j3DHSqBYiUSO9oD
|
||||||
|
uX6htwbMWwZQeqt+LttE/zZX1Tcv6PJqemT8uabH0s94W2A3sJpstWJ+0capb+Mj
|
||||||
|
bvTXj7t2ilqa5RX35KKhaQ6wlh4OXZb2ydeJZc7wtyG8eN53aVqJNJQ+WZn4IiTq
|
||||||
|
fefr2ojy2VDJLDHJVNpKQQzmjXtSs+69wCvrqdHGjGAQl5L31LjZgaNLNj14RI+H
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint D586D18309DED4CD6D57C18FDB97EFA96D330566
|
||||||
|
dir-key-published 2021-09-06 18:42:41
|
||||||
|
dir-key-expires 2022-09-06 18:42:41
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAvi5+A+XPw4jxMYhmEI4+MpnaX3dUEbsMGHA+xAMnmVhuxbm3Dn5c
|
||||||
|
TyhQNY2LOlsieE84UYG+J4dABfaFH4w0l6zUJkuytX4+6WRQontw9puR/IcXkRwM
|
||||||
|
8Tv/tY675OYRCm9DgDAWfqZM0IgTzSrYRDl8eFPSFCOP0NhMrQZeUrdKgwAXVZWP
|
||||||
|
xt9nTCwT4K9BMp47LEmZKdEokeVsr0l29Z9v5+r24k9x8EQjDexsoHwlVrxWfarG
|
||||||
|
1klWssfSFpkMN+FkTQnBC6ByiBh5ZKM5AC/HkVFvuHjehUpfrtNk6XNFcKbDvEIg
|
||||||
|
qPdg1QWuuSWpZVA+/EwSBtwMNcq9pv60L8Cm9WCJoSC691WByiGwFCy1/XcBI4J/
|
||||||
|
BkoMEvP3kAxzm92jqGbpFSJawFRPZKy89FDKpha/So3CERQPV0ar+DTpVqDlryWV
|
||||||
|
N4x1IzpPeSHFj7T74q8qdrxx0wcAjWJ9WYoGQif6FK3hHcmbSGSgyvAFeoYxyUCL
|
||||||
|
JHkjBCD4WTWVAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA1Hguh3PNTfMd7kLD8NupSdye1KB6hhQitx8DipvT71ZaCZYI8fZ3
|
||||||
|
z5xa6fCcJXv/xoz1tzKeJ1n4/AzAbc7ltCyyWkj9CbiB99cEe+sVE9R899eFvPP9
|
||||||
|
DUmsmgy0Bn2MrdfD/N5VeJ219TTtqI75BJMd9n1+r5zUzhji2ihcLWYgi0GVZoec
|
||||||
|
6B+xfPtYbifCdrPRBwrMAW4EhtMKeJfzsYFO220f7x2OmmZB9muesi5O8/0zjwu1
|
||||||
|
xOKldXCFbccTfFN88nYmaO8j0SpG9nOveFXavPs0LyVzhuMkbLXSWAN+M/S6GC4L
|
||||||
|
1kbkjQ6YhuYSnKxGFo/wdax41jrSFCf3qQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
r2a4uvuN2LUgSuHoWYckJusjzeaEfTTN+DHJdQjJrMueZtxhhz+C+soYoSAvBsHI
|
||||||
|
huc2y0wLbeNMpLXeyGoYh0M4zm6RyjMksHQZbgPjkibflbUI3csJcvaBMQonfo9B
|
||||||
|
knoqOzeQd8NioOlnbYQ+k78swGtg2ndHpK4G4NMBK6ZQrbhrIk0nVhOhaIHpGdiN
|
||||||
|
icr+czGq6SzH4Snp26dJ+J+9SAdTOzgat/C2Othdu122JR2/7GzCnz8dqS3LabN9
|
||||||
|
iWJWMLxayFKi+Z5f1WjCNOVh5lSjpeLjUNSrA1hXXKSRD0eFOQFRvgvO60gyvooH
|
||||||
|
C8amqpSD8HqsCK6MvN7V9g==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
uuQhm7YYbqR4/fGSDWqzwiw40nr7y3laCmfiTDHOA5N6lVOw/tM4bdMbGH58wkkK
|
||||||
|
XBIEz4zQnIT4Sgaumc9PZK3/a8wkx3HgvSNZAEvv5GK2iD8QQNaR0mv7/gbCOLeD
|
||||||
|
4MAsWH7ehc2u0AcebYehYWE7/fknYRfIGLRzeAeR479LgtFIaaZ54lGeEWKA7qBc
|
||||||
|
B3njJcNDlekChydxw2JRMw2GmK7Gn/cVRLjFiG32aaTPA37Ietw6Z8wXEjTy4087
|
||||||
|
KTzTe6puX0g9kCWMaGIBzod+ucNOG9WhgVfy6M+OMddI4KbgizUM7a5c3DZwnQHk
|
||||||
|
nn5yqib/W7NmHZOL1k2qYlKQlbr412bsDgBDoFYSYPIkbO4x7LHJnGGiwxYx4vmx
|
||||||
|
caxDySQtqCcR9ygMrZVrL9W/Z+w2N/KCXnL+SgTmN0x/Saor1ZTkONj5Tfn4dg/W
|
||||||
|
xDxvLO02DpVTfgidUsBeHSnMQn7w0iG0abhWFmYNFDjxZFEWy30mRCEYADC/1NCI
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint ED03BB616EB2F60BEC80151114BB25CEF515B226
|
||||||
|
dir-key-published 2021-03-29 03:27:58
|
||||||
|
dir-key-expires 2022-03-29 03:27:58
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEA1d6uTRiqdMp4BHBYIHKR6NB599Z1Bqw4TbOVkM2N1aSA4V/L/hKI
|
||||||
|
nl6m/2LL/UAS+E3NCFX0dhw2+D7r7BTJyfGwz0H2MR6Py5/rCMAnPl20wCjXk2qY
|
||||||
|
ACQa0rJvIqXobwGnDlvxn4ezsj0IEY/FEb61zHnnPHf6d3uyFR1QT06qEOQyYzML
|
||||||
|
76f/Lud8MUt+8KzsdnadAPL8okNvcS/nqa2bWbbGhC8S8rtDpPg5BhX2ikXa88RM
|
||||||
|
QdrrackdppB2ttHlq9+iH3c8Wyp7bvdH8uhv410W7RnIE4P+KIxt3L0gqkxCjjyh
|
||||||
|
mn9ONcdgNOKe31q2cdW5LOPSIK+I5/VTjYjICza7Euyg03drpoBMGLuuJZY6FXEV
|
||||||
|
auIBncWe+So8FMxqU/fwo5xm6x085U1MwXUmi4XDYpr/kau6ytPnzzw9J++4W9iC
|
||||||
|
em5Jp0vaxrDnPdphqT0FWsBAwsZFL7nZRnmUlTgGsXUa0oSM9/MErDwzELh/NwG4
|
||||||
|
DNyyzRG8iP61AgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAsw2ZJlGsmfDmDwoKbzjOno759Xwqn6JX+tFasI8eRjOFnOyjYzd1
|
||||||
|
XjG6Gj2hVpF/ze2NiTuUyRu3Ybp8G9/gs8VGPljxSHkEugGjQdYFoST02ma0vUHA
|
||||||
|
8YqpBYOiLvsXnqfEkl3Yj6HVxmVJA9j8BxODODlBtxRMJWFrpp/b+qCo/YyGmCh3
|
||||||
|
n0qd3QNqFPLIzwvjWVhaFfga8dXBT73wX9uYT7nT/e3pV7ZvTw0caqi7svNzj0I8
|
||||||
|
/OxOEjoBQEQMQVPT2bNZKBe9X8QKDSgdealZQwBT9wdZ4KndtCj6Y8MVjj15/YtH
|
||||||
|
fWfNyUHgVqOmfDK7m3pHXR9fGgsLQexIfQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
GyN9MMaPABXJ16WAFIhdzOhNT59BI0RAfV9ZpUJgzkAAmpoj+WwUtWfcrW7a08CT
|
||||||
|
9g60QwJonP/Nh+8iLvQYH5ZyEqsEj0HEUD/yI2kvN41Y5QBD1Sku8Cu4E2UaICzL
|
||||||
|
V63oitjQzppKlVXHyP/SXsI2bUjoHLtT2pBvxRJ84DlZBEQ/ZqS38NN/+Z6DtMR/
|
||||||
|
kn0l7W5yA3bYWzeKy1TeKLWo7p0hHzv/Hswe/eha+27LuwZZwwfSQrRy1fi66Fmj
|
||||||
|
0xBP+iXXtmNleFegFuhEBPXa+9udrT9rodSdazkGPzjyF6HWRMP5DtmTI6ovJDVX
|
||||||
|
60UQ0hNb6KAP+FZKPz9/dA==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
zAgmCR7tf0btsogvBmdxJ7+RWjPBzmDSA7f+zlK0jOc3lDDD4pxuQO6iNcoEDYMC
|
||||||
|
5hkzVoGBMYsxLfLZXFGE518dn79iKr6SQoq87AhnAsIiAfXMk2AWLkWI7MTzZo2U
|
||||||
|
dcgo+7vzxMObk86vzFxYWrSqp6CSZ7RwBRnH3vCGLfOMZ1lXMug+MQAQYAyl6KIR
|
||||||
|
3d/uEu3+sPFJcHQFP3C/7bHDG5j/76kwoFzjSjg974rSjr1j1FbrpNn35mLc+2X/
|
||||||
|
11n7cOADHWaSN3MlLWGsYxuuX2l1w/XZNfFEezDwK3BOotbj5spU2nQ8xbDFPB5+
|
||||||
|
ixDfc00TC3YbveSz+S8W9czfysJt3KaWmQczDtSIXag1qrL52CBGUVGP6+R7xnpR
|
||||||
|
/4QD6yCKmDcNk2D1YnindwYC48ydDt/u9A/97cEBpUbul3feW7eKLk79MIklWlWo
|
||||||
|
3c3aQVH6Ewrb76oXYYwzNbqJOp2ceREu72/Fk/keprVcupVDtVoqHgDDpfOUYTJd
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4
|
||||||
|
dir-key-published 2021-09-01 00:00:00
|
||||||
|
dir-key-expires 2022-03-01 00:00:00
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEA7cZXvDRxfjDYtr9/9UsQ852+6cmHMr8VVh8GkLwbq3RzqjkULwQ2
|
||||||
|
R9mFvG4FnqMcMKXi62rYYA3fZL1afhT804cpvyp/D3dPM8QxW88fafFAgIFP4LiD
|
||||||
|
0JYjnF8cva5qZ0nzlWnMXLb32IXSvsGSE2FRyAV0YN9a6k967LSgCfUnZ+IKMezW
|
||||||
|
1vhL9YK4QIfsDowgtVsavg63GzGmA7JvZmn77+/J5wKz11vGr7Wttf8XABbH2taX
|
||||||
|
O9j/KGBOX2OKhoF3mXfZSmUO2dV9NMwtkJ7zD///Ny6sfApWV6kVP4O9TdG3bAsl
|
||||||
|
+fHCoCKgF/jAAWzh6VckQTOPzQZaH5aMWfXrDlzFWg17MjonI+bBTD2Ex2pHczzJ
|
||||||
|
bN7coDMRH2SuOXv8wFf27KdUxZ/GcrXSRGzlRLygxqlripUanjVGN2JvrVQVr0kz
|
||||||
|
pjNjiZl2z8ZyZ5d4zQuBi074JPGgx62xAstP37v1mPw14sIWfLgY16ewYuS5bCxV
|
||||||
|
lyS28jsPht9VAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEA+jzmadukj4Q0qLgJ0at+nDXGruO5JD3HsehobiwO8HrdaaImY+rY
|
||||||
|
CZzxRWM4xryQ2AFuAGbSxGoNQT3dTLvjKNVdGY6jPzlS7vxKbPeNZtc/YMvfZ+Fx
|
||||||
|
uEjvaZ6nDbviVtQhtE0J2EZ32n90Ob8YC8l/7zh0hp+mZO6Wf2DGXWjNvG7d8Ucc
|
||||||
|
p5A1ZVIpJ/VQzdlPaocO+6AvxvSBpaIUF0yGpTwofTOjtUmZyuWbhRndsQj1qMcj
|
||||||
|
e8wzOIgr3HZyhO9wztQGkZ8bzHq65oZe0IIOXZu0icZamFGQ5I6y5duCqxDDe4C/
|
||||||
|
v1/6bD1I+/ujLXRMmkcbJ3NZE+KrZg7KIE5ScGbkJIX7vIicqtsf+7VipdOh3/wp
|
||||||
|
qaDxX9Sp2cbVUU0M/aJ14nDSeFlx0XQAgWkPjG2lYtTNEC2zuudBCuCD8es8EhAW
|
||||||
|
FrU94cYg9lVId0NDMOpWPMH2QJFS4tk3Hc66si3+gkCOt2GOaSQeD+gGWkdwDzn3
|
||||||
|
S8iAur2GohFFAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
B4914rKqUc51Q1nq8CrA/e7EaMQ0ug08qlBqWyzZSDiBKVCoQj446ZJMU9VKlzJF
|
||||||
|
XtuURlJ7zswXMze7HceakrkxZAc7GiAGKO5hgbbI8XGLvXn16Lsr/MP1cmbKoI04
|
||||||
|
g5tG9Kx6yOB4r/l2TQY9Tw22YcdJ24W2/mw6TmDv0b+IorsIBnxIDv7Q7j25IkNE
|
||||||
|
hW3F9R+Ntja1RWPqKnptp8nxBt5/2jVr637BFczDv9K509QX+HHKyICA1hnvDDU7
|
||||||
|
N5Y1/mVu4JwQrBAFL857XbobP4QaLsZ34Q8LRE4dveuyw+vjVa1YimZ6h/RvrYyP
|
||||||
|
8DUi4XnzFyztecivXbdSTpMTSMfC4NQXFeT+XStRdWlapZyCFhp74w3wv7HCB0z6
|
||||||
|
7QT1HWMKPRvj1DsHhvPviyLVCL2tl2x+G7aaledOPf6BbhO7VolNeHiubyYCQl2H
|
||||||
|
t/Vy72DZbQeuLhf5GyqVyUm9uugzvVrryUiNUApOW8Xta2dAEBqinDrrY6iMYxh/
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
UrJN3Ey1hSHTaMUAhINCVFhojt48ppxky0bvwztQ9p/Vy7dfRx0APNbL70/XZOrR
|
||||||
|
sRj8zxtx2+tc5Lnkfaah63bmVsUNTgD6LudDaffXiV8XhIeVbzS0r/YJ0U1OsbK+
|
||||||
|
ApDItNDUz+VIJL5JUDjq/6fojFlWPYNIwyk5G8zOM70Atjk6UDyCIihV2u5pofW3
|
||||||
|
znFaFp/XhC14S8lMPZYKbnyl2iQ7UsqLpTxg3EwivIlSVFs5YQe0yXgJFX0oNd9Z
|
||||||
|
gAf3JIonA2g8Oo9EkgRfYCI33AwyVoU3QN1/AmLH2uPWTKhMu7k+OHktuIBfyFTR
|
||||||
|
9jbUq+YTU1ni6kEsJVBP/0I4n9Xb4VYIoqOq0BrcEp3lQ8BCEWjIGwLh1HYc9/DY
|
||||||
|
meE+cwLp0RNU8cuxyrGnkLA350bsNxrDkiaHAkj5ZA8W9VTGYsBxVhbLdQzN3GOm
|
||||||
|
63GJBgjdaOsD6WXs/737nD2sLu6dnA/Jbz84ouZSafQO/FNQZnndfj4osjabmq8O
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 27102BC123E7AF1D4741AE047E160C91ADC76B21
|
||||||
|
dir-key-published 2021-08-21 23:12:45
|
||||||
|
dir-key-expires 2022-08-21 23:12:45
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAuxgnMVH4vwBjMeGvrEODOYcjbCS4N+Wt0SZ6XA5I08HyMf5AbaaF
|
||||||
|
MDscJBRIUOp7DyLmUwK+jp+QI8pUjjKsB8S0ctb/J3Im2T6CXnP2KgEfVmpNVQmV
|
||||||
|
XdMm8cRZl1uIZDDBAXizSQ51f9A17TJh7pF/5khYp/SAzl6aO5ETn7ry0ITiJnNa
|
||||||
|
6cY+400F7ZBA8NuXnCHVGfmpFFsiJKFrS1Kve629eeaNEd3mynRviBXJy5a4NEGf
|
||||||
|
y42Ev8on6SxEnF9OG0NMJ081/+mP+j8Dsl3+Uehzr9B42MQQfDo4RdYGrt9XolBm
|
||||||
|
L4eay1ieZEsFeDy0TMfiGGbr90wo1fgGLHIRSfTNLhhPJ/f9cTZPe98rhSgGWiAd
|
||||||
|
RvK5SljoIOR4qdS9/aiZkj1P+etvh1rIQUcG4/xCOBnouEBK+DDHZFqyMtpMPtV0
|
||||||
|
Bxi20DVaMJcyhdfjVqcRSyuR8tlOnTid6QwBj6kgIIfMaC+4Ht6yO/SYquCWlaZl
|
||||||
|
y7Pu7li8WyW9AgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAu1QJ+qlCbtrYsg9QENtOpvMrEDc+WgH1ZFxEqk0v/ad2ACQYe4dT
|
||||||
|
g1gJ6VZyGths3p8+WQXIA9YbcEr2oajXlLmLT2QAlqlsXMPKwwIpeG4rvR43Wwq5
|
||||||
|
mQ7aX+/VjZ9YZNoZVEAy1O7ti7GIXJzJYDOdgBjLifSjpjcEmSaf+v4E357azs9R
|
||||||
|
ndLHRRwbBLdUl7G3aMkL4ejrv6AAXexPxAL90xsb/MAhVEOQrJNcVMTgII0fSf56
|
||||||
|
P1J17SQwthNZ4rTMo2O9TvWUGNf1sMb9kdm+A2Nwo2CKmUR0uo5wHN4YHSBYFDcb
|
||||||
|
hxRtZlhSFfBJvJgrX8/+CnJrBFC6S/7vJwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
VzdxGiA6egLcZjm3hHrTW+N+7sPwaEcdYR5/GW757MO79O8QwjOLJSa5dOF5yDWa
|
||||||
|
3Ie+QDB2Q++a3+w776zqpFsaGCuEHBCfU9pxatKdoTsExZdQnWHJg4u9YD1JcYvL
|
||||||
|
dZq9uCCWaKa91OjA6/U9zp/LY3tOPUWCyO4MHehHYggzapbcF5uaMG0AT0lZzaXJ
|
||||||
|
vh180N5YGMfm0eYXJqkJyX3WCZhGroh7o3DyaqtBSJ1cY4NzTNgPoCAi3J/XEoCI
|
||||||
|
3JzxfH97uyqQngR1yGb5KggdM2ejci3Ld9q99hjXlzYRtsobUQBTlZca2vUk5ALh
|
||||||
|
vFWU7GzcNIdDjKBUd+IhTQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
WldVJc0L3fByDY9D+Yha2/8Bw5nqRpHu8RL8lU8zXb0rhfiA6DN2aefSCG9WEay1
|
||||||
|
sTVs4zhS8N0+278oP51Lg7S+V6SmXxKZbF3I2zNaFMIPVspRA3OF0R9vCP1YMxeo
|
||||||
|
D4EDQXiRxNNeM9hAjmmLiE0j7ZMetZ88ewwsOOXAvPHmCth09nWdCYKwibwUW/U3
|
||||||
|
w1HXCHK4BdZ7XXkMJNry7kZP/H1/5oYyuKshue4+f8tgRa0xg0wbHDrdbrR1qBBu
|
||||||
|
Xg9Q11hV29RIdD0ZgugUdyGKlpRa6Mb3GD5DzN845sFhCjsPrYyZv7Xo/S+uTtN4
|
||||||
|
t59BtF1TjnsAhUk7shk2W3zzaauzUarkDA1v+mb9NZ3CFsNgfxt6d1yDDyuxJgaC
|
||||||
|
VkIfO9nX9dCORSC9Ow+XOq+D/o4FfSe4q0VvrJJILAcw2Nu1Zg4ZhHBeugP9f4I9
|
||||||
|
p/+ZMrEr+YAKkjPw+uIEdR0l/YZEhcrjymX4FY829LNll2AceqMCKoapFWuEzzDP
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 0232AF901C31A04EE9848595AF9BB7620D4C5B2E
|
||||||
|
dir-key-published 2021-08-01 20:00:02
|
||||||
|
dir-key-expires 2022-08-01 20:00:02
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAu9O0Pueesn0+29BlxZs60mBqehjdQtgSnKOm9QZxbQ0xrMQgbFnR
|
||||||
|
hWbKD8erenyeFk2SF6AJkbyzgYC89hyPW+8GBDmg5bE8fRKjgV/nI3tY2m4rkY3u
|
||||||
|
zSmYIdwqHUUc98Xzt9PaQ8IJAlDBY4XLKrWmJMxSyhBlVEept7+9Tj23qowW44Mz
|
||||||
|
xPJZ1aFkB1FpkD6qmoCzVZbhXy3cGt1nDwdJK7KqlaXziz9pFiw8PzTVU2xFgJNy
|
||||||
|
+nEcT72DBtk3G5K2Riu/aXY/D541Cioj9KMV4Nv4g8aBKx58Xq2tq1pFkc1Bqj1y
|
||||||
|
2MomVR3iskFzlqC8yKWGVe4OP2IaOhtcQJYp5GR9q+dWnr53WWNVxNu3sA9iMal3
|
||||||
|
PJUk5pIYrsmArGew5gmlCe+Al46nPINxc7ouztmStAV+2F6SpZlKOcstnT+KJ52O
|
||||||
|
1xnOSaj/WnzG2o4KZ9UrFQoUNOLQJcelPcC+vrinMk9BQPcB072l9NjpUBC9brsW
|
||||||
|
qTCMStn1jfDDAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAp7nHn/R+ZZ8lza379M7BJ00JYPAcncjtoa2K2Z75bDoxlegGvZXp
|
||||||
|
j4D0WhqksaaOr/+YCSPMcs4HAapKE/Dj09p1kjzh6Xu/iVp51NiQAARS5j3tu/5k
|
||||||
|
WJQ7ig207TdtjmslZIx0UU8pieuenRdyUN0PvjOkaoZIpao1+UlIe47DP+42D3QX
|
||||||
|
1J2wu48QDvt7hUUA3y7yLUyNMarqYBbbXQ/MpH8tcMT76TTN1uilP6W/3j1b6Fr7
|
||||||
|
NGtbUrS1EzOOHnCpgpnD8qGcisDKrHcVkNkh1w+8LW9ef7RGpFPpn022hUQG0WLD
|
||||||
|
5zrh19SAsKetWAZY6RlvyCHPVReajIAovwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
ca3I8mHu2zEOCnzySzdk+rbZLpohw5aa3NmTGFzRUXqOeHClOYHRc+glAyCrtUA3
|
||||||
|
lEa5fiFaZTImKu0J/uroyR4uF5JpzLOfojTQi9P5hMCBSdd7uGzoKC+/dKb2OngZ
|
||||||
|
VkBjptMf1S9dy2lUdDksHnnyg8UrV7EolIHUFNdEBI1LeONkdesZ5oQMg3HRlVpU
|
||||||
|
v+m/7y/MB+o3KAXkQyAxTcV4bKdsHm3Pf0CSfDgOPImwFS4lwyEW0STlOmVHojZR
|
||||||
|
5wm+5dwt9vbD7K6ectbnWtWjiSrvtGjqixO652lxz1qrsid99S5wEzJNhfif8lYe
|
||||||
|
VsB9h7YagNHJHLiGeBT1kg==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
ZkHpe8JVvGsiAsH8gw1eZVIIE8WuM+3Sdd37U2tOyDi7FVwJV+oJ+aKwcCTqTLaj
|
||||||
|
jglQJbg2JdV4ofy49ZaQa6FBGLrzxAS6Gx0jg+28Kzbr0xu9hSX81oPSXKn9KDLr
|
||||||
|
BvmuSqKBB+5B9nIEBjm6FwPc8MjqlvNesuJ3IpW9+e85eB7qsH4ozjHF0GIgpXu/
|
||||||
|
qXrk2TEK1nMc9EN+VCYuy3gAm46GHQEYR1U7gIofCYf7LQpDrfj1sAGquCQ3vYqT
|
||||||
|
Ex3GtqcDV22IME67Cou5rv9OmMnmy1dbeHO4g843RX0LXtEDdGYGSLHzl8EAscrg
|
||||||
|
i55XFlS6z5OwCbdDvFTkHUWRlaiDtoymaxAEW6GUmNjHhgWY9wJwgroVNRsP8Ihi
|
||||||
|
aex9HIND1MY4ERS41Csba/0grf+FahMVI12gwpmrnKfF95QHWw2MEvT1pzZGtMnq
|
||||||
|
XD8mcVNYJtcTvYM/cUa0I4BFD1AyeIP54hEXwIsqHm8KBJpjX/ZpPzksnc4NY8i0
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 23D15D965BC35114467363C165C4F724B64B4F66
|
||||||
|
dir-key-published 2021-09-18 16:07:20
|
||||||
|
dir-key-expires 2022-09-18 16:07:20
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAlv6XS+VppPaQzOgor0YFlcXLWeXiMn5N3VBneXuw8maLOu9oPJ9z
|
||||||
|
2/oMQN8a+VOWTf+/jebGzOBK6MamXpgsIZPQWiT18gZMsYdR8mcqBYqVP3khwUWh
|
||||||
|
9QYkV+m+Auxa0TLzTrsi6dLDJ384XdpDweU+YJghMJNZ1NqiT8ogj84hxs5Tf+Qf
|
||||||
|
bn7EBIcU7SAKr5Lw25KrMb5e3AZSC5MilBS/KLgVTq/GiWb7pKd5pxGwlGolNX8a
|
||||||
|
PccZ2ZT2DrSQsct4wVxhSbUqANI3PfMpXvmUDxWWBgbQwLF02/4gi+13snlHtqwl
|
||||||
|
y1WjE55HVfx1CTX13SStwmF/N3SFtFf1qil3j5qrHdHtKlAYOaTfqab1eLVH1l83
|
||||||
|
LI5QWD7ri9GpPqIjlh6PuaHjaO2FW20SouZtS9jJKwi1l1G3ef1tSlha1cxkRxIp
|
||||||
|
U/ngvQBsoa9X26VfQA4MieZgVVdMVwjCNh2YC9aEXc/KxfcBueZkM1194qP88cVu
|
||||||
|
dOFYaftOkuGPAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA3OigVlkOvlx54wcY0RRuExNw2sPYHr8m8QP+SnzARDbrubvsKT0S
|
||||||
|
z/+aVWccgacBtihOpF9juQLHb+nqhea9s6QS8XAQ98bqm8foKToWuxnIRS9c+8e1
|
||||||
|
qcENTfh6U2Dr8ckwVcKAPtnLnPtbxuFF5UiqXAPA89ZmtqUPv+DfmDr5fdeb0bCu
|
||||||
|
Lo6TCFLQOcn2Qz1WsSv/2JRkSBy8pgaC01zErgv9oRVIzFfLn8YpfnWZkFiRGwX6
|
||||||
|
/GBLsS19SLLX0xLkPwQ/CwN6OkipOtYi6UNq0osHw9xfm5sCzcnltJShA1YtIp72
|
||||||
|
e1HkTx03a43uAKlJBo1rMD29stVJu9ABEwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
r2YFJIj1zR9iMPWRJYMDEKuLlV0Gbis9232Gog5sS06LpUFPYL6clLDf7eWAimPs
|
||||||
|
u8rUUP4JEjmAY7bWHyqbG3D5iljNin50W7kvY8ip+Vqf64vjNUXFDKUbi0iGkfVC
|
||||||
|
nfX67FL0JF74hqtCtMlS5QPvD4oLsC40DdmPD4kCulaSrMlmsFRGFdl60HeSLbeP
|
||||||
|
oopRA4yYB4ZGJxJUaSuMm6RrcK08G2l7vLfHpxhcJWQVb2fKB7Ds+AogZYnc6ZYF
|
||||||
|
hpGAP9y+Yn8TUUqPMhhZwLw/8eUAhtv8G2aBBxHyctlGvg1YFiquPP6VEn88h9GZ
|
||||||
|
X4d/mLOAQeYWEalQC812iw==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
OlLQuEDdagECnVy1Nke/C7dpS8+8XvgLK/hGgV/OpCWr+Gq8bL6/NpK9GP7EbsUI
|
||||||
|
NxsguJ2r1wkEGTixz88gdKWDCC3evGW1pqnsjkCk69gHGtCxmrFeiCxCSomaOjzw
|
||||||
|
HCnp3TcT1DA4EstoXUqPysVkBYkx8OBO6rGhvE+G1S4bVG/EJkPCMhjPlxX41ON6
|
||||||
|
NWvtf32dviA5W1BrYKWJy/v0pCsApgjZa6qpaLdgqQabG5YEJA0rONS1hL+AcJks
|
||||||
|
CnvkSS7iU/4jrDPfgOLoVxEkH68swLol2Qf0RFHg12EL5kf0xbPnfE84aQyt99an
|
||||||
|
6VAMVIy/tCxR2efZ0+uQmQk7S35uQH/PxZ3/mq6cDMw7+WZdYbrkyfmFK/A+yL2P
|
||||||
|
op71Ik0Xf0Qwd0qMhTZMVPZpZDQmxvr0j0r3xHia0Ez+PhovnnxqI9/cThRQ/ceN
|
||||||
|
jE2cA46H4ZfYn5OdCP+mP9L+MsqJYoHj/SigcIrXUX58R1D0JWVX2KPU+tVyQ03B
|
||||||
|
-----END SIGNATURE-----
|
44395
integration_test/env/default/dev/tor/data-dir-605268872/cached-microdesc-consensus
vendored
Normal file
67608
integration_test/env/default/dev/tor/data-dir-605268872/cached-microdescs.new
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
# Tor state file last generated on 2022-02-04 13:57:02 local time
|
||||||
|
# Other times below are in UTC
|
||||||
|
# You *do not* need to edit this file.
|
||||||
|
|
||||||
|
CircuitBuildTimeBin 875 1
|
||||||
|
CircuitBuildTimeBin 1025 1
|
||||||
|
CircuitBuildTimeBin 1125 1
|
||||||
|
CircuitBuildTimeBin 1175 1
|
||||||
|
CircuitBuildTimeBin 1275 1
|
||||||
|
CircuitBuildTimeBin 1475 1
|
||||||
|
CircuitBuildTimeBin 1875 1
|
||||||
|
CircuitBuildTimeBin 1925 1
|
||||||
|
CircuitBuildTimeBin 2025 1
|
||||||
|
CircuitBuildTimeBin 2375 1
|
||||||
|
Dormant 0
|
||||||
|
Guard in=default rsa_id=D70A5E01EC14D078164D5E587608949F85FD771B nickname=leaders2 sampled_on=2022-01-30T18:34:14 sampled_idx=0 sampled_by=0.4.5.9 listed=1 confirmed_on=2022-02-02T06:04:33 confirmed_idx=1 pb_circ_attempts=13.000000 pb_circ_successes=10.000000 pb_successful_circuits_closed=10.000000 pb_timeouts=1.000000
|
||||||
|
Guard in=default rsa_id=598C8E4E92D8D7750991D23F6776EE92EC1A00C1 nickname=Unnamed sampled_on=2022-02-01T01:24:07 sampled_idx=1 sampled_by=0.4.5.9 listed=1 confirmed_on=2022-01-29T15:09:32 confirmed_idx=2
|
||||||
|
Guard in=default rsa_id=013ABAED8F4CDB677BE0B5212E4B2583B86035EE nickname=b0rken sampled_on=2022-01-27T22:32:07 sampled_idx=2 sampled_by=0.4.5.9 listed=1 confirmed_on=2022-02-03T10:23:27 confirmed_idx=0
|
||||||
|
Guard in=default rsa_id=66DFC51E724E38DDCB3AB67DDF4C0BB0F1F49C0B nickname=Seccom04 sampled_on=2022-01-26T06:52:32 sampled_idx=3 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=9400AF52EC2929DA41E6DDD3B684F23643BC316C nickname=BM03 sampled_on=2022-01-30T16:35:42 sampled_idx=4 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=DD0C8EEC5CA402A9FA4478F10C31A440F71F6885 nickname=chaosDelroth sampled_on=2022-01-31T18:30:35 sampled_idx=5 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=6055FE90C18DD4B2593A9D0E02DDC4D68E9BA62E nickname=elects2 sampled_on=2022-01-29T10:24:36 sampled_idx=6 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=79233E8202A0EE755B39BC24BE80939C023B3FCD nickname=m83fr2 sampled_on=2022-02-01T17:58:48 sampled_idx=7 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=C4BDBFD1049EE1D4F6977C42485F94CD5F97BA92 nickname=lenin sampled_on=2022-01-29T15:57:51 sampled_idx=8 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=876C5AC1D2811E650AD4C78B77841C1ACB3B0088 nickname=whoUSicebeer05b sampled_on=2022-01-29T15:26:49 sampled_idx=9 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=FF8B7CAD5F508972509D79F933FB24D2F524AB75 nickname=einNettesRelay sampled_on=2022-02-02T09:24:01 sampled_idx=10 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=BFB14B9ADF1F19E59258CAE7FCDBAAC9937B7B10 nickname=Yggdrasil sampled_on=2022-02-02T13:42:48 sampled_idx=11 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=ACBD72F9395DE8DE293D37CCF7733F1BE23EDA53 nickname=hopUSicebeer7b sampled_on=2022-02-02T18:42:20 sampled_idx=12 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=F79370BA46ADC03CC10866924EE4A3C470BAFE93 nickname=skankhunt42de4 sampled_on=2022-01-25T11:00:17 sampled_idx=13 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=C1939D36649DE98A202429631D8EFC70128D5F5F nickname=rinderwahnRelay10L sampled_on=2022-01-26T01:10:26 sampled_idx=14 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=3BC258C20BBB8094C12DA7CB982B36D1502FAC3C nickname=Assange041us sampled_on=2022-01-31T23:57:37 sampled_idx=15 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=B2242163F681F77F93190663AC5F696ACF76C4FD nickname=torexit42 sampled_on=2022-02-03T12:50:47 sampled_idx=16 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=1F953ACBFB9F44CE38543B7E9C0E0BE1BDC7E941 nickname=bauruine sampled_on=2022-01-24T00:30:24 sampled_idx=17 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=F00C8B7589FEE52BE84387CDB422C1F1386979C0 nickname=JennyRelay sampled_on=2022-01-30T03:59:39 sampled_idx=18 sampled_by=0.4.5.9 listed=1
|
||||||
|
Guard in=default rsa_id=CD39C258265B25EAA4ABA4FDCB2DF98104CAA362 nickname=normaray sampled_on=2022-01-30T09:12:11 sampled_idx=19 sampled_by=0.4.5.9 listed=1
|
||||||
|
LastWritten 2022-02-04 21:57:02
|
||||||
|
MinutesSinceUserActivity 3
|
||||||
|
TorVersion Tor 0.4.5.9 (git-d0ed04d50e80fe1c)
|
||||||
|
TotalBuildTimes 10
|
|
@ -0,0 +1,3 @@
|
||||||
|
SocksPort 9735 OnionTrafficOnly
|
||||||
|
ControlPort 9736
|
||||||
|
HashedControlPassword 16:178423CBFA6B25BD608424EE12A1FACF5D36FF43215636A5917F8D64DF
|
|
@ -0,0 +1,411 @@
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 14C131DFC5C6F93646BE72FA1401C02A8DF2E8B4
|
||||||
|
dir-key-published 2021-09-01 00:00:00
|
||||||
|
dir-key-expires 2022-03-01 00:00:00
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEA7cZXvDRxfjDYtr9/9UsQ852+6cmHMr8VVh8GkLwbq3RzqjkULwQ2
|
||||||
|
R9mFvG4FnqMcMKXi62rYYA3fZL1afhT804cpvyp/D3dPM8QxW88fafFAgIFP4LiD
|
||||||
|
0JYjnF8cva5qZ0nzlWnMXLb32IXSvsGSE2FRyAV0YN9a6k967LSgCfUnZ+IKMezW
|
||||||
|
1vhL9YK4QIfsDowgtVsavg63GzGmA7JvZmn77+/J5wKz11vGr7Wttf8XABbH2taX
|
||||||
|
O9j/KGBOX2OKhoF3mXfZSmUO2dV9NMwtkJ7zD///Ny6sfApWV6kVP4O9TdG3bAsl
|
||||||
|
+fHCoCKgF/jAAWzh6VckQTOPzQZaH5aMWfXrDlzFWg17MjonI+bBTD2Ex2pHczzJ
|
||||||
|
bN7coDMRH2SuOXv8wFf27KdUxZ/GcrXSRGzlRLygxqlripUanjVGN2JvrVQVr0kz
|
||||||
|
pjNjiZl2z8ZyZ5d4zQuBi074JPGgx62xAstP37v1mPw14sIWfLgY16ewYuS5bCxV
|
||||||
|
lyS28jsPht9VAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEA+jzmadukj4Q0qLgJ0at+nDXGruO5JD3HsehobiwO8HrdaaImY+rY
|
||||||
|
CZzxRWM4xryQ2AFuAGbSxGoNQT3dTLvjKNVdGY6jPzlS7vxKbPeNZtc/YMvfZ+Fx
|
||||||
|
uEjvaZ6nDbviVtQhtE0J2EZ32n90Ob8YC8l/7zh0hp+mZO6Wf2DGXWjNvG7d8Ucc
|
||||||
|
p5A1ZVIpJ/VQzdlPaocO+6AvxvSBpaIUF0yGpTwofTOjtUmZyuWbhRndsQj1qMcj
|
||||||
|
e8wzOIgr3HZyhO9wztQGkZ8bzHq65oZe0IIOXZu0icZamFGQ5I6y5duCqxDDe4C/
|
||||||
|
v1/6bD1I+/ujLXRMmkcbJ3NZE+KrZg7KIE5ScGbkJIX7vIicqtsf+7VipdOh3/wp
|
||||||
|
qaDxX9Sp2cbVUU0M/aJ14nDSeFlx0XQAgWkPjG2lYtTNEC2zuudBCuCD8es8EhAW
|
||||||
|
FrU94cYg9lVId0NDMOpWPMH2QJFS4tk3Hc66si3+gkCOt2GOaSQeD+gGWkdwDzn3
|
||||||
|
S8iAur2GohFFAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
B4914rKqUc51Q1nq8CrA/e7EaMQ0ug08qlBqWyzZSDiBKVCoQj446ZJMU9VKlzJF
|
||||||
|
XtuURlJ7zswXMze7HceakrkxZAc7GiAGKO5hgbbI8XGLvXn16Lsr/MP1cmbKoI04
|
||||||
|
g5tG9Kx6yOB4r/l2TQY9Tw22YcdJ24W2/mw6TmDv0b+IorsIBnxIDv7Q7j25IkNE
|
||||||
|
hW3F9R+Ntja1RWPqKnptp8nxBt5/2jVr637BFczDv9K509QX+HHKyICA1hnvDDU7
|
||||||
|
N5Y1/mVu4JwQrBAFL857XbobP4QaLsZ34Q8LRE4dveuyw+vjVa1YimZ6h/RvrYyP
|
||||||
|
8DUi4XnzFyztecivXbdSTpMTSMfC4NQXFeT+XStRdWlapZyCFhp74w3wv7HCB0z6
|
||||||
|
7QT1HWMKPRvj1DsHhvPviyLVCL2tl2x+G7aaledOPf6BbhO7VolNeHiubyYCQl2H
|
||||||
|
t/Vy72DZbQeuLhf5GyqVyUm9uugzvVrryUiNUApOW8Xta2dAEBqinDrrY6iMYxh/
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
UrJN3Ey1hSHTaMUAhINCVFhojt48ppxky0bvwztQ9p/Vy7dfRx0APNbL70/XZOrR
|
||||||
|
sRj8zxtx2+tc5Lnkfaah63bmVsUNTgD6LudDaffXiV8XhIeVbzS0r/YJ0U1OsbK+
|
||||||
|
ApDItNDUz+VIJL5JUDjq/6fojFlWPYNIwyk5G8zOM70Atjk6UDyCIihV2u5pofW3
|
||||||
|
znFaFp/XhC14S8lMPZYKbnyl2iQ7UsqLpTxg3EwivIlSVFs5YQe0yXgJFX0oNd9Z
|
||||||
|
gAf3JIonA2g8Oo9EkgRfYCI33AwyVoU3QN1/AmLH2uPWTKhMu7k+OHktuIBfyFTR
|
||||||
|
9jbUq+YTU1ni6kEsJVBP/0I4n9Xb4VYIoqOq0BrcEp3lQ8BCEWjIGwLh1HYc9/DY
|
||||||
|
meE+cwLp0RNU8cuxyrGnkLA350bsNxrDkiaHAkj5ZA8W9VTGYsBxVhbLdQzN3GOm
|
||||||
|
63GJBgjdaOsD6WXs/737nD2sLu6dnA/Jbz84ouZSafQO/FNQZnndfj4osjabmq8O
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint D586D18309DED4CD6D57C18FDB97EFA96D330566
|
||||||
|
dir-key-published 2021-09-06 18:42:41
|
||||||
|
dir-key-expires 2022-09-06 18:42:41
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAvi5+A+XPw4jxMYhmEI4+MpnaX3dUEbsMGHA+xAMnmVhuxbm3Dn5c
|
||||||
|
TyhQNY2LOlsieE84UYG+J4dABfaFH4w0l6zUJkuytX4+6WRQontw9puR/IcXkRwM
|
||||||
|
8Tv/tY675OYRCm9DgDAWfqZM0IgTzSrYRDl8eFPSFCOP0NhMrQZeUrdKgwAXVZWP
|
||||||
|
xt9nTCwT4K9BMp47LEmZKdEokeVsr0l29Z9v5+r24k9x8EQjDexsoHwlVrxWfarG
|
||||||
|
1klWssfSFpkMN+FkTQnBC6ByiBh5ZKM5AC/HkVFvuHjehUpfrtNk6XNFcKbDvEIg
|
||||||
|
qPdg1QWuuSWpZVA+/EwSBtwMNcq9pv60L8Cm9WCJoSC691WByiGwFCy1/XcBI4J/
|
||||||
|
BkoMEvP3kAxzm92jqGbpFSJawFRPZKy89FDKpha/So3CERQPV0ar+DTpVqDlryWV
|
||||||
|
N4x1IzpPeSHFj7T74q8qdrxx0wcAjWJ9WYoGQif6FK3hHcmbSGSgyvAFeoYxyUCL
|
||||||
|
JHkjBCD4WTWVAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA1Hguh3PNTfMd7kLD8NupSdye1KB6hhQitx8DipvT71ZaCZYI8fZ3
|
||||||
|
z5xa6fCcJXv/xoz1tzKeJ1n4/AzAbc7ltCyyWkj9CbiB99cEe+sVE9R899eFvPP9
|
||||||
|
DUmsmgy0Bn2MrdfD/N5VeJ219TTtqI75BJMd9n1+r5zUzhji2ihcLWYgi0GVZoec
|
||||||
|
6B+xfPtYbifCdrPRBwrMAW4EhtMKeJfzsYFO220f7x2OmmZB9muesi5O8/0zjwu1
|
||||||
|
xOKldXCFbccTfFN88nYmaO8j0SpG9nOveFXavPs0LyVzhuMkbLXSWAN+M/S6GC4L
|
||||||
|
1kbkjQ6YhuYSnKxGFo/wdax41jrSFCf3qQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
r2a4uvuN2LUgSuHoWYckJusjzeaEfTTN+DHJdQjJrMueZtxhhz+C+soYoSAvBsHI
|
||||||
|
huc2y0wLbeNMpLXeyGoYh0M4zm6RyjMksHQZbgPjkibflbUI3csJcvaBMQonfo9B
|
||||||
|
knoqOzeQd8NioOlnbYQ+k78swGtg2ndHpK4G4NMBK6ZQrbhrIk0nVhOhaIHpGdiN
|
||||||
|
icr+czGq6SzH4Snp26dJ+J+9SAdTOzgat/C2Othdu122JR2/7GzCnz8dqS3LabN9
|
||||||
|
iWJWMLxayFKi+Z5f1WjCNOVh5lSjpeLjUNSrA1hXXKSRD0eFOQFRvgvO60gyvooH
|
||||||
|
C8amqpSD8HqsCK6MvN7V9g==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
uuQhm7YYbqR4/fGSDWqzwiw40nr7y3laCmfiTDHOA5N6lVOw/tM4bdMbGH58wkkK
|
||||||
|
XBIEz4zQnIT4Sgaumc9PZK3/a8wkx3HgvSNZAEvv5GK2iD8QQNaR0mv7/gbCOLeD
|
||||||
|
4MAsWH7ehc2u0AcebYehYWE7/fknYRfIGLRzeAeR479LgtFIaaZ54lGeEWKA7qBc
|
||||||
|
B3njJcNDlekChydxw2JRMw2GmK7Gn/cVRLjFiG32aaTPA37Ietw6Z8wXEjTy4087
|
||||||
|
KTzTe6puX0g9kCWMaGIBzod+ucNOG9WhgVfy6M+OMddI4KbgizUM7a5c3DZwnQHk
|
||||||
|
nn5yqib/W7NmHZOL1k2qYlKQlbr412bsDgBDoFYSYPIkbO4x7LHJnGGiwxYx4vmx
|
||||||
|
caxDySQtqCcR9ygMrZVrL9W/Z+w2N/KCXnL+SgTmN0x/Saor1ZTkONj5Tfn4dg/W
|
||||||
|
xDxvLO02DpVTfgidUsBeHSnMQn7w0iG0abhWFmYNFDjxZFEWy30mRCEYADC/1NCI
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 49015F787433103580E3B66A1707A00E60F2D15B
|
||||||
|
dir-key-published 2021-11-28 16:32:54
|
||||||
|
dir-key-expires 2022-02-28 16:32:54
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAxVbS0noZKz1Ei6858RGyyuQgwQUKG4Urrp2BiAzkYxwX+6fURlut
|
||||||
|
AjeLb4XysqCdNdUipuLRQ2QIy1C220QiCHV6jZAsM4tmEq6TpK6q1lxi5YPKqbGS
|
||||||
|
CfUQFT1nO4s4DCYSLCwiRNy6bMe8tNHc0MpXP3loCbPkYCoXrEL6vYIROw3oeGWE
|
||||||
|
KbFPQrzYJAPHgUubBibsY5lkUY9N/5QZw2y1bn+dq9mFOoCIHLd6DkQmySmftnMe
|
||||||
|
QrpYA2WvE4M5yN2HB8QGT7TdzXPPL6889rFw/mjqYExQPX7cqmILkchsB7I5whjA
|
||||||
|
u0oodF8Y9ooK9QT0GeK4h3xQhzNG17anuUxbZ7sxzmBwBNmkNyLWEeIntazyjRFr
|
||||||
|
P2mDY/9YK2JOQKkh3tKl1whcCG9ZtAhKmm/ijG7OrhqtusdGKBXIgALf4f111AK1
|
||||||
|
gNcacDx2fJzRHuNK8zkIORAzStxKdLbAbBNeLENk1zBjSkrxCOJH4mBpr8TXULq1
|
||||||
|
ThLI/8OzZq4LAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAo32l4qg46cqP/sAL+oLmQM0mDiQUy6EtNa73vyy0BJEGWJeImUO4
|
||||||
|
gHNg9pyMFqyF+rP824gAzwX9Un9HaKgFpIrsKcZzg+Yl2vlrBQpJ0NPIkN9oqj27
|
||||||
|
W/A7RftMhH2itv0v87QudD7FqJpxdYNf3wpr9GvsAiHZMBfC88WhCnmJoDBwyucY
|
||||||
|
HFH7gzjPeDx37KD57o2M1KC/SRVtQtrccA/WzcxNypgAYkJu4yE2gaDr2WFn3hFv
|
||||||
|
kscW0jn6+157UuKH0rCNeRFDx8SsSS0nr6Zk/n+dlXzHGDO3vQIKCoRoH9yL4T//
|
||||||
|
hkMYE/4qc9R49VyXxK+n/qU6HQYpQMi+VwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
KKrOMRAg1bx+XFLRjhQB5OFjtupkqkFnGjS3LZQ5FHNwJ7cKG1X7K0aJNAumRPMD
|
||||||
|
w9xraIMuuok46wj35P9Tcy68qi3EqIJP5378ZtdK3Ncy9KkSWJSA9MLPmB3fClL/
|
||||||
|
/5TwboePXRdlt++Bcw9OC83HDuFVBqZArFIvopKf/AJOyViRVHlBmgNKFpm9RJTo
|
||||||
|
XsD415rJAi79tAfXzKuagke6DTVqobMhxrUmp3RjbEEEC6icQ3YX9X6NOPQ4Gwl2
|
||||||
|
bpWOVi3/9EGRge0X8IYsqB6/pnEXM2FSOTMdwo4YQzIgW/HLE9hXjFCx7QcPkcos
|
||||||
|
AZHvl12tKzZF3F9MKPcNyQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
wb40bfNLWyU9pWW+2BAHbrmZZfbs9UEIS/6G66VE6823/r6M90RCmFx1JlwqgmaV
|
||||||
|
/WMbBE9DxFKILyhuQi6whIKoYndg72VDeZL5BzWctalw24VpJePVjeGLcTdJHBVh
|
||||||
|
a6UiQFaQdH+bTX6qNIFv9nNwq7ZzJRBvaYF9bK8kaTrZilFKoRVBxXssBUFjEz6t
|
||||||
|
f+sei5WIiBnzaQOUxdMjvdDAHci4DXwGw1U2M7jcYARo4FfvWkAxzWLxocWmauPM
|
||||||
|
8tDn0fSgMnLlSOR2crnriQMFhYD+9xyxfOq1IDH2IWCKlejz7j3DHSqBYiUSO9oD
|
||||||
|
uX6htwbMWwZQeqt+LttE/zZX1Tcv6PJqemT8uabH0s94W2A3sJpstWJ+0capb+Mj
|
||||||
|
bvTXj7t2ilqa5RX35KKhaQ6wlh4OXZb2ydeJZc7wtyG8eN53aVqJNJQ+WZn4IiTq
|
||||||
|
fefr2ojy2VDJLDHJVNpKQQzmjXtSs+69wCvrqdHGjGAQl5L31LjZgaNLNj14RI+H
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 27102BC123E7AF1D4741AE047E160C91ADC76B21
|
||||||
|
dir-key-published 2021-08-21 23:12:45
|
||||||
|
dir-key-expires 2022-08-21 23:12:45
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAuxgnMVH4vwBjMeGvrEODOYcjbCS4N+Wt0SZ6XA5I08HyMf5AbaaF
|
||||||
|
MDscJBRIUOp7DyLmUwK+jp+QI8pUjjKsB8S0ctb/J3Im2T6CXnP2KgEfVmpNVQmV
|
||||||
|
XdMm8cRZl1uIZDDBAXizSQ51f9A17TJh7pF/5khYp/SAzl6aO5ETn7ry0ITiJnNa
|
||||||
|
6cY+400F7ZBA8NuXnCHVGfmpFFsiJKFrS1Kve629eeaNEd3mynRviBXJy5a4NEGf
|
||||||
|
y42Ev8on6SxEnF9OG0NMJ081/+mP+j8Dsl3+Uehzr9B42MQQfDo4RdYGrt9XolBm
|
||||||
|
L4eay1ieZEsFeDy0TMfiGGbr90wo1fgGLHIRSfTNLhhPJ/f9cTZPe98rhSgGWiAd
|
||||||
|
RvK5SljoIOR4qdS9/aiZkj1P+etvh1rIQUcG4/xCOBnouEBK+DDHZFqyMtpMPtV0
|
||||||
|
Bxi20DVaMJcyhdfjVqcRSyuR8tlOnTid6QwBj6kgIIfMaC+4Ht6yO/SYquCWlaZl
|
||||||
|
y7Pu7li8WyW9AgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAu1QJ+qlCbtrYsg9QENtOpvMrEDc+WgH1ZFxEqk0v/ad2ACQYe4dT
|
||||||
|
g1gJ6VZyGths3p8+WQXIA9YbcEr2oajXlLmLT2QAlqlsXMPKwwIpeG4rvR43Wwq5
|
||||||
|
mQ7aX+/VjZ9YZNoZVEAy1O7ti7GIXJzJYDOdgBjLifSjpjcEmSaf+v4E357azs9R
|
||||||
|
ndLHRRwbBLdUl7G3aMkL4ejrv6AAXexPxAL90xsb/MAhVEOQrJNcVMTgII0fSf56
|
||||||
|
P1J17SQwthNZ4rTMo2O9TvWUGNf1sMb9kdm+A2Nwo2CKmUR0uo5wHN4YHSBYFDcb
|
||||||
|
hxRtZlhSFfBJvJgrX8/+CnJrBFC6S/7vJwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
VzdxGiA6egLcZjm3hHrTW+N+7sPwaEcdYR5/GW757MO79O8QwjOLJSa5dOF5yDWa
|
||||||
|
3Ie+QDB2Q++a3+w776zqpFsaGCuEHBCfU9pxatKdoTsExZdQnWHJg4u9YD1JcYvL
|
||||||
|
dZq9uCCWaKa91OjA6/U9zp/LY3tOPUWCyO4MHehHYggzapbcF5uaMG0AT0lZzaXJ
|
||||||
|
vh180N5YGMfm0eYXJqkJyX3WCZhGroh7o3DyaqtBSJ1cY4NzTNgPoCAi3J/XEoCI
|
||||||
|
3JzxfH97uyqQngR1yGb5KggdM2ejci3Ld9q99hjXlzYRtsobUQBTlZca2vUk5ALh
|
||||||
|
vFWU7GzcNIdDjKBUd+IhTQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
WldVJc0L3fByDY9D+Yha2/8Bw5nqRpHu8RL8lU8zXb0rhfiA6DN2aefSCG9WEay1
|
||||||
|
sTVs4zhS8N0+278oP51Lg7S+V6SmXxKZbF3I2zNaFMIPVspRA3OF0R9vCP1YMxeo
|
||||||
|
D4EDQXiRxNNeM9hAjmmLiE0j7ZMetZ88ewwsOOXAvPHmCth09nWdCYKwibwUW/U3
|
||||||
|
w1HXCHK4BdZ7XXkMJNry7kZP/H1/5oYyuKshue4+f8tgRa0xg0wbHDrdbrR1qBBu
|
||||||
|
Xg9Q11hV29RIdD0ZgugUdyGKlpRa6Mb3GD5DzN845sFhCjsPrYyZv7Xo/S+uTtN4
|
||||||
|
t59BtF1TjnsAhUk7shk2W3zzaauzUarkDA1v+mb9NZ3CFsNgfxt6d1yDDyuxJgaC
|
||||||
|
VkIfO9nX9dCORSC9Ow+XOq+D/o4FfSe4q0VvrJJILAcw2Nu1Zg4ZhHBeugP9f4I9
|
||||||
|
p/+ZMrEr+YAKkjPw+uIEdR0l/YZEhcrjymX4FY829LNll2AceqMCKoapFWuEzzDP
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint ED03BB616EB2F60BEC80151114BB25CEF515B226
|
||||||
|
dir-key-published 2021-03-29 03:27:58
|
||||||
|
dir-key-expires 2022-03-29 03:27:58
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEA1d6uTRiqdMp4BHBYIHKR6NB599Z1Bqw4TbOVkM2N1aSA4V/L/hKI
|
||||||
|
nl6m/2LL/UAS+E3NCFX0dhw2+D7r7BTJyfGwz0H2MR6Py5/rCMAnPl20wCjXk2qY
|
||||||
|
ACQa0rJvIqXobwGnDlvxn4ezsj0IEY/FEb61zHnnPHf6d3uyFR1QT06qEOQyYzML
|
||||||
|
76f/Lud8MUt+8KzsdnadAPL8okNvcS/nqa2bWbbGhC8S8rtDpPg5BhX2ikXa88RM
|
||||||
|
QdrrackdppB2ttHlq9+iH3c8Wyp7bvdH8uhv410W7RnIE4P+KIxt3L0gqkxCjjyh
|
||||||
|
mn9ONcdgNOKe31q2cdW5LOPSIK+I5/VTjYjICza7Euyg03drpoBMGLuuJZY6FXEV
|
||||||
|
auIBncWe+So8FMxqU/fwo5xm6x085U1MwXUmi4XDYpr/kau6ytPnzzw9J++4W9iC
|
||||||
|
em5Jp0vaxrDnPdphqT0FWsBAwsZFL7nZRnmUlTgGsXUa0oSM9/MErDwzELh/NwG4
|
||||||
|
DNyyzRG8iP61AgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAsw2ZJlGsmfDmDwoKbzjOno759Xwqn6JX+tFasI8eRjOFnOyjYzd1
|
||||||
|
XjG6Gj2hVpF/ze2NiTuUyRu3Ybp8G9/gs8VGPljxSHkEugGjQdYFoST02ma0vUHA
|
||||||
|
8YqpBYOiLvsXnqfEkl3Yj6HVxmVJA9j8BxODODlBtxRMJWFrpp/b+qCo/YyGmCh3
|
||||||
|
n0qd3QNqFPLIzwvjWVhaFfga8dXBT73wX9uYT7nT/e3pV7ZvTw0caqi7svNzj0I8
|
||||||
|
/OxOEjoBQEQMQVPT2bNZKBe9X8QKDSgdealZQwBT9wdZ4KndtCj6Y8MVjj15/YtH
|
||||||
|
fWfNyUHgVqOmfDK7m3pHXR9fGgsLQexIfQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
GyN9MMaPABXJ16WAFIhdzOhNT59BI0RAfV9ZpUJgzkAAmpoj+WwUtWfcrW7a08CT
|
||||||
|
9g60QwJonP/Nh+8iLvQYH5ZyEqsEj0HEUD/yI2kvN41Y5QBD1Sku8Cu4E2UaICzL
|
||||||
|
V63oitjQzppKlVXHyP/SXsI2bUjoHLtT2pBvxRJ84DlZBEQ/ZqS38NN/+Z6DtMR/
|
||||||
|
kn0l7W5yA3bYWzeKy1TeKLWo7p0hHzv/Hswe/eha+27LuwZZwwfSQrRy1fi66Fmj
|
||||||
|
0xBP+iXXtmNleFegFuhEBPXa+9udrT9rodSdazkGPzjyF6HWRMP5DtmTI6ovJDVX
|
||||||
|
60UQ0hNb6KAP+FZKPz9/dA==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
zAgmCR7tf0btsogvBmdxJ7+RWjPBzmDSA7f+zlK0jOc3lDDD4pxuQO6iNcoEDYMC
|
||||||
|
5hkzVoGBMYsxLfLZXFGE518dn79iKr6SQoq87AhnAsIiAfXMk2AWLkWI7MTzZo2U
|
||||||
|
dcgo+7vzxMObk86vzFxYWrSqp6CSZ7RwBRnH3vCGLfOMZ1lXMug+MQAQYAyl6KIR
|
||||||
|
3d/uEu3+sPFJcHQFP3C/7bHDG5j/76kwoFzjSjg974rSjr1j1FbrpNn35mLc+2X/
|
||||||
|
11n7cOADHWaSN3MlLWGsYxuuX2l1w/XZNfFEezDwK3BOotbj5spU2nQ8xbDFPB5+
|
||||||
|
ixDfc00TC3YbveSz+S8W9czfysJt3KaWmQczDtSIXag1qrL52CBGUVGP6+R7xnpR
|
||||||
|
/4QD6yCKmDcNk2D1YnindwYC48ydDt/u9A/97cEBpUbul3feW7eKLk79MIklWlWo
|
||||||
|
3c3aQVH6Ewrb76oXYYwzNbqJOp2ceREu72/Fk/keprVcupVDtVoqHgDDpfOUYTJd
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 23D15D965BC35114467363C165C4F724B64B4F66
|
||||||
|
dir-key-published 2021-09-18 16:07:20
|
||||||
|
dir-key-expires 2022-09-18 16:07:20
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAlv6XS+VppPaQzOgor0YFlcXLWeXiMn5N3VBneXuw8maLOu9oPJ9z
|
||||||
|
2/oMQN8a+VOWTf+/jebGzOBK6MamXpgsIZPQWiT18gZMsYdR8mcqBYqVP3khwUWh
|
||||||
|
9QYkV+m+Auxa0TLzTrsi6dLDJ384XdpDweU+YJghMJNZ1NqiT8ogj84hxs5Tf+Qf
|
||||||
|
bn7EBIcU7SAKr5Lw25KrMb5e3AZSC5MilBS/KLgVTq/GiWb7pKd5pxGwlGolNX8a
|
||||||
|
PccZ2ZT2DrSQsct4wVxhSbUqANI3PfMpXvmUDxWWBgbQwLF02/4gi+13snlHtqwl
|
||||||
|
y1WjE55HVfx1CTX13SStwmF/N3SFtFf1qil3j5qrHdHtKlAYOaTfqab1eLVH1l83
|
||||||
|
LI5QWD7ri9GpPqIjlh6PuaHjaO2FW20SouZtS9jJKwi1l1G3ef1tSlha1cxkRxIp
|
||||||
|
U/ngvQBsoa9X26VfQA4MieZgVVdMVwjCNh2YC9aEXc/KxfcBueZkM1194qP88cVu
|
||||||
|
dOFYaftOkuGPAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEA3OigVlkOvlx54wcY0RRuExNw2sPYHr8m8QP+SnzARDbrubvsKT0S
|
||||||
|
z/+aVWccgacBtihOpF9juQLHb+nqhea9s6QS8XAQ98bqm8foKToWuxnIRS9c+8e1
|
||||||
|
qcENTfh6U2Dr8ckwVcKAPtnLnPtbxuFF5UiqXAPA89ZmtqUPv+DfmDr5fdeb0bCu
|
||||||
|
Lo6TCFLQOcn2Qz1WsSv/2JRkSBy8pgaC01zErgv9oRVIzFfLn8YpfnWZkFiRGwX6
|
||||||
|
/GBLsS19SLLX0xLkPwQ/CwN6OkipOtYi6UNq0osHw9xfm5sCzcnltJShA1YtIp72
|
||||||
|
e1HkTx03a43uAKlJBo1rMD29stVJu9ABEwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
r2YFJIj1zR9iMPWRJYMDEKuLlV0Gbis9232Gog5sS06LpUFPYL6clLDf7eWAimPs
|
||||||
|
u8rUUP4JEjmAY7bWHyqbG3D5iljNin50W7kvY8ip+Vqf64vjNUXFDKUbi0iGkfVC
|
||||||
|
nfX67FL0JF74hqtCtMlS5QPvD4oLsC40DdmPD4kCulaSrMlmsFRGFdl60HeSLbeP
|
||||||
|
oopRA4yYB4ZGJxJUaSuMm6RrcK08G2l7vLfHpxhcJWQVb2fKB7Ds+AogZYnc6ZYF
|
||||||
|
hpGAP9y+Yn8TUUqPMhhZwLw/8eUAhtv8G2aBBxHyctlGvg1YFiquPP6VEn88h9GZ
|
||||||
|
X4d/mLOAQeYWEalQC812iw==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
OlLQuEDdagECnVy1Nke/C7dpS8+8XvgLK/hGgV/OpCWr+Gq8bL6/NpK9GP7EbsUI
|
||||||
|
NxsguJ2r1wkEGTixz88gdKWDCC3evGW1pqnsjkCk69gHGtCxmrFeiCxCSomaOjzw
|
||||||
|
HCnp3TcT1DA4EstoXUqPysVkBYkx8OBO6rGhvE+G1S4bVG/EJkPCMhjPlxX41ON6
|
||||||
|
NWvtf32dviA5W1BrYKWJy/v0pCsApgjZa6qpaLdgqQabG5YEJA0rONS1hL+AcJks
|
||||||
|
CnvkSS7iU/4jrDPfgOLoVxEkH68swLol2Qf0RFHg12EL5kf0xbPnfE84aQyt99an
|
||||||
|
6VAMVIy/tCxR2efZ0+uQmQk7S35uQH/PxZ3/mq6cDMw7+WZdYbrkyfmFK/A+yL2P
|
||||||
|
op71Ik0Xf0Qwd0qMhTZMVPZpZDQmxvr0j0r3xHia0Ez+PhovnnxqI9/cThRQ/ceN
|
||||||
|
jE2cA46H4ZfYn5OdCP+mP9L+MsqJYoHj/SigcIrXUX58R1D0JWVX2KPU+tVyQ03B
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
dir-address 154.35.175.225:80
|
||||||
|
fingerprint EFCBE720AB3A82B99F9E953CD5BF50F7EEFC7B97
|
||||||
|
dir-key-published 2021-02-08 18:16:07
|
||||||
|
dir-key-expires 2022-02-08 18:16:07
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAwBmqdD+G0q3smN5OBFHCcK5pQH5G1GIpFJ1JxCVEp92tTK4ZHnot
|
||||||
|
9RzMfag6zQFqwLaJ+yEb1DOjTdTMfcUTsj5f3GUqPB+U7shSMAvvAAM+Bx/4m1AU
|
||||||
|
u6sk4XmPB1bCBfcRl4zhnY6XFIbj0ktuBDblcxHz3lDgHFpBoci9sF59mM14MZ09
|
||||||
|
EdwgeckcU5oeq6ApuSlUVaOT8xsKV/yeK4SKaFfDclwPAJuitQ5CpqctP7ExmlrY
|
||||||
|
sboTDtz7/Xa6OccaGDEUf7TRlipvUX6rvlmvHm3qjdixVfExpa8E5QG79GZTL82p
|
||||||
|
1zBd3iqc6QEnRDTiW9cMUeQt4EvrwOUVVYPWo3hp1C/iiNzWraDays2xuhaSB0gj
|
||||||
|
fPatu2CFW5XB2vd9IvIiWeklSFqnF8DL38jDL7DbFiETJreGsDMR03yHWVd0MbPz
|
||||||
|
OrvAxG4tJn+JtnwhzlbRjnfk53jOTbiM0vMV8h/ztapCiJeT/6i7nVQ1xL2boeYw
|
||||||
|
5RDUlwZaQiaXAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEApIIcKBWvD0P2YQtsrFKEF1kprJUCEUlWqzV4mVbTcVdzVQpct8t8
|
||||||
|
NAO8kDbxRSyU2S6gKecusy4H1MJWVAe2qvKIY974espuJwBXWFgT70jSBTFzjMpB
|
||||||
|
dAaTTY+kNZa66kjBjCVolr8UfFvL7HaL3CCtWD9ds7+ep76co1h3s3sD2BWW/M5m
|
||||||
|
V6ML8kYkjRW6SW8YHW6By3G+UuqRiGziJIIwQAoPnNSWrzW6UTLpVRDjdo70bQvU
|
||||||
|
vvfppUuNNji5SFfzSiakxHIse/eHG/rTNSzOvlpjuZxzPIcekr71eu1hCVHb2QdA
|
||||||
|
9Ikc5pUQeB0zImI8WJ9OVJDFUEgjJ9LGtQIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
cy+VPbSGSJ5aI7egCwgNY6mgSlJumULFmUN8gfahvMo5hUwVLqP1FtoKIO8yBUc0
|
||||||
|
Y47pt6G5a0fjm6mjapFbU7IpqIUl+5gLBRKD6ugx+hr2IoqIVJY7WQUvVMBnfqHp
|
||||||
|
Z5N6kXfFBT+EbnbLiUqoRo1/AHC6E6CqI5pdhV86UCFydmuLf/MfwJpXiYRJueqk
|
||||||
|
DnPYEflq+Zu/RReL5aJlVOVuWq0ZpuzUHk4gIicKESLGkv4eI2CvuB5HTeNAB9L5
|
||||||
|
laMe+YpoXqgqMae1HT+rupPXYeONPygFXXbNLNVrR7OjAYG2TOaqdUTQkFefFVtD
|
||||||
|
ungKyPS6LTytSuU/rjWCbQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
sV4ouMb8pmCM3WjLTFxfRVb6qZl8rQ0tYM/AjKz1ufU0UmL7yx/7JMg2InDcYPH3
|
||||||
|
4PIUQrDLoAMxnnNVMDaDGoGDGI5keUmU1eSGvdJYN7okd0aRvA9LFGw4uDVVyB0K
|
||||||
|
l7BOk80y15P34R4G6oPvcR8aCxoiMh9UusbhiVjBr6dAfJGVVxZAO1ZJ8pa8fcrA
|
||||||
|
IbtNks2vut6Oy4oaC7zLCwcbRJM6dSvzcbzBpCf7/b9w6NQNqCBBQkqKgUl0FqKM
|
||||||
|
QRKqHWuhbqcL9+lj7rvgWCEigLu9ff1+E7C4BV7GzOm5FPcRqfkPaMsjQuM/HErH
|
||||||
|
swhf2Ra+Tcdk9gdI4AomqwaoD6B2uKsZkcFpZhq4HAle6rOP9eC16DpqsokpqoW9
|
||||||
|
vb5Mic7ABYVpB4t3o5wOI9D4exXmzv6gpuOyl5rJGL5ORYSEhnMGsKMyPceCGysg
|
||||||
|
SzwfPWBqRTM2LfBxhW05UEBJev4EXk7AA5sr6GkcX/CXeR47pyXQAyc2doZo7Aoq
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint 0232AF901C31A04EE9848595AF9BB7620D4C5B2E
|
||||||
|
dir-key-published 2021-08-01 20:00:02
|
||||||
|
dir-key-expires 2022-08-01 20:00:02
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAu9O0Pueesn0+29BlxZs60mBqehjdQtgSnKOm9QZxbQ0xrMQgbFnR
|
||||||
|
hWbKD8erenyeFk2SF6AJkbyzgYC89hyPW+8GBDmg5bE8fRKjgV/nI3tY2m4rkY3u
|
||||||
|
zSmYIdwqHUUc98Xzt9PaQ8IJAlDBY4XLKrWmJMxSyhBlVEept7+9Tj23qowW44Mz
|
||||||
|
xPJZ1aFkB1FpkD6qmoCzVZbhXy3cGt1nDwdJK7KqlaXziz9pFiw8PzTVU2xFgJNy
|
||||||
|
+nEcT72DBtk3G5K2Riu/aXY/D541Cioj9KMV4Nv4g8aBKx58Xq2tq1pFkc1Bqj1y
|
||||||
|
2MomVR3iskFzlqC8yKWGVe4OP2IaOhtcQJYp5GR9q+dWnr53WWNVxNu3sA9iMal3
|
||||||
|
PJUk5pIYrsmArGew5gmlCe+Al46nPINxc7ouztmStAV+2F6SpZlKOcstnT+KJ52O
|
||||||
|
1xnOSaj/WnzG2o4KZ9UrFQoUNOLQJcelPcC+vrinMk9BQPcB072l9NjpUBC9brsW
|
||||||
|
qTCMStn1jfDDAgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAp7nHn/R+ZZ8lza379M7BJ00JYPAcncjtoa2K2Z75bDoxlegGvZXp
|
||||||
|
j4D0WhqksaaOr/+YCSPMcs4HAapKE/Dj09p1kjzh6Xu/iVp51NiQAARS5j3tu/5k
|
||||||
|
WJQ7ig207TdtjmslZIx0UU8pieuenRdyUN0PvjOkaoZIpao1+UlIe47DP+42D3QX
|
||||||
|
1J2wu48QDvt7hUUA3y7yLUyNMarqYBbbXQ/MpH8tcMT76TTN1uilP6W/3j1b6Fr7
|
||||||
|
NGtbUrS1EzOOHnCpgpnD8qGcisDKrHcVkNkh1w+8LW9ef7RGpFPpn022hUQG0WLD
|
||||||
|
5zrh19SAsKetWAZY6RlvyCHPVReajIAovwIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
ca3I8mHu2zEOCnzySzdk+rbZLpohw5aa3NmTGFzRUXqOeHClOYHRc+glAyCrtUA3
|
||||||
|
lEa5fiFaZTImKu0J/uroyR4uF5JpzLOfojTQi9P5hMCBSdd7uGzoKC+/dKb2OngZ
|
||||||
|
VkBjptMf1S9dy2lUdDksHnnyg8UrV7EolIHUFNdEBI1LeONkdesZ5oQMg3HRlVpU
|
||||||
|
v+m/7y/MB+o3KAXkQyAxTcV4bKdsHm3Pf0CSfDgOPImwFS4lwyEW0STlOmVHojZR
|
||||||
|
5wm+5dwt9vbD7K6ectbnWtWjiSrvtGjqixO652lxz1qrsid99S5wEzJNhfif8lYe
|
||||||
|
VsB9h7YagNHJHLiGeBT1kg==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
ZkHpe8JVvGsiAsH8gw1eZVIIE8WuM+3Sdd37U2tOyDi7FVwJV+oJ+aKwcCTqTLaj
|
||||||
|
jglQJbg2JdV4ofy49ZaQa6FBGLrzxAS6Gx0jg+28Kzbr0xu9hSX81oPSXKn9KDLr
|
||||||
|
BvmuSqKBB+5B9nIEBjm6FwPc8MjqlvNesuJ3IpW9+e85eB7qsH4ozjHF0GIgpXu/
|
||||||
|
qXrk2TEK1nMc9EN+VCYuy3gAm46GHQEYR1U7gIofCYf7LQpDrfj1sAGquCQ3vYqT
|
||||||
|
Ex3GtqcDV22IME67Cou5rv9OmMnmy1dbeHO4g843RX0LXtEDdGYGSLHzl8EAscrg
|
||||||
|
i55XFlS6z5OwCbdDvFTkHUWRlaiDtoymaxAEW6GUmNjHhgWY9wJwgroVNRsP8Ihi
|
||||||
|
aex9HIND1MY4ERS41Csba/0grf+FahMVI12gwpmrnKfF95QHWw2MEvT1pzZGtMnq
|
||||||
|
XD8mcVNYJtcTvYM/cUa0I4BFD1AyeIP54hEXwIsqHm8KBJpjX/ZpPzksnc4NY8i0
|
||||||
|
-----END SIGNATURE-----
|
||||||
|
dir-key-certificate-version 3
|
||||||
|
fingerprint E8A9C45EDE6D711294FADF8E7951F4DE6CA56B58
|
||||||
|
dir-key-published 2021-11-09 19:16:37
|
||||||
|
dir-key-expires 2023-05-09 19:16:37
|
||||||
|
dir-identity-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBigKCAYEAu/DOrbv/4IAYvyxsy/6ivC3q5yCQBWLKHZGYKQa5G/3rem8wen0f
|
||||||
|
qF7y4ye6U6faWc5kcNMHEKMIeBzMErxwF345qoGHITxbbOWnizgwPgrdCwlK3p0H
|
||||||
|
1XZGU/TTjoaM25P+ZNCBvGmDQRAtgs2odnv+i8hpu6vrcAUZYXmmw/Ag1Ou2AlLC
|
||||||
|
mPpbjV1O5SMylgC4IuCBPr3iA+M1kKkvj4LmwU6pJxjAae76GLzzQ/Ffvi7rRpvU
|
||||||
|
2BHetjehk+7/t8izgbhT4VABtzKgrv9ATnhfEgPeT/WBq0E75iciBBAXRPF5kEA4
|
||||||
|
k++NPy21XpL7jkQ4wnMs2HyiFhHbUwbLcoyQ/JVq/WBboSwStYbkdizRpkhJ1eNg
|
||||||
|
LiD8CPWcZnhWZi9VWrwT0xl+Mu4v6kwo9kVnXhOfcK8Wni9FqiBu2tmNDoGPG1Ac
|
||||||
|
wptYQSIoujuLgn4MARREwo9cWrKp2w+D7Dt4U7U5OrXL7TXjonEKuEHwRhzz1JA8
|
||||||
|
7LXm/wENwn1/AgMBAAE=
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-signing-key
|
||||||
|
-----BEGIN RSA PUBLIC KEY-----
|
||||||
|
MIIBCgKCAQEAuxJxHCGOw9DgNtw4wqi78OE3djdiLwbie+2CevKMRaO14IhuQGVK
|
||||||
|
w1PYsnTuVLVcJl3Y4QKQ4nnbe1QCiGrLq9wueQy7ZvBeZry3f+QD1Q/PAG19n6/7
|
||||||
|
hlhXclSOJ/jRah0Gi+QXAycKE5RES/Qn4F5fNE7MxzM0ZQHIlszZLNUrcpeLE9nX
|
||||||
|
avlqlSqK8FmLPOpOSRrdPtzKP2sjW9UUFVGMfurDYIC51hkZI/nyy8A1C844sfuF
|
||||||
|
LV6oYpYw5+soA122zBqGqP6vApwFCvWSDcGlx8xj1Irdo+JIDfK8vklu9P11rTWB
|
||||||
|
R7dZw9pD21reD0pf0Bipzneho6iiL++w+QIDAQAB
|
||||||
|
-----END RSA PUBLIC KEY-----
|
||||||
|
dir-key-crosscert
|
||||||
|
-----BEGIN ID SIGNATURE-----
|
||||||
|
aMzjdOHri8Kmdoy0qt1a33Y9/e5vKkJQkzCKdHN34Il5FMMCkOrJ1yeQgZyp6mU4
|
||||||
|
jPSpUZlr1Iq52x5ers4fH4SybvX16BDq+p6+Zel9f5TpFg1vzdpJH1WOJ3ZoES1N
|
||||||
|
S8CpiXVz8flc5Ez6Dc7uZGSE2fYRl1Pswn3GuLfR1Wjw0VNp1VgHZk6xYXRk/YLx
|
||||||
|
OyjZTWEWAF/0qw3usXtvTvh6wGniVxr0rg3zZbesLXti4TAn3B3N6VG1TPOizna6
|
||||||
|
s26edpQ6RQPigAuccEwU5iaIQEGkIxcoe61qnPvAoWP3Jk/sZAGCqhbya0CBCH8U
|
||||||
|
pEW/OauwlDlr3yXEKh05aQ==
|
||||||
|
-----END ID SIGNATURE-----
|
||||||
|
dir-key-certification
|
||||||
|
-----BEGIN SIGNATURE-----
|
||||||
|
XhAoF04YrM2zJUvrQuEsGhU53Pbf1B0jv5F4YkMlRX2y15rKXKI93vQTM1LbnYc0
|
||||||
|
ETkhSOQB2rpnX0bcE+K+x0sWXiMRtR1HSX/oIPDI9MNqHv75eZlEkSaDJHIsQJlj
|
||||||
|
Dd++tMHkRc49nNNo2J25J3TiBU0ecpVYYvtJzynE3W8tX3io6EmvTehkj2o79z0A
|
||||||
|
ax2A5JG65plch0ES2yK2jqgBEmkA/eZENDNQAaERXMFJbbpHIMBaGguwCEieJe77
|
||||||
|
JBAOxJFRGpL6MhMpcvi5MgEMqfAv3AhlBo93n4apT2CYR8PdCHUZyq7FrgwTSJS7
|
||||||
|
ndl3YmvxJ7wnyTXitw0GcSVeQaYMQV+LR9Z1VkmjIwRuHliUn7hR79pYqs3t11aQ
|
||||||
|
muW8jOrx+5QsiTLEPV6Hs0pzXc9XDw7mnJ6M2gxxF8fZCztal3TNLs9+1O22fxME
|
||||||
|
0VU1oS7SG6T4M1YOXgKFUP20gLl8sZf+3lGp3aLZIK8psR3vzggpaRSUKgip4Lqv
|
||||||
|
-----END SIGNATURE-----
|