Keep asset ID when signing fulfillments

Fixes #1089.
Fixes regression in https://github.com/bigchaindb/bigchaindb/pull/1043/files#diff-78ff9e91be50c5bfbd702d4e0b22fb4fR958 that removed an asset's ID in CREATE transactions when signing fulfillments.

@TimDaub:
This (old) behaviour (of keeping the asset's ID) may be awkward in cases where we sign partial transactions; assets used to have their own IDs (separate from a transaction's ID), but now they're the same. This poses a problem in the case of partial transactions, as the asset ID that will be included in the fulfillment URI won't be the same as the partial transaction's ID (the partial transaction's ID is different from the complete transaction).
#970 may address this concern, but this is something we missed when redoing the asset IDs for 0.9.
Thoughts?

Current coverage is 96.55% (diff: 100%)

Merging #1098 into master will increase coverage by <.01%

@@             master      #1098   diff @@
==========================================
  Files            49         49
  Lines          2177       2178     +1
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           2102       2103     +1
  Misses           75         75
  Partials          0          0

Powered by Codecov. Last update cd7d65b...4376646

Superceded by #1101, but I'll reopen another after it's merged to keep the clean up changes made here.


Public, local and user accessible path

Hi i am looking for a path which points to a local, public and user accessible directory?
i have researched a lot, and tried variouse enum members of specialfoler.
for example:

Environment.GetFolderPath(Environment.SpecialFolder.Personal)
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);
-Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDocuments).AbsolutePath;

But I always get a path wich is somewhat like data/data/user/0/xamarin.live......blah
Which is only accessible via rooted devices -.-
The directories/folers have to be part of my interface of an observable collection, where the user should be able to add folders/directories to a public, local and user accessible directory.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 8fb68890-cda3-6b2a-deba-55a171963da5
Version Independent ID: 675d1663-d7ea-3e47-dbdd-772944acce5a
Content: File Handling in Xamarin.Forms - Xamarin
Content Source: docs/xamarin-forms/app-fundamentals/files.md
Product: xamarin
GitHub Login: @davidbritch
Microsoft Alias: dabritch

Although this isn't cross-platform, on Android you can place the files on external storage.

All the platforms supported by Xamarin.Forms have different file systems and capabilities. I recommend reviewing the link from Tom above, and the iOS File System guide to understand how each platform works. In general, all the mobile platforms have apps running in a sandbox that prevents file sharing by default, and will require code and configuration specific to each platform.


Setting DEBIAN_FRONTEND to noninteractive in SoftLayer

Fixes #763
Signed-off-by: Dave Henderson<EMAIL_ADDRESS>

LGTM

EDIT: Except I think that we actually don't want -q flag on apt-get command.  We want to see the output.  Can you please remove it?

@nathanleclaire - heh. I considered -qq originally, but figured it was nice to see non-error output for context, especially since it's only at debug level.

LGTM


Cloud Provider Discovery

Grav should be able to discover other nodes in a cloud provider using the provider's APIs.

https://github.com/hashicorp/go-discover

@cohix can I take this on?

@denopink yep! I'd suggest that we do a walkthrough together since Grav's Transport and Discovery plug-ins are not well documented.


persistent cache

Support abstract persistent cache for both input source and converted images. (implies supporting ttl)
Related: #46

For this issue, I would assume the best place to put the cache would be at this function https://github.com/unjs/ipx/blob/main/src/ipx.ts#L72.

Add some sort of maxSize option to https://github.com/unjs/ipx/blob/main/src/ipx.ts#L45
Check if we should reevaluate the source from https://github.com/unjs/ipx/blob/main/src/ipx.ts#L96 by mtime and maxAge
If we don't need to reevaluate, create a hash from all of the image modification options
Check if the file exists in the cache, and if so return the buffer of it
Otherwise create the image, save it to the cache, and return the buffer

If nobody is working on this, I might be able to take a stab at it.

were you able to do the cache?

@ohbob I did not get to this, but it looks like @ascorbic did. Look at the attached draft PR for progress.

Hello, thank you for an awesome library. Do you plan to release the feature?

Hi ! Any news on this feature ?

Is there any timeframe on this? If it's something that will happen within Q1/2024 we could possibly hold out switching away from IPX in our projects but it would be good to know for planning how far the roadmap this is.

@bernhardberger It is on my plan. BTW curious how is your setup is it on top of nuxt/niro/h3?

tbh, no clue - the node process is running supervised by our hosting partner and the nitro server more or less directly exposed to the outside world. There's no reverse proxy involved (that we could have control over) that would do the caching. Our clients and also the higher ups internally want to avoid cloud based solutions at all cost, also because it has a lot of implications regarding compliance etc in the EU with our larger corporate customers.
We're trying to move away from monolithic solutions as it would open up more possibilities to share frontend code between different projects and lessen the need to have frontend devs that have backend specific framework knowledge (Laravel, TYPO3, WordPress etc.). Our projects are mostly brand/marketing stuff (MPA, Content driven websites and portals) so going headless is mostly a decision driven by workflow and less by having to have the ability to scale (in which case we'd do SSG). But estimating about 20-30 projects yearly IPX in it's current form is a deal breaker when we had like 10-20 projects per server and now we'd be stuck at like 2 before resources run out 🙈

hey, any update?
maybe persist images like aws-samples/image-optimization could be a good improvement.
I'm already using Cloudflare cache to prevent my cpu meltdown, but it's not the ideal. :S
if we could store the generated images an use them instead of creating a new one, it should be amazing.

this is still a major issue preventing us from running SWR on our site..

I solved with a middleware implementing this:
https://0xacab.org/rbo/site/-/blob/no-masters/server-middleware/ipx.js?ref_type=heads
hope it helps

Thank god for this thread. Otherwise I would have lost another 6weeks to realize my IPX Server has no actual physical storage of the generated files. You restart/rebuild server and everything is gone.
I cannot fathom how was THIS not a day1 feature. My head hurts.

Thank god for this thread. Otherwise I would have lost another 6weeks to realize my IPX Server has no actual physical storage of the generated files. You restart/rebuild server and everything is gone.
I cannot fathom how was THIS not a day1 feature. My head hurts. Back to spending $10 on bunnycdn for PROPER image optimization.
PS: also a big issue with current method is cloudflare cannot properly cache these "dynamic optimized urls".

I guess because in 2024 noone seems to cwre about self hosting anymore.. except a few poor souls like me/us that have to work in environments where cloud gosting is not an option..
PS: Yes, that's another huge problem that the URLs aren't using unique hashes, so you can't really cache those images "forever." So you can't even properly use a CDN, caching proxy or even cache headers for those images..
Right now, I had to turn away from using IPX and had to implement image processing through server components using either flyimg or custom TYPO3/Statamic/Glide endpoints and hashed, secure URLs to prevent mass resize attacks and get our server resources back to normal..

