Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<tr>
<td><b>5 minutes read</b></td>
<td style={{ paddingLeft: 40 }}><b> Level: Beginner</b></td>
<td style={{ paddingLeft: 40 }}><b>Last Updated: October 2025</b></td>
<td style={{ paddingLeft: 40 }}><b>Last Updated: August 2026</b></td>
</tr>
</table>
</h3>
Expand All @@ -15,11 +15,10 @@ The Wait for Response node is used whenever the flow needs to pause and collect

Once the response is received, it can be validated, stored in a variable, and reused later in the same flow or across different flows.

Note: the contact variable can be used across flows, but the result variable is limited to the same flow.

---

## Why use Wait for Response?

The Wait for Response node is essential whenever a flow needs input from the contact. Common use cases include:
- Gathering registration details (e.g., name, age, email).
- Conducting surveys or quizzes.
Expand All @@ -40,7 +39,7 @@ The Wait for Response node is essential whenever a flow needs input from the con



**3. Give a Result Name (this becomes your variable).**
**3. Give a Result Name (this becomes the result variable that stores the contact's reply).**

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Result name does not become the result variable. Result name is the name of the variable that stores the result, (the value in the result, in this case being the contact's reply).


**4. (Optional) Check Continue when there is no response to nudge the users to respond.**

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current wording is slightly misleading. It implies that simply checking the Continue box automatically sends nudges, which is not the case.

Checking the Continue box only enables the workflow for configuring nudges. Users must still design and configure the nudge sequence, including details such as the number of nudges to send, the interval between them, and other related settings.

It would be more accurate to clarify that checking the box provides the option to configure nudges rather than automatically sending them.


Expand All @@ -54,48 +53,98 @@ The Wait for Response node is essential whenever a flow needs input from the con

---

## Understanding the fields in this node

The Wait for Response node has a few blank fields you need to fill in. Here is what each one means:

- **Response criteria dropdown** (shows "has only the phrase" by default): choose how the contact's reply should be checked, for example "has any of the words" or "has a number". See "Response Types" below for the full list.
- **Value box** (next to the criteria dropdown): the word, phrase, or number the contact's reply is checked against. Some criteria, like "has a number" or "has an email", don't need a value here since they check the type of reply instead of specific text.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please explicitly mention that any leading or trailing whitespace in the Value field is treated as part of the value being matched. For example, has only the phraseYes is different from has only the phraseYes (with a trailing space), as the extra space is considered during validation and can affect the match.

- **Categorize as**: the label given to this branch, so use something that describes the outcome, like "Yes" or "Has Number". This becomes the name of the branch you connect the rest of your flow to.
- **Multiple criteria rows**: you can add more than one row of criteria. Each row becomes its own branch, so a reply can be routed differently depending on which criteria it matches.
- **Result Name**: the variable the contact's reply is saved under. Once named, you can reuse the reply later with `@results.<result_name>`, for example `@results.age`.
- **Continue when there is no response for**: optional. Lets the flow move on if the contact never replies, instead of waiting forever. See "Handling no response" below for details.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since the document is very long - link the section you are referring to, to "Handling no response", so that users are directed to the section, instead of them having to look at it.


Note: the contact variable can be used across flows, but the result variable (the one named in Result Name) is limited to the same flow.

**The Other branch**

If you leave every criteria row blank, the node has a single **All Responses** branch that accepts any reply.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line needs to be worded better. It is more than just accepting any response. More importantly, it doesn't communicate that no validation or criteria matching is performed when all criteria rows are left blank. In the absence of any configured criteria, the node does not perform any validation or criteria checks, as none have been configured, and instead routes every response received at this node through a single All Responses branch.

Also - Clarify what you mean by "any reply". Currently, "accepts any reply" is also ambiguous—it is unclear what "any reply" refers to (e.g., text input, media, invalid input, etc.).


![Wait for Response node with no criteria filled in, showing a single All Responses branch](../../../../static/img/flows/flows_wait_for_response_all_responses_branch.png)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot is cut - please add complete screenshot.


As soon as you fill in at least one criteria row, an automatic **Other** branch is added alongside it, for replies that don't match any of your criteria.

@tanuprasad530 tanuprasad530 Aug 7, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could be phrased better: It is not "for replies....." it is "that captures the replies that don't match....."


![Wait for Response node with one filled-in criteria row (Yes), showing the automatic Other branch next to it](../../../../static/img/flows/flows_wait_for_response_other_branch.png)
Comment thread
coderabbitai[bot] marked this conversation as resolved.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot is cut - please add the screenshot that shows the node entirely.


---

## Response Types

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please include a note about the evaluation order, as it has a direct impact on routing. When multiple response criteria can match the same input, the node routes the response based on the first matching criterion. For example, if has media is listed before has image, an image response will be routed to has media, since it is evaluated first. The same behavior applies to text-based criteria where multiple validations could match the same response.


## Text-based responses

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add screenshots for all text response rule, like you have added for media, email, numeric inputs. Adding screenshots helps explain the examples better.
For reference - points 2 to 6 dont have screenshots attached to it.


![Response type dropdown showing has any of the words, has multiple values, has all of the words, has the phrase, has only the phrase, and starts with](../../../../static/img/flows/flows_wait_for_response_criteria.png)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The purpose of this screenshot / explanation is missing. Kindly check and update.


### 1. has any of the words

This option accepts the input if it contains any of the words defined in the response criteria. Multiple words can be added, separated by commas. For example, if the criteria include Yes, Y, Ya, Yup, then any of these responses will be treated as valid.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently - this doesn't clearly communicate that the matching also works when the configured word appears within a phrase.

Kindly check and make the necessary changes to accommodate this clearly.

Also, if the field is left blank, any text response from the user will be accepted.

@tanuprasad530 tanuprasad530 Aug 7, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is incorrect. Please remove this line.

From what I understand when I read this is the following:
has any of the words as the response criteria with no values added to check, accepts any text response from the user.
This cannot be configured this way. Requesting you to kindly try this out on the platform to understand this better.


<img width="469" height="391" alt="Screenshot 2025-10-08 at 2 28 48 AM" src="https://github.com/user-attachments/assets/4e91743e-3ae4-4a4b-a5f2-f5aa593dc35f" />


### 2. has all of the words
To accept the input if the input matches exactly what is defined in the response criteria.

### 3. has a phrase
To accept the input if the input is present in the response criteria.
This option accepts the input if it contains all of the words defined in the response criteria, in any order. The input can also contain other words besides the ones listed.
For example, if the criteria include cat, dog, then "I have a dog and a cat" will be treated as valid, but "I have a dog" will not, since it is missing cat.

### 3. has multiple values

This option accepts the input only if every word in it is one of the words defined in the response criteria. Unlike "has all of the words," it does not require every listed word to be present — the reply just cannot contain anything outside the list.
For example, if the criteria include red, blue, green, then "red blue" and "green" will be treated as valid, but "red yellow" will not, since yellow is not in the list.

### 4. has the phrase

This option accepts the input if it contains the exact phrase defined in the response criteria, with the words in that same order, anywhere in the message. The input can have other words before or after the phrase.
For example, if the criterion is customer support, then "I need customer support please" will be treated as valid, but "I need support from a customer" will not, since the words are not in that order.

### 5. has only the phrase

### 4. has only the phrase
Accepts only if the response matches exactly what is defined in the response criteria.
This option accepts the input only if it matches the response criteria exactly, with nothing else added.
For example, if the criterion is yes please, then "yes please" will be treated as valid, but "yes please now" will not, since it has an extra word.

### 6. starts with

This option accepts the input only if it begins with the exact text defined in the response criteria.
For example, if the criterion is order, then "order 123" will be treated as valid, but "my order is 123" will not, since it does not start with "order".

---


## Numeric responses

### 1. Has a number
Accepts any numeric input, This will accept any number as a valid response. Any non numeric input will be treated as invalid response.

Accepts any numeric input as a valid response. A non-numeric reply doesn't match this criterion and is routed to the automatic **Other** branch instead (see "The Other branch" above).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation being referenced here ("Other") is not easy to find in a long documentation. Instead of mentioning above / below - suggesting to link to that section.

In the example below, a numeric reply is categorized as "Has Number" and saved under the result name registration_number, so it can be reused later as `@results.registration_number`.

<img width="470" height="357" alt="Screenshot 2025-10-08 at 2 35 29 AM" src="https://github.com/user-attachments/assets/7f6b57e3-857a-401f-9567-b657b6a50bfe" />


### 2. has a number between
Accepts input if it is numeric and falls within the defined range. This option will accept numbers only given in the range. any number out of range will be treated as invalid response.
Example: Criteria = 18-60, so only numbers within 18 and 60 range will be accepted.

<img width="469" height="420" alt="Screenshot 2025-10-08 at 2 36 13 AM" src="https://github.com/user-attachments/assets/61b8eab1-e491-4ba4-81f9-43169d0c0cab" />
Accepts input only if it is numeric and falls within the defined range. A number that doesn't fall in any of your ranges is routed to the automatic **Other** branch instead.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mention if the range boundaries are inclusive or exclusive.

In the example below, four ranges are set up under the result name age: 1-12 is categorized as "Kids", 13-19 as "Teens", 20-60 as "Adults", and 60-100 as "Sr Citizens". A reply of 15 would be categorized as "Teens", while a reply of 45 would be categorized as "Adults".

Note: the "Adults" and "Sr Citizens" ranges both include 60. When ranges overlap like this, a reply always matches the first matching row in the list — so a reply of exactly 60 is categorized as "Adults", not "Sr Citizens". To avoid this, use ranges that don't share a boundary number (for example, 20-59 and 60-100).

![Wait for Response dialog with four "has a number between" ranges: 1-12 categorized as Kids, 13-19 as Teens, 20-60 as Adults, and 60-100 as Sr Citizens, with result name age](../../../../static/img/flows/flows_wait_for_response_number_between.png)
Comment thread
coderabbitai[bot] marked this conversation as resolved.



### 3. has a number equal to
Accepts input only if it exactly matches the defined number. This will accept only the number given in the criteria as a valid response. Any other response will be treated as invalid response.
Example: Criteria = 5, so only 5 will be valid.

Accepts input only if it exactly matches the defined number. Any other number is routed to the automatic **Other** branch instead.
In the example below, three separate rows are set up under the result name currency: 10, 20, and 50. A reply of 20 matches only the second row and is categorized as "20". A reply of 15 would not match any row and would be routed to the automatic **Other** branch.

<img width="465" height="415" alt="Screenshot 2025-10-08 at 2 37 57 AM" src="https://github.com/user-attachments/assets/029935dd-3557-4eb7-951d-44d15ad3e487" />

Expand All @@ -106,22 +155,28 @@ Example: Criteria = 5, so only 5 will be valid.


### 1. has a phone number
Accepts input if the response is a valid phone number.It accepts mobile and landline numbers.

Accepts input if the response is a valid phone number. This includes mobile and landline numbers.

Supported formats include:
- 10 digit Mobile number (XXXXXXXXXX).
- 10 digit Mobile number with 0 prefix (0XXXXXXXXXX).
- 10 digit Mobile number with country code prefix (+91 XXXXXXXXXX).
- landline number with (XXX XXXXXXX).
- landline number with 0 and state code (0XXX XXXXXXX).
- landline number with with country code prefix (+91 XXX XXXXXXX).
- 10-digit mobile number (XXXXXXXXXX).
- 10-digit mobile number with 0 prefix (0XXXXXXXXXX).
- 10-digit mobile number with country code prefix (+91 XXXXXXXXXX).
- Landline number (XXX XXXXXXX).
- Landline number with 0 and state code (0XXX XXXXXXX).
- Landline number with country code prefix (+91 XXX XXXXXXX).
Comment thread
coderabbitai[bot] marked this conversation as resolved.

In the example below, this is categorized as "Has Phone" and saved under the result name phone, so it can be reused later as `@results.phone`.

<img width="469" height="359" alt="Screenshot 2025-10-08 at 2 40 28 AM" src="https://github.com/user-attachments/assets/73f6252d-42cb-48b7-859f-35876ca420fd" />


### 2. has an email

Accepts input if the response is a valid email address.
Examples: abc@xyz.xyz, abc@xyz.xyz, abc@xyz

@tanuprasad530 tanuprasad530 Aug 7, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are also valid responses too.

You can test to verify this :)

Examples: priya@example.org, contact.team@example.co.in, user+alerts@example.com

In the example below, this is categorized as "Has Email" and saved under the result name email, so it can be reused later as `@results.email`.

<img width="459" height="351" alt="Screenshot 2025-10-08 at 2 41 42 AM" src="https://github.com/user-attachments/assets/7d6306fb-afaa-4b3f-b786-7ae08077960c" />

Expand All @@ -130,48 +185,60 @@ Examples: abc@xyz.xyz, abc@xyz.xyz, abc@xyz
## Media responses

### 1. has media
Accepts input if the response is a media file (jpeg, png, mp4).
Users can store both the URL and caption of the media file.

Accepts input if the response is a media file (jpeg, png, mp4). In the example below, this is categorized as "Has Media".

<img width="469" height="361" alt="Screenshot 2025-10-08 at 2 47 19 AM" src="https://github.com/user-attachments/assets/ae1ddfa0-e7ee-4577-8ec2-45e715c331cf" />


- To store the media file - create a result variable(in the given example below, picture is given as result name)
To store the media file, create a result variable (in the example below, picture is given as the result name).

<img width="464" height="354" alt="Screenshot 2025-10-08 at 2 48 08 AM" src="https://github.com/user-attachments/assets/9ac64b70-e569-4c81-b533-682313ff846d" />



Now users can use the media file URL received and its caption.

In this example, the syntax will be.
- for media file URL @results.picture.url
- for media file caption @results.picture.caption
In this example, the syntax for the media file URL is: `@results.picture.url`

### 2. has audio

Accepts input if the response is an audio file.

To store the audio file, create a result variable (in the example below, audio is given as the result name).
In this example, the syntax for the audio file URL is: `@results.audio.url`

<img width="466" height="358" alt="Screenshot 2025-10-08 at 2 50 16 AM" src="https://github.com/user-attachments/assets/bb95a68f-3a46-41d0-8528-a49088036a24" />



### 3. has video

Accepts input if the response is a video file (mp4 video files).

To store the video file, create a result variable (in the example below, video is given as the result name).
In this example, the syntax for the video file URL is: `@results.video.url`

<img width="467" height="357" alt="Screenshot 2025-10-08 at 2 51 53 AM" src="https://github.com/user-attachments/assets/208e9e2f-f04a-4ad3-bb6d-88303551c7ec" />



### 4. has image

Accepts input if the response is an image file (jpeg, png).

To store the image file, create a result variable (in the example below, image is given as the result name).
In this example, the syntax for the image file URL is: `@results.image.url`

<img width="464" height="357" alt="Screenshot 2025-10-08 at 2 52 39 AM" src="https://github.com/user-attachments/assets/39996382-6ee8-4049-88fd-b4c79180aeed" />



### 5. has file

Accepts input if the response is a document (pdf, doc).

To store the file, create a result variable (in the example below, file is given as the result name).
In this example, the syntax for the file URL is: `@results.file.url`

<img width="464" height="357" alt="Screenshot 2025-10-08 at 2 53 44 AM" src="https://github.com/user-attachments/assets/64c2ac06-1499-4492-b5b4-47d08d663ffa" />

---
Expand All @@ -180,15 +247,18 @@ Accepts input if the response is a document (pdf, doc).
## Location

### 1. has location
Accepts input if the response is a location

Accepts input if the response is a location.

<img width="466" height="358" alt="Screenshot 2025-10-08 at 2 54 52 AM" src="https://github.com/user-attachments/assets/43e8c76a-3583-4fee-84e4-6645a13c6ab1" />



- User can get the value of location with Has Location in contact response and save it in the form of longitude and latitude.
- In the given example, result name is given as ‘location’.
- Now user can save or use the location details received in longitude and latitude forms in the flow like other variables.
- The location is saved as longitude and latitude.
- In the example below, location is given as the result name.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be "above" and not "below" as the screenshot is above.

- You can reuse these values elsewhere in the flow. In this example, the syntax is:
- for the longitude: `@results.location.longitude`
- for the latitude: `@results.location.latitude`

<img width="465" height="355" alt="Screenshot 2025-10-08 at 2 56 30 AM" src="https://github.com/user-attachments/assets/beb9c392-ab61-4cc0-bc99-9fb700a6e811" />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can remove this screenshot, because generally the longitude and latitude values are not referenced to surface to the user (like here, where it is added in a send message node).


Expand All @@ -202,65 +272,42 @@ To get the detailed location details using webhook - refer to this [document](ht
This option is used to validate a response against a specific format using a regular expression (regex).
It is especially useful when inputs need to follow strict patterns, such as dates, ID numbers, or custom codes.

Example: To ensure a date of birth is entered in the format DD/MM/YYYY, use the following regex:
^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/[0-9]{4}$
Example: to ensure a date of birth is entered in the format DD/MM/YYYY, use the following regex:
`^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/[0-9]{4}$`

Valid responses include 05/09/1995 and 31/12/2000.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right now it reads like only 05/09/1995 and 31/12/2000 are valid, which is not the case.
Kindly check and make the necessary changes.
Also, include invalid responses too, based on the regex added.


Valid responses include - 05/09/1995, 31/12/2000
In the example below, this is categorized as "correct format" and saved under the result name dob, so it can be reused later as `@results.dob`.

<img width="470" height="362" alt="Screenshot 2025-10-08 at 2 59 20 AM" src="https://github.com/user-attachments/assets/6a8303a7-8d83-40fd-9339-fe41c4646a6e" />

---

## Handling no response

If a contact does not respond, you can configure the flow to continue after a set wait time.
Example: Send a reminder after 2 hours of inactivity.

Click on ‘Continue if there is no response for’ and choose the time gap after which a nudge will be sent to the end user.
In the example given below, a reminder is sent to the end user every hour (up to 3 times) if no response is received.

<img width="465" height="327" alt="Screenshot 2025-10-08 at 3 01 07 AM" src="https://github.com/user-attachments/assets/00e93da2-d113-4e23-8e20-512a3c289b71" />

































If a contact does not respond, you can configure the flow to continue after a set wait time, instead of waiting forever.

Tick **Continue when there is no response for** and choose the time gap after which the flow should move on. The screenshot below shows a single Wait for Response node configured to wait 1 hour before continuing down the **No Response** branch.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There isn't a screenshot attached below, although the text refers to one. Please check and update this accordingly.

Additionally, it would be helpful to explain why simply connecting a send contact a message node to the No Response path and then looping it back to the wait for response node may not work as expected (or clarify the limitations of this approach).


To send a reminder before giving up — for example, a reminder every hour, up to 3 times — chain **Send the contact a message** and **Wait for Response** nodes together:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the not the most optimal way to do this, as this significantly increases the number of nodes in the flow, and this is not scalable too.
This can be done with counter variables / result variables, with a looping cap.
Requesting you to kindly check. You can try this out perhaps and verify, to understand this better.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also worth explicitly calling out that configuring reminder nudges depends on two key aspects:

  1. The number of reminders/nudges to send.
  2. The time interval between reminders (which may or may not vary across reminders/nudges).

The most appropriate configuration approach depends on the answers to the above.


1. Connect the No Response branch to a **Send the contact a message** node with your reminder text.
2. Connect that message node to another **Wait for Response** node with its own timer.
3. For each additional reminder, repeat steps 1 and 2, connecting the new pair to the previous **Wait for Response** node's No Response branch — three pairs chained this way send three reminders.
4. Connect the last **Wait for Response** node's No Response branch to wherever the flow should continue once all reminders have been sent.

There's no automatic counter: the number of reminders is simply how many Send message → Wait for Response pairs you connect. See "The no-response branch in your flow" below for what the No Response branch looks like in the flow editor.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as my comment on line 292

A counter can be created, which simplifies the logic of doing this - compared to the logic currently added here in this line.


<img width="465" height="327" alt="Screenshot 2025-10-08 at 3 01 07 AM" src="https://github.com/user-attachments/assets/00e93da2-d113-4e23-8e20-512a3c289b71" />

---

## The no-response branch in your flow

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should come before you add the approach for sending reminder nudges.


Once you save a Wait for Response node with "Continue when there is no response for" ticked, an extra **No Response** branch appears in the flow editor alongside your other criteria branches. You connect the rest of your flow to it the same way you would any other branch: drag from its red circle to the next node.

In the example below, the node has one criteria branch (**Yes**), an automatic **Other** branch for replies that do not match any criteria, and the **No Response** branch for when the contact does not reply in time.

![Wait for Response node in the flow editor showing Yes, Other, and No Response branches](../../../../static/img/flows/flows_wait_for_response_no_response_branch.png)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The screenshot is cut. Please check and add a complete screenshot of the node, highlighting the pathway/branch you are referring to.


Note: **Other** and **No Response** are not the same thing. **Other** fires when the contact replies with something that does not match any of your criteria. **No Response** fires only when the contact does not reply at all within the time you set.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading