@areumtecnologia/unitychat 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +407 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3d.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3e.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3f.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3g.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3h.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3i.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3j.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3k.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3l.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3m.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3n.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3o.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3p.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3q.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3r.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3s.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3t.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3u.json +1 -0
- package/data/sessions/session1/app-state-sync-version-regular_low.json +1 -0
- package/data/sessions/session1/creds.json +1 -0
- package/data/sessions/session1/device-list-559181648646.json +1 -0
- package/data/sessions/session1/lid-mapping-275801408819393_reverse.json +1 -0
- package/data/sessions/session1/lid-mapping-559181648646.json +1 -0
- package/data/sessions/session1/pre-key-1.json +1 -0
- package/data/sessions/session1/pre-key-10.json +1 -0
- package/data/sessions/session1/pre-key-100.json +1 -0
- package/data/sessions/session1/pre-key-101.json +1 -0
- package/data/sessions/session1/pre-key-102.json +1 -0
- package/data/sessions/session1/pre-key-103.json +1 -0
- package/data/sessions/session1/pre-key-104.json +1 -0
- package/data/sessions/session1/pre-key-105.json +1 -0
- package/data/sessions/session1/pre-key-106.json +1 -0
- package/data/sessions/session1/pre-key-107.json +1 -0
- package/data/sessions/session1/pre-key-108.json +1 -0
- package/data/sessions/session1/pre-key-109.json +1 -0
- package/data/sessions/session1/pre-key-11.json +1 -0
- package/data/sessions/session1/pre-key-110.json +1 -0
- package/data/sessions/session1/pre-key-111.json +1 -0
- package/data/sessions/session1/pre-key-112.json +1 -0
- package/data/sessions/session1/pre-key-113.json +1 -0
- package/data/sessions/session1/pre-key-114.json +1 -0
- package/data/sessions/session1/pre-key-115.json +1 -0
- package/data/sessions/session1/pre-key-116.json +1 -0
- package/data/sessions/session1/pre-key-117.json +1 -0
- package/data/sessions/session1/pre-key-118.json +1 -0
- package/data/sessions/session1/pre-key-119.json +1 -0
- package/data/sessions/session1/pre-key-12.json +1 -0
- package/data/sessions/session1/pre-key-120.json +1 -0
- package/data/sessions/session1/pre-key-121.json +1 -0
- package/data/sessions/session1/pre-key-122.json +1 -0
- package/data/sessions/session1/pre-key-123.json +1 -0
- package/data/sessions/session1/pre-key-124.json +1 -0
- package/data/sessions/session1/pre-key-125.json +1 -0
- package/data/sessions/session1/pre-key-126.json +1 -0
- package/data/sessions/session1/pre-key-127.json +1 -0
- package/data/sessions/session1/pre-key-128.json +1 -0
- package/data/sessions/session1/pre-key-129.json +1 -0
- package/data/sessions/session1/pre-key-13.json +1 -0
- package/data/sessions/session1/pre-key-130.json +1 -0
- package/data/sessions/session1/pre-key-131.json +1 -0
- package/data/sessions/session1/pre-key-132.json +1 -0
- package/data/sessions/session1/pre-key-133.json +1 -0
- package/data/sessions/session1/pre-key-134.json +1 -0
- package/data/sessions/session1/pre-key-135.json +1 -0
- package/data/sessions/session1/pre-key-136.json +1 -0
- package/data/sessions/session1/pre-key-137.json +1 -0
- package/data/sessions/session1/pre-key-138.json +1 -0
- package/data/sessions/session1/pre-key-139.json +1 -0
- package/data/sessions/session1/pre-key-14.json +1 -0
- package/data/sessions/session1/pre-key-140.json +1 -0
- package/data/sessions/session1/pre-key-141.json +1 -0
- package/data/sessions/session1/pre-key-142.json +1 -0
- package/data/sessions/session1/pre-key-143.json +1 -0
- package/data/sessions/session1/pre-key-144.json +1 -0
- package/data/sessions/session1/pre-key-145.json +1 -0
- package/data/sessions/session1/pre-key-146.json +1 -0
- package/data/sessions/session1/pre-key-147.json +1 -0
- package/data/sessions/session1/pre-key-148.json +1 -0
- package/data/sessions/session1/pre-key-149.json +1 -0
- package/data/sessions/session1/pre-key-15.json +1 -0
- package/data/sessions/session1/pre-key-150.json +1 -0
- package/data/sessions/session1/pre-key-151.json +1 -0
- package/data/sessions/session1/pre-key-152.json +1 -0
- package/data/sessions/session1/pre-key-153.json +1 -0
- package/data/sessions/session1/pre-key-154.json +1 -0
- package/data/sessions/session1/pre-key-155.json +1 -0
- package/data/sessions/session1/pre-key-156.json +1 -0
- package/data/sessions/session1/pre-key-157.json +1 -0
- package/data/sessions/session1/pre-key-158.json +1 -0
- package/data/sessions/session1/pre-key-159.json +1 -0
- package/data/sessions/session1/pre-key-16.json +1 -0
- package/data/sessions/session1/pre-key-160.json +1 -0
- package/data/sessions/session1/pre-key-161.json +1 -0
- package/data/sessions/session1/pre-key-162.json +1 -0
- package/data/sessions/session1/pre-key-163.json +1 -0
- package/data/sessions/session1/pre-key-164.json +1 -0
- package/data/sessions/session1/pre-key-165.json +1 -0
- package/data/sessions/session1/pre-key-166.json +1 -0
- package/data/sessions/session1/pre-key-167.json +1 -0
- package/data/sessions/session1/pre-key-168.json +1 -0
- package/data/sessions/session1/pre-key-169.json +1 -0
- package/data/sessions/session1/pre-key-17.json +1 -0
- package/data/sessions/session1/pre-key-170.json +1 -0
- package/data/sessions/session1/pre-key-171.json +1 -0
- package/data/sessions/session1/pre-key-172.json +1 -0
- package/data/sessions/session1/pre-key-173.json +1 -0
- package/data/sessions/session1/pre-key-174.json +1 -0
- package/data/sessions/session1/pre-key-175.json +1 -0
- package/data/sessions/session1/pre-key-176.json +1 -0
- package/data/sessions/session1/pre-key-177.json +1 -0
- package/data/sessions/session1/pre-key-178.json +1 -0
- package/data/sessions/session1/pre-key-179.json +1 -0
- package/data/sessions/session1/pre-key-18.json +1 -0
- package/data/sessions/session1/pre-key-180.json +1 -0
- package/data/sessions/session1/pre-key-181.json +1 -0
- package/data/sessions/session1/pre-key-182.json +1 -0
- package/data/sessions/session1/pre-key-183.json +1 -0
- package/data/sessions/session1/pre-key-184.json +1 -0
- package/data/sessions/session1/pre-key-185.json +1 -0
- package/data/sessions/session1/pre-key-186.json +1 -0
- package/data/sessions/session1/pre-key-187.json +1 -0
- package/data/sessions/session1/pre-key-188.json +1 -0
- package/data/sessions/session1/pre-key-189.json +1 -0
- package/data/sessions/session1/pre-key-19.json +1 -0
- package/data/sessions/session1/pre-key-190.json +1 -0
- package/data/sessions/session1/pre-key-191.json +1 -0
- package/data/sessions/session1/pre-key-192.json +1 -0
- package/data/sessions/session1/pre-key-193.json +1 -0
- package/data/sessions/session1/pre-key-194.json +1 -0
- package/data/sessions/session1/pre-key-195.json +1 -0
- package/data/sessions/session1/pre-key-196.json +1 -0
- package/data/sessions/session1/pre-key-197.json +1 -0
- package/data/sessions/session1/pre-key-198.json +1 -0
- package/data/sessions/session1/pre-key-199.json +1 -0
- package/data/sessions/session1/pre-key-2.json +1 -0
- package/data/sessions/session1/pre-key-20.json +1 -0
- package/data/sessions/session1/pre-key-200.json +1 -0
- package/data/sessions/session1/pre-key-201.json +1 -0
- package/data/sessions/session1/pre-key-202.json +1 -0
- package/data/sessions/session1/pre-key-203.json +1 -0
- package/data/sessions/session1/pre-key-204.json +1 -0
- package/data/sessions/session1/pre-key-205.json +1 -0
- package/data/sessions/session1/pre-key-206.json +1 -0
- package/data/sessions/session1/pre-key-207.json +1 -0
- package/data/sessions/session1/pre-key-208.json +1 -0
- package/data/sessions/session1/pre-key-209.json +1 -0
- package/data/sessions/session1/pre-key-21.json +1 -0
- package/data/sessions/session1/pre-key-210.json +1 -0
- package/data/sessions/session1/pre-key-211.json +1 -0
- package/data/sessions/session1/pre-key-212.json +1 -0
- package/data/sessions/session1/pre-key-213.json +1 -0
- package/data/sessions/session1/pre-key-214.json +1 -0
- package/data/sessions/session1/pre-key-215.json +1 -0
- package/data/sessions/session1/pre-key-216.json +1 -0
- package/data/sessions/session1/pre-key-217.json +1 -0
- package/data/sessions/session1/pre-key-218.json +1 -0
- package/data/sessions/session1/pre-key-219.json +1 -0
- package/data/sessions/session1/pre-key-22.json +1 -0
- package/data/sessions/session1/pre-key-220.json +1 -0
- package/data/sessions/session1/pre-key-221.json +1 -0
- package/data/sessions/session1/pre-key-222.json +1 -0
- package/data/sessions/session1/pre-key-223.json +1 -0
- package/data/sessions/session1/pre-key-224.json +1 -0
- package/data/sessions/session1/pre-key-225.json +1 -0
- package/data/sessions/session1/pre-key-226.json +1 -0
- package/data/sessions/session1/pre-key-227.json +1 -0
- package/data/sessions/session1/pre-key-228.json +1 -0
- package/data/sessions/session1/pre-key-229.json +1 -0
- package/data/sessions/session1/pre-key-23.json +1 -0
- package/data/sessions/session1/pre-key-230.json +1 -0
- package/data/sessions/session1/pre-key-231.json +1 -0
- package/data/sessions/session1/pre-key-232.json +1 -0
- package/data/sessions/session1/pre-key-233.json +1 -0
- package/data/sessions/session1/pre-key-234.json +1 -0
- package/data/sessions/session1/pre-key-235.json +1 -0
- package/data/sessions/session1/pre-key-236.json +1 -0
- package/data/sessions/session1/pre-key-237.json +1 -0
- package/data/sessions/session1/pre-key-238.json +1 -0
- package/data/sessions/session1/pre-key-239.json +1 -0
- package/data/sessions/session1/pre-key-24.json +1 -0
- package/data/sessions/session1/pre-key-240.json +1 -0
- package/data/sessions/session1/pre-key-241.json +1 -0
- package/data/sessions/session1/pre-key-242.json +1 -0
- package/data/sessions/session1/pre-key-243.json +1 -0
- package/data/sessions/session1/pre-key-244.json +1 -0
- package/data/sessions/session1/pre-key-245.json +1 -0
- package/data/sessions/session1/pre-key-246.json +1 -0
- package/data/sessions/session1/pre-key-247.json +1 -0
- package/data/sessions/session1/pre-key-248.json +1 -0
- package/data/sessions/session1/pre-key-249.json +1 -0
- package/data/sessions/session1/pre-key-25.json +1 -0
- package/data/sessions/session1/pre-key-250.json +1 -0
- package/data/sessions/session1/pre-key-251.json +1 -0
- package/data/sessions/session1/pre-key-252.json +1 -0
- package/data/sessions/session1/pre-key-253.json +1 -0
- package/data/sessions/session1/pre-key-254.json +1 -0
- package/data/sessions/session1/pre-key-255.json +1 -0
- package/data/sessions/session1/pre-key-256.json +1 -0
- package/data/sessions/session1/pre-key-257.json +1 -0
- package/data/sessions/session1/pre-key-258.json +1 -0
- package/data/sessions/session1/pre-key-259.json +1 -0
- package/data/sessions/session1/pre-key-26.json +1 -0
- package/data/sessions/session1/pre-key-260.json +1 -0
- package/data/sessions/session1/pre-key-261.json +1 -0
- package/data/sessions/session1/pre-key-262.json +1 -0
- package/data/sessions/session1/pre-key-263.json +1 -0
- package/data/sessions/session1/pre-key-264.json +1 -0
- package/data/sessions/session1/pre-key-265.json +1 -0
- package/data/sessions/session1/pre-key-266.json +1 -0
- package/data/sessions/session1/pre-key-267.json +1 -0
- package/data/sessions/session1/pre-key-268.json +1 -0
- package/data/sessions/session1/pre-key-269.json +1 -0
- package/data/sessions/session1/pre-key-27.json +1 -0
- package/data/sessions/session1/pre-key-270.json +1 -0
- package/data/sessions/session1/pre-key-271.json +1 -0
- package/data/sessions/session1/pre-key-272.json +1 -0
- package/data/sessions/session1/pre-key-273.json +1 -0
- package/data/sessions/session1/pre-key-274.json +1 -0
- package/data/sessions/session1/pre-key-275.json +1 -0
- package/data/sessions/session1/pre-key-276.json +1 -0
- package/data/sessions/session1/pre-key-277.json +1 -0
- package/data/sessions/session1/pre-key-278.json +1 -0
- package/data/sessions/session1/pre-key-279.json +1 -0
- package/data/sessions/session1/pre-key-28.json +1 -0
- package/data/sessions/session1/pre-key-280.json +1 -0
- package/data/sessions/session1/pre-key-281.json +1 -0
- package/data/sessions/session1/pre-key-282.json +1 -0
- package/data/sessions/session1/pre-key-283.json +1 -0
- package/data/sessions/session1/pre-key-284.json +1 -0
- package/data/sessions/session1/pre-key-285.json +1 -0
- package/data/sessions/session1/pre-key-286.json +1 -0
- package/data/sessions/session1/pre-key-287.json +1 -0
- package/data/sessions/session1/pre-key-288.json +1 -0
- package/data/sessions/session1/pre-key-289.json +1 -0
- package/data/sessions/session1/pre-key-29.json +1 -0
- package/data/sessions/session1/pre-key-290.json +1 -0
- package/data/sessions/session1/pre-key-291.json +1 -0
- package/data/sessions/session1/pre-key-292.json +1 -0
- package/data/sessions/session1/pre-key-293.json +1 -0
- package/data/sessions/session1/pre-key-294.json +1 -0
- package/data/sessions/session1/pre-key-295.json +1 -0
- package/data/sessions/session1/pre-key-296.json +1 -0
- package/data/sessions/session1/pre-key-297.json +1 -0
- package/data/sessions/session1/pre-key-298.json +1 -0
- package/data/sessions/session1/pre-key-299.json +1 -0
- package/data/sessions/session1/pre-key-3.json +1 -0
- package/data/sessions/session1/pre-key-30.json +1 -0
- package/data/sessions/session1/pre-key-300.json +1 -0
- package/data/sessions/session1/pre-key-301.json +1 -0
- package/data/sessions/session1/pre-key-302.json +1 -0
- package/data/sessions/session1/pre-key-303.json +1 -0
- package/data/sessions/session1/pre-key-304.json +1 -0
- package/data/sessions/session1/pre-key-305.json +1 -0
- package/data/sessions/session1/pre-key-306.json +1 -0
- package/data/sessions/session1/pre-key-307.json +1 -0
- package/data/sessions/session1/pre-key-308.json +1 -0
- package/data/sessions/session1/pre-key-309.json +1 -0
- package/data/sessions/session1/pre-key-31.json +1 -0
- package/data/sessions/session1/pre-key-310.json +1 -0
- package/data/sessions/session1/pre-key-311.json +1 -0
- package/data/sessions/session1/pre-key-312.json +1 -0
- package/data/sessions/session1/pre-key-313.json +1 -0
- package/data/sessions/session1/pre-key-314.json +1 -0
- package/data/sessions/session1/pre-key-315.json +1 -0
- package/data/sessions/session1/pre-key-316.json +1 -0
- package/data/sessions/session1/pre-key-317.json +1 -0
- package/data/sessions/session1/pre-key-318.json +1 -0
- package/data/sessions/session1/pre-key-319.json +1 -0
- package/data/sessions/session1/pre-key-32.json +1 -0
- package/data/sessions/session1/pre-key-320.json +1 -0
- package/data/sessions/session1/pre-key-321.json +1 -0
- package/data/sessions/session1/pre-key-322.json +1 -0
- package/data/sessions/session1/pre-key-323.json +1 -0
- package/data/sessions/session1/pre-key-324.json +1 -0
- package/data/sessions/session1/pre-key-325.json +1 -0
- package/data/sessions/session1/pre-key-326.json +1 -0
- package/data/sessions/session1/pre-key-327.json +1 -0
- package/data/sessions/session1/pre-key-328.json +1 -0
- package/data/sessions/session1/pre-key-329.json +1 -0
- package/data/sessions/session1/pre-key-33.json +1 -0
- package/data/sessions/session1/pre-key-330.json +1 -0
- package/data/sessions/session1/pre-key-331.json +1 -0
- package/data/sessions/session1/pre-key-332.json +1 -0
- package/data/sessions/session1/pre-key-333.json +1 -0
- package/data/sessions/session1/pre-key-334.json +1 -0
- package/data/sessions/session1/pre-key-335.json +1 -0
- package/data/sessions/session1/pre-key-336.json +1 -0
- package/data/sessions/session1/pre-key-337.json +1 -0
- package/data/sessions/session1/pre-key-338.json +1 -0
- package/data/sessions/session1/pre-key-339.json +1 -0
- package/data/sessions/session1/pre-key-34.json +1 -0
- package/data/sessions/session1/pre-key-340.json +1 -0
- package/data/sessions/session1/pre-key-341.json +1 -0
- package/data/sessions/session1/pre-key-342.json +1 -0
- package/data/sessions/session1/pre-key-343.json +1 -0
- package/data/sessions/session1/pre-key-344.json +1 -0
- package/data/sessions/session1/pre-key-345.json +1 -0
- package/data/sessions/session1/pre-key-346.json +1 -0
- package/data/sessions/session1/pre-key-347.json +1 -0
- package/data/sessions/session1/pre-key-348.json +1 -0
- package/data/sessions/session1/pre-key-349.json +1 -0
- package/data/sessions/session1/pre-key-35.json +1 -0
- package/data/sessions/session1/pre-key-350.json +1 -0
- package/data/sessions/session1/pre-key-351.json +1 -0
- package/data/sessions/session1/pre-key-352.json +1 -0
- package/data/sessions/session1/pre-key-353.json +1 -0
- package/data/sessions/session1/pre-key-354.json +1 -0
- package/data/sessions/session1/pre-key-355.json +1 -0
- package/data/sessions/session1/pre-key-356.json +1 -0
- package/data/sessions/session1/pre-key-357.json +1 -0
- package/data/sessions/session1/pre-key-358.json +1 -0
- package/data/sessions/session1/pre-key-359.json +1 -0
- package/data/sessions/session1/pre-key-36.json +1 -0
- package/data/sessions/session1/pre-key-360.json +1 -0
- package/data/sessions/session1/pre-key-361.json +1 -0
- package/data/sessions/session1/pre-key-362.json +1 -0
- package/data/sessions/session1/pre-key-363.json +1 -0
- package/data/sessions/session1/pre-key-364.json +1 -0
- package/data/sessions/session1/pre-key-365.json +1 -0
- package/data/sessions/session1/pre-key-366.json +1 -0
- package/data/sessions/session1/pre-key-367.json +1 -0
- package/data/sessions/session1/pre-key-368.json +1 -0
- package/data/sessions/session1/pre-key-369.json +1 -0
- package/data/sessions/session1/pre-key-37.json +1 -0
- package/data/sessions/session1/pre-key-370.json +1 -0
- package/data/sessions/session1/pre-key-371.json +1 -0
- package/data/sessions/session1/pre-key-372.json +1 -0
- package/data/sessions/session1/pre-key-373.json +1 -0
- package/data/sessions/session1/pre-key-374.json +1 -0
- package/data/sessions/session1/pre-key-375.json +1 -0
- package/data/sessions/session1/pre-key-376.json +1 -0
- package/data/sessions/session1/pre-key-377.json +1 -0
- package/data/sessions/session1/pre-key-378.json +1 -0
- package/data/sessions/session1/pre-key-379.json +1 -0
- package/data/sessions/session1/pre-key-38.json +1 -0
- package/data/sessions/session1/pre-key-380.json +1 -0
- package/data/sessions/session1/pre-key-381.json +1 -0
- package/data/sessions/session1/pre-key-382.json +1 -0
- package/data/sessions/session1/pre-key-383.json +1 -0
- package/data/sessions/session1/pre-key-384.json +1 -0
- package/data/sessions/session1/pre-key-385.json +1 -0
- package/data/sessions/session1/pre-key-386.json +1 -0
- package/data/sessions/session1/pre-key-387.json +1 -0
- package/data/sessions/session1/pre-key-388.json +1 -0
- package/data/sessions/session1/pre-key-389.json +1 -0
- package/data/sessions/session1/pre-key-39.json +1 -0
- package/data/sessions/session1/pre-key-390.json +1 -0
- package/data/sessions/session1/pre-key-391.json +1 -0
- package/data/sessions/session1/pre-key-392.json +1 -0
- package/data/sessions/session1/pre-key-393.json +1 -0
- package/data/sessions/session1/pre-key-394.json +1 -0
- package/data/sessions/session1/pre-key-395.json +1 -0
- package/data/sessions/session1/pre-key-396.json +1 -0
- package/data/sessions/session1/pre-key-397.json +1 -0
- package/data/sessions/session1/pre-key-398.json +1 -0
- package/data/sessions/session1/pre-key-399.json +1 -0
- package/data/sessions/session1/pre-key-4.json +1 -0
- package/data/sessions/session1/pre-key-40.json +1 -0
- package/data/sessions/session1/pre-key-400.json +1 -0
- package/data/sessions/session1/pre-key-401.json +1 -0
- package/data/sessions/session1/pre-key-402.json +1 -0
- package/data/sessions/session1/pre-key-403.json +1 -0
- package/data/sessions/session1/pre-key-404.json +1 -0
- package/data/sessions/session1/pre-key-405.json +1 -0
- package/data/sessions/session1/pre-key-406.json +1 -0
- package/data/sessions/session1/pre-key-407.json +1 -0
- package/data/sessions/session1/pre-key-408.json +1 -0
- package/data/sessions/session1/pre-key-409.json +1 -0
- package/data/sessions/session1/pre-key-41.json +1 -0
- package/data/sessions/session1/pre-key-410.json +1 -0
- package/data/sessions/session1/pre-key-411.json +1 -0
- package/data/sessions/session1/pre-key-412.json +1 -0
- package/data/sessions/session1/pre-key-413.json +1 -0
- package/data/sessions/session1/pre-key-414.json +1 -0
- package/data/sessions/session1/pre-key-415.json +1 -0
- package/data/sessions/session1/pre-key-416.json +1 -0
- package/data/sessions/session1/pre-key-417.json +1 -0
- package/data/sessions/session1/pre-key-418.json +1 -0
- package/data/sessions/session1/pre-key-419.json +1 -0
- package/data/sessions/session1/pre-key-42.json +1 -0
- package/data/sessions/session1/pre-key-420.json +1 -0
- package/data/sessions/session1/pre-key-421.json +1 -0
- package/data/sessions/session1/pre-key-422.json +1 -0
- package/data/sessions/session1/pre-key-423.json +1 -0
- package/data/sessions/session1/pre-key-424.json +1 -0
- package/data/sessions/session1/pre-key-425.json +1 -0
- package/data/sessions/session1/pre-key-426.json +1 -0
- package/data/sessions/session1/pre-key-427.json +1 -0
- package/data/sessions/session1/pre-key-428.json +1 -0
- package/data/sessions/session1/pre-key-429.json +1 -0
- package/data/sessions/session1/pre-key-43.json +1 -0
- package/data/sessions/session1/pre-key-430.json +1 -0
- package/data/sessions/session1/pre-key-431.json +1 -0
- package/data/sessions/session1/pre-key-432.json +1 -0
- package/data/sessions/session1/pre-key-433.json +1 -0
- package/data/sessions/session1/pre-key-434.json +1 -0
- package/data/sessions/session1/pre-key-435.json +1 -0
- package/data/sessions/session1/pre-key-436.json +1 -0
- package/data/sessions/session1/pre-key-437.json +1 -0
- package/data/sessions/session1/pre-key-438.json +1 -0
- package/data/sessions/session1/pre-key-439.json +1 -0
- package/data/sessions/session1/pre-key-44.json +1 -0
- package/data/sessions/session1/pre-key-440.json +1 -0
- package/data/sessions/session1/pre-key-441.json +1 -0
- package/data/sessions/session1/pre-key-442.json +1 -0
- package/data/sessions/session1/pre-key-443.json +1 -0
- package/data/sessions/session1/pre-key-444.json +1 -0
- package/data/sessions/session1/pre-key-445.json +1 -0
- package/data/sessions/session1/pre-key-446.json +1 -0
- package/data/sessions/session1/pre-key-447.json +1 -0
- package/data/sessions/session1/pre-key-448.json +1 -0
- package/data/sessions/session1/pre-key-449.json +1 -0
- package/data/sessions/session1/pre-key-45.json +1 -0
- package/data/sessions/session1/pre-key-450.json +1 -0
- package/data/sessions/session1/pre-key-451.json +1 -0
- package/data/sessions/session1/pre-key-452.json +1 -0
- package/data/sessions/session1/pre-key-453.json +1 -0
- package/data/sessions/session1/pre-key-454.json +1 -0
- package/data/sessions/session1/pre-key-455.json +1 -0
- package/data/sessions/session1/pre-key-456.json +1 -0
- package/data/sessions/session1/pre-key-457.json +1 -0
- package/data/sessions/session1/pre-key-458.json +1 -0
- package/data/sessions/session1/pre-key-459.json +1 -0
- package/data/sessions/session1/pre-key-46.json +1 -0
- package/data/sessions/session1/pre-key-460.json +1 -0
- package/data/sessions/session1/pre-key-461.json +1 -0
- package/data/sessions/session1/pre-key-462.json +1 -0
- package/data/sessions/session1/pre-key-463.json +1 -0
- package/data/sessions/session1/pre-key-464.json +1 -0
- package/data/sessions/session1/pre-key-465.json +1 -0
- package/data/sessions/session1/pre-key-466.json +1 -0
- package/data/sessions/session1/pre-key-467.json +1 -0
- package/data/sessions/session1/pre-key-468.json +1 -0
- package/data/sessions/session1/pre-key-469.json +1 -0
- package/data/sessions/session1/pre-key-47.json +1 -0
- package/data/sessions/session1/pre-key-470.json +1 -0
- package/data/sessions/session1/pre-key-471.json +1 -0
- package/data/sessions/session1/pre-key-472.json +1 -0
- package/data/sessions/session1/pre-key-473.json +1 -0
- package/data/sessions/session1/pre-key-474.json +1 -0
- package/data/sessions/session1/pre-key-475.json +1 -0
- package/data/sessions/session1/pre-key-476.json +1 -0
- package/data/sessions/session1/pre-key-477.json +1 -0
- package/data/sessions/session1/pre-key-478.json +1 -0
- package/data/sessions/session1/pre-key-479.json +1 -0
- package/data/sessions/session1/pre-key-48.json +1 -0
- package/data/sessions/session1/pre-key-480.json +1 -0
- package/data/sessions/session1/pre-key-481.json +1 -0
- package/data/sessions/session1/pre-key-482.json +1 -0
- package/data/sessions/session1/pre-key-483.json +1 -0
- package/data/sessions/session1/pre-key-484.json +1 -0
- package/data/sessions/session1/pre-key-485.json +1 -0
- package/data/sessions/session1/pre-key-486.json +1 -0
- package/data/sessions/session1/pre-key-487.json +1 -0
- package/data/sessions/session1/pre-key-488.json +1 -0
- package/data/sessions/session1/pre-key-489.json +1 -0
- package/data/sessions/session1/pre-key-49.json +1 -0
- package/data/sessions/session1/pre-key-490.json +1 -0
- package/data/sessions/session1/pre-key-491.json +1 -0
- package/data/sessions/session1/pre-key-492.json +1 -0
- package/data/sessions/session1/pre-key-493.json +1 -0
- package/data/sessions/session1/pre-key-494.json +1 -0
- package/data/sessions/session1/pre-key-495.json +1 -0
- package/data/sessions/session1/pre-key-496.json +1 -0
- package/data/sessions/session1/pre-key-497.json +1 -0
- package/data/sessions/session1/pre-key-498.json +1 -0
- package/data/sessions/session1/pre-key-499.json +1 -0
- package/data/sessions/session1/pre-key-5.json +1 -0
- package/data/sessions/session1/pre-key-50.json +1 -0
- package/data/sessions/session1/pre-key-500.json +1 -0
- package/data/sessions/session1/pre-key-501.json +1 -0
- package/data/sessions/session1/pre-key-502.json +1 -0
- package/data/sessions/session1/pre-key-503.json +1 -0
- package/data/sessions/session1/pre-key-504.json +1 -0
- package/data/sessions/session1/pre-key-505.json +1 -0
- package/data/sessions/session1/pre-key-506.json +1 -0
- package/data/sessions/session1/pre-key-507.json +1 -0
- package/data/sessions/session1/pre-key-508.json +1 -0
- package/data/sessions/session1/pre-key-509.json +1 -0
- package/data/sessions/session1/pre-key-51.json +1 -0
- package/data/sessions/session1/pre-key-510.json +1 -0
- package/data/sessions/session1/pre-key-511.json +1 -0
- package/data/sessions/session1/pre-key-512.json +1 -0
- package/data/sessions/session1/pre-key-513.json +1 -0
- package/data/sessions/session1/pre-key-514.json +1 -0
- package/data/sessions/session1/pre-key-515.json +1 -0
- package/data/sessions/session1/pre-key-516.json +1 -0
- package/data/sessions/session1/pre-key-517.json +1 -0
- package/data/sessions/session1/pre-key-518.json +1 -0
- package/data/sessions/session1/pre-key-519.json +1 -0
- package/data/sessions/session1/pre-key-52.json +1 -0
- package/data/sessions/session1/pre-key-520.json +1 -0
- package/data/sessions/session1/pre-key-521.json +1 -0
- package/data/sessions/session1/pre-key-522.json +1 -0
- package/data/sessions/session1/pre-key-523.json +1 -0
- package/data/sessions/session1/pre-key-524.json +1 -0
- package/data/sessions/session1/pre-key-525.json +1 -0
- package/data/sessions/session1/pre-key-526.json +1 -0
- package/data/sessions/session1/pre-key-527.json +1 -0
- package/data/sessions/session1/pre-key-528.json +1 -0
- package/data/sessions/session1/pre-key-529.json +1 -0
- package/data/sessions/session1/pre-key-53.json +1 -0
- package/data/sessions/session1/pre-key-530.json +1 -0
- package/data/sessions/session1/pre-key-531.json +1 -0
- package/data/sessions/session1/pre-key-532.json +1 -0
- package/data/sessions/session1/pre-key-533.json +1 -0
- package/data/sessions/session1/pre-key-534.json +1 -0
- package/data/sessions/session1/pre-key-535.json +1 -0
- package/data/sessions/session1/pre-key-536.json +1 -0
- package/data/sessions/session1/pre-key-537.json +1 -0
- package/data/sessions/session1/pre-key-538.json +1 -0
- package/data/sessions/session1/pre-key-539.json +1 -0
- package/data/sessions/session1/pre-key-54.json +1 -0
- package/data/sessions/session1/pre-key-540.json +1 -0
- package/data/sessions/session1/pre-key-541.json +1 -0
- package/data/sessions/session1/pre-key-542.json +1 -0
- package/data/sessions/session1/pre-key-543.json +1 -0
- package/data/sessions/session1/pre-key-544.json +1 -0
- package/data/sessions/session1/pre-key-545.json +1 -0
- package/data/sessions/session1/pre-key-546.json +1 -0
- package/data/sessions/session1/pre-key-547.json +1 -0
- package/data/sessions/session1/pre-key-548.json +1 -0
- package/data/sessions/session1/pre-key-549.json +1 -0
- package/data/sessions/session1/pre-key-55.json +1 -0
- package/data/sessions/session1/pre-key-550.json +1 -0
- package/data/sessions/session1/pre-key-551.json +1 -0
- package/data/sessions/session1/pre-key-552.json +1 -0
- package/data/sessions/session1/pre-key-553.json +1 -0
- package/data/sessions/session1/pre-key-554.json +1 -0
- package/data/sessions/session1/pre-key-555.json +1 -0
- package/data/sessions/session1/pre-key-556.json +1 -0
- package/data/sessions/session1/pre-key-557.json +1 -0
- package/data/sessions/session1/pre-key-558.json +1 -0
- package/data/sessions/session1/pre-key-559.json +1 -0
- package/data/sessions/session1/pre-key-56.json +1 -0
- package/data/sessions/session1/pre-key-560.json +1 -0
- package/data/sessions/session1/pre-key-561.json +1 -0
- package/data/sessions/session1/pre-key-562.json +1 -0
- package/data/sessions/session1/pre-key-563.json +1 -0
- package/data/sessions/session1/pre-key-564.json +1 -0
- package/data/sessions/session1/pre-key-565.json +1 -0
- package/data/sessions/session1/pre-key-566.json +1 -0
- package/data/sessions/session1/pre-key-567.json +1 -0
- package/data/sessions/session1/pre-key-568.json +1 -0
- package/data/sessions/session1/pre-key-569.json +1 -0
- package/data/sessions/session1/pre-key-57.json +1 -0
- package/data/sessions/session1/pre-key-570.json +1 -0
- package/data/sessions/session1/pre-key-571.json +1 -0
- package/data/sessions/session1/pre-key-572.json +1 -0
- package/data/sessions/session1/pre-key-573.json +1 -0
- package/data/sessions/session1/pre-key-574.json +1 -0
- package/data/sessions/session1/pre-key-575.json +1 -0
- package/data/sessions/session1/pre-key-576.json +1 -0
- package/data/sessions/session1/pre-key-577.json +1 -0
- package/data/sessions/session1/pre-key-578.json +1 -0
- package/data/sessions/session1/pre-key-579.json +1 -0
- package/data/sessions/session1/pre-key-58.json +1 -0
- package/data/sessions/session1/pre-key-580.json +1 -0
- package/data/sessions/session1/pre-key-581.json +1 -0
- package/data/sessions/session1/pre-key-582.json +1 -0
- package/data/sessions/session1/pre-key-583.json +1 -0
- package/data/sessions/session1/pre-key-584.json +1 -0
- package/data/sessions/session1/pre-key-585.json +1 -0
- package/data/sessions/session1/pre-key-586.json +1 -0
- package/data/sessions/session1/pre-key-587.json +1 -0
- package/data/sessions/session1/pre-key-588.json +1 -0
- package/data/sessions/session1/pre-key-589.json +1 -0
- package/data/sessions/session1/pre-key-59.json +1 -0
- package/data/sessions/session1/pre-key-590.json +1 -0
- package/data/sessions/session1/pre-key-591.json +1 -0
- package/data/sessions/session1/pre-key-592.json +1 -0
- package/data/sessions/session1/pre-key-593.json +1 -0
- package/data/sessions/session1/pre-key-594.json +1 -0
- package/data/sessions/session1/pre-key-595.json +1 -0
- package/data/sessions/session1/pre-key-596.json +1 -0
- package/data/sessions/session1/pre-key-597.json +1 -0
- package/data/sessions/session1/pre-key-598.json +1 -0
- package/data/sessions/session1/pre-key-599.json +1 -0
- package/data/sessions/session1/pre-key-6.json +1 -0
- package/data/sessions/session1/pre-key-60.json +1 -0
- package/data/sessions/session1/pre-key-600.json +1 -0
- package/data/sessions/session1/pre-key-601.json +1 -0
- package/data/sessions/session1/pre-key-602.json +1 -0
- package/data/sessions/session1/pre-key-603.json +1 -0
- package/data/sessions/session1/pre-key-604.json +1 -0
- package/data/sessions/session1/pre-key-605.json +1 -0
- package/data/sessions/session1/pre-key-606.json +1 -0
- package/data/sessions/session1/pre-key-607.json +1 -0
- package/data/sessions/session1/pre-key-608.json +1 -0
- package/data/sessions/session1/pre-key-609.json +1 -0
- package/data/sessions/session1/pre-key-61.json +1 -0
- package/data/sessions/session1/pre-key-610.json +1 -0
- package/data/sessions/session1/pre-key-611.json +1 -0
- package/data/sessions/session1/pre-key-612.json +1 -0
- package/data/sessions/session1/pre-key-613.json +1 -0
- package/data/sessions/session1/pre-key-614.json +1 -0
- package/data/sessions/session1/pre-key-615.json +1 -0
- package/data/sessions/session1/pre-key-616.json +1 -0
- package/data/sessions/session1/pre-key-617.json +1 -0
- package/data/sessions/session1/pre-key-618.json +1 -0
- package/data/sessions/session1/pre-key-619.json +1 -0
- package/data/sessions/session1/pre-key-62.json +1 -0
- package/data/sessions/session1/pre-key-620.json +1 -0
- package/data/sessions/session1/pre-key-621.json +1 -0
- package/data/sessions/session1/pre-key-622.json +1 -0
- package/data/sessions/session1/pre-key-623.json +1 -0
- package/data/sessions/session1/pre-key-624.json +1 -0
- package/data/sessions/session1/pre-key-625.json +1 -0
- package/data/sessions/session1/pre-key-626.json +1 -0
- package/data/sessions/session1/pre-key-627.json +1 -0
- package/data/sessions/session1/pre-key-628.json +1 -0
- package/data/sessions/session1/pre-key-629.json +1 -0
- package/data/sessions/session1/pre-key-63.json +1 -0
- package/data/sessions/session1/pre-key-630.json +1 -0
- package/data/sessions/session1/pre-key-631.json +1 -0
- package/data/sessions/session1/pre-key-632.json +1 -0
- package/data/sessions/session1/pre-key-633.json +1 -0
- package/data/sessions/session1/pre-key-634.json +1 -0
- package/data/sessions/session1/pre-key-635.json +1 -0
- package/data/sessions/session1/pre-key-636.json +1 -0
- package/data/sessions/session1/pre-key-637.json +1 -0
- package/data/sessions/session1/pre-key-638.json +1 -0
- package/data/sessions/session1/pre-key-639.json +1 -0
- package/data/sessions/session1/pre-key-64.json +1 -0
- package/data/sessions/session1/pre-key-640.json +1 -0
- package/data/sessions/session1/pre-key-641.json +1 -0
- package/data/sessions/session1/pre-key-642.json +1 -0
- package/data/sessions/session1/pre-key-643.json +1 -0
- package/data/sessions/session1/pre-key-644.json +1 -0
- package/data/sessions/session1/pre-key-645.json +1 -0
- package/data/sessions/session1/pre-key-646.json +1 -0
- package/data/sessions/session1/pre-key-647.json +1 -0
- package/data/sessions/session1/pre-key-648.json +1 -0
- package/data/sessions/session1/pre-key-649.json +1 -0
- package/data/sessions/session1/pre-key-65.json +1 -0
- package/data/sessions/session1/pre-key-650.json +1 -0
- package/data/sessions/session1/pre-key-651.json +1 -0
- package/data/sessions/session1/pre-key-652.json +1 -0
- package/data/sessions/session1/pre-key-653.json +1 -0
- package/data/sessions/session1/pre-key-654.json +1 -0
- package/data/sessions/session1/pre-key-655.json +1 -0
- package/data/sessions/session1/pre-key-656.json +1 -0
- package/data/sessions/session1/pre-key-657.json +1 -0
- package/data/sessions/session1/pre-key-658.json +1 -0
- package/data/sessions/session1/pre-key-659.json +1 -0
- package/data/sessions/session1/pre-key-66.json +1 -0
- package/data/sessions/session1/pre-key-660.json +1 -0
- package/data/sessions/session1/pre-key-661.json +1 -0
- package/data/sessions/session1/pre-key-662.json +1 -0
- package/data/sessions/session1/pre-key-663.json +1 -0
- package/data/sessions/session1/pre-key-664.json +1 -0
- package/data/sessions/session1/pre-key-665.json +1 -0
- package/data/sessions/session1/pre-key-666.json +1 -0
- package/data/sessions/session1/pre-key-667.json +1 -0
- package/data/sessions/session1/pre-key-668.json +1 -0
- package/data/sessions/session1/pre-key-669.json +1 -0
- package/data/sessions/session1/pre-key-67.json +1 -0
- package/data/sessions/session1/pre-key-670.json +1 -0
- package/data/sessions/session1/pre-key-671.json +1 -0
- package/data/sessions/session1/pre-key-672.json +1 -0
- package/data/sessions/session1/pre-key-673.json +1 -0
- package/data/sessions/session1/pre-key-674.json +1 -0
- package/data/sessions/session1/pre-key-675.json +1 -0
- package/data/sessions/session1/pre-key-676.json +1 -0
- package/data/sessions/session1/pre-key-677.json +1 -0
- package/data/sessions/session1/pre-key-678.json +1 -0
- package/data/sessions/session1/pre-key-679.json +1 -0
- package/data/sessions/session1/pre-key-68.json +1 -0
- package/data/sessions/session1/pre-key-680.json +1 -0
- package/data/sessions/session1/pre-key-681.json +1 -0
- package/data/sessions/session1/pre-key-682.json +1 -0
- package/data/sessions/session1/pre-key-683.json +1 -0
- package/data/sessions/session1/pre-key-684.json +1 -0
- package/data/sessions/session1/pre-key-685.json +1 -0
- package/data/sessions/session1/pre-key-686.json +1 -0
- package/data/sessions/session1/pre-key-687.json +1 -0
- package/data/sessions/session1/pre-key-688.json +1 -0
- package/data/sessions/session1/pre-key-689.json +1 -0
- package/data/sessions/session1/pre-key-69.json +1 -0
- package/data/sessions/session1/pre-key-690.json +1 -0
- package/data/sessions/session1/pre-key-691.json +1 -0
- package/data/sessions/session1/pre-key-692.json +1 -0
- package/data/sessions/session1/pre-key-693.json +1 -0
- package/data/sessions/session1/pre-key-694.json +1 -0
- package/data/sessions/session1/pre-key-695.json +1 -0
- package/data/sessions/session1/pre-key-696.json +1 -0
- package/data/sessions/session1/pre-key-697.json +1 -0
- package/data/sessions/session1/pre-key-698.json +1 -0
- package/data/sessions/session1/pre-key-699.json +1 -0
- package/data/sessions/session1/pre-key-7.json +1 -0
- package/data/sessions/session1/pre-key-70.json +1 -0
- package/data/sessions/session1/pre-key-700.json +1 -0
- package/data/sessions/session1/pre-key-701.json +1 -0
- package/data/sessions/session1/pre-key-702.json +1 -0
- package/data/sessions/session1/pre-key-703.json +1 -0
- package/data/sessions/session1/pre-key-704.json +1 -0
- package/data/sessions/session1/pre-key-705.json +1 -0
- package/data/sessions/session1/pre-key-706.json +1 -0
- package/data/sessions/session1/pre-key-707.json +1 -0
- package/data/sessions/session1/pre-key-708.json +1 -0
- package/data/sessions/session1/pre-key-709.json +1 -0
- package/data/sessions/session1/pre-key-71.json +1 -0
- package/data/sessions/session1/pre-key-710.json +1 -0
- package/data/sessions/session1/pre-key-711.json +1 -0
- package/data/sessions/session1/pre-key-712.json +1 -0
- package/data/sessions/session1/pre-key-713.json +1 -0
- package/data/sessions/session1/pre-key-714.json +1 -0
- package/data/sessions/session1/pre-key-715.json +1 -0
- package/data/sessions/session1/pre-key-716.json +1 -0
- package/data/sessions/session1/pre-key-717.json +1 -0
- package/data/sessions/session1/pre-key-718.json +1 -0
- package/data/sessions/session1/pre-key-719.json +1 -0
- package/data/sessions/session1/pre-key-72.json +1 -0
- package/data/sessions/session1/pre-key-720.json +1 -0
- package/data/sessions/session1/pre-key-721.json +1 -0
- package/data/sessions/session1/pre-key-722.json +1 -0
- package/data/sessions/session1/pre-key-723.json +1 -0
- package/data/sessions/session1/pre-key-724.json +1 -0
- package/data/sessions/session1/pre-key-725.json +1 -0
- package/data/sessions/session1/pre-key-726.json +1 -0
- package/data/sessions/session1/pre-key-727.json +1 -0
- package/data/sessions/session1/pre-key-728.json +1 -0
- package/data/sessions/session1/pre-key-729.json +1 -0
- package/data/sessions/session1/pre-key-73.json +1 -0
- package/data/sessions/session1/pre-key-730.json +1 -0
- package/data/sessions/session1/pre-key-731.json +1 -0
- package/data/sessions/session1/pre-key-732.json +1 -0
- package/data/sessions/session1/pre-key-733.json +1 -0
- package/data/sessions/session1/pre-key-734.json +1 -0
- package/data/sessions/session1/pre-key-735.json +1 -0
- package/data/sessions/session1/pre-key-736.json +1 -0
- package/data/sessions/session1/pre-key-737.json +1 -0
- package/data/sessions/session1/pre-key-738.json +1 -0
- package/data/sessions/session1/pre-key-739.json +1 -0
- package/data/sessions/session1/pre-key-74.json +1 -0
- package/data/sessions/session1/pre-key-740.json +1 -0
- package/data/sessions/session1/pre-key-741.json +1 -0
- package/data/sessions/session1/pre-key-742.json +1 -0
- package/data/sessions/session1/pre-key-743.json +1 -0
- package/data/sessions/session1/pre-key-744.json +1 -0
- package/data/sessions/session1/pre-key-745.json +1 -0
- package/data/sessions/session1/pre-key-746.json +1 -0
- package/data/sessions/session1/pre-key-747.json +1 -0
- package/data/sessions/session1/pre-key-748.json +1 -0
- package/data/sessions/session1/pre-key-749.json +1 -0
- package/data/sessions/session1/pre-key-75.json +1 -0
- package/data/sessions/session1/pre-key-750.json +1 -0
- package/data/sessions/session1/pre-key-751.json +1 -0
- package/data/sessions/session1/pre-key-752.json +1 -0
- package/data/sessions/session1/pre-key-753.json +1 -0
- package/data/sessions/session1/pre-key-754.json +1 -0
- package/data/sessions/session1/pre-key-755.json +1 -0
- package/data/sessions/session1/pre-key-756.json +1 -0
- package/data/sessions/session1/pre-key-757.json +1 -0
- package/data/sessions/session1/pre-key-758.json +1 -0
- package/data/sessions/session1/pre-key-759.json +1 -0
- package/data/sessions/session1/pre-key-76.json +1 -0
- package/data/sessions/session1/pre-key-760.json +1 -0
- package/data/sessions/session1/pre-key-761.json +1 -0
- package/data/sessions/session1/pre-key-762.json +1 -0
- package/data/sessions/session1/pre-key-763.json +1 -0
- package/data/sessions/session1/pre-key-764.json +1 -0
- package/data/sessions/session1/pre-key-765.json +1 -0
- package/data/sessions/session1/pre-key-766.json +1 -0
- package/data/sessions/session1/pre-key-767.json +1 -0
- package/data/sessions/session1/pre-key-768.json +1 -0
- package/data/sessions/session1/pre-key-769.json +1 -0
- package/data/sessions/session1/pre-key-77.json +1 -0
- package/data/sessions/session1/pre-key-770.json +1 -0
- package/data/sessions/session1/pre-key-771.json +1 -0
- package/data/sessions/session1/pre-key-772.json +1 -0
- package/data/sessions/session1/pre-key-773.json +1 -0
- package/data/sessions/session1/pre-key-774.json +1 -0
- package/data/sessions/session1/pre-key-775.json +1 -0
- package/data/sessions/session1/pre-key-776.json +1 -0
- package/data/sessions/session1/pre-key-777.json +1 -0
- package/data/sessions/session1/pre-key-778.json +1 -0
- package/data/sessions/session1/pre-key-779.json +1 -0
- package/data/sessions/session1/pre-key-78.json +1 -0
- package/data/sessions/session1/pre-key-780.json +1 -0
- package/data/sessions/session1/pre-key-781.json +1 -0
- package/data/sessions/session1/pre-key-782.json +1 -0
- package/data/sessions/session1/pre-key-783.json +1 -0
- package/data/sessions/session1/pre-key-784.json +1 -0
- package/data/sessions/session1/pre-key-785.json +1 -0
- package/data/sessions/session1/pre-key-786.json +1 -0
- package/data/sessions/session1/pre-key-787.json +1 -0
- package/data/sessions/session1/pre-key-788.json +1 -0
- package/data/sessions/session1/pre-key-789.json +1 -0
- package/data/sessions/session1/pre-key-79.json +1 -0
- package/data/sessions/session1/pre-key-790.json +1 -0
- package/data/sessions/session1/pre-key-791.json +1 -0
- package/data/sessions/session1/pre-key-792.json +1 -0
- package/data/sessions/session1/pre-key-793.json +1 -0
- package/data/sessions/session1/pre-key-794.json +1 -0
- package/data/sessions/session1/pre-key-795.json +1 -0
- package/data/sessions/session1/pre-key-796.json +1 -0
- package/data/sessions/session1/pre-key-797.json +1 -0
- package/data/sessions/session1/pre-key-798.json +1 -0
- package/data/sessions/session1/pre-key-799.json +1 -0
- package/data/sessions/session1/pre-key-8.json +1 -0
- package/data/sessions/session1/pre-key-80.json +1 -0
- package/data/sessions/session1/pre-key-800.json +1 -0
- package/data/sessions/session1/pre-key-801.json +1 -0
- package/data/sessions/session1/pre-key-802.json +1 -0
- package/data/sessions/session1/pre-key-803.json +1 -0
- package/data/sessions/session1/pre-key-804.json +1 -0
- package/data/sessions/session1/pre-key-805.json +1 -0
- package/data/sessions/session1/pre-key-806.json +1 -0
- package/data/sessions/session1/pre-key-807.json +1 -0
- package/data/sessions/session1/pre-key-808.json +1 -0
- package/data/sessions/session1/pre-key-809.json +1 -0
- package/data/sessions/session1/pre-key-81.json +1 -0
- package/data/sessions/session1/pre-key-810.json +1 -0
- package/data/sessions/session1/pre-key-811.json +1 -0
- package/data/sessions/session1/pre-key-812.json +1 -0
- package/data/sessions/session1/pre-key-82.json +1 -0
- package/data/sessions/session1/pre-key-83.json +1 -0
- package/data/sessions/session1/pre-key-84.json +1 -0
- package/data/sessions/session1/pre-key-85.json +1 -0
- package/data/sessions/session1/pre-key-86.json +1 -0
- package/data/sessions/session1/pre-key-87.json +1 -0
- package/data/sessions/session1/pre-key-88.json +1 -0
- package/data/sessions/session1/pre-key-89.json +1 -0
- package/data/sessions/session1/pre-key-9.json +1 -0
- package/data/sessions/session1/pre-key-90.json +1 -0
- package/data/sessions/session1/pre-key-91.json +1 -0
- package/data/sessions/session1/pre-key-92.json +1 -0
- package/data/sessions/session1/pre-key-93.json +1 -0
- package/data/sessions/session1/pre-key-94.json +1 -0
- package/data/sessions/session1/pre-key-95.json +1 -0
- package/data/sessions/session1/pre-key-96.json +1 -0
- package/data/sessions/session1/pre-key-97.json +1 -0
- package/data/sessions/session1/pre-key-98.json +1 -0
- package/data/sessions/session1/pre-key-99.json +1 -0
- package/data/sessions/session1/session-275801408819393_1.0.json +1 -0
- package/handlers/baileys.js +25 -0
- package/handlers/calls.js +58 -0
- package/handlers/contacts.js +142 -0
- package/handlers/groups.js +195 -0
- package/handlers/messages.js +345 -0
- package/handlers/newsletters.js +184 -0
- package/handlers/presence-status.js +9 -0
- package/handlers/stories.js +37 -0
- package/handlers/users.js +119 -0
- package/index.js +649 -0
- package/package.json +19 -0
- package/types/buttons.js +72 -0
- package/types/interactive-messages.js +318 -0
- package/utils/generic-utils.js +23 -0
- package/utils/index.js +4 -0
- package/utils/message-normalizer.js +427 -0
- package/utils/message-store-db-handler.js +46 -0
- package/utils/message-store.js +73 -0
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
const digestSync = require('crypto-digest-sync');
|
|
2
|
+
/**
|
|
3
|
+
* Classe utilitária estática para normalizar o objeto de mensagem do Baileys
|
|
4
|
+
* em uma estrutura rica, consistente e completa. (Versão 3 - Final)
|
|
5
|
+
*/
|
|
6
|
+
class MessageNormalizer {
|
|
7
|
+
/**
|
|
8
|
+
* Ponto de entrada principal. Normaliza uma mensagem bruta do Baileys.
|
|
9
|
+
* @param {import('../handlers/contacts').default} contact - O contato.
|
|
10
|
+
* @param {import('baileys').proto.WebMessageInfo} rawMessage - O objeto de mensagem bruto.
|
|
11
|
+
* @param {import('../client').default} client - A instância do cliente.
|
|
12
|
+
* @returns {object|null} Um objeto de mensagem normalizado ou null se não for uma mensagem válida.
|
|
13
|
+
*/
|
|
14
|
+
static async normalize(contact, rawMessage, client) {
|
|
15
|
+
// if (!rawMessage || (!rawMessage.message && !rawMessage.messageStubType)) {
|
|
16
|
+
if (!rawMessage || !rawMessage.message) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Caso especial 1: Mensagem editada. A normalização é feita na mensagem interna.
|
|
21
|
+
const editedMsgContent = rawMessage.message?.protocolMessage?.editedMessage;
|
|
22
|
+
if (editedMsgContent) {
|
|
23
|
+
const originalKey = rawMessage.message.protocolMessage.key;
|
|
24
|
+
const normalizedEdit = await this.normalize(contact, { key: originalKey, message: editedMsgContent, pushName: rawMessage.pushName }, client);
|
|
25
|
+
if (normalizedEdit) {
|
|
26
|
+
normalizedEdit.isEdited = true;
|
|
27
|
+
normalizedEdit.id = originalKey.id; // Garante que o ID é o da mensagem original
|
|
28
|
+
}
|
|
29
|
+
return normalizedEdit;
|
|
30
|
+
}
|
|
31
|
+
const originalType = Object.keys(rawMessage.message)[0];
|
|
32
|
+
const type = this._getFriendlyType(rawMessage.message);
|
|
33
|
+
const messageContent = rawMessage.message[originalType];
|
|
34
|
+
const contextInfo = messageContent?.contextInfo || rawMessage.message?.messageContextInfo;
|
|
35
|
+
const clientJid = client.jidNormalizedUser(client.sock.user.id);
|
|
36
|
+
const fromMe = rawMessage.key.fromMe;
|
|
37
|
+
const from = fromMe ? clientJid : contact.id;
|
|
38
|
+
const to = fromMe ? contact.id : clientJid;
|
|
39
|
+
|
|
40
|
+
const normalized = {
|
|
41
|
+
id: rawMessage.key.id,
|
|
42
|
+
chat: contact,
|
|
43
|
+
fromMe,
|
|
44
|
+
from,
|
|
45
|
+
fromPushName: fromMe ? client.user.name : contact.name,
|
|
46
|
+
to,
|
|
47
|
+
type,
|
|
48
|
+
body: this._extractBody(rawMessage.message),
|
|
49
|
+
hasMedia: false,
|
|
50
|
+
media: null,
|
|
51
|
+
location: null,
|
|
52
|
+
contacts: this._extractContacts(rawMessage.message),
|
|
53
|
+
isReply: !!contextInfo?.quotedMessage,
|
|
54
|
+
quotedMessage: null,
|
|
55
|
+
isForwarded: !!contextInfo?.isForwarded,
|
|
56
|
+
forwardingScore: contextInfo?.forwardingScore || 0,
|
|
57
|
+
mentions: contextInfo?.mentionedJid || [],
|
|
58
|
+
isMentioningMe: (contextInfo?.mentionedJid || []).includes(clientJid),
|
|
59
|
+
isEdited: false,
|
|
60
|
+
interactiveReply: this._extractInteractiveReply(rawMessage.message),
|
|
61
|
+
reaction: this._extractReaction(rawMessage.message),
|
|
62
|
+
pollUpdate: await this._extractPollUpdate(rawMessage, client),
|
|
63
|
+
poll: this._extractPollCreation(rawMessage),
|
|
64
|
+
timestamp: new Date(Number(rawMessage.messageTimestamp) * 1000),
|
|
65
|
+
raw: rawMessage // Referência ao objeto original para acesso avançado
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// Preenche os campos de mídia e localização com detalhes específicos
|
|
69
|
+
this._enrichWithTypedData(normalized, rawMessage, client);
|
|
70
|
+
|
|
71
|
+
// Se for uma resposta, normaliza a mensagem citada recursivamente
|
|
72
|
+
if (normalized.isReply) {
|
|
73
|
+
const quotedRaw = {
|
|
74
|
+
key: {
|
|
75
|
+
remoteJid: normalized.chat.id,
|
|
76
|
+
id: contextInfo.stanzaId,
|
|
77
|
+
fromMe: client.jidNormalizedUser(contextInfo.participant || normalized.chat.id) === clientJid,
|
|
78
|
+
participant: contextInfo.participant
|
|
79
|
+
},
|
|
80
|
+
message: contextInfo.quotedMessage
|
|
81
|
+
};
|
|
82
|
+
const quotedParticipantJid = client.jidNormalizedUser(contextInfo.participant || normalized.chat.id);
|
|
83
|
+
let quotedContact = await client.contacts.get(quotedParticipantJid);
|
|
84
|
+
if (!quotedContact) {
|
|
85
|
+
quotedContact = await client.contacts.normalize({ key: { remoteJid: quotedParticipantJid } });
|
|
86
|
+
}
|
|
87
|
+
normalized.quotedMessage = await this.normalize(quotedContact, quotedRaw, client);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
return normalized;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** @private Retorna um tipo amigável baseado no conteúdo da mensagem. */
|
|
95
|
+
static _getFriendlyType(message) {
|
|
96
|
+
if (!message) return 'unknown'
|
|
97
|
+
|
|
98
|
+
if (message.conversation || message.extendedTextMessage) return 'text';
|
|
99
|
+
if (message.imageMessage) return 'image';
|
|
100
|
+
if (message.albumMessage) return 'album';
|
|
101
|
+
if (message.videoMessage || message.associatedChildMessage?.message?.videoMessage) return 'video';
|
|
102
|
+
if (message.audioMessage) return 'audio';
|
|
103
|
+
if (message.documentMessage) return 'document';
|
|
104
|
+
if (message.documentWithCaptionMessage) return 'document';
|
|
105
|
+
if (message.stickerMessage) return 'sticker';
|
|
106
|
+
if (message.locationMessage) return 'location';
|
|
107
|
+
if (message.contactMessage || message.contactsArrayMessage) return 'contact';
|
|
108
|
+
if (message.buttonsResponseMessage || message.listResponseMessage) return 'interactive_reply';
|
|
109
|
+
if (message.reactionMessage) return 'reaction';
|
|
110
|
+
if (message.pollCreationMessage || message.pollCreationMessageV3) return 'poll_creation';
|
|
111
|
+
if (message.pollUpdateMessage) return 'poll_update';
|
|
112
|
+
if (message.templateButtonReplyMessage) return 'template_button_reply';
|
|
113
|
+
if (message.pinInChatMessage) return 'pin_in_chat';
|
|
114
|
+
if (message.unpinInChatMessage) return 'unpin_in_chat';
|
|
115
|
+
if (message.questionReplyMessage) return 'question_reply';
|
|
116
|
+
// Detectar o tipo de interactiveButtons pela propriedade name, se interactive buttons tiver apenas um botão
|
|
117
|
+
if (message.interactiveMessage && message.interactiveMessage.interactiveButtons && message.interactiveMessage.interactiveButtons[0].name === 'review_and_pay') return 'review_and_pay';
|
|
118
|
+
if (message.interactiveMessage && message.interactiveMessage.interactiveButtons && message.interactiveMessage.interactiveButtons[0].name === 'review_order') return 'review_order';
|
|
119
|
+
if (message.interactiveMessage && message.interactiveMessage.interactiveButtons && message.interactiveMessage.interactiveButtons[0].name === 'quick_reply') return 'quick_reply';
|
|
120
|
+
if (message.interactiveMessage && message.interactiveMessage.interactiveButtons && message.interactiveMessage.interactiveButtons[0].name === 'cta_url') return 'cta_url';
|
|
121
|
+
if (message.interactiveMessage && message.interactiveMessage.interactiveButtons && message.interactiveMessage.interactiveButtons[0].name === 'cta_copy') return 'cta_copy';
|
|
122
|
+
if (message.interactiveMessage && message.interactiveMessage.interactiveButtons && message.interactiveMessage.interactiveButtons[0].name === 'cta_call') return 'cta_call';
|
|
123
|
+
if (message.interactiveMessage && message.interactiveMessage.interactiveButtons && message.interactiveMessage.interactiveButtons[0].name === 'voice_call') return 'voice_call';
|
|
124
|
+
if (message.interactiveResponseMessage && message.interactiveResponseMessage.nativeFlowResponseMessage && message.interactiveResponseMessage.nativeFlowResponseMessage.name === 'menu_options') return 'native_flow_menu_options_response';
|
|
125
|
+
if (message.interactiveResponseMessage && message.interactiveResponseMessage.nativeFlowResponseMessage) return 'native_flow_response';
|
|
126
|
+
|
|
127
|
+
if (message.interactiveMessage && message.interactiveMessage.interactiveButtons) return 'interactive_buttons';
|
|
128
|
+
if (message.interactiveMessage && message.interactiveMessage.interactiveList) return 'interactive_list';
|
|
129
|
+
if (message.interactiveResponseMessage) return 'interactive_response';
|
|
130
|
+
|
|
131
|
+
if (message.interactiveMessage) return 'interactive_message';
|
|
132
|
+
|
|
133
|
+
return 'unknown';
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
/** @private Extrai o conteúdo textual principal de qualquer tipo de mensagem. */
|
|
138
|
+
static _extractBody(message) {
|
|
139
|
+
return message?.conversation ||
|
|
140
|
+
message?.extendedTextMessage?.text ||
|
|
141
|
+
message?.imageMessage?.caption ||
|
|
142
|
+
message?.videoMessage?.caption ||
|
|
143
|
+
message?.associatedChildMessage?.message?.videoMessage?.caption ||
|
|
144
|
+
message?.documentWithCaptionMessage?.message?.documentMessage?.caption ||
|
|
145
|
+
message?.buttonsResponseMessage?.selectedDisplayText ||
|
|
146
|
+
message?.listResponseMessage?.title ||
|
|
147
|
+
message?.templateButtonReplyMessage?.selectedDisplayText ||
|
|
148
|
+
message.interactiveResponseMessage?.body?.text ||
|
|
149
|
+
message?.questionReplyMessage?.message?.extendedTextMessage?.text ||
|
|
150
|
+
'';
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/** @private Extrai e formata os dados de mídia. */
|
|
154
|
+
static _enrichWithTypedData(normalized, rawMessage, client) {
|
|
155
|
+
let content = rawMessage.message;
|
|
156
|
+
let type = Object.keys(rawMessage.message).find(key => key != "messageContextInfo");
|
|
157
|
+
if (type === 'associatedChildMessage') {
|
|
158
|
+
content = rawMessage.message.associatedChildMessage.message;
|
|
159
|
+
type = Object.keys(rawMessage.message.associatedChildMessage.message).find(key => key != "messageContextInfo");
|
|
160
|
+
}
|
|
161
|
+
const messageContent = content[type];
|
|
162
|
+
const mediaTypes = ['imageMessage', 'videoMessage', 'audioMessage', 'documentMessage', 'stickerMessage', 'documentWithCaptionMessage'];
|
|
163
|
+
if (mediaTypes.includes(type)) {
|
|
164
|
+
const rootData = content.documentWithCaptionMessage ? content.documentWithCaptionMessage : content;
|
|
165
|
+
normalized.hasMedia = true;
|
|
166
|
+
normalized.media = {
|
|
167
|
+
mimetype: messageContent.mimetype || messageContent.message?.documentMessage?.mimetype,
|
|
168
|
+
fileName: messageContent.fileName || messageContent.message?.documentMessage?.title,
|
|
169
|
+
caption: messageContent.caption || messageContent.message?.documentMessage?.caption,
|
|
170
|
+
duration: messageContent.seconds || null,
|
|
171
|
+
isPtt: messageContent.ptt || false,
|
|
172
|
+
isGif: messageContent.gifPlayback || false,
|
|
173
|
+
isViewOnce: messageContent.viewOnce || false,
|
|
174
|
+
getAttachments: () => client.messages.getAttachments(rootData)
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (type === 'locationMessage') {
|
|
179
|
+
normalized.location = {
|
|
180
|
+
latitude: messageContent.degreesLatitude,
|
|
181
|
+
longitude: messageContent.degreesLongitude
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/** @private Extrai os dados de uma resposta interativa (botão/lista). */
|
|
188
|
+
static _extractInteractiveReply(message) {
|
|
189
|
+
const buttonReply = message?.buttonsResponseMessage;
|
|
190
|
+
if (buttonReply) return { id: buttonReply.selectedButtonId, text: buttonReply.selectedDisplayText };
|
|
191
|
+
|
|
192
|
+
const listReply = message?.listResponseMessage;
|
|
193
|
+
if (listReply) return { id: listReply.singleSelectReply?.selectedRowId, text: listReply.title };
|
|
194
|
+
|
|
195
|
+
const interactiveReply = message?.interactiveResponseMessage;
|
|
196
|
+
if (interactiveReply) return { id: interactiveReply.nativeFlowResponseMessage.name, text: interactiveReply.nativeFlowResponseMessage.paramsJson };
|
|
197
|
+
|
|
198
|
+
const questionReply = message?.questionReplyMessage;
|
|
199
|
+
if (questionReply) return { id: questionReply.selectedButtonId, text: questionReply.selectedDisplayText };
|
|
200
|
+
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** @private Extrai os dados de uma reação a uma mensagem. */
|
|
205
|
+
static _extractReaction(message) {
|
|
206
|
+
const reaction = message?.reactionMessage;
|
|
207
|
+
if (!reaction) return null;
|
|
208
|
+
return {
|
|
209
|
+
emoji: reaction.text,
|
|
210
|
+
reactedMessageId: reaction.key.id,
|
|
211
|
+
senderTimestamp: new Date(Number(reaction.senderTimestampMs))
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/** @private Extrai os dados de um voto em uma enquete (descriptografado). */
|
|
216
|
+
static async _extractPollUpdate(msg, client) {
|
|
217
|
+
const isGroup = msg.key.remoteJid.endsWith('@g.us');
|
|
218
|
+
const clientJid = client.jidNormalizedUser(client.sock.user.id);
|
|
219
|
+
|
|
220
|
+
const message = msg.message;
|
|
221
|
+
const pollUpdate = message?.pollUpdateMessage;
|
|
222
|
+
if (!pollUpdate || !pollUpdate.pollCreationMessageKey) return null;
|
|
223
|
+
let creationMsg = null;
|
|
224
|
+
let pollEncKeyBuffer = null;
|
|
225
|
+
let decryptPollVoteParams = null;
|
|
226
|
+
try {
|
|
227
|
+
// Recupera a mensagem de criação da enquete diretamente da store
|
|
228
|
+
creationMsg = await client.store.getMessage(
|
|
229
|
+
pollUpdate.pollCreationMessageKey.remoteJid,
|
|
230
|
+
pollUpdate.pollCreationMessageKey.id
|
|
231
|
+
);
|
|
232
|
+
|
|
233
|
+
if (!creationMsg) {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
creationMsg.raw.message.pollCreationMessage = creationMsg.raw.message.pollCreationMessage ? creationMsg.raw.message.pollCreationMessage :
|
|
238
|
+
creationMsg.raw.message.pollCreationMessageV3;
|
|
239
|
+
|
|
240
|
+
// Verifica se a mensagem de criação existe e tem a estrutura correta
|
|
241
|
+
if (!creationMsg.raw.message.pollCreationMessage) {
|
|
242
|
+
console.warn("Mensagem de criação da enquete não encontrada na store ou sem estrutura válida");
|
|
243
|
+
return {
|
|
244
|
+
pollCreationMessageId: pollUpdate.pollCreationMessageKey?.id,
|
|
245
|
+
voterTimestamp: new Date(Number(pollUpdate.senderTimestampMs)),
|
|
246
|
+
selectedOptions: [],
|
|
247
|
+
error: "Poll creation message not found"
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if (!creationMsg || !creationMsg.raw.message.pollCreationMessage) {
|
|
252
|
+
console.warn("Mensagem de criação da enquete sem estrutura válida");
|
|
253
|
+
return {
|
|
254
|
+
pollCreationMessageId: pollUpdate.pollCreationMessageKey?.id,
|
|
255
|
+
voterTimestamp: new Date(Number(pollUpdate.senderTimestampMs)),
|
|
256
|
+
selectedOptions: [],
|
|
257
|
+
error: "Mensagem de criação da enquete sem estrutura válida"
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Verifica se temos os dados necessários para descriptografia
|
|
262
|
+
if (!creationMsg.raw.message.messageContextInfo.messageSecret ||
|
|
263
|
+
!creationMsg.raw.message.pollCreationMessage.name ||
|
|
264
|
+
!creationMsg.raw.message.pollCreationMessage.options) {
|
|
265
|
+
console.warn("Mensagem de criação da enquete não contém dados necessários para descriptografia");
|
|
266
|
+
return {
|
|
267
|
+
pollCreationMessageId: pollUpdate.pollCreationMessageKey?.id,
|
|
268
|
+
voterTimestamp: new Date(Number(pollUpdate.senderTimestampMs)),
|
|
269
|
+
selectedOptions: [],
|
|
270
|
+
error: "Incomplete poll creation data"
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
pollEncKeyBuffer = Buffer.from(Object.values(creationMsg.raw.message.messageContextInfo.messageSecret));
|
|
275
|
+
decryptPollVoteParams = {
|
|
276
|
+
pollCreatorJid: creationMsg.raw.key.remoteJid,
|
|
277
|
+
pollMsgId: creationMsg.raw.key.id,
|
|
278
|
+
pollEncKey: pollEncKeyBuffer,
|
|
279
|
+
voterJid: isGroup ? msg.key.participant : msg.key.fromMe ? clientJid : msg.key.remoteJid,
|
|
280
|
+
};
|
|
281
|
+
// Descriptografa os votos usando a mensagem bruta da store
|
|
282
|
+
const decrypted = await client.decryptPollVote(pollUpdate.vote, decryptPollVoteParams);
|
|
283
|
+
|
|
284
|
+
const selectedOptions = [];
|
|
285
|
+
for (const decryptedHash of decrypted.selectedOptions) {
|
|
286
|
+
const hashHex = Buffer.from(decryptedHash).toString('hex').toUpperCase();
|
|
287
|
+
for (const option of creationMsg.raw.message.pollCreationMessage?.options || []) {
|
|
288
|
+
const hash = Buffer.from(digestSync("SHA-256", new TextEncoder().encode(Buffer.from(option.optionName).toString())))
|
|
289
|
+
.toString("hex")
|
|
290
|
+
.toUpperCase();
|
|
291
|
+
if (hashHex === hash) {
|
|
292
|
+
selectedOptions.push(option.optionName);
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return {
|
|
299
|
+
pollCreationMessageId: pollUpdate.pollCreationMessageKey?.id,
|
|
300
|
+
voterTimestamp: new Date(Number(pollUpdate.senderTimestampMs)),
|
|
301
|
+
selectedOptions,
|
|
302
|
+
success: selectedOptions.length > 0
|
|
303
|
+
};
|
|
304
|
+
} catch (err) {
|
|
305
|
+
console.error("Erro ao descriptografar voto:", err.message, {
|
|
306
|
+
msg,
|
|
307
|
+
pollUpdateMessage: pollUpdate,
|
|
308
|
+
decryptPollVoteParams,
|
|
309
|
+
errorStack: err.stack
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
return {
|
|
313
|
+
pollCreationMessageId: pollUpdate.pollCreationMessageKey?.id,
|
|
314
|
+
voterTimestamp: new Date(Number(pollUpdate.senderTimestampMs)),
|
|
315
|
+
selectedOptions: [],
|
|
316
|
+
error: err.message,
|
|
317
|
+
code: err.code
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/** @private Extrai os dados de uma mensagem de criação de enquete. */
|
|
323
|
+
static _extractPollCreation(raw) {
|
|
324
|
+
const message = raw.message;
|
|
325
|
+
const poll = message?.pollCreationMessage || message.pollCreationMessageV3;
|
|
326
|
+
if (!poll) return null
|
|
327
|
+
|
|
328
|
+
return {
|
|
329
|
+
id: raw.key.id,
|
|
330
|
+
creator: {
|
|
331
|
+
jid: raw.key.remoteJid,
|
|
332
|
+
pushName: raw.pushName,
|
|
333
|
+
verifiedBizName: raw.verifiedBizName
|
|
334
|
+
},
|
|
335
|
+
name: poll.name,
|
|
336
|
+
selectableOptionsCount: poll.selectableOptionsCount,
|
|
337
|
+
allowsMultipleAnswers: poll.selectableOptionsCount > 1,
|
|
338
|
+
options: (poll.options || []).map(opt => ({
|
|
339
|
+
name: opt.optionName || null,
|
|
340
|
+
hash: opt.optionHash || null
|
|
341
|
+
})),
|
|
342
|
+
messageSecret: message.messageContextInfo?.messageSecret,
|
|
343
|
+
senderTimestamp: poll.messageTimestamp
|
|
344
|
+
? new Date(Number(poll.messageTimestamp) * 1000)
|
|
345
|
+
: null,
|
|
346
|
+
raw: poll
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/** @private Extrai os dados de contatos enviados. */
|
|
351
|
+
static _extractContacts(message) {
|
|
352
|
+
const parseVcard = (vcard = '') => {
|
|
353
|
+
const nameMatch = vcard.match(/FN:(.+)/);
|
|
354
|
+
const numberMatch = vcard.match(/waid=(\d+)/);
|
|
355
|
+
return {
|
|
356
|
+
name: (nameMatch ? nameMatch[1] : '').replace(/\\/g, ''),
|
|
357
|
+
number: numberMatch ? numberMatch[1] : ''
|
|
358
|
+
};
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
const singleContact = message?.contactMessage;
|
|
362
|
+
if (singleContact) return [parseVcard(singleContact.vcard)];
|
|
363
|
+
|
|
364
|
+
const multiContact = message?.contactsArrayMessage?.contacts;
|
|
365
|
+
if (multiContact) return multiContact.map(c => parseVcard(c.vcard));
|
|
366
|
+
|
|
367
|
+
return [];
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/** @private Extrai os dados de uma mensagem de resposta a uma pergunta. recebida de uma newsletter */
|
|
371
|
+
static _extractQuestionReply(raw) {
|
|
372
|
+
const message = raw.message;
|
|
373
|
+
const questionReply = message?.questionReplyMessage;
|
|
374
|
+
if (!questionReply) return null;
|
|
375
|
+
|
|
376
|
+
return {
|
|
377
|
+
id: raw.key.id,
|
|
378
|
+
creator: {
|
|
379
|
+
jid: raw.key.remoteJid,
|
|
380
|
+
pushName: raw.pushName,
|
|
381
|
+
verifiedBizName: raw.verifiedBizName
|
|
382
|
+
},
|
|
383
|
+
question: questionReply.question,
|
|
384
|
+
answer: questionReply.answer,
|
|
385
|
+
senderTimestamp: questionReply.messageTimestamp
|
|
386
|
+
? new Date(Number(questionReply.messageTimestamp) * 1000)
|
|
387
|
+
: null,
|
|
388
|
+
raw: questionReply
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/** @private Extrai os dados de uma mensagem de video. */
|
|
393
|
+
static _extractVideo(raw) {
|
|
394
|
+
const message = raw.message;
|
|
395
|
+
const video = message?.videoMessage;
|
|
396
|
+
if (!video) return null;
|
|
397
|
+
|
|
398
|
+
return {
|
|
399
|
+
id: raw.key.id,
|
|
400
|
+
creator: {
|
|
401
|
+
jid: raw.key.remoteJid,
|
|
402
|
+
pushName: raw.pushName,
|
|
403
|
+
verifiedBizName: raw.verifiedBizName
|
|
404
|
+
},
|
|
405
|
+
url: video.url,
|
|
406
|
+
mimetype: video.mimetype,
|
|
407
|
+
fileSha256: video.fileSha256,
|
|
408
|
+
fileLength: video.fileLength,
|
|
409
|
+
seconds: video.seconds,
|
|
410
|
+
mediaKey: video.mediaKey,
|
|
411
|
+
height: video.height,
|
|
412
|
+
width: video.width,
|
|
413
|
+
fileEncSha256: video.fileEncSha256,
|
|
414
|
+
directPath: video.directPath,
|
|
415
|
+
mediaKeyTimestamp: video.mediaKeyTimestamp,
|
|
416
|
+
jpegThumbnail: video.jpegThumbnail,
|
|
417
|
+
streamingSidecar: video.streamingSidecar,
|
|
418
|
+
externalShareFullVideoDurationInSeconds: video.externalShareFullVideoDurationInSeconds,
|
|
419
|
+
motionPhotoPresentationOffsetMs: video.motionPhotoPresentationOffsetMs,
|
|
420
|
+
raw: video
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
module.exports = MessageNormalizer;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
class MessageStore {
|
|
2
|
+
constructor(table) {
|
|
3
|
+
this.table = table;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
async saveMessage(chatId, message) {
|
|
7
|
+
return await this.table.insert({
|
|
8
|
+
chat_id: chatId,
|
|
9
|
+
key: message.id,
|
|
10
|
+
from: message.from,
|
|
11
|
+
to: message.to
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async getMessage(chatId, id) {
|
|
16
|
+
// Tenta buscar no banco de dados com base no chat_id e mid/key
|
|
17
|
+
const results = await this.table.select([{ chat_id: chatId }, 'AND', { key: id }]);
|
|
18
|
+
return results && results.length > 0 ? results[0] : null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async getMessages(chatId, { from, to, limit } = {}) {
|
|
22
|
+
// Consulta mensagens associadas ao chat_id no banco
|
|
23
|
+
let messages = await this.table.select([{ chat_id: chatId }]);
|
|
24
|
+
if (!messages) {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (from || to) {
|
|
29
|
+
messages = messages.filter(msg => {
|
|
30
|
+
const timestamp = msg.timestamp || msg.created_at || msg.raw?.messageTimestamp;
|
|
31
|
+
if (!timestamp) return true;
|
|
32
|
+
const ts = new Date(timestamp).getTime();
|
|
33
|
+
return (!from || ts >= new Date(from).getTime()) &&
|
|
34
|
+
(!to || ts <= new Date(to).getTime());
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (limit) {
|
|
39
|
+
messages = messages.slice(-limit);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return messages;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
module.exports = MessageStore;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const fs = require('fs/promises');
|
|
2
|
+
const { existsSync } = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
|
|
5
|
+
class MessageStore {
|
|
6
|
+
constructor(basePath) {
|
|
7
|
+
this.basePath = path.join(basePath, 'message_store');
|
|
8
|
+
if (!existsSync(this.basePath)) {
|
|
9
|
+
const fsSync = require('fs');
|
|
10
|
+
fsSync.mkdirSync(this.basePath, { recursive: true });
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
_getFilePath(chatId) {
|
|
15
|
+
return path.join(this.basePath, `${chatId}.json`);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async _loadMessages(chatId) {
|
|
19
|
+
const filePath = this._getFilePath(chatId);
|
|
20
|
+
try {
|
|
21
|
+
await fs.access(filePath);
|
|
22
|
+
} catch {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const data = await fs.readFile(filePath, 'utf8');
|
|
27
|
+
return JSON.parse(data) || [];
|
|
28
|
+
} catch (err) {
|
|
29
|
+
// Em caso de JSON corrompido, retorna lista vazia
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async _saveMessages(chatId, messages) {
|
|
35
|
+
const filePath = this._getFilePath(chatId);
|
|
36
|
+
await fs.writeFile(filePath, JSON.stringify(messages, null, 2));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async saveMessage(chatId, message) {
|
|
40
|
+
const messages = await this._loadMessages(chatId);
|
|
41
|
+
|
|
42
|
+
// Evita duplicados pelo id
|
|
43
|
+
if (!messages.find(m => m.id === message.id)) {
|
|
44
|
+
messages.push(message);
|
|
45
|
+
await this._saveMessages(chatId, messages);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async getMessage(chatId, id) {
|
|
50
|
+
const messages = await this._loadMessages(chatId);
|
|
51
|
+
return messages.find(m => m.id === id);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async getMessages(chatId, { from, to, limit } = {}) {
|
|
55
|
+
let messages = await this._loadMessages(chatId);
|
|
56
|
+
|
|
57
|
+
if (from || to) {
|
|
58
|
+
messages = messages.filter(msg => {
|
|
59
|
+
const ts = new Date(msg.timestamp).getTime();
|
|
60
|
+
return (!from || ts >= new Date(from).getTime()) &&
|
|
61
|
+
(!to || ts <= new Date(to).getTime());
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (limit) {
|
|
66
|
+
messages = messages.slice(-limit);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return messages;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
module.exports = MessageStore;
|