hey guys, the one way was building it my self.
it's not hard, and you can implement your way of persisting cache.
I've built my own saving cache into s3 bucket and using varnish cache in front of the service.
I hope it helps someone: https://github.com/andrevandal/ipx-server

Any update?


OCPCLOUD-1674: Update installation docs to account for generation/activation

We recently added the concept of state (Active/Inactive) for the Control Plane Machine Set and we added a new controller responsible for generating the CPMS object for the cluster.
This PR updates the user documentation around the installation flow to account for the recent changes.
The part of the CPMS object description is removed from the installation file as it is already present in the README, linking is updated accordingly.
Note:
I suggest a review starting from the README and navigating through the link to the installation page, to test the flow.

/approve
/lgtm


Can we use BERT for Punctuation Prediction?

Can we use the pre-trained BERT model for Punctuation Prediction for Conversational Speech? Let say punctuating an ASR output?

unsubscribe
At 2020-01-29 06:56:24, "Alexander"<EMAIL_ADDRESS>wrote:
also interested
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


Runtime server error when deployed in PCF

Hello Team, We have a .net framework app build on 4.6.2 with hwc build pack. The application works without any issues in local or static server. But when we deploy it to PCF, its throwing runtime server error. Is there anyway to debug the issue? We did not find much information from logs.
Server Error in '/' Application.
Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be viewable on remote machines, please create a  tag within a "web.config" configuration file located in the root directory of the current web application. This  tag should then have its "mode" attribute set to "Off".

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's  configuration tag to point to a custom error page URL.

@shashikantn Have you tried the web.config approach described in the error message?

@shashikantn I am facing the similar issue actually. Trying to build the .net full stack application using msbuild and when I try to push the application to pcf I get the same error.
However, If i try to push the application to the pcf using the visual studio-> right click -> publish then it works fine.
Can you please describe in more detail what was your reason of failure. I dont seem to understand what you mentioned in your comment saying issue with unmatching app params.
Would appreciate your response.
thanks


Prometheus fix

Max Ram 300MB for Prometheus.

Limiting memory chunks to 300k won't limit memory consumption too 300MB though. I have been using this exact same number for a while now with my setup and Prometheus appears to use around 700MB - 1000MB for me. But it seems this mileage with this is very much dependent on how many metrics are being prospected and some other factors.
The discussion in this issue (https://github.com/prometheus/prometheus/issues/455) sheds some good light on it.
That being said, I think the reasoning behind this PR still applies (we should set SOME limit to Prometheus' memory consumption and the proposed value seems a sensible one), and we should go ahead with the PR.
@Berndinox ?

In My Setup i do use 250k. With about 15 running conainters i see memory of prometheus floating around 300MB. With 300k it's may a bit more, as you said depending on how much metrics you receive.
However, as the mainpurpose is for testing and demo, and that mostly occours on smaller servers (i think so) that should be a good starting point.
Idependent finetuning possible....
BR

^^


can't update new file

#can't update new file
after I did as your instruction above，I modified a html page which exsit before and I add new files( img, html file)，then I cordova-hcp build ,then both chcp.json and chcp manifest  are successful made. when I check my app，the modified file updated successful , but the added new file ( img ,hmtl) failed。
I have spend a long time to deal with this , but I can't fixed it. so help me please. thanks a lot

Did you resolve it? You've been closing and opening it several times now :) And to what instructions you are referring to?

I met the some issue ,too. how to fix?

I fixed the issues: change the img src  from

/android_asset/www/static/newfile.png
to
./static/newfile.png


Add LogicSniffer.app v<IP_ADDRESS>

Already present. The token reference must be followed exactly to prevent this types of duplicates.


Add Field::new_list_item and improve DataType::new_list docs

Which issue does this PR close?
Re https://github.com/apache/arrow-rs/issues/4544
Rationale for this change
As described on https://github.com/apache/arrow-rs/pull/4561#issuecomment-1661940270 the API for creating List fields is somewhat confusing and hiding details of doing so may make it more so.
What changes are included in this PR?

Add ~Field::new_list_item~ Field::new_list_field
improve DataType::new_list docs

Are there any user-facing changes?
Yes a new API for constructing Fields and better docs

I'll give this PR a few more days to see if anyone else has thoughts / comments

How should we proceed with this one?

I will polish it up and get it merged


CircleCI

CircleCI in the engine will handle:

cmake validation
docs generation
code validation
application executions

Status:

An entry to CircleCI
Basic CMake handling

Do not merge yet.
Generally, I need to figure out how to handle full cmake with all the options checked by the user.


Report missing SSL elliptic curve consistently

Currently when a SSL elliptic curve is not being used as part of the TLS handshake, the logging field cqssu reports it using a hyphen "-" while lua ts.client_request.get_ssl_curve function uses the string "nil".
This PR refactors ts.client_request.get_ssl_curve to report the lack of a SSL EC in the same way as the logging field cqssu

Hmmm, yeh, sort of feels that it should be a "null" of some sort, rather than "-". The conversion of "missing data" -> "-" all happens in logging code.
I don't speak Lua, but is there a way to communicate null back here rather than "-"?

@shukitchan Can you review please ?

Sorry. I did not see this till now.
You can push nil to the stack as an return value for the lua function - https://pgl.yoyo.org/luai/i/lua_pushnil

@jvgutierrez Ping on this.

Any update on this? Should we move it to 9.1.x ?

[approve ci docs]

I think the current return result of nil is the right way for ts.client_request.get_ssl_curve when ssl elliptic curve is not used


Object of class Encore\Admin\Grid\Column could not be converted to string (View: /var/www/ershou-platform/vendor/encore/laravel-admin/resources/views/grid/table.blade.php)

Laravel Version: 5.6.39
PHP Version: 7.3.6
Laravel-admin: 1.6.15

Description:
执行了如下三条命令后出现了问题
php artisan vendor:publish --tag=laravel-admin-assets --force
php artisan vendor:publish --tag=laravel-admin-lang --force
php artisan view:clear
Steps To Reproduce:

@z-song 我也是这个问题

检查下是否自定义了视图

我升级后也报这个错误

直接升级后 也报这个错误，最后发现 是因为PHP页面缓存之前的结果导致

我也遇到这个问题，是因为 自定义了视图   在bootstrap里去掉后就好了，以后尽量不包里的文件，不好更新。

I just had the same issue. I didn't have a time to track the issue but I solve it 👍 .
First : I download the latest version of laravel-admin and extract to a folder.
Second : I make a forced copy for those Folders:

Delete Folder : \resources\views\vendor\laravel-admin
Replace Content of folder Extracted laravel-admin-master\resources\views with \resources\views\vendor\laravel-admin
maybe
By the way : those who still use the old syntax functions should change, like the demo code.
See the controllers on the demo.

清理一下模板缓存 php artisan view:clear


Connecting to a proxy takes about a minute

Why does it take so much to connect to a proxy (both http and socks5 take about a minute)?
This happens with tdlib built for Go on ubuntu-24.
Here is the log for Go version:
[ 3][t 0][1732770334.703691482][Client.cpp:383] Initialize client 1
[ 3][t 3][1732770334.704080343][Td.cpp:133][#1][!MultiTd]       Create Td with layer 192, database version 14 and version 54 on 4 threads
[ 3][t 3][1732770334.704140424][Td.cpp:1310][#1][!Td][&td_requests]     Sending update: updateOption {
  name = "version"
  value = optionValueString {
    value = "1.8.39"
  }
}
[ 3][t 3][1732770334.704166173][Td.cpp:1310][#1][!Td][&td_requests]     Sending update: updateOption {
  name = "commit_hash"
  value = optionValueString {
    value = "18618cad563bf65848b64375b295421e014d4ae7"
  }
}
[ 3][t 3][1732770334.704174995][Td.cpp:1317][#1][!Td][&td_requests]     Sending update: updateAuthorizationState {
  authorization_state = authorizationStateWaitTdlibParameters {
  }
}
[ 3][t 3][1732770334.704191684][Td.cpp:275][#1][!Td][&td_requests]      Receive request 1: addProxy {
  server = "{PROXY_IP}"
  port = {PROXY_PORT}
  enable = true
  type = proxyTypeHttp {
    username = "PROXY_USERNAME"
    password = "PROXY_PASSWORD"
    http_only = false
  }
}

The provided log covers less than half of a millisecond.

The log file
head -n 200 log.txt
[ 3][t 0][1732777793.734800338][Client.cpp:383]	Initialize client 1
[ 3][t 4][1732777793.735132455][Td.cpp:133][#1][!MultiTd]	Create Td with layer 192, database version 14 and version 54 on 4 threads
[ 3][t 4][1732777793.735177516][Td.cpp:1310][#1][!Td][&td_requests]	Sending update: updateOption {
  name = "version"
  value = optionValueString {
    value = "1.8.39"
  }
}
[ 3][t 4][1732777793.735191106][Td.cpp:1310][#1][!Td][&td_requests]	Sending update: updateOption {
  name = "commit_hash"
  value = optionValueString {
    value = "18618cad563bf65848b64375b295421e014d4ae7"
  }
}
[ 3][t 4][1732777793.735192775][Td.cpp:1317][#1][!Td][&td_requests]	Sending update: updateAuthorizationState {
  authorization_state = authorizationStateWaitTdlibParameters {
  }
}
[ 3][t 4][1732777793.735197544][Td.cpp:275][#1][!Td][&td_requests]	Receive request 1: addProxy {
  server = "PROXY_IP"
  port = PROXY_PORT
  enable = true
  type = proxyTypeHttp {
    username = "PROXY_USERNAME"
    password = "PROXY_PASSWORD"
    http_only = false
  }
}
[ 3][t 0][1732777853.794020414][Client.cpp:280][&td_requests]	Begin to wait for updates with timeout 60.000000
[ 3][t 0][1732777853.794184207][Client.cpp:293][&td_requests]	End to wait for updates, returning object 0 0x727c9c0029e0
[ 3][t 4][1732777853.794259548][Td.cpp:275][#1][!Td][&td_requests]	Receive request 2: getAuthorizationState {
}
[ 3][t 4][1732777853.794319868][Td.cpp:1334][#1][!Td][&td_requests]	Sending result for request 2: authorizationStateWaitTdlibParameters {
}
[ 3][t 0][1732777853.794499635][Client.cpp:280][&td_requests]	Begin to wait for updates with timeout 60.000000
[ 3][t 0][1732777853.794534444][Client.cpp:293][&td_requests]	End to wait for updates, returning object 0 0x727c74001ff0
[ 3][t 0][1732777853.794576644][Client.cpp:280][&td_requests]	Begin to wait for updates with timeout 60.000000
[ 3][t 0][1732777853.794588565][Client.cpp:293][&td_requests]	End to wait for updates, returning object 0 0x727c74002090
[ 3][t 0][1732777853.794653892][Client.cpp:280][&td_requests]	Begin to wait for updates with timeout 60.000000
[ 3][t 0][1732777853.794664621][Client.cpp:293][&td_requests]	End to wait for updates, returning object 2 0x727c74001d20
[ 3][t 0][1732777853.794695377][Client.cpp:280][&td_requests]	Begin to wait for updates with timeout 60.000000
[ 3][t 4][1732777853.795318126][Td.cpp:275][#1][!Td][&td_requests]	Receive request 3: setTdlibParameters {
  use_test_dc = false
  database_directory = ".tdlib/PHONE_NUMBER/database"
  files_directory = ".tdlib/PHONE_NUMBER/files"
  database_encryption_key = bytes [0] { }
  use_file_database = true
  use_chat_info_database = true
  use_message_database = true
  use_secret_chats = false
  api_id = MY_API_ID
  api_hash = "MY_API_HASH"
  system_language_code = "en"
  device_model = "Melon"
  system_version = "123.0.1"
  application_version = "0.1.0-beta-03"
}
[ 3][t 1][1732777853.803567171][Binlog.cpp:373][#1][!RunOnSchedulerWorker]	Load: init encryption
[ 3][t 1][1732777853.826160669][TdDb.cpp:391][#1][!RunOnSchedulerWorker]	Have PRAGMA user_version = 14
[ 3][t 1][1732777853.826189756][DialogDb.cpp:29][#1][!RunOnSchedulerWorker]	Init dialog database [version:14]
[ 3][t 1][1732777853.826273202][MessageDb.cpp:46][#1][!RunOnSchedulerWorker]	Init message database [version:14]
[ 3][t 1][1732777853.826316833][StoryDb.cpp:31][#1][!RunOnSchedulerWorker]	Init story database [version:14]
[ 3][t 1][1732777853.826401472][FileDb.cpp:41][#1][!RunOnSchedulerWorker]	Init file database [version:14]
[ 3][t 1][1732777853.826646327][TdDb.cpp:596][#1][!RunOnSchedulerWorker]	Successfully inited database in directory /home/go-tdlib/.tdlib/PHONE_NUMBER/database/ and files directory /home/go-tdlib/.tdlib/PHONE_NUMBER/files/
[ 3][t 4][1732777853.826733827][Td.cpp:1310][#1][!Td][&td_requests]	Sending update: updateOption {
  name = "unix_time"
  value = optionValueInteger {
    value =<PHONE_NUMBER>
  }
}
[ 3][t 0][1732777853.826819658][Client.cpp:293][&td_requests]	End to wait for updates, returning object 0 0x727c98001130
[ 3][t 0][1732777853.826895475][Client.cpp:280][&td_requests]	Begin to wait for updates with timeout 60.000000
[ 3][t 4][1732777853.827292680][AuthManager.cpp:297][#1][!Td]	Logged in as user<PHONE_NUMBER>
[ 3][t 2][1732777853.828061342][ResourceManager.cpp:136][#1][!UploadResourceManager]	[unused:4194304]
[ 3][t 4][1732777853.828710556][StoryManager.cpp:1580][#1][!Td]	Load state for MainStoryList from database:<PHONE_NUMBER>:1886090621:0:b07c66235e19f367ee
[ 3][t 4][1732777853.828729152][StoryManager.cpp:1580][#1][!Td]	Load state for ArchiveStoryList from database:<PHONE_NUMBER>:0:0:7ba239226ddcb3fef2
[ 3][t 4][1732777853.828898668][UpdatesManager.cpp:493][#1][!Td][&get_difference]	-----BEGIN GET DIFFERENCE----- from init_state with PTS = 156, QTS = 0, date =<PHONE_NUMBER>
[ 3][t 4][1732777853.828911066][NetQueryCreator.cpp:45][#1][!Td]	Create query updates.getDifference {
  flags = 0
  pts = 156
  date =<PHONE_NUMBER>
  qts = 0
}
[ 3][t 4][1732777853.828922033][NetQuery.cpp:56][#1][!Td]	[Query:[id:65536][tl:0x19c2f763]]
[ 3][t 4][1732777853.828927040][NetQuery.cpp:27][#1][!Td][&net_query]	[Query:[id:65536][tl:0x19c2f763]] [Send to NetQueryDispatcher]
[ 2][t 4][1732777853.829880952][AuthDataShared.cpp:118][#1][!Td]	DcId{4} [auth_key_id:4784447690882676432][state:OK][created_at:1732692436][last_used:1732809437]
[ 3][t 4][1732777853.829900741][NetQuery.cpp:27][#1][!Td][&net_query]	[Query:[id:65536][tl:0x19c2f763]] [sent to main session multi proxy DcId{4}]
[ 3][t 4][1732777853.830037593][ConnectionCreator.cpp:589][#1][!ConnectionCreator][&connections]	Drop proxy IP address [invalid]
[ 3][t 4][1732777853.830058336][NetQueryCreator.cpp:45][#1][!ConfigManager]	Create query help.getConfig {
}
[ 3][t 4][1732777853.830065488][NetQuery.cpp:56][#1][!ConfigManager]	[Query:[id:131072][tl:0xc4f9186b]]
[ 3][t 4][1732777853.830068588][NetQuery.cpp:27][#1][!ConfigManager][&net_query]	[Query:[id:131072][tl:0xc4f9186b]] [sent to main session multi proxy DcId{4}]
[ 3][t 4][1732777853.830102682][NetQueryCreator.cpp:45][#1][!AttachMenuManager]	Create query messages.getAttachMenuBots {
  hash = 0
}
[ 3][t 4][1732777853.830108642][NetQuery.cpp:56][#1][!AttachMenuManager]	[Query:[id:196608][tl:0x16fcc2cb]]
[ 3][t 4][1732777853.830110788][NetQuery.cpp:27][#1][!AttachMenuManager][&net_query]	[Query:[id:196608][tl:0x16fcc2cb]] [Send to NetQueryDispatcher]
[ 3][t 4][1732777853.830112695][NetQuery.cpp:27][#1][!AttachMenuManager][&net_query]	[Query:[id:196608][tl:0x16fcc2cb]] [sent to main session multi proxy DcId{4}]
[ 3][t 4][1732777853.830156326][StickersManager.cpp:1738][#1][!ReactionManager]	Init StickersManager
[ 3][t 4][1732777853.830202579][StickersManager.cpp:5738][#1][!ReactionManager]	Change dice success values to ,6:62,5:110,5:110,5:110,64:110,6:110
[ 3][t 4][1732777853.830206871][StickersManager.cpp:5756][#1][!ReactionManager]	Change emoji sounds to 🎃,4956223179606458539:-2107001400913062971:,⚰,4956223179606458540:-1498869544183595185:,🧟♂,4960929110848176331:3986395821757915468:,🧟,4960929110848176332:-8929417974289765626:,🧟♀,4960929110848176333:9161696144162881753:,🍑,4963180910661861548:-7431729439735063448:,🎊,5094064004578410732:8518192996098758509:,🎄,5094064004578410733:-4142643820629256996:,🦾,5094064004578410734:-8934384022571962340:
[ 3][t 4][1732777853.830221176][FileManager.cpp:1785][#1][!ReactionManager]	Register [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458539, access_hash = -2107001400913062971]] as 1(0)
[ 3][t 4][1732777853.830231666][FileManager.cpp:1785][#1][!ReactionManager]	Register [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458540, access_hash = -1498869544183595185]] as 2(0)
[ 3][t 4][1732777853.830235004][FileManager.cpp:1785][#1][!ReactionManager]	Register [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176331, access_hash =<PHONE_NUMBER>757915468]] as 3(0)
[ 3][t 4][1732777853.830238103][FileManager.cpp:1785][#1][!ReactionManager]	Register [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176332, access_hash = -8929417974289765626]] as 4(0)
[ 3][t 4][1732777853.830248832][FileManager.cpp:1785][#1][!ReactionManager]	Register [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176333, access_hash =<PHONE_NUMBER>162881753]] as 5(0)
[ 3][t 4][1732777853.830251693][FileManager.cpp:1785][#1][!ReactionManager]	Register [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>661861548, access_hash = -7431729439735063448]] as 6(0)
[ 3][t 4][1732777853.830255508][FileManager.cpp:1785][#1][!ReactionManager]	Register [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410732, access_hash =<PHONE_NUMBER>098758509]] as 7(0)
[ 3][t 4][1732777853.830258369][FileManager.cpp:1785][#1][!ReactionManager]	Register [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410733, access_hash = -4142643820629256996]] as 8(0)
[ 3][t 4][1732777853.830260992][FileManager.cpp:1785][#1][!ReactionManager]	Register [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410734, access_hash = -8934384022571962340]] as 9(0)
[ 3][t 4][1732777853.830264091][FileReferenceManager.cpp:100][#1][!ReactionManager][&file_references]	Create file source 1 for app config
[ 3][t 4][1732777853.830521821][FileManager.cpp:1929][#1][!ReactionManager]	Register file data [[remote_name:5094064004578410733.oga] [size:0][expected_size:7000] NoKey{} remote [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410733, access_hash = -4142643820629256996]], sources = {FileSourceId(1)}] as 10(0) from load remote from database
[ 3][t 4][1732777853.830532312][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410733, access_hash = -4142643820629256996]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410733, access_hash = -4142643820629256996]] from Server
[ 3][t 4][1732777853.830543518][FileManager.cpp:2215][#1][!ReactionManager]	Merge new file 10(0) and old file 8(0)
[ 3][t 4][1732777853.830546140][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410733, access_hash = -4142643820629256996]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410733, access_hash = -4142643820629256996]] from Server
[ 3][t 4][1732777853.830553054][FileManager.cpp:2020][#1][!ReactionManager][&file_references]	Loaded {FileSourceId(1)} for file 8(0) from load remote from database
[ 3][t 4][1732777853.830554962][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add new FileSourceId(1) for file 8(0) from register_file
[ 3][t 4][1732777853.830557823][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add old FileSourceId(1) for file 8(0) from on_update_emoji_sounds
[ 3][t 4][1732777853.830569028][FileManager.cpp:1929][#1][!ReactionManager]	Register file data [[remote_name:4960929110848176333.oga] [size:0][expected_size:7000] NoKey{} remote [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176333, access_hash =<PHONE_NUMBER>162881753]], sources = {FileSourceId(1)}] as 10(0) from load remote from database
[ 3][t 4][1732777853.830572128][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176333, access_hash =<PHONE_NUMBER>162881753]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176333, access_hash =<PHONE_NUMBER>162881753]] from Server
[ 3][t 4][1732777853.830574035][FileManager.cpp:2215][#1][!ReactionManager]	Merge new file 10(0) and old file 5(0)
[ 3][t 4][1732777853.830575704][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176333, access_hash =<PHONE_NUMBER>162881753]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176333, access_hash =<PHONE_NUMBER>162881753]] from Server
[ 3][t 4][1732777853.830579280][FileManager.cpp:2020][#1][!ReactionManager][&file_references]	Loaded {FileSourceId(1)} for file 5(0) from load remote from database
[ 3][t 4][1732777853.830580949][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add new FileSourceId(1) for file 5(0) from register_file
[ 3][t 4][1732777853.830586433][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add old FileSourceId(1) for file 5(0) from on_update_emoji_sounds
[ 3][t 4][1732777853.830677509][FileManager.cpp:1929][#1][!ReactionManager]	Register file data [[remote_name:5094064004578410734.oga] [size:0][expected_size:7000] NoKey{} remote [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410734, access_hash = -8934384022571962340]], sources = {FileSourceId(1)}] as 10(0) from load remote from database
[ 3][t 4][1732777853.830682516][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410734, access_hash = -8934384022571962340]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410734, access_hash = -8934384022571962340]] from Server
[ 3][t 4][1732777853.830684661][FileManager.cpp:2215][#1][!ReactionManager]	Merge new file 10(0) and old file 9(0)
[ 3][t 4][1732777853.830686569][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410734, access_hash = -8934384022571962340]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410734, access_hash = -8934384022571962340]] from Server
[ 3][t 4][1732777853.830690383][FileManager.cpp:2020][#1][!ReactionManager][&file_references]	Loaded {FileSourceId(1)} for file 9(0) from load remote from database
[ 3][t 4][1732777853.830692052][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add new FileSourceId(1) for file 9(0) from register_file
[ 3][t 4][1732777853.830693721][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add old FileSourceId(1) for file 9(0) from on_update_emoji_sounds
[ 3][t 4][1732777853.830702781][FileManager.cpp:1929][#1][!ReactionManager]	Register file data [[remote_name:5094064004578410732.oga] [size:0][expected_size:7000] NoKey{} remote [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410732, access_hash =<PHONE_NUMBER>098758509]], sources = {FileSourceId(1)}] as 10(0) from load remote from database
[ 3][t 4][1732777853.830705165][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410732, access_hash =<PHONE_NUMBER>098758509]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410732, access_hash =<PHONE_NUMBER>098758509]] from Server
[ 3][t 4][1732777853.830707073][FileManager.cpp:2215][#1][!ReactionManager]	Merge new file 10(0) and old file 7(0)
[ 3][t 4][1732777853.830708503][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410732, access_hash =<PHONE_NUMBER>098758509]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>578410732, access_hash =<PHONE_NUMBER>098758509]] from Server
[ 3][t 4][1732777853.830711603][FileManager.cpp:2020][#1][!ReactionManager][&file_references]	Loaded {FileSourceId(1)} for file 7(0) from load remote from database
[ 3][t 4][1732777853.830713033][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add new FileSourceId(1) for file 7(0) from register_file
[ 3][t 4][1732777853.830714702][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add old FileSourceId(1) for file 7(0) from on_update_emoji_sounds
[ 3][t 4][1732777853.830723285][FileManager.cpp:1929][#1][!ReactionManager]	Register file data [[remote_name:4960929110848176332.oga] [size:0][expected_size:7000] NoKey{} remote [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176332, access_hash = -8929417974289765626]], sources = {FileSourceId(1)}] as 10(0) from load remote from database
[ 3][t 4][1732777853.830725431][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176332, access_hash = -8929417974289765626]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176332, access_hash = -8929417974289765626]] from Server
[ 3][t 4][1732777853.830727577][FileManager.cpp:2215][#1][!ReactionManager]	Merge new file 10(0) and old file 4(0)
[ 3][t 4][1732777853.830731868][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176332, access_hash = -8929417974289765626]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176332, access_hash = -8929417974289765626]] from Server
[ 3][t 4][1732777853.830734968][FileManager.cpp:2020][#1][!ReactionManager][&file_references]	Loaded {FileSourceId(1)} for file 4(0) from load remote from database
[ 3][t 4][1732777853.830736398][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add new FileSourceId(1) for file 4(0) from register_file
[ 3][t 4][1732777853.830738306][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add old FileSourceId(1) for file 4(0) from on_update_emoji_sounds
[ 3][t 4][1732777853.830746650][FileManager.cpp:1929][#1][!ReactionManager]	Register file data [[remote_name:4956223179606458540.oga] [size:0][expected_size:7000] NoKey{} remote [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458540, access_hash = -1498869544183595185]], sources = {FileSourceId(1)}] as 10(0) from load remote from database
[ 3][t 4][1732777853.830749273][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458540, access_hash = -1498869544183595185]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458540, access_hash = -1498869544183595185]] from Server
[ 3][t 4][1732777853.830751419][FileManager.cpp:2215][#1][!ReactionManager]	Merge new file 10(0) and old file 2(0)
[ 3][t 4][1732777853.830752849][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458540, access_hash = -1498869544183595185]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458540, access_hash = -1498869544183595185]] from Server
[ 3][t 4][1732777853.830755710][FileManager.cpp:2020][#1][!ReactionManager][&file_references]	Loaded {FileSourceId(1)} for file 2(0) from load remote from database
[ 3][t 4][1732777853.830757856][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add new FileSourceId(1) for file 2(0) from register_file
[ 3][t 4][1732777853.830759286][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add old FileSourceId(1) for file 2(0) from on_update_emoji_sounds
[ 3][t 4][1732777853.830767393][FileManager.cpp:1929][#1][!ReactionManager]	Register file data [[remote_name:4960929110848176331.oga] [size:0][expected_size:7000] NoKey{} remote [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176331, access_hash =<PHONE_NUMBER>757915468]], sources = {FileSourceId(1)}] as 10(0) from load remote from database
[ 3][t 4][1732777853.830770015][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176331, access_hash =<PHONE_NUMBER>757915468]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176331, access_hash =<PHONE_NUMBER>757915468]] from Server
[ 3][t 4][1732777853.830771923][FileManager.cpp:2215][#1][!ReactionManager]	Merge new file 10(0) and old file 3(0)
[ 3][t 4][1732777853.830773591][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176331, access_hash =<PHONE_NUMBER>757915468]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>848176331, access_hash =<PHONE_NUMBER>757915468]] from Server
[ 3][t 4][1732777853.830776453][FileManager.cpp:2020][#1][!ReactionManager][&file_references]	Loaded {FileSourceId(1)} for file 3(0) from load remote from database
[ 3][t 4][1732777853.830777883][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add new FileSourceId(1) for file 3(0) from register_file
[ 3][t 4][1732777853.830779552][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add old FileSourceId(1) for file 3(0) from on_update_emoji_sounds
[ 3][t 4][1732777853.830787658][FileManager.cpp:1929][#1][!ReactionManager]	Register file data [[remote_name:4956223179606458539.oga] [size:0][expected_size:7000] NoKey{} remote [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458539, access_hash = -2107001400913062971]], sources = {FileSourceId(1)}] as 10(0) from load remote from database
[ 3][t 4][1732777853.830791950][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458539, access_hash = -2107001400913062971]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458539, access_hash = -2107001400913062971]] from Server
[ 3][t 4][1732777853.830793857][FileManager.cpp:2215][#1][!ReactionManager]	Merge new file 10(0) and old file 1(0)
[ 3][t 4][1732777853.830795288][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458539, access_hash = -2107001400913062971]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>606458539, access_hash = -2107001400913062971]] from Server
[ 3][t 4][1732777853.830798387][FileManager.cpp:2020][#1][!ReactionManager][&file_references]	Loaded {FileSourceId(1)} for file 1(0) from load remote from database
[ 3][t 4][1732777853.830800056][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add new FileSourceId(1) for file 1(0) from register_file
[ 3][t 4][1732777853.830801725][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add old FileSourceId(1) for file 1(0) from on_update_emoji_sounds
[ 3][t 4][1732777853.830810070][FileManager.cpp:1929][#1][!ReactionManager]	Register file data [[remote_name:4963180910661861548.oga] [size:0][expected_size:7000] NoKey{} remote [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>661861548, access_hash = -7431729439735063448]], sources = {FileSourceId(1)}] as 10(0) from load remote from database
[ 3][t 4][1732777853.830812454][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>661861548, access_hash = -7431729439735063448]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>661861548, access_hash = -7431729439735063448]] from Server
[ 3][t 4][1732777853.830814361][FileManager.cpp:2215][#1][!ReactionManager]	Merge new file 10(0) and old file 6(0)
[ 3][t 4][1732777853.830815792][FileManager.cpp:2047][#1][!ReactionManager]	Choose between [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>661861548, access_hash = -7431729439735063448]] from Database and [VoiceNote, DcId{4}, location = [ID =<PHONE_NUMBER>661861548, access_hash = -7431729439735063448]] from Server
[ 3][t 4][1732777853.830818653][FileManager.cpp:2020][#1][!ReactionManager][&file_references]	Loaded {FileSourceId(1)} for file 6(0) from load remote from database
[ 3][t 4][1732777853.830820322][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add new FileSourceId(1) for file 6(0) from register_file
[ 3][t 4][1732777853.830821752][FileReferenceManager.cpp:214][#1][!ReactionManager][&file_references]	Add old FileSourceId(1) for file 6(0) from on_update_emoji_sounds
[ 3][t 4][1732777853.830824851][StickersManager.cpp:1889][#1][!ReactionManager]	Load animated_emoji_sticker_set sticker set<PHONE_NUMBER>751983
[ 3][t 4][1732777853.830827713][StickersManager.cpp:5444][#1][!ReactionManager]	Trying to load sticker set<PHONE_NUMBER>751983 with stickers from database
[ 3][t 4][1732777853.830833435][StickersManager.cpp:1889][#1][!ReactionManager]	Load premium_gifts_sticker_set sticker set<PHONE_NUMBER>752003
[ 3][t 4][1732777853.830835103][StickersManager.cpp:5444][#1][!ReactionManager]	Trying to load sticker set<PHONE_NUMBER>752003 with stickers from database
[ 3][t 4][1732777853.830839157][ReactionManager.cpp:755][#1][!ReactionManager]	Loading active reactions
[ 3][t 4][1732777853.830850124][ReactionManager.cpp:768][#1][!ReactionManager]	Successfully loaded 73 active reactions
[ 3][t 4][1732777853.830854654][MessagesManager.cpp:7781][#1][!ReactionManager]	Set active reactions to {reaction 👍, reaction 👎, reaction ❤, reaction 🔥, reaction 🥰, reaction 👏, reaction 😁, reaction 🤔, reaction 🤯, reaction 😱, reaction 🤬, reaction 😢, reaction 🎉, reaction 🤩, reaction 🤮, reaction 💩, reaction 🙏, reaction 👌, reaction 🕊, reaction 🤡, reaction 🥱, reaction 🥴, reaction 😍, reaction 🐳, reaction ❤🔥, reaction 🌚, reaction 🌭, reaction 💯, reaction 🤣, reaction ⚡, reaction 🍌, reaction 🏆, reaction 💔, reaction 🤨, reaction 😐, reaction 🍓, reaction 🍾, reaction 💋, reaction 🖕, reaction 😈, reaction 😴, reaction 😭, reaction 🤓, reaction 👻, reaction 👨💻, reaction 👀, reaction 🎃, reaction 🙈, reaction 😇, reaction 😨, reaction 🤝, reaction ✍, reaction 🤗, reaction 🫡, reaction 🎅, reaction 🎄, reaction ☃, reaction 💅, reaction 🤪, reaction 🗿, reaction 🆒, reaction 💘, reaction 🙉, reaction 🦄, reaction 😘, reaction 💊, reaction 🙊, reaction 😎, reaction 👾, reaction 🤷♂, reaction 🤷, reaction 🤷♀, reaction 😡}
[ 3][t 4][1732777853.830897331][ReactionManager.cpp:1421][#1][!ReactionManager]	Loading active message effects
[ 3][t 4][1732777853.830906152][ReactionManager.cpp:1434][#1][!ReactionManager]	Successfully loaded 122 + 546 active message effects
[ 3][t 4][1732777853.830937862][FileManager.cpp:1785][#1][!ThemeManager]	Register [Thumbnail, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864, PhotoSizeSourceThumbnail[Thumbnail, type = m]]] as 10(0)
[ 3][t 4][1732777853.830944061][FileManager.cpp:1785][#1][!ThemeManager]	Register [Background, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864]] as 11(0)
[ 3][t 4][1732777853.830946922][DocumentsManager.cpp:582][#1][!ThemeManager]	Receive document 11(11)
[ 3][t 4][1732777853.830949306][BackgroundManager.cpp:1171][#1][!ThemeManager]	Add background<PHONE_NUMBER>472317444 of type Pattern[intensity=42&bg_color=87bda5~b9dd83~d5d88c~a5c885]
[ 3][t 4][1732777853.830954790][FileReferenceManager.cpp:100][#1][!ThemeManager][&file_references]	Create file source 2 for background<PHONE_NUMBER>472317444
[ 3][t 4][1732777853.830991029][FileManager.cpp:1929][#1][!ThemeManager]	Register file data [[remote_name:pattern.tgv] [size:51194][expected_size:0] NoKey{} remote [Background, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864]], sources = {FileSourceId(2)}] as 12(0) from load remote from database
[ 3][t 4][1732777853.830995559][FileManager.cpp:2047][#1][!ThemeManager]	Choose between [Background, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864]] from Database and [Background, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864]] from Binlog
[ 3][t 4][1732777853.830998182][FileManager.cpp:2215][#1][!ThemeManager]	Merge new file 12(0) and old file 11(0)
[ 3][t 4][1732777853.831000089][FileManager.cpp:2047][#1][!ThemeManager]	Choose between [Background, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864]] from Database and [Background, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864]] from Binlog
[ 3][t 4][1732777853.831004858][FileManager.cpp:2020][#1][!ThemeManager][&file_references]	Loaded {FileSourceId(2)} for file 11(0) from load remote from database
[ 3][t 4][1732777853.831006765][FileReferenceManager.cpp:214][#1][!ThemeManager][&file_references]	Add new FileSourceId(2) for file 11(0) from register_file
[ 3][t 4][1732777853.831009149][FileReferenceManager.cpp:214][#1][!ThemeManager][&file_references]	Add old FileSourceId(2) for file 11(0) from add_background
[ 3][t 4][1732777853.831018209][FileManager.cpp:1929][#1][!ThemeManager]	Register file data [[remote_name:5924650004621823334_109.png] [size:20067][expected_size:0] NoKey{} remote [Thumbnail, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864, PhotoSizeSourceThumbnail[Thumbnail, type = m]]], sources = {FileSourceId(2)}] as 12(0) from load remote from database
[ 3][t 4][1732777853.831024408][FileManager.cpp:2047][#1][!ThemeManager]	Choose between [Thumbnail, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864, PhotoSizeSourceThumbnail[Thumbnail, type = m]]] from Database and [Thumbnail, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864, PhotoSizeSourceThumbnail[Thumbnail, type = m]]] from Binlog
[ 3][t 4][1732777853.831027269][FileManager.cpp:2215][#1][!ThemeManager]	Merge new file 12(0) and old file 10(0)
[ 3][t 4][1732777853.831028938][FileManager.cpp:2047][#1][!ThemeManager]	Choose between [Thumbnail, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864, PhotoSizeSourceThumbnail[Thumbnail, type = m]]] from Database and [Thumbnail, DcId{4}, [file_reference:AGdH+udRHriQdTPAXVJYQdEnw9xp], location = [ID =<PHONE_NUMBER>621823334, access_hash =<PHONE_NUMBER>223604864, PhotoSizeSourceThumbnail[Thumbnail, type = m]]] from Binlog

[ 3][t 0][1732777853.794020414][Client.cpp:280][&td_requests]	Begin to wait for updates with timeout 60.000000

Your code waited for 60 seconds before calling td_receive for the first time.

The problem is that the  library I'm using seems to get deadlocked when addProxy is called. The 60 seconds delay is the timeout for handling the deadlock.
Thanks for your help.


Allow command history numbers to be hidden with Ctlr-R

[x] I have read through the manual page (man fzf)
[x] I have the latest version of fzf
[x] I have searched through the existing issues

Info

OS

[x] Linux
[ ] Mac OS X
[ ] Windows
[ ] Etc.

Shell

[ ] bash
[x] zsh
[ ] fish

Problem / Steps to reproduce
Press Ctrl-R, and observe numbers in the output:
> ls
  284/1646 +S
>  2011 ls
    1764  ls -a

These numbers seem to be output by fc here:
https://github.com/junegunn/fzf/blob/eb4bbf32948303e326a2791c6a875f32d7b5c97f/shell/key-bindings.zsh#L100
Would it be possible to opt-out of displaying these numbers? It feels like it's rarely useful, and it takes up precious horizontal screen space.

man fzf
# ...
#       --with-nth=N[,..]
#              Transform  the  presentation  of  each  line  using  field index
#              expressions
# ...
# FIELD INDEX EXPRESSION
#       A field index expression can be a non-zero integer or a  range  expres-
#       sion ([BEGIN]..[END]). --nth and --with-nth take a comma-separated list
#       of field index expressions.
#
#   Examples
#       2..    From the 2nd field to the last field
# ...

export FZF_CTRL_R_OPTS="--prompt 'History > ' --with-nth 2.."

Thanks, I missed that option.
For future reference, this version gives the same prompt as the default Ctrl-R command:
export FZF_CTRL_R_OPTS="--prompt '> ' --with-nth 2.."

For future reference, this version gives the same prompt as the default Ctrl-R command:

the command had not the desired effect for you ?

You don't need to set --prompt '> ' because that's the default. I think @LangLangBart was just trying to show you the possibilities of what you can do with the variable.
export FZF_CTRL_R_OPTS="--with-nth 2.."

This is what I have in my configuration.
export FZF_CTRL_R_OPTS="
  --preview 'echo {}' --preview-window up:3:hidden:wrap
  --bind 'ctrl-/:toggle-preview'
  --bind 'ctrl-t:track+clear-query'
  --bind 'ctrl-y:execute-silent(echo -n {2..} | pbcopy)+abort'
  --color header:italic
  --header 'Press CTRL-Y to copy command into clipboard'"

@a-pav

I expect that 249 cd vsftpd entry should remain pointed-at-to but within a new list which has 250 as its next, and 248 as its previous entry.

That's exactly how it's supposed to work. Not sure you're not getting the same result.
Here is a simpler example for demonstrating the behavior. Can you test if it works as expected?
# After you press space, 55 should still be pointed at.
seq 100 | FZF_DEFAULT_OPTS= fzf --query 55 --bind 'space:track+clear-query'


Phoebemirman/ch12797/market liquidity validation is off

https://app.clubhouse.io/augur/story/12797/market-liquidity-validation-is-off

Does this need to also be reviewed by @JohnDanz?


Create it po

Thanks for your contribution. Will be nice to have an Italian version of Sugarizer.
BTW few remarks:

I can't merge on the master branch because it's reserved to release (see here for more). Could you send a PR on dev branch instead?
PO files in Sugarizer are used only for the translation platform (see here for more) but are generated from the INI files, could you translate locale.ini instead.

Close due to lack of activity. @albanobattistella feel free to reopen it if need.


Feature/implement not

Summary
implements not from JSON schema by extending the Typebox Registry similar to what is done for "oneOf".
Would be happy with quick feedback on this if something seems of.

@xddq Hi! This is an interesting one :D
The implementation you have looks good, and the default inference of unknown is probably the best option here, but you may be able to use TypeBox's Type.Not(N, T) for this case. The output schematic wouldn't be 1-1 with the input, but would still validate the same.
// input
const N = { not: { type: 'string' } } // ExtendedNot

// typebox
const N = Type.Not(Type.String(), Type.Unknown()) // infer as unknown

// output
const N = { allOf: [{ not: { type: 'string' } }, {}] // TypeBox.Not

The second argument is a little strange, but it represents the allowed type (unknown or any in this case). The Not usage above basically says, "for all possible types in the unknown (infinite) set, disallow strings". There's a bit more of a write up around the type documented on the 0.26.0 release notes here, but at a high level, the Type.Not is TB's attempt at negated types (not supported by TS, but maybe one day!)
Open to thoughts (or follow up questions around Type.Not), The ExtendedNot would be good to retain the input schematic though.
Your PR has actually got me wondering if I should implement an overload for Type.Not() to just accept just the disallowed type (and automatically just apply unknown  for the allowed type). Might push an update for this today.
Keep me posted!
S

@sinclairzx81 Hey!
Yeah, interesting indeed. What a bummer that I did not check for Type.Not in typebox :D
Generating different json schemas under the hood
While I think this is a valid point and I would prefer it to not generate a structurally different (yet semantically correct) JSON schema representation I won't put work into this because I already noticed that it creates a different representation for Type.Enum (and probably for others as well..?). Also I am not aware of the use cases for having the input schema and the generated schema have the same structure when it validates correctly. I prefer leaning on typebox to handle this for me.
Type.Not
Anyway, updated the code to use Type.Not with Type.Unknown as default argument for now. I will stick to this until I get some real world json schemas provided and then am able to easily/efficiently go for a deeper dive to implementing Type.Not(), when required.
It feels like (not tested because of a lack of real-world schemas using not) defaulting to a union type would be a good solution. But thats just a guess for now.
Currently, cases like the one below (and I am sure more..?) will need some love:
{
  "type": "object",
  "properties": {
    "x": { "allOf": [{ "not": { "type": "number" } }, { "type": "string" }] }
  },
  "required": ["x"]
}

Where it would create
Type.Object({
  x: Type.Intersect([Type.Not(Type.Number(), Type.Unknown()), Type.String()]),
});

which makes the intersection with unknown and therefore ending up with a wrong type in my view.
It works alright using something like

    {
      "type": "object",
      "properties": { "x": { "not": { "type": "number" } } },
      "required": ["x"]
    }

generating

      Type.Object({
        x: Type.Not(Type.Number(), Type.Unknown()),
      });

Overloading Type.Not
While it sounds good at first, I think when manually creating the Typebox validations/schemas, the user should know or think about how its data will look like. This is somewhat denied when defaulting to Type.Unknown() and (in my opinion) just makes the users code/validation worse.
Outcome
If you say this is alright and approve I will merge this first implementation and wait for feedback by users. Will probably be released as 1.4.0.

@xddq Hey thanks for the response and insights!

While I think this is a valid point and I would prefer it to not generate a "structurally different (yet semantically correct) JSON schema representation"

You know, you raise a VERY valid point here, and I agree! Originally the type was written (rather quickly) to reconcile a negated type back to a TS type for a project I'd been working on, but I do think the TB representation is just wrong (at a minimum expressing way more than it should). Having given this more thought after the previous response, I do think there is a much better way to handle this type (outlined below) that solves both inference and representation (win win)
Note: I probably can't change the representation on 0.28.0 (may need to defer to 0.29.0). For now, the current version of TNot<T, TUnknown> should be ok to go with (with the view TB will fix this up the representation in subsequent revisions).
The changes required in future to update in schema2typebox will be to remove the Type.Unknown() from the second parameter.
Type.Not 2.0
So, below is the TB change for TNot (which is really inline with your previous ExtendedNot type), where rather than Type.Not(N, T) representing the allOf, users can construct that themselves using explicit intersection. The inference still works in this case as TS intersections will narrow for unknown for more refined types....for example.
type T = unknown & number // type T = number

Here is the updated TNot type to support this (inline with ExtendedNot), plus inference example using intersect.
TypeScript Link Here
import { Type, Kind, TSchema, Static,  SchemaOptions } from '@sinclair/typebox'

// -----------------------------------------------------------
// Not Version 2.0
// -----------------------------------------------------------

export interface TNot<T extends TSchema> extends TSchema, SchemaOptions {
  [Kind]: 'Not'
  static: unknown
  not: T
}
export function Not<T extends TSchema>(not: T, options: SchemaOptions = {}): TNot<T> {
  return { ...options, [Kind]: 'Not', not } as any
}

const T = Type.Intersect([ // all numbers except 1, 2, 3
  Not(Type.Literal(1)),
  Not(Type.Literal(2)),
  Not(Type.Literal(3)),
  Type.Number()
])

type T = Static<typeof T>  // type T = number (because (unknown & unknown & unknown & number))

I'm pretty keen to roll this through as soon as I can, but yeah, would be breaking change (and currently waiting on couple of libraries downstream to take on the 0.28.0 revision before working on 0.29.0). Happy to go with the Type.Not<N, T> for now, but will keep you posted as soon as I'm able to push this change through.
I'll leave the squash/merge honors to you!  :)
Great work!!
S

Alright, thanks!


Change export_max_rows default to unlimited

Currently, the csv export will only export the first 20 rows by default. (unless the developer increases export_max_rows)
This probably isn't expected behavior. So, this pull request makes the export unlimited by default.
I also added tests for export_max_rows into each backend's tests, because export_max_rows relies on each backend's implementation of get_list().

@mrjoes are you ok with this change?

Duh, I thought I merged this one